在 Virt-Manager 中为 QEMU/KVM 中的客户机添加硬盘时,会出现“qcow2”和“raw”。 “raw”似乎将数据存储在扩展名为“.img”的文件中。似乎我可以将整个物理磁盘传递给客户机,就像这个帖子说,但这样使用整个物理磁盘会比使用原始“.img”文件更快吗?
无论如何,我都会为客户机使用专用的物理驱动器,但我想,如果我让主机同时访问该磁盘,将整个原始磁盘传递给客户机可能会损坏文件系统元数据。如果我在该驱动器上使用原始“.img”文件,那么就不会发生此类事故。但如果前者速度明显更快,那么可能值得冒险。
<disk>
<disk type="block" device="disk">
<driver name="qemu" type="raw"/>
<source dev="/dev/sdg"/> <======= whatever the device is on your system -- lsblk will show devices
<target dev="vda" bus="virtio"/> (for 2nd virtio device then replace vda by vdb etc )
# <address type="pci" domain="0x0000" bus="0x06" slot="0x00" function="0x0"/> this line is generated when the VM is booted so you don't enter this one
</disk>
答案1
原始磁盘会更快,尽管这会使将虚拟机移动到另一台计算机变得困难(因为需要克隆磁盘)。
Raw 更快的原因在于,对于 qcow2(或任何其他虚拟格式),任何磁盘请求都会在两个文件系统之间传递:
虚拟机中发出的请求将由 VM 中的驱动程序处理,包括涉及虚拟扇区分配等的所有管理,这些管理实际上仅在文件内
.img
,因此在虚构的文件系统中。然后,虚拟驱动程序向真实物理磁盘、另一个文件系统发出请求,该文件系统将执行分配物理扇区的相同工作等。
对于原始磁盘,只有一个文件系统 - 虚拟和物理是相同的。但是,在大多数情况下,性能改进只是微不足道的,并不能弥补不便,