我尝试使用以下命令创建原始图像:
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),则仅用零填充的块不会物理存储,这样可以在开始使用此图像时节省空间。
如果您想要分配原始图像上的所有空间,可以使用以下命令dd
:dd if=/dev/zero of=file.img bs=1M count=204800
如果您正在努力提高速度,也可以使用cache=writethrough
libvirt 等,这样可以提高速度,并且如果物理机崩溃则不会丢失数据。
答案2
答案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 对齐)