是否可以编辑磁盘映像上的分区?

是否可以编辑磁盘映像上的分区?

我正在尝试使用 ddrescue 恢复崩溃的 2TB 驱动器。它已经运行了一个多星期,刚刚接近尾声,显然空间​​不足,并出现以下错误:

ddrescue: write error: No space left on device

我当时复制的是一块空白的 2TB 硬盘,所以我猜不同制造商的实际硬盘空间可能有所不同。硬盘没有满,崩溃时只使用了大约 600GB,只有 20 个错误,总计 254MB,所以我猜我实际上拥有恢复的磁盘映像中的大部分数据。

当我尝试使用此命令安装映像时:

sudo mount -o loop,ro,offset=0 rimage /mnt/resc

它失败了,并且在 dmesg 中显示:

[999150.073373] EXT4-fs (loop0): bad geometry: block count 488378646 exceeds size of device (480723271 blocks)

1)有没有办法编辑图像的块数,以便我可以安装它?

2)如果是这样,那么是否可以随后缩小磁盘映像的分区大小?

答案1

磁盘空间问题

您的恢复目标可能用尽了磁盘空间,因为您正在写入目标文件系统上的映像文件,而文件系统有开销。您可能--sparse已经能够通过中的标志来解决磁盘空间问题ddrescue

我强烈建议尝试创建另一个图像,避免空间问题,这一次要么使用更大的硬盘,要么使用ddrescue --sparse

实际上,您可以使用ddrescue覆盖整个恢复目标硬盘,跳过文件系统。如果恢复目标硬盘是/dev/sdc,则您可以指示ddrescue写入该硬盘,而不是rimage。恢复目标硬盘随后会表现得像故障硬盘的克隆,只是减去了不可恢复的部分。

调整设备图像大小

如果ddrescue映像应该是整个故障驱动器,请运行此命令,并将其替换/dev/sdb为故障驱动器的设备路径:

sudo blockdev --getsize64 /dev/sdb

获取输出(例如)并使用以下方法500107862016调整恢复映像的大小:/path/to/rimagetruncate

truncate -s 500107862016 /path/to/rimage

警告:截断为小于/path/to/rimage 将要导致数据丢失。

确保检查当前的大小/path/to/rimagedu -b --apparent-size /path/to/image确认返回的大小小于blockdev给您的大小。

现在,恢复的图像将呈现mount.ext4预期的完整尺寸。

调整分区映像的大小

如果您在故障驱动器中的分区上运行ddrescue,请使用此命令来获取分区的大小,并/dev/sdb1用分区的设备路径替换:

sudo blockdev --getsize64 /dev/sdb1

然后获取输出(例如)并使用以下方法500106788864调整恢复映像的大小:/path/to/rimagetruncate

truncate -s 500106788864 /path/to/rimage

警告:截断为小于/path/to/rimage 将要导致数据丢失。

确保检查当前的大小/path/to/rimagedu -b --apparent-size /path/to/image确认返回的大小小于blockdev给您的大小。

相关内容