使用“dd”命令将 ext4 分区克隆到更大的分区时,可用空间不会增加

使用“dd”命令将 ext4 分区克隆到更大的分区时,可用空间不会增加

可能重复:
驱动器报告错误的可用空间

最近我一直在尝试使用 dd 工具克隆我的硬盘。克隆 ntfs 分区时一切正常,但对于 ext4 - dd 会出现奇怪的情况。例如,有一个 12GB 分区,其中有 4GB 的可用空间,当我尝试将其克隆到新的 25GB 分区上时,它确实克隆了它,但之前为 12GB 的数据现在为 21GB,其中有 4GB(仍然具有与旧分区相同的可用空间)。每次我克隆我的主分区和根分区(ext4)时都会发生这种情况。我还尝试将新分区的大小降低到旧分区的大小,但 dd 以错误结束,提示空间不足,而空间应该足够……

有人吗?发生什么事了?

答案1

我假设你正在做类似的事情:

sudo dd if=/dev/sda98 of=/dev/sda99

其中 /dev/sda98 大小为 12GB,/dev/sda99 大小为 25GB。

显然这些名字是错误的,但你明白我的意思。

您所做的不仅是将数据,还将整个文件系统(包括描述哪些可用和哪些已使用的所有元数据)移动到新分区。它有很多可用空间,但这些可用空间尚未纳入 /dev/sda99 上的文件系统,因此它隐藏在分区的末尾,完全无法使用。

解决方案是调整分区中的文件系统的大小:

sudo resize2fs /dev/sda99

它适用于 EXT2、EXT3 和 EXT4 文件系统。

我建议您先进行备份,但我认为您仍然拥有原始分区中的数据。

这将告诉文件系统扩展到分区上的所有可用空间,将新空间合并到文件系统的元数据中,以便文件可以在其中存储。

dd除非您使用 count 参数告诉它只复制一定量的内容,否则您无法将较大的分区复制到较小的分区。dd将源分区中的所有内容逐位复制到目标分区,在这种情况下,它会尝试将所有隐藏/不可见空间连同原始内容一起复制到较小的分区。它不知道也不关心它正在复制什么——它根本不需要是有效的文件系统。

相关内容