KVM 原始图像是否支持预分配?

KVM 原始图像是否支持预分配?

我尝试使用以下命令创建原始图像:

qemu-img create -f raw -o size=200G,preallocation=metadata file.img

但似乎原始图像不支持预分配。如果是这样,为什么有原始+预分配这张图表

# qemu-img create -f raw -o size=200G,preallocation=full file.img
Unknown option 'preallocation'
Invalid options for file format 'raw'.

答案1

原始图像不支持预分配,但 qcow2 和 qed-images 有:

preallocation=full而不是preallocation=metadata不仅为原始图像分配元数据,还向其中写入零,从而创建非稀疏图像文件。

如果您的文件系统支持稀疏文件(例如 ext、xfs、btrfs),则仅用零填充的块不会物理存储,这样可以在开始使用此图像时节省空间。

如果您想要分配原始图像上的所有空间,可以使用以下命令dddd if=/dev/zero of=file.img bs=1M count=204800

如果您正在努力提高速度,也可以使用cache=writethroughlibvirt 等,这样可以提高速度,并且如果物理机崩溃则不会丢失数据。

答案2

根据本手册,我没有看到任何针对原始图像的预分配选项。

也许看看这些基准,看来任何类型的原始图像都比qcow2有更好的性能。

而且我也看到过许多建议因为性能问题而避免使用写直缓存,但我自己并没有测试过。

答案3

qemu-img create -f qcow2 -o size=199G,preallocation=full file.img
mv file.img file.raw
qemi-img resize -f raw file.raw 200G

(需要最后一个命令来将文件与块大小 512b 对齐)

相关内容