我在 VirtualBox 映像中有一个包含冗余元数据的 btrfs 文件系统。主机系统崩溃后,btrfs 分区出现一些损坏,这违反了文件系统的保证,这表明 VirtualBox 违反了这些保证。
我怎样才能让 VBox 正常运行?
答案1
似乎有两个解决方案
禁用忽略刷新,这只能通过命令行使用。
虚拟 ATA 设备:
VBoxManage setextradata “虚拟机名称” “VBoxInternal/Devices/piix3ide/0/LUN#[x]/Config/IgnoreFlush” 0
虚拟 SATA 设备:
VBoxManage setextradata “虚拟机名称” “VBoxInternal/Devices/ahci/0/LUN#[x]/Config/IgnoreFlush” 0
其中 [x] 是该控制器的 0 索引驱动器编号
启用主机缓存对于所讨论的虚拟控制器,这可以在 UI 中完成。它的缺点是 VM 内部的 IO 缓存可能会保存主机缓存中的数据,因此 IO 缓存会消耗两倍的内存。
减少
vm.swappiness
客户机缓存可能会有所帮助,因为如果数据已经在主机缓存中,页面缓存就不那么重要了。
请注意,由于崩溃和损坏的随机性,很难判断每个解决方案是否可靠。