当连接到 Linux 中的原始磁盘时,有没有办法在 VirtualBox 中启用直接 I/O?

当连接到 Linux 中的原始磁盘时,有没有办法在 VirtualBox 中启用直接 I/O?

我找到了有关如何创建指向原始块设备的虚拟磁盘以供 virtualbox 使用的方法说明。您无法从 UI 执行此操作,但可以从命令行执行此操作:

VBoxManage internalcommands createrawvmdk -filename "</path/to/file>.vmdk" -rawdisk /dev/sda

这个方法很好用,只是它不直接对块设备进行 I/O,所以所有内容都进入了页面缓存,如果你知道页面缓存的工作原理,它会一次将脏页喂给块设备。这在慢速块设备上需要很长时间。

如果 virtualbox 使用直接 io 访问块设备,那么批量读写将直接以批次(其中包含许多段的 bio)的形式进入块设备,而且一切都会更快。

我找不到任何选项来描述如何做到这一点,或者这是否可行。有人知道这样的事吗?

相关内容