Answers:
一般来说,只是使用dd
;但是当您提到使用KVM虚拟化时,您可以考虑使用qemu-img
:
qemu-img create -f raw disk 2G
它dd
与Chris Down的答案中的命令有效地相同。
无论在虚拟化中使用什么命令,我都强烈建议使用fallocate
预分配块,以防止碎片并提高性能。
fallocate -l 2G disk
但是,它并非在所有平台和文件系统上都可用。这不会写入零,而只是将块分配给文件,而不是在每次扩展文件时按需进行。
qemu-img
并dd
都执行一个系统调用来设置文件大小(ftruncate),但将进行更多的加载自己和他们联系到库。并且,在这方面,dd
它将比qemu-img
(这要大得多,并且链接到更多的库)要有效得多。GNU truncate
将更加有效。dd
还具有无处不在的优势。很好的一点fallocate
。
qemu-img
只是使用KVM虚拟化的一个明显替代方案。
您可以使用以下方法创建一个稀疏文件dd
:
dd of=file bs=1 seek=2G count=0
$ du file
0 disk
$ du --apparent-size file
2097152 disk
2G
是的GNU扩展dd
。bs=1024 seek=2097152
如果没有GNU,可以使用dd
。
G
是扩展,它不受OpenBSD的dd版本的支持...但是,M
并且K
受支持,因此也许seek=2048M
更具可读性,具体取决于您定位的平台
另请参见GNU truncate
命令:
truncate -s 2G some-file
dd
是公开的唯一传统工具seek
的系统调用(参见DD VS猫-为DD仍然具有现实意义,这些天,但还有其他的方法对皮肤这只猫的典型电流Unix系统。