我刚刚在笔记本电脑上安装了新版本的 Ubuntu,Karmic Koala。一切都很好,除了系统在我的 1TB 外置硬盘中识别出大约 300 个坏扇区。我想恢复或只是标记它们。是否有任何可以在 Linux 上运行的免费实用程序来实现此目的?
更新:
该分区格式为 NTFS。
提前致谢
答案1
如果操作系统本身显示坏扇区,则说明您的驱动器性能正在下降。硬件应该透明地从服务中删除坏扇区,并且可能已经用尽了可供重新映射的备用扇区。如果是这种情况,您的数据将面临很大风险。
我会认真考虑 David 的建议并尽快迁移您的数据。您可能需要安装“smartmontools”并运行 smartctl 以查看设备本身报告的内容。
您可以尝试在装有 NTFS 驱动器的原始设备上使用“badblocks”实用程序,因为它可以在该设备上使用,并且不依赖于文件系统。请务必阅读手册页小心并使用非破坏性模式。它应该能够读取每个扇区,然后重写每个扇区。这样做应该会强制驱动器本身重新映射任何有问题的扇区。首先在 USB 记忆棒或其他媒体上测试此过程。
我建议您告诉 badblocks 一次处理大量扇区,因为 1TB 的驱动器需要很长时间才能扫描。
再次强调... 确保你知道自己在做什么。一旦失误,你的数据就毁了。
如果这些数据对您来说很有价值,而您对自己的能力又没有信心,那么您可能希望使用 SpinRite 等商业解决方案(尽管它价格昂贵,而且需要 Windows 机器)。请注意,我从未使用过 SpinRite,但我在网上听说过它的好评。
答案2
这取决于你使用的文件系统。如果你使用的是 ext2、etx3 或 ext4(我记得 Ubuntu 9.10 新安装时默认使用 ext4,早期版本默认使用 ext3),那么你可以运行
e2fsck -c -c -k -C 0 /dev/device
IE
e2fsck -c -c -k -C 0 /dev/sdc1
对于驱动器 第一个分区上的文件系统sdc
。在执行此操作时不应挂载文件系统,因此如果您的正常运行系统需要它,则需要e2fsck
在从“实时 CD”或类似设备启动时运行它。
该-c
选项会导致将表面扫描添加到检查器执行的操作中,然后-c
使其执行非破坏性写入+读取测试,-k
告诉它保留任何现有的坏块列表而不是重新测试它们,-C 0
并使 e2fsck 在工作时输出更多进度信息。有关man e2fsck
更多详细信息,请参阅。
上述操作将标记坏块,以便将来不再使用。如果您重新格式化驱动器或单个分区,则需要重新运行该操作。无论如何,您也应该偶尔重新运行该操作,以防有任何“几乎坏”的扇区进一步恶化。没有办法“恢复”坏扇区。
不过,我建议您考虑将数据迁移到另一个驱动器上,除非那里没有任何真正重要的东西(即,如果驱动器突然变得更糟并且数据变得几乎无法读取或损坏,这不会给您带来过多的不便)。如果您不更换驱动器,请确保对您关心的任何内容都进行了良好的备份(尽管无论如何您都应该有一个良好的备份制度)。
答案3
fsck.ext4 -cDfty -C 0 /dev/sdxx
答案4
# ntfsresize -i /dev/sdb3
Device name : /dev/sdb3
NTFS volume version: 3.1
Cluster size : 4096 bytes
Current volume size: 287967052288 bytes (287968 MB)
Current device size: 287967052800 bytes (287968 MB)
Checking filesystem consistency ...
100.00 percent completed
Accounting clusters ...
Space in use : 178645 MB (62.0%)
Collecting resizing constraints ...
You might resize at 178644316160 bytes or 178645 MB (freeing 109323 MB).
Please make a test run using both the -n and -s options before real resizing!
# ntfsresize -ns /dev/sdb3
Non-destructive resize
# ntfsresize -s /dev/sdb3
Real resize! careful...