Cómo hacerle sentar la cabeza a HDD
Publicado: | Прочесть по-русски | Read in English | Más posts sobre hardware magic
Hace unos días salvé dos HDDs míos por un tipo de curandería.
Síntomas eran casi mismos: durante el arranque el OS arrojaba en un terminal un montón de errores, y los mismos errores aparecían regularmente en los archivos de registro. Algo como esto:
Mar 31 07:31:31 rohan kernel: [ 1.640757] ata5.00: exception Emask 0x0 SAct 0x1 SErr 0x0 action 0x0 Mar 31 07:31:31 rohan kernel: [ 1.641114] ata5.00: irq_stat 0x40000008 Mar 31 07:31:31 rohan kernel: [ 1.641317] ata5.00: failed command: READ FPDMA QUEUED Mar 31 07:31:31 rohan kernel: [ 1.641582] ata5.00: cmd 60/08:00:50:00:02/00:00:00:00:00/40 tag 0 ncq 4096 in Mar 31 07:31:31 rohan kernel: [ 1.641582] res 41/40:00:52:00:02/00:00:00:00:00/40 Emask 0x409 (media error) <F> Mar 31 07:31:31 rohan kernel: [ 1.642365] ata5.00: status: { DRDY ERR } Mar 31 07:31:31 rohan kernel: [ 1.642570] ata5.00: error: { UNC } Mar 31 07:31:31 rohan kernel: [ 1.650046] ata5.00: configured for UDMA/133 Mar 31 07:31:31 rohan kernel: [ 1.650057] sd 4:0:0:0: [sdb] Unhandled sense code Mar 31 07:31:31 rohan kernel: [ 1.650061] sd 4:0:0:0: [sdb] Mar 31 07:31:31 rohan kernel: [ 1.650064] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE Mar 31 07:31:31 rohan kernel: [ 1.650067] sd 4:0:0:0: [sdb] Mar 31 07:31:31 rohan kernel: [ 1.650069] Sense Key : Medium Error [current] [descriptor] Mar 31 07:31:31 rohan kernel: [ 1.650075] Descriptor sense data with sense descriptors (in hex): Mar 31 07:31:31 rohan kernel: [ 1.650078] 72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00 Mar 31 07:31:31 rohan kernel: [ 1.650094] 00 02 00 52 Mar 31 07:31:31 rohan kernel: [ 1.650101] sd 4:0:0:0: [sdb] Mar 31 07:31:31 rohan kernel: [ 1.650104] Add. Sense: Unrecovered read error - auto reallocate failed Mar 31 07:31:31 rohan kernel: [ 1.650108] sd 4:0:0:0: [sdb] CDB: Mar 31 07:31:31 rohan kernel: [ 1.650110] Read(10): 28 00 00 02 00 50 00 00 08 00 Mar 31 07:31:31 rohan kernel: [ 1.650123] end_request: I/O error, dev sdb, sector 131154 Mar 31 07:31:31 rohan kernel: [ 1.650416] Buffer I/O error on device sdb2, logical block 1 Mar 31 07:31:31 rohan kernel: [ 1.650711] ata5: EH complete
Al mismo tiempo smartctl no mostraba ningunos errores serios. La única cosa que me turbó fue la siguiente:
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 1 199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 3
Valor distinto de cero en «Pending sectors» significa que un disco duro no puede escribir un sector y no puede trasladarlo por alguna causa. Valor distinto de cero en «CRC errors» significa que algo está mal con el canal de comunicación entre del HDD y placa madre. Hay unas posibilidades para eso, pero la mejor explicación es el cable deteriorado, por ejemplo.
Decidí comprobar sí el disco es realmente mal o no. El modo más sencillo de hacerlo es bastante radical y destructivo, pero lo funciona. Implico sobrescribir todo el disco con algún valor, por ejemplo 0. Por si el disco está muerto, no se puede hacerlo. Entonces, ya que mi primer disco se cubría de polvo más que dos años y me resigné a perder toda la información, yo hice
# dd if=/dev/zero of=/dev/sdb bs=16M
… y después 5 horas mi 2TB HDD esté tan limpio como nuevo.
Después tal tratamiento, núcleo estuvo tranquilo y archivos de registro estuvieron limpios. Unos días de trabajo de este disco mostraron que está bien y que puedo hacer lo mismo con mi otro HDD, que está un parte del RAID1. Pues, dicho y echo, y el mañana siguiente tuvo otro limpio disco y limpios archivos de registro. No hubo problema con recrear la tabla de particiones y reconstruir RAID. Por ahora funciona casi toda la semana y yo no he notado ni una señal de RAID degradación o inestabilidad del disco. Pues, todavía es demasiado temprano sacar conclusiones, entonces vamos a ver lo que va a pasar dentro de un mes. Sin embargo, comprobaría los discos con whdd o semejante. Cualquier día, tal vez…