我有一个使用dd的Ubuntu实例的原始磁盘映像。 总的磁盘大小是300 GB ,但只有5.5 GB使用。
有没有办法将原始dd图像调整到20 GB ,保留所有5.5 GB的数据,并截断空块?
只需使用virt-sparsify 。
在正常使用中,它会写入一个临时文件,然后用空洞重写原始文件。
如果磁盘空间不足,甚至可以使用-i选项就地减less文件,而无需编写临时副本,但这可能无法释放所有可能的空间。
在合理的最新版本的dd ,你可以使用conv=sparse从头开始创build一个conv=sparse的图像文件。
有一件事要注意,就是因为一个磁盘块是“未使用的”,并不意味着它实际上已经满了零,如果该块被一个已被删除的文件占用的话。 有一个叫做zerofree的工具,它可以把一个(卸载的)文件系统和所有未使用的块填充到零,这使得后续的稀疏化工作更好。
如果将其设置为稀疏文件,则文件元数据仍将为300 GB,但实际使用的空间将接近5.5。 比如用GNU cp –sparse = always
另请参阅: 如何将Linux磁盘映像转换为稀疏文件?
如果您还想减less文件逻辑大小,则需要减less文件系统,LVM以及其他任何您所拥有的大小,具体取决于磁盘大小。
安装大图像可能会更简单,创build所需大小的新图像,并将文件复制到其中。