El HDD de 3TB es esclavo del caos ~ Reparando sectores defectuosos de un HDD de 3TB muerto y reviviéndolo ~

9 min

language: ja bn en es hi pt zh-cn zh-tw

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!!!!!

Image
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.

Related Posts