Azi*_*nam 7 scripting hard-disk error-handling
我正在修复硬盘中的错误,可以手动修复,但可能需要几个小时。
输入这个命令后sudo badblocks -b 512 /dev/sda,我得到了数百个结果,我想避免手动修复它们。
可以在此处找到有关我的错误的更多详细信息
那么有什么工具可以用来修复错误?或者你可以帮我写一个shell脚本?
der*_*ert 11
嗯,有几种情况:
echo 'repair' > /sys/block/md0/md/sync_action。问题解决了,没有数据丢失。(我猜这不是你的情况,但你真的应该考虑改变它。)cat /dev/zero > tempfile用零填充可用空间。以 root 身份执行此操作(仅为 root 保留空间),可能在单用户模式下执行此操作(因此不会因空间不足而中断)。在空间用完之后,删除文件 ( rm tempfile)。fsck -fc(在未挂载文件系统的情况下运行,或者如果它是根文件系统,则在早期引导期间以只读模式运行)会告诉您哪些文件。从备份替换它们。它也有可能是badblocks -n,它必须只上完成卸载文件系统,将强制重映射。它不应该丢失任何数据(除了坏块中已经丢失的数据)。
如果您想根据 badblocks 输出编写脚本(这是不安全的,它会让您陷入静默损坏),这很容易。badblocks 输出的每一行都会根据您的块大小(在您的示例中为 512)为您提供一个块编号。对 dd 使用相同的块大小bs。块号是你seek的 dd。您的count值为 1(或更高,如果连续有几个坏块)。of是您运行坏块的分区(或磁盘)。一个好的if是/dev/zero。