从原始 dd 图像中截断空白空间

从原始 dd 图像中截断空白空间

我有一个使用 Ubuntu 实例拍摄的原始磁盘映像dd。总磁盘大小为300 GB, 但只有5.5 GB用过的。

有没有办法将原始 dd 图像的大小调整为20 GB,保留所有 5.5 GB 的数据,只截断空块?

答案1

只需使用virt-sparsify

在正常使用中,它会写入一个临时文件,然后重写原始文件,但有漏洞。

如果磁盘空间不足,它甚至可以选择就地减少文件大小,而无需写入临时副本,-i尽管这可能无法释放所有可能的空间。

答案2

在较新的版本中dd,您可以用来conv=sparse从一开始就创建稀疏的图像文件。

需要注意的一点是,如果磁盘块被一个已被删除的文件占用,那么仅仅因为磁盘块“未使用”并不意味着它实际上充满了零。有一个名为的工具zerofree可以获取(未挂载的)文件系统并用零填充所有未使用的块,这使得后续的稀疏化工作得更好。

答案3

如果将其设为稀疏文件,文件元数据仍将为 300 GB,但实际使用的空间将更接近 5.5。例如使用 GNU cp --sparse=always

也可以看看:如何将 Linux 磁盘映像转换为稀疏文件?

如果您还想减少文件的逻辑大小,则需要减少文件系统、LVM 以及根据磁盘大小所拥有的其他内容。

安装大图像、创建所需大小的新图像并将文件复制到其中可能会更简单。

相关内容