在硬盘上标记坏扇区而不进行格式化


22

我注意到在我的家用Ubuntu服务器上,由于某种原因,一个驱动器是只读的。深入研究发现硬盘驱动器出现错误时可能会发生这种情况。我使用坏块检查错误,实际上我的扇区损坏了。

在大多数情况下,唯一合理的措施是尝试备份数据,删除硬盘并购买新硬盘。但是,该服务器没有任何我尚未在多个位置上备份的东西,因此我想在它死之前使用它。我用它来流音乐并运行一些简单的脚本。无论如何,重新安装一切都会大惊小怪。

是否可以在不格式化硬盘的情况下标记这些坏块?

Answers:


29

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

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

sudo apt-get install smartmontools

之所以可行,是因为所有现代磁盘都使用称为SMART的系统记录其运行状况

使用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

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


2
-c一次测试的块的影响或数量是多少?换句话说,为什么与默认值64相比,您有这么大的值?
greole 2014年

4
1024字节的默认块大小乘以一次默认的64块乘以一次,每个请求仅处理64k。对于具有高达150 MiB / s的吞吐量的现代磁盘,这带来了比我感觉舒适的更多开销。我想让驱动器有机会以最有效的方式处理数据,而不必等待总线上的数据。
user228505 2014年

说:/ dev / sda显然已被系统使用;运行坏块是不安全的!
Dims

1
@Dims它告诉您不要在活动安装的磁盘上运行此命令。首先卸载磁盘。您的情况可能是系统驱动器。因此,请首先启动救援系统。
user228505 '16

2
@Dims如果您仍然想运行它,则有-force选项。即sudo badblocks -svvn -c 262144 / dev / sda -force
ADR
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.