AENV 运行时:


ublk 的 Userspace 这一侧的 handler 是 uvm-ublk-daemon,这是一个 systemd service aenv.service 的一个子进程。

AENV 存储

之前试过一版基于 UFFD 的存储实现,后面切换到了 OverlayBD 的格式。没有直接用阿里云的代码,而是自己实现了一套。

Guest VirtIO Driver (Frontend) -> Firecraker VirtIO Device (Backend) -> /dev/ublkbN -> uvm-ublk-daemon -> OverlayBD ImageFile

注意 ublk 的设备和能直通的 BDF 设备是不同的,ublk 是 Linux 软件所呈现的设备概念,主要是从更上层应用层角度来看;而 BDF 才是真的物理设备。

我们来一步一步拆解:

  1. VirtIO Driver 到 VirtIO Device,这一步太简单了,不需要解释;
  2. VirtIO Device 到 /dev/ublkbN 设备