我可以以只读方式挂载 ddrescue 正在写入的分区映像吗?

我可以以只读方式挂载 ddrescue 正在写入的分区映像吗?

我正在恢复损坏的驱动器。

前两次操作已经完成,但我想挽救更多数据,同时能够浏览已经关闭的分区映像,同时 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可能会阻止大多数写访问,但最好不要在任何情况下接触磁盘,并防止磁盘映像在块设备级别被更改(例如参见这里)。

相关内容