Met*_*ova 10 hard-drive smart bad-sectors sectors
我有一个驱动器报告当前挂起的扇区是“45”。我已经使用坏块来识别扇区,并且我一直在尝试使用dd向它们写入零。
据我了解,当我尝试将数据直接写入坏扇区时,它应该触发重新分配,将当前挂起的扇区减少 1 并增加重新分配的扇区数。
但是,在此磁盘上 Reallocated_Sector_Ct 和 Reallocated_Event_Count 原始值都是 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
Run Code Online (Sandbox Code Playgroud)
这是否意味着我的驱动器在某种程度上没有可用于重新分配的备用扇区?我的驱动器一般来说是一个可怕的人吗?(驱动器实际上不是我的,我正在帮助一个朋友。他们可能刚刚得到了便宜的驱动器或其他东西。)
如果相关,这里是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
Run Code Online (Sandbox Code Playgroud)
更新:
我shred在磁盘上运行,这导致 Current_Pending_Sector 变为零。但是,Reallocated_Sector_Ct 和 Reallocated_Event_Count 仍然为零,dd 现在可以将数据写入以前无法写入的扇区。这让我产生了其他几个问题:
为什么磁盘不记录重新分配?我假设重新分配发生了,因为我现在可以将数据直接写入扇区,而以前不能。
为什么 shred 会导致重新分配而不是 dd?shred 写入随机数据而不仅仅是零的事实是否有所不同?
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 物理扇区坏了并且无法读取,任何没有完全重写扇区的写操作都会失败。因此,您不能使用ddwith强制在此类驱动器上重新分配扇区bs=512 count=1 - 您必须至少使用bs=512 count=8并确保seek= option 是 8 的倍数。(这里假设没有安装“Windows XP Compatible”跳线,否则这个跳线添加的对齐偏移也必须考虑在内。)
强制重新分配dd可能失败的另一个原因是默认情况下Linux使用块层中的缓存来访问块设备,这可能会导致软件中的读-修改-写操作,当遇到不可读扇区时也会失败。您可以oflag=direct为由指定的设备添加绕过此缓存的选项of=...(还有该iflag=direct选项,适用于输入设备)。
| 归档时间: |
|
| 查看次数: |
4572 次 |
| 最近记录: |