我正在恢复损坏的驱动器。
前两次操作已经完成,但我想挽救更多数据,同时能够浏览已经关闭的分区映像,同时 ddrescue 正在用新数据填充它。
我已经安装了图像文件:
mkdir sda3.img
mount -o loop,ro /media/sdc3/sda3.img sda3.img
我已经开始另一个 ddrescue 会话:
ddrescue -d -r3 /dev/sda3 sda3.img sda3.logfile
到目前为止一切顺利,我可以浏览通过循环设备安装的图像,并且 ddrescue 正在写入图像,而不会报告输出错误:
GNU ddrescue 1.17
Press Ctrl-C to interrupt
Initial status (read from logfile)
rescued: 330315 MB, errsize: 12565 MB, errors: 500
Current status
rescued: 332072 MB, errsize: 10809 MB, current rate: 5406 kB/s
ipos: 76576 MB, errors: 500, average rate: 2150 kB/s
opos: 76576 MB, time since last successful read: 0 s
Retrying bad sectors... Retry 1
这可能会导致数据丢失或其他问题吗?
答案1
以只读方式(ro)安装图像至少应该可以防止您的安装和浏览更改图像,并且只要gddrescue
乐于继续将新数据写入图像,我猜它可能会继续恢复新数据,好的......
但是如果数据足够重要,需要恢复,为什么不等到恢复完成呢?或者停止/暂停恢复,尝试 ro 安装检查几分钟,然后继续恢复?
我怀疑您在写入时是否能够非常成功地读取已安装的图像,尤其是添加的任何新区域。
首先,通常有一个磁盘缓存,它只会尝试从磁盘读取一次,然后使用该缓存进行将来的读取。由于是 ro 安装的,它不会期望磁盘发生变化,因此可能不会注意到任何动态变化。
而且,恢复的映像可能存在一些严重错误,甚至可能不允许安装,可以通过运行 来修复
fsck
,但您不能fsck
在不破坏正在进行的恢复的情况下安装映像。谨慎起见,您fsck
只能复制恢复的图像,如果出现问题或情况变得更糟,您仍然可以gddrescue
复制“干净”的图像并重试。同时读取和写入同一个文件可能会减慢两者的速度。我不想让数据恢复速度变得更慢,以防被恢复的驱动器变得更糟或完全失效。
答案2
虽然mount -o ro
可能会阻止大多数写访问,但最好不要在任何情况下接触磁盘,并防止磁盘映像在块设备级别被更改(例如参见这里)。