我试图用这个命令创建一个原始图像:
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'.
原始图像不支持预分配,qcow2 和 qed-images 支持:
preallocation=full
instead ofpreallocation=metadata
不仅为原始图像分配元数据,而且还向其写入零,从而创建非稀疏图像文件。如果您的文件系统支持稀疏文件(例如 ext、xfs、btrfs),则只用零填充的块不会在物理上存储,这样可以在开始使用此映像时节省空间。
如果你想分配原始图像上的所有空间,你可以使用
dd
命令:dd if=/dev/zero of=file.img bs=1M count=204800
如果您正在努力提高速度,也可以使用
cache=writethrough
libvirt 等,这种增强的速度不会在您的物理机器崩溃时丢失数据。根据本手册,我没有看到任何原始图像的预分配选项。
看看这些基准测试也可能很好,似乎任何一种原始图像的性能都比 qcow2 好。
而且我也看到过很多关于避免因为性能问题而使用直写缓存的建议,但我自己没有测试过。
(需要最后一个命令将文件对齐到块大小 512b)