我有一个坏了的硬盘,里面有很多损坏的块。我用ddrescue进行了相当成功的救援(我在99,5 %)。不幸的是:
ddrescue击中严重损坏的部分时,磁盘会“疯狂”,或者只返回磁盘其余部分的读取错误,或者报告未对齐的读取错误并终止;计算机需要重新启动,这些部分可以再次读取。有趣的是:我根本不需要读分区表,我正在执行“整个磁盘”的救援。
所以有没有办法告诉内核
系统启动加速将显著提高恢复速度,因为在此阶段,系统启动一个小时,然后继续恢复几分钟,然后由于上面提到的一个错误而重新启动(我已经通过启动脚本实现了自动化)。
dmesg输出:https://cloud.oprendek.sk/index.php/s/Mk8figkaspD8xRE
发布于 2020-04-16 08:07:19
我觉得我以前回答过但现在找不到.
如果您的问题不仅存在于初始启动期间,而且在将违规驱动器热插拔到已经运行的系统时,那么您或多或少是运气不佳。
在完整的Linux安装中,每次连接分区、UUID和其他元数据时,您都无法阻止驱动器被扫描。内核检测分区表,udev创建磁盘/by-uuid链接,等等。
然而,分区表支持在内核中是可选的(CONFIG_*_PARTITION,*是MSDOS,EFI,MAC,.)之一。因此,您可以编译一个自定义内核,它不支持任何/禁用所有内核,然后(为了防止UUID扫描等等)使用它的环境只有一个最小的initramfs环境,其中只包含dd救援。
这也禁止您访问任何其他驱动器上的分区,除非您使用losetup和偏移量/大小分隔符,或者设备映射器(dmsetup)来模拟分区。因此,您必须从整体上解决缺少分区的问题。
不确定它是否做任何重试,您可以做的是设置超时(在/sys/block/*/device/timeouts中),只有当驱动器根本没有响应时,这才会有用,我猜。
对于内置的不可移动设备,您也可以使用libata.force=<port.device>:disable内核参数完全禁用它。
https://unix.stackexchange.com/questions/580407
复制相似问题