无需格式化即可标记硬盘上的坏道

无需格式化即可标记硬盘上的坏道

我注意到,在我的 Ubuntu 服务器上,一个驱动器出于某种原因处于只读状态。经过深入研究,我发现当硬盘驱动器出现错误时,就会发生这种情况。我使用 badblocks 检查错误,确实有一些损坏的扇区。

在大多数情况下,唯一合理的做法是尝试备份数据,移除硬盘并购买新的。但是,这台服务器没有任何我已在多个地方备份的内容,我想一直使用它直到它报废。我用它来播放流媒体音乐和运行一些简单的脚本。无论如何,重新安装所有内容都会很麻烦。

有没有办法不格式化硬盘就标记这些坏块?

答案1

我假设您谈论的是磁盘上的物理坏块,而不是损坏的文件系统。

要检查磁盘的物理状况,最好安装smartmontools

sudo apt-get install smartmontools

这是因为所有现代磁盘都使用名为聪明的

使用smartctrl命令读取此状态。例如,从第一个磁盘调用读取所有属性

sudo smartctl --all /dev/sda

注意讨论整体健康状态的一行。一旦这指示错误,磁盘很可能很快就会出现故障。

SMART overall-health self-assessment test result: PASSED

您要检查的其他行是待处理扇区数和重新分配扇区。

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       48
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       2

重新分配通常在原始字段中列出磁盘用可用的备用扇区替换的坏扇区数量。待处理扇区是下次写入失败时可能会重新分配的扇区。

当您的型号支持时,您甚至可以触发磁盘的自检

sudo smartctl -t long /dev/sda

要强制检查所有扇区,请使用badblocks写入数据的模式。请注意,尽管一般情况下运行它是安全的,但它会给磁盘带来额外负载,这可能会导致磁盘故障。始终备份您的数据。

sudo badblocks -svvn -c 262144 /dev/sda

命令的输出badblocks将显示许多行

hh:mm:ss elapased. (x/y/z errors)

在哪里

x = num_read_errors
y = num_write_errors
z = num_corruption_errors

如果您已通过这种方式完全处理了磁盘,则磁盘控制器应该已经将所有坏块替换为正常的块,并且 SMART 日志中的重新分配计数将增加。

答案2

虽然这是一个老问题,但我还是发布它,因为它badblocks不应该用于对磁盘进行坏块处理。请参阅man badblocks以了解更多信息。

“强烈建议用户不要直接运行 badblocks,而是使用 e2fsck 和 mke2fs 程序的 -c 选项”。

笔记

  • 不要中止坏块扫描!
  • 切勿对 SSD 造成坏块
  • 首先备份您的重要文件!
  • 这将需要很多小时
  • 您可能面临硬盘故障

在“尝试 Ubuntu”模式下启动 Ubuntu Live DVD/USB。

在终端:

sudo fdisk -l  # identify all "Linux Filesystem" partitions

sudo e2fsck -fccky /dev/sdXX  # non-destructive read/write test **(recommended)**

sudo e2fsck -fcky /dev/sdXX# 只读测试

-k重要,因为它保存了之前的坏块表,并将任何新的坏块添加到该表中。如果没有-k,您将丢失所有之前的坏块信息。

参数-fccky

   -f    Force checking even if the file system seems clean.

   -c    This option causes e2fsck to use badblocks(8) program to do
         a read-only scan of the device in order to find any bad blocks.
         If any bad blocks are found, they are added to the bad block
         inode to prevent them from being allocated to a file or direc‐
         tory.  If this option is specified twice, then the bad block scan
         will be done using a non-destructive read-write test.

   -k    When combined with the -c option, any existing bad blocks in the
         bad blocks list are preserved, and any new bad blocks found by
         running badblocks(8) will be added to the existing bad blocks
         list.

   -y    Assume an answer of `yes' to all questions; allows e2fsck to be
         used non-interactively. This option may not be specified at the
         same time as the -n or -p options.

相关内容