#阿里云 #飞天发布时刻 正在直播!中企出海的「技术引擎」来了! 了解详情
写点什么

Firecracker,无服务器计算的轻量级虚拟化

  • 2019-10-15
  • 本文字数:2255 字

    阅读完需:约 7 分钟

Firecracker,无服务器计算的轻量级虚拟化

我最喜欢的一条 Amazon 领导力原则就是以客户为中心。在我们推出 AWS Lambda 之时,我们专注于为开发者提供安全的无服务器体验,让他们可以不必管理基础设施。为了达到理想的隔离状况,我们为每位客户使用了专用的 EC2 实例。这种方法使我们能够实现安全目标,但也迫使我们在后台管理 Lambda 时做出一些取舍。此外,与任何新的 AWS 服务一样,我们不知道客户会如何使用 Lambda,甚至不知道他们对整个无服务器模型的看法。我们的计划是专注于提供卓越的客户体验,同时使后端随着时间的推移变得更加高效。


仅仅四年之后(Lambda 最初发布于 2014 年的 re:Invent 大会),我们就可以明确无服务器模型的市场价值了。如今,Lambda 每月为数十万活跃客户处理数万亿次执行。去年,我们将无服务器技术的优势延伸到了容器,推出了 AWS Fargate,它如今每周为客户运行数千万个容器。


随着我们的客户越来越多地采用无服务器,是时候重新考虑效率问题了。我们秉承“发明”和“简化”的原则扪心自问:为当今的容器和函数世界设计的虚拟机究竟该是什么样子?


Firecracker 简介


今天,我要为大家隆重介绍 Firecracker,这是一种使用 KVM 的新型虚拟化技术。您可以在不到一秒的时间内在非虚拟化环境中启动轻量级微型虚拟机 (MicroVM),充分利用传统虚拟机提供的安全性和工作负载隔离,以及容器带来的资源效率。


以下是有关 Firecracker 的一些需知信息:


安全 – 这始终是我们的头等要务! Firecracker 利用多层隔离和保护,暴露的攻击面极小。


高性能 – 您现在可以在短至 125 毫秒的时间内启动 microVM(2019 年这个速度还会进一步加快),这使其成为多种工作负载的理想选择,包括瞬态或短期工作负载。


经过广泛测试 – Firecracker 经过广泛测试,已经在为多种高容量 AWS 服务提供支持,包括 AWS Lambda 和 AWS Fargate。


低开销 – 使用 Firecracker,每个 microVM 仅占用大约 5MiB 内存。您可以在同一实例上运行数千个采用截然不同的 vCPU 和内存配置的安全 VM。


开源 – Firecracker 是一项活跃的开源项目。我们已经准备好审核并接受拉取请求,并期待与来自世界各地的贡献者合作。


Firecracker 采用极简构建风格。我们从 crosvm 入手,设置了一种极简化的设备模型,以降低开销,实现安全多租户。Firecracker 采用 Rust 编写,这种现代编程语言可以确保线程安全性,并防范可能导致安全漏洞的多种类型的缓冲区溢出错误。


Firecracker 安全性


正如我先前提到的,Firecracker 融合了大量安全功能! 下面列出了其中一部分:


简单访客模型 – Firecracker 访客将获得非常简单的虚拟化设备模型,以最大限度地缩减攻击面:网络设备、块 I/O 设备、可编程的间隔定时器、KVM 时钟、串行控制台和部分键盘(刚好足以允许 VM 重置)。


进程监禁 – Firecracker 进程使用 cgroups 和 seccomp BPF 进行监禁,而且可以访问一小部分受到严密控制的系统调用。


静态链接 – Firecracker 进程以静态形式链接,可以通过 jailer 启动,以尽可能确保托管环境安全干净。


Firecracker 实际操作


为了体验 Firecracker,我启动了一个 i3.metal 实例,下载了三个文件(firecracker 二进制文件、根文件系统映像和 Linux 内核):



我需要设置适当的权限以便访问 /dev/kvm:


$  sudo setfacl -m u:${USER}:rw /dev/kvm
复制代码


我在一个 PuTTY 会话中启动了 firecracker,随后在另一个会话中发出了命令(进程侦听 Unix 域套接字,并实施 REST API)。第一条命令设置我的第一台访客机器的配置:


$ curl --unix-socket /tmp/firecracker.sock -i \    -X PUT "http://localhost/machine-config" \    -H "accept: application/json" \    -H "Content-Type: application/json" \    -d "{        \"vcpu_count\": 1,        \"mem_size_mib\": 512    }"
复制代码


第二条命令设置访客内核:


$ curl --unix-socket /tmp/firecracker.sock -i \    -X PUT "http://localhost/boot-source" \    -H "accept: application/json" \    -H "Content-Type: application/json" \    -d "{        \"kernel_image_path\": \"./hello-vmlinux.bin\",        \"boot_args\": \"console=ttyS0 reboot=k panic=1 pci=off\"    }"
复制代码


第三条命令设置根文件系统:


$ curl --unix-socket /tmp/firecracker.sock -i \    -X PUT "http://localhost/drives/rootfs" \    -H "accept: application/json" \    -H "Content-Type: application/json" \    -d "{        \"drive_id\": \"rootfs\",        \"path_on_host\": \"./hello-rootfs.ext4\",        \"is_root_device\": true,        \"is_read_only\": false    }"
复制代码


一切准备就绪后,我就可以启动访客机器了:


# curl --unix-socket /tmp/firecracker.sock -i \    -X PUT "http://localhost/actions" \    -H  "accept: application/json" \    -H  "Content-Type: application/json" \    -d "{        \"action_type\": \"InstanceStart\"     }"
复制代码


这样我的第一个虚拟机就开始运行了:



在现实世界中,我可以使用 Firecracker 编写所有交互的脚本和程序,这样可以用更多时间设置网络和其他 I/O。但我还要参加 re:Invent 大会,我还有许多工作要去做,所以我把这部分作为练习留给各位读者。


与我们协作


您可以看到,这是一次重大飞跃,但也仅仅是我们迈出的第一步。敬请关注更多信息,并期待与您携手前行,共谋未来。收藏代码库、加入社区,与大家分享您的代码!


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/firecracker-lightweight-virtualization-for-serverless-computing/


2019-10-15 11:09906
用户头像

发布了 1887 篇内容, 共 139.8 次阅读, 收获喜欢 81 次。

关注

评论

发布
暂无评论
发现更多内容

面试官:如何实现链式调用?

王磊

Java 面试题

大数据时代的数据治理!

用友BIP

数据治理

数字化转型对中小企业来说值得吗?

天津汇柏科技有限公司

数字化转型

阿里云人工智能平台PAI多篇论文入选EMNLP 2023

阿里云大数据AI技术

AI

光纤的连接

小齐写代码

使用开源技术快速上手 Web 前端开发(内含PPT课件)

OpenTiny社区

开源 前端 Web UI组件库

KaiwuDB × 国网山东综能 | 分布式储能云边端一体化项目建设

KaiwuDB

客户案例 KaiwuDB 分布式储能

每日一题:LeetCode-64. 最小路径和

Geek_4z9ami

面试 算法 矩阵 LeetCode 动态规划

下一站 GenAI @你!站稳扶好,“码”上发车

亚马逊云科技 (Amazon Web Services)

re:Invent 生成式人工智能 Amazon SageMaker Amazon CodeWhisperer

一招MAX降低10倍,现在它是我的了 | 京东云技术团队

京东科技开发者

缓存 性能优化 缓存优化 OHC

第七在线(7thonline):助力零售业解决发展难题,驱动智能化转型

第七在线

文心一言插件商城重磅上线!

飞桨PaddlePaddle

人工智能 开发者 插件开发 文心一言

百度搜索展现服务重构:进步与优化

百度Geek说

重构 企业号12月PK榜 百度搜索展现

TFTP服务器 Transfer免激活最新版

胖墩儿不胖y

Mac 软件 ftp传输

云桌面的应用场景及利弊

青椒云云电脑

云桌面 云电脑 云桌面系统

京东哥伦布即时设计平台ChatGPT落地实践 | 京东云技术团队

京东科技开发者

前端 ChatGPT 即时设计

第七在线 | 引领时尚行业信息化管理新时代

第七在线

最佳实践 | 第七在线助力绫致时装集团配补调提升运营能力

第七在线

特殊字符:安全攻防中容易遗漏的细节

华为云开发者联盟

开发 华为云 华为云开发者联盟 安全攻击

低代码实践 | CodeWave如何支持多人协作开发应用

网易数帆

低代码 智能开发 CodeWave 多人协作

39 | 回溯算法:从电影《蝴蝶效应》中学习回溯算法的核心思想

鲁米

云桌面技术的革新

青椒云云电脑

桌面云 云桌面

HarmonyOS:使用MindSpore Lite引擎进行模型推理

HarmonyOS开发者

HarmonyOS

Firecracker,无服务器计算的轻量级虚拟化_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章