He tenido problemas con el disco duro en Ubuntu 18.04 donde el sistema vuelve a montar aleatoriamente mi partición raíz (/dev/sda4) como de solo lectura debido a errores.
dmesg|grep 'I/O error'
revela problemas obvios con sda4. No tengo el resultado exacto en este momento ya que la caja se reinició exitosamente y no tiene problemas en este momento.
Mi plan era ejecutar una verificación del sistema de archivos. Seguíesta respuestaasí comoeste tutorialcon cuidado. En el último tutorial utilicé la sección titulada: "Cómo forzar a fsck a verificar el sistema de archivos después de reiniciar el sistema en Linux cuando se usa systemd"
Sin embargo, después de reiniciar, el sistema de archivos NO se verifica como lo revela el resultado de este comando:
tune2fs -l /dev/sda4 | grep checked
Last checked: Sat Nov 21 15:36:56 2020
Probé estas variaciones de GRUB CMDLINE pero no tuvieron éxito:
GRUB_CMDLINE_LINUX_DEFAULT="maybe-ubiquity fsck.mode=force"
y
GRUB_CMDLINE_LINUX_DEFAULT="maybe-ubiquity fsck.mode=force fsck.repair=yes"
Y sí, corrí update-grub
. ¿Qué me estoy perdiendo?
Salida de smartctl -a /dev/sda
:
Device Model: Samsung SSD 860 EVO 250GB
Serial Number: S59WNG0MA22770K
LU WWN Device Id: 5 002538 e70265a2a
Firmware Version: RVT03B6Q
User Capacity: 250,059,350,016 bytes [250 GB]
Sector Size: 512 bytes logical/physical
Rotation Rate: Solid State Device
Form Factor: 2.5 inches
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: Unknown(0x09fc), ACS-4 T13/BSR INCITS 529 revision 5
SATA Version is: SATA 3.2, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is: Wed May 3 11:35:14 2023 MST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
General SMART Values:
Offline data collection status: (0x00) Offline data collection activity
was never started.
Auto Offline Data Collection: Disabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: ( 0) seconds.
Offline data collection
capabilities: (0x53) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
No Offline surface scan supported.
Self-test supported.
No Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time: ( 2) minutes.
Extended self-test routine
recommended polling time: ( 85) minutes.
SCT capabilities: (0x003d) SCT Status supported.
SCT Error Recovery Control supported.
SCT Feature Control supported.
SCT Data Table supported.
SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
5 Reallocated_Sector_Ct 0x0033 038 038 010 Pre-fail Always - 311
9 Power_On_Hours 0x0032 095 095 000 Old_age Always - 21420
12 Power_Cycle_Count 0x0032 099 099 000 Old_age Always - 14
177 Wear_Leveling_Count 0x0013 001 001 000 Pre-fail Always - 2041
179 Used_Rsvd_Blk_Cnt_Tot 0x0013 100 100 010 Pre-fail Always - 0
181 Program_Fail_Cnt_Total 0x0032 100 100 010 Old_age Always - 0
182 Erase_Fail_Count_Total 0x0032 100 100 010 Old_age Always - 0
183 Runtime_Bad_Block 0x0013 038 038 010 Pre-fail Always - 311
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
190 Airflow_Temperature_Cel 0x0032 067 065 000 Old_age Always - 33
195 Hardware_ECC_Recovered 0x001a 200 200 000 Old_age Always - 0
199 UDMA_CRC_Error_Count 0x003e 100 100 000 Old_age Always - 0
235 Unknown_Attribute 0x0012 099 099 000 Old_age Always - 10
241 Total_LBAs_Written 0x0032 099 099 000 Old_age Always - 166281511800
SMART Error Log Version: 1
No Errors Logged
SMART Self-test log structure revision number 1
No self-tests have been logged. [To run self-tests, use: smartctl -t]
SMART Selective self-test log data structure revision number 1
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 0 Not_testing
2 0 0 Not_testing
3 0 0 Not_testing
4 0 0 Not_testing
5 0 0 Not_testing
256 0 65535 Read_scanning was never started
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
ACTUALIZAR:
El servidor volvió a fallar esta mañana (aún está activo pero /
está montado como de solo lectura) y esto es lo que veo en dmesg:
dmesg |grep sda
[70547.166349] sd 0:0:0:0: [sda] tag#13 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[70547.166354] sd 0:0:0:0: [sda] tag#13 CDB: ATA command pass through(16) 85 06 2c 00 00 00 00 00 00 00 00 00 00 00 e5 00
[70948.441912] sd 0:0:0:0: [sda] tag#15 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[70948.441918] sd 0:0:0:0: [sda] tag#15 CDB: Read(10) 28 00 1a cb 1c 00 00 00 08 00
[70948.441922] print_req_error: I/O error, dev sda, sector 449518592
[70948.442312] sd 0:0:0:0: [sda] tag#16 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[70948.442315] sd 0:0:0:0: [sda] tag#16 CDB: Read(10) 28 00 1a cb 1c 00 00 00 08 00
[70948.442316] print_req_error: I/O error, dev sda, sector 449518592
[70948.442955] sd 0:0:0:0: [sda] tag#17 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[70948.442960] sd 0:0:0:0: [sda] tag#17 CDB: Read(10) 28 00 0e 0b 03 08 00 00 20 00
[70948.442962] print_req_error: I/O error, dev sda, sector 235602696
[70948.443389] sd 0:0:0:0: [sda] tag#18 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[70948.443393] sd 0:0:0:0: [sda] tag#18 CDB: Read(10) 28 00 0e 0b 03 08 00 00 08 00
[70948.443396] print_req_error: I/O error, dev sda, sector 235602696
[72347.211525] sd 0:0:0:0: [sda] tag#19 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[72347.211531] sd 0:0:0:0: [sda] tag#19 CDB: ATA command pass through(16) 85 06 2c 00 00 00 00 00 00 00 00 00 00 00 e5 00
[74147.255746] sd 0:0:0:0: [sda] tag#21 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[74147.255752] sd 0:0:0:0: [sda] tag#21 CDB: ATA command pass through(16) 85 06 2c 00 00 00 00 00 00 00 00 00 00 00 e5 00
[75947.299631] sd 0:0:0:0: [sda] tag#23 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[75947.299637] sd 0:0:0:0: [sda] tag#23 CDB: ATA command pass through(16) 85 06 2c 00 00 00 00 00 00 00 00 00 00 00 e5 00
[77747.345291] sd 0:0:0:0: [sda] tag#25 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[77747.345297] sd 0:0:0:0: [sda] tag#25 CDB: ATA command pass through(16) 85 06 2c 00 00 00 00 00 00 00 00 00 00 00 e5 00
[79547.389376] sd 0:0:0:0: [sda] tag#27 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[79547.389382] sd 0:0:0:0: [sda] tag#27 CDB: ATA command pass through(16) 85 06 2c 00 00 00 00 00 00 00 00 00 00 00 e5 00
[81347.432593] sd 0:0:0:0: [sda] tag#29 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[81347.432598] sd 0:0:0:0: [sda] tag#29 CDB: ATA command pass through(16) 85 06 2c 00 00 00 00 00 00 00 00 00 00 00 e5 00
Me doy cuenta de que es necesario reemplazar la unidad, pero mi objetivo es simplemente ejecutarla fsck
en la partición raíz.
Respuesta1
No sé cómo forzar el fsck usando la solución que estás probando, pero puedo sugerir una solución alternativa:
Utilice tune2fs
y limite el valor a remontajes muy bajos y marcas de tiempo muy bajas.
# To see current settings
sudo tune2fs -l /dev/sda4
# To alter it
sudo tune2fs -c 1 -i 1d /dev/sda4
Esto forzará el cheque cada 1 reinicio o cada 1 día desde el último cheque, lo que suceda antes.
Verificar INTELIGENTE
Como han dicho otros, esto es sólo una curita para los problemas de HW. A veces el disco duro se está muriendo, otras veces es un problema de hardware no relacionado (realice una prueba de memoria), en otras ocasiones es solo un cable SATA suelto (desconéctelo y conéctelo nuevamente desde ambos extremos, si eso no lo soluciona, pruebe con otro cable). .
Tenga cuidado, en el peor de los casos, la fuente de alimentación no funciona correctamente y está dañando el resto del hardware (en tal caso, reemplazar el disco duro solo solucionará el problema temporalmente porque con el tiempo la fuente de alimentación dañará el nuevo disco duro). Verifique que los voltajes estén dentro de niveles aceptables.
Publicar el resultado de smart:
sudo smartctl -a /dev/sda
Puede ayudar a diagnosticar lo que podría estar pasando.
Actualizar
Tampoco sé por qué no puedes ejecutar fsck a través de tune2fs.
Pero vi tu SMART. Según él, su disco está envejeciendo, pero parece estar en buen estado.
El problema puede estar en otra parte, como en el cable SATA.
Si no puede hacer que fsck funcione, entonces todo lo que puedo sugerir es iniciar desde un liveUsb y ejecutar el comando manualmente.
Actualización 2
OK, publicaste los mensajes dmseg.Tenemos información contradictoria procedente de SMART & OS., así que lo escribiré en detalle.
Bloques malos
SMART dice que sus unidades tienen bloques defectuosos. Esto es normal en cualquier SSD a medida que envejece.y la unidad reasignará los datos en bloques de repuesto. Una vez que se agota el repuesto, es necesario reemplazar la unidad.
SMART dice que la cantidad de bloques defectuosos está dentro de lo "normal": Los atributos más importantes que se pueden ver aquí son Reallocated_Sector_Ct
y Runtime_Bad_Block
.
Dice que detectó 311 bloques defectuosos y reasignó 311 a repuesto. Esto es bueno. Si hubo 311 bloques defectuosos pero solo 310 reasignaciones, significa que los datos de uno de los bloques se perdieron.
Lo importante es el valor "normalizado" (038). Así te dice el fabricante lo que considera normal.
Un valor donde 100 significa perfecto y 0 significa realmente malo. Ahora mismo es 38, que es decir "esto se está poniendo mal"; pero el fabricante dice que está bien siempre que ese valor esté por encima de 010 (el UMBRAL).
Aquí tenemos nuestra primera información contradictoria: Used_Rsvd_Blk_Cnt_Tot
dice que la reserva no ha sido tocada en absoluto, a pesar de tener bloques defectuosos. No cuadra.
Pero no me sorprendería que el firmware simplemente no rastree este valor a pesar de informarlo, por lo que lo ignoraremos por ahora.
Nivelación de desgaste
Este es el atributo más problemático de leer. Wear_Leveling_Count
dice que es 001. Normalmente un valor de 1 significa que su unidad está muerta y debe ser reemplazada lo antes posible.
Significa que se le acabaron los bloques de repuesto. Pero ha habido errores de firmware en los que este atributo se informa al revés, y un valor de 1 significa que la unidad tiene un estado de funcionamiento del 99 %.
Usando uncalculadora de TBWInserté su número de LBA escritos + tamaño de sector 512 y obtuve que su unidad tiene 77,43 TiB escritos. Según Google, su modelo debería tener 150 TBW, por lo quedeberíaseguir siendo viable.
Me temo que la mejor solución aquí es abrir un cuadro de Windows y ejecutarCrystalDiskInfoque tiene en cuenta estos errores de firmware (utilizando una base de datos interna) y le informará una evaluación de salud muy precisa.
Dado que su inteligencia dice que SMART overall-health self-assessment test result: PASSED
me inclino a creer que quiere decir 99%, en lugar de 1%.
Pero si me equivoco podemos detenernos aquí, hay que reemplazar el disco.
Problemas de cables/Problemas de placa base
Los errores en dmesg de Linux básicamente dicen que intentó leer un sector y obtuvo datos incorrectos.
El kernel incluso dice que intentó leer el sector 235602696 dos veces y obtuvo datos diferentes:
- 28 00 0e 0b 03 08 00 002000
- 28 00 0e 0b 03 08 00 000800.
Si el disco dice que no hay errores pero el sistema operativo dice que sí; luego los datos se corrompieron durante el tránsito. Normalmente esto indica:
- El cable SATA está flojo
- El cable SATA está dañado
- El cable de alimentación está flojo
- El cable de alimentación está dañado
- Fallo del bus de la placa base
- Fallo de la fuente de alimentación
- Fallo de RAM
Pero aquí es donde tenemosnuestra segunda fuente de información contradictoria: UDMA_CRC_Error_Count
es 0.
Esto significa que el disco nunca detectó un solo error causado por un cable defectuoso/suelto o un bus de la placa base defectuoso.
Esto es muy improbable. SMART dice que el disco está bien, los comandos que llegan desde el sistema operativo al disco nunca se corrompen por un cableado defectuoso; sin embargo, el sistema operativo leyó el mismo sector dos veces y obtuvo un byte diferente.
Lo único que se me ocurre que haría esto posible es si tienes mala RAM.O un problema de cable extremadamente improbable en el que todos los datos que entran en el disco nunca se corrompen, pero los datos que salen sí se corrompen.
Curso de acción
Mi instinto me dice que el disco está defectuoso. Pero:
- Haga una copia de seguridad de todos los datos en otro disco. En una ejecución LiveUSB (y una unidad USB externa lo suficientemente grande):
sudo apt install zstd
# To backup
sudo zstd -16v < /dev/sda > /media/external_disk/backup_file.zst
# To restore (don't do that on step 1, see step 5)
sudo zstdcat -v /media/external_disk/backup_file.zst > /dev/sda
- Haga una copia de seguridad de los datos nuevamente, pero esta vez con solo una copia normal de los archivos (si el disco muere, es mucho más fácil recuperarse de una copia de seguridad simple que intentar montar en bucle una imagen zstd comprimida de un disco y leer los archivos de ella).
- Reinicie y ejecute una prueba de memoria para descartar errores de RAM
- Apague, abra la carcasa y desconecte y vuelva a enchufar los cables SATA y de alimentación (a la unidad). Comprueba que no estén dañados. Posiblemente reemplazarlos.
- Inicie nuevamente en la unidad LiveUSB y realice un borrado seguro del disco. Si hay algún problema con su unidad, tal vez esto la restablezca a una condición de funcionamiento (o tal vez resulte en el último comando que se ejecuta si el disco no se puede salvar). Esto debería tomar varios minutos:
sudo blkdiscard -s /dev/sda
- Si todo ha ido bien hasta ahora, restaure su copia de seguridad con el
sudo zstdcat
comando del paso 1.
Si el disco aún tiene problemas y memtest tuvo éxito, entonces personalmente consideraría que el disco está defectuoso.
No podemos ignorar que un valor de 038 Reallocated_Sector_Ct
significa que las cosas se están poniendo mal, a pesar de que el fabricante diga que todavía no está "tan mal".
¡Ah! Importante: Si en algún momento dejaste el disco apagado por más de 3 meses; Este escenario es bastante posible. A pesar de la creencia popular, las celdas NAND pueden perder su capacidad de almacenamiento si se dejan sin alimentación durante demasiado tiempo ("demasiado tiempo" puede oscilar entre 7 días y 7 años; pero el caso más común es 3 meses). Especialmente si son viejos.
Si esto le sucedió a usted, simplemente realice los pasos anteriores: haga una copia de seguridad de los datos, borre el disco de forma segura y restaure la copia de seguridad.
Buena suerte.