无法将零写入错误的扇区/硬盘,不计算重新分配的扇区


10

我有一个驱动器报告当前挂起的扇区为“ 45”。我使用了坏块来标识扇区,并且我一直在尝试使用dd向它们写入零。

据我了解,当我尝试将数据直接写入坏扇区时,它会触发重新分配,将当前挂起的扇区减少一个,并增加重新分配的扇区数。

但是,在该磁盘上,Reallocated_Sector_Ct和Reallocated_Event_Count的原始值均为0,并且当我尝试将0写入坏扇区时,dd失败并出现I / O错误。但是,当我写一个好的扇区时,dd可以正常工作。

# dd if=/dev/zero of=/dev/sdb bs=512 count=1 seek=217152
dd: error writing ‘/dev/sdb’: Input/output error

这是否意味着我的驱动器在某种程度上没有剩余扇区可用于重新分配?我的开车总的来说是一个可怕的人吗?(该驱动器实际上不是我的驱动器,我是在帮助一个朋友。他们可能刚刚得到了便宜的驱动器或其他东西。)

如果相关,这是smartctl -i的输出:

Model Family:     Western Digital Caviar Green (AF)
Device Model:     WDC WD15EARS-00Z5B1
Serial Number:    WD-WMAVU3027748
LU WWN Device Id: 5 0014ee 25998d213
Firmware Version: 80.00A80
User Capacity:    1,500,301,910,016 bytes [1.50 TB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS (minor revision not indicated)
SATA Version is:  SATA 2.6, 3.0 Gb/s
Local Time is:    Fri Oct 18 17:47:29 2013 CDT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

更新:
shred在磁盘上运行,这导致Current_Pending_Sector变为零。但是,Reallocated_Sector_Ct和Reallocated_Event_Count仍为零,并且dd现在能够将数据写入以前无法访问的扇区。这使我想到了其他几个问题:

  • 为何磁盘未重新分配重新分配?我假设发生了重新分配,因为我现在可以将数据直接写入该扇区,而以前没有。

  • 为什么切碎会导致重新分配而不是dd?切碎写入随机数据而不是零的事实是否有所作为?


其他SMART值如何?是Uncorrectable Sector Count大于零?
Synetech 2013年

Offline_Uncorrectable,这我假设是一回事,有25的原始值为
MetaNova

是的,听起来好像驱动器的状况确实不好。您可以对照此表检查值,尤其要注意红色行(对健康至关重要的值)。最好的选择是将所有有价值的/不可替代的东西复制(而不是移动)到其他地方,重新启动以使其重新启动,如果仍然有效,则对其进行擦拭(最好使用其专用的工具,并将其放在一边)备用存储空间来存储不重要的数据,例如下载的视频
Synetech 2013年

感谢您的答复。我的主要问题可能是为什么它不能重新分配这些扇区。它不应该只是检测扇区是否坏,将它们避开,重新分配并继续前进吗?我不担心磁盘上的任何数据已被清除了很久。如果可以避免,我的朋友并不渴望拥有1.5TB的镇纸。
MetaNova 2013年

这似乎是可以预料的事情,但可能是头脑不好。如果是这样,那么尝试读取驱动器将一直有效,直到您尝试访问磁头不良的磁盘,然后您将收到一堆读取错误,因为如果没有磁头可读取,则整个磁盘都无法访问。当然,它说扇区45不好,这可能是因为它已经被重新分配了,但是SMART没有更新。在保修期过期几个月前,但你可以尝试向他们发送电子邮件,也许他们会做一个礼貌更换。
Synetech 2013年

Answers:


9

WD15EARS驱动器(以及大多数其他最近生产的驱动器)使用Advanced Format,这意味着该驱动器的实际物理扇区大小为4 KiB,而传统的512字节扇区大小仅是模拟的。因此,如果单个4 KiB物理扇区损坏,则所有8个相应的仿真512字节扇区将立即变得不可读。

Sector Size: 512 bytes logical/physical来自的输出smartctl是不正确的,因为某些WD15EARS驱动器报告了错误的物理扇区大小  -显然您的驱动器的固件版本在这方面已损坏。)

而且,当写入单个模拟的512字节扇区时,高级格式驱动器实际上需要读取整个4 KiB物理扇区,更改其中的相应512字节部分,然后将整个物理扇区写入介质。如果介质良好,则与具有实际512字节物理扇区的驱动器相比,此读-修改-写操作只会导致速度显着下降。但是,如果4 KiB物理扇区损坏并且无法读取,则任何未完全重写该扇区的写操作都会失败。正因为如此,你可以使用不强迫这样的驱动器部门再分配ddbs=512 count=1 -你必须至少使用bs=512 count=8,并确保在扇区号seek= option是8的倍数。(假设未安装“ Windows XP Compatible”跳线,否则也必须考虑此跳线所添加的对齐偏移量。)

强制重新分配dd可能会失败的另一个原因是,默认情况下,Linux使用块层中的缓存来访问块设备,这可能会导致软件中的读取-修改-写入操作,当遇到无法读取的扇区时也会失败。您可以添加oflag=direct选项以绕过由指定的设备的此缓存of=...(还有该iflag=direct选项适用于输入设备)。


谢谢,谢谢,谢谢,这很有帮助。我阅读了驱动器上的标签,上面写着“高级格式”。我知道这意味着什么...但是,您对驱动器未报告任何重新分配的扇区有任何想法吗?
MetaNova

1
“当前挂起的扇区”不一定是坏扇区,磁盘在空闲检查之前读取它时会遇到一些麻烦,这可能是由于长时间未在其中写入和数据开始衰减(即,磁场减弱) )。向该扇区写入新数据将使用磁盘上强烈形成的新数据刷新该扇区中的数据。因此,如果您写入挂起的扇区,则磁盘会认为现在可以。您应该尝试从这些扇区读回数据,以确认它们是稳定的。
BeowulfNode42

对于那些不关心磁盘上的任何数据并且不想找到扇区的确切列表或不进行扇区计数数学的人来说,它们只是将整个磁盘的块大小设为4KiB的倍数,例如16MiB。然后,对磁盘的最后一部分使用小于先前选择的块大小的4KiB块大小。
BeowulfNode42 2013年

0

我最近不得不这样做,发现在整个磁盘上运行粉碎非常有效。尽管切碎对于软盘而言无用,但它确实可以使坏块上的自我修复功能发挥作用。

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.