我试图用这个命令创build一个原始图像:
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而不是preallocation=metadata不仅为原始图像分配元数据,而且还向其写入零,从而创build非稀疏图像文件。
如果您的文件系统支持稀疏文件(例如ext,xfs,btrfs),则只填充0的块不会被物理地存储,从而在使用这个图像的开始时节省空间。
如果要分配原始映像上的所有空间,可以使用dd命令: dd if=/dev/zero of=file.img bs=1M count=204800
如果您正在努力实现速度,那么也可以使用cache=writethrough (例如libvirt),如果您的物理机崩溃,这种增强的速度不会丢失数据。
根据这本手册 ,我没有看到原始图像的预分配选项。
也可以看看这些基准 ,看来任何一种原始图像都比qcow2有更好的性能。
而且我也看到了许多build议,以避免由于性能问题的直写caching,但是我没有自己testing。