El HDD de 3TB es esclavo del caos ~ Reparando sectores defectuosos de un HDD de 3TB muerto y reviviéndolo ~
Hola, soy un inútil.
Aunque estaba sumido en la desesperación en el artículo anterior, no soy un hombre que se rinda fácilmente.
El verano no termina. Hasta que termine la tarea ______
Antecedentes
Ayer, de repente, la conexión SSH se detuvo y GNU/Linux pareció quedarse atascado, así que después de reiniciar, revisé el syslog por si acaso.
Aug 27 04:03:55 localhost kernel: [2768521.366336] EXT4-fs (sdc1): error count since last fsck: 52
Aug 27 21:19:27 haturatu kernel: [ 28.915465] EXT4-fs (sdc1): warning: mounting fs with errors, running e2fsck is recommended
Aug 27 21:24:30 haturatu kernel: [ 332.803482] EXT4-fs (sdc1): error count since last fsck: 53
Aug 27 22:28:45 haturatu kernel: [ 5.694598] EXT4-fs (sdc1): warning: mounting fs with errors, running e2fsck is recommended
Aug 27 22:33:55 haturatu kernel: [ 316.412146] EXT4-fs (sdc1): error count since last fsck: 53
Aug 28 08:19:17 haturatu kernel: [ 5.710007] EXT4-fs (sdc1): warning: mounting fs with errors, running e2fsck is recommended
Aug 28 08:24:39 haturatu kernel: [ 316.427213] EXT4-fs (sdc1): error count since last fsck: 53
¡¿Eh?!
Oh...
¿Hmm?
El HDD no regresó en Obon
Intentando fsck
Por ahora, lo conecté como un USB-HDD.
$ sudo fsck -f -y /dev/sdb
Después de verificar el disco con lsblk, lo ejecuté por si acaso.
727810) +(77856769--77859749) +(77987841--77990269) +(78118913--78121629) +(78249985--78252434) +(78381057--78383008) +(78512129--78515588) +(78643201--78644782) +(78774273--78776000) +(78905345--78907598) +(79036417--79038955) +(79167489--79169769) +(79298561--79300360) +(79429633--79431425) +(79560705--79562857) +(79691777--79695179) +(79822849--79857556) +(79953921--79960927) +(80084993--80113787) +140247041
Fix? yes
Padding at end of inode bitmap is not set. Fix? yes
Error reading block 32768 (entrada/salida). Ignore error? yes
Force rewrite? yes
Error writing block 32768 (entrada/salida). Ignore error? yes
Error reading block 98304 (entrada/salida). Ignore error? yes
¡¡¡¡¡Lo sabía!!!!!
Sí, es el desesperante error de E/S que he visto antes.
Revisando con dmesg
Lo abreviaré un poco, pero revisé las entradas del disco relevante con grep.
$ sudo dmesg | grep ' I/O error,' | grep "sdb"
[227123.296980] I/O error, dev sdb, sector 62916608 op 0x0:(READ) flags 0x83700 phys_seg 1 prio class 0
[227175.622027] I/O error, dev sdb, sector 78880 op 0x0:(READ) flags 0x80700 phys_seg 1 prio class 0
[227175.622087] I/O error, dev sdb, sector 62916624 op 0x0:(READ) flags 0x83700 phys_seg 14 prio class 0
[227459.286465] I/O error, dev sdb, sector 373295104 op 0x0:(READ) flags 0x80700 phys_seg 5 prio class 0
[227490.240900] I/O error, dev sdb, sector 377489408 op 0x0:(READ) flags 0x80700 phys_seg 4 prio class 0
Ahhh
Mi corazón está a punto de romperse, Patrasche.
Buscando en Google
Me encomiendo a los ingenieros del pasado.
(Reparé un HDD de Linux que tenía sectores defectuosos)[https://web.archive.org/web/20240828125146/https://neocat.hatenablog.com/entry/2019/10/21/061645]
Lo leí y más o menos entendí el mecanismo.
En estos casos, si se escribe en este sector, el firmware del HDD debería reemplazarlo con un sector alternativo.
Parece ser. Por ahora, aunque con prisa, seguiré introduciendo los sectores que aparecieron en la salida de dmesg.
$ cat secter.sh
#!/bin/bash
sudo dd if=/dev/zero of=/dev/sdc bs=4k seek=$((62916608 / 8)) count=1
sudo dd if=/dev/zero of=/dev/sdc bs=4k seek=$((62916624 / 8)) count=1
sudo dd if=/dev/zero of=/dev/sdc bs=4k seek=$((373295104 / 8)) count=1
sudo dd if=/dev/zero of=/dev/sdc bs=4k seek=$((406849536 / 8)) count=1
sudo dd if=/dev/zero of=/dev/sdc bs=4k seek=$((411043840 / 8)) count=1
sudo dd if=/dev/zero of=/dev/sdc bs=4k seek=$((415238144 / 8)) count=1
sudo dd if=/dev/zero of=/dev/sdc bs=4k seek=$((419432448 / 8)) count=1
sudo dd if=/dev/zero of=/dev/sdc bs=4k seek=$((423626752 / 8)) count=1
También lo abreviaré aquí, pero el nombre del dispositivo ha cambiado de sdb a sdc a sdd porque lo he estado conectando y desconectando debido a errores de E/S al intentar fsck, así que por favor, ténganlo en cuenta.
Por ahora, ejecuté de una vez los comandos en script para los sectores que aparecieron en dmesg.
Aunque probablemente se podría hacer de forma más concisa, en momentos como este no puedo pensar en la eficiencia. Si se trata de arriesgarme a borrar todos los datos del disco por un error, prefiero luchar de la manera más sucia posible, incluso si eso significa beber agua sucia.
Y luego, a fsck...
Mientras lo ejecutaba varias veces en el mismo sector...
Bad sectors playing hide and seek on my hard drive
Aquí se decía que smartctl también podía verificar los sectores defectuosos, así que lo intenté al principio, pero no funcionó.
Sin embargo, después de repetir la 'batalla sucia' que mencioné varias veces, empezó a funcionar, así que ejecuté sudo smartctl -a /dev/sda, sudo smartctl -t short /dev/sda y funcionó bien, y luego repetí la 'batalla sucia'...
$ sudo fsck -f -y /dev/sdd1
fsck from util-linux 2.40.2
e2fsck 1.47.1 (20-May-2024)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences: +(7864320--7872543) +(7929856--7946227) +(7946240--7962599) +(46661632--46669855) +(50855936--50864159) +(51380224--51388447) +(51388796--51404769) +(51404800--51412989) +(51904512--51928992) +(51929026--51929058) +(51929088--51937274) +(52428800--52453339) +(52453376--52461542) +(52953088--52962248) +(52964143--52977649) +(52977664--52985847)
Fix? yes
¡¡¡¡¡Uwaaaaaaaaaaaaaaaaaaaaaaah!!!!!
¡¡¡¡¡Resurrección!!!!!

Todavía no he podido verificar qué archivos están dañados, pero la mayoría de los 1TB de datos han sido recuperados.
Y así, fue un día en el que sentí profundamente lo grande que es la sabiduría de nuestros predecesores.
Sinceramente, fue un día en el que nunca imaginé que, al descubrir por la mañana que el HDD había muerto, lo recuperaría el mismo día.
Hasta luego.
Espero contar con ustedes de nuevo.