Modal 的工程博客由 Nitin Maddi 和 Amit Prasad 撰写,正文日期是 2026 年 10 月 16 日。他们写的是虚拟机沙箱的文件系统。虚拟机沙箱已经一般可用,现在的后端是他们称为 ImageFS-blk 的实现。一般可用指的是这个产品后端,不是一份对所有客户工作负载的性能承诺。
[1]
先前的做法是让虚拟机通过 virtio-fs 使用主机上的 ImageFS。文件的名字、所有者和权限都在虚拟机边界的另一侧,所以每次元数据操作都要问过去。他们看到,递归更改所有者从 4 秒变成超过 1 分钟。pnpm 和 bun 的安装看起来慢了三倍,代码搜索也明显变差。在他们的微基准里,virtio-fs 下的 stat 慢 2 倍,chown 差了 6 倍以上。一次 chown 要做三次到主机的往返,耗时 99 微秒。对比对象是主机直接使用 ImageFS、放在 gVisor 后面,以及虚拟机里的 virtio-fs。
[1]新做法是把文件系统留在客户机里,主机只保存字节并按块交还。页面用硬盘和固态硬盘作类比:设备不懂文件,只处理数据块。客户机里的 ext4 自己完成所有者和权限变更,再把一批写入异步提交。他们测到,走块设备的一次 chown 大约 2.1 微秒。代价是主机不再能按文件理解客户机里的目录,只能按块读写。
[1]和 ImageFS 接上的方式不是先把整份镜像做成磁盘。他们只先取文件元数据,自己写好 ext4 的索引,其余块等客户机来读时再从 ImageFS 取。已经写过的块记在客户机自己的稀疏文件里。页面说,这样最坏情况只需复制一个块,而不是像跨文件系统复制整份文件那样,在极端情形下搬动以吉字节计的数据。预取打开后,冷启动回到一秒以内,而且不必先下载整份镜像。
[1]安装测试是这篇里最清楚的倍数。bun install 从 12.5 秒降到 1.07 秒,他们写成 12 倍,并且快过原来直接走 ImageFS 的结果,因为元数据操作不再离开客户机。页面还说 pgbench 和 speedtest1 也明显变快,但没有给出倍数,这里就不补数字。机器型号、重复次数和误差,页面都没有写。12 倍只描述这次 bun 安装基准。
[1]