Estoy viendo algunos errores extraños en syslog. Estoy ejecutando un debian 7.9. ¿Alguien ha visto esto antes y / o sabe lo que podría estar pasando? ¿Está fallando mi disco duro? Hice un fsck el otro día en el arranque y no había mensajes que lo dijeran. Es un disco duro externo USB cifrado (LUKS), que se descifra / monta en el arranque. No hay RAID ni nada por el estilo configurado en la computadora. Tengo otras dos unidades configuradas de manera similar sin problemas.
Miré los datos inteligentes de la unidad y dice que pasó la "prueba de salud general". ¿Hay algo más que pueda verificar / hacer para tener una idea de su condición? ¿Por qué estaría recibiendo estos errores?
Sep 24 02:49:03 centaur kernel: [ 1429.377929] sd 2:0:0:0: [sdb] Unhandled error code
Sep 24 02:49:03 centaur kernel: [ 1429.377933] sd 2:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_OK
Sep 24 02:49:03 centaur kernel: [ 1429.377939] sd 2:0:0:0: [sdb] CDB: Read(10): 28 00 38 80 16 08 00 00 08 00
Sep 24 02:49:03 centaur kernel: [ 1429.377950] end_request: I/O error, dev sdb, sector 947918344
Sep 24 11:41:19 centaur kernel: [32752.064706] sd 2:0:0:0: [sdb] Unhandled error code
Sep 24 11:41:19 centaur kernel: [32752.064710] sd 2:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_OK
Sep 24 11:41:19 centaur kernel: [32752.064715] sd 2:0:0:0: [sdb] CDB: Read(10): 28 00 38 40 f6 08 00 00 08 00
Sep 24 11:41:19 centaur kernel: [32752.064727] end_request: I/O error, dev sdb, sector 943781384
Sep 24 13:00:15 centaur kernel: [37487.599035] sd 2:0:0:0: [sdb] Unhandled error code
Sep 24 13:00:15 centaur kernel: [37487.599040] sd 2:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_OK
Sep 24 13:00:15 centaur kernel: [37487.599045] sd 2:0:0:0: [sdb] CDB: Read(10): 28 00 38 40 e1 68 00 00 08 00
Sep 24 13:00:15 centaur kernel: [37487.599056] end_request: I/O error, dev sdb, sector 943776104
Sep 24 13:55:44 centaur kernel: [40816.471962] sd 2:0:0:0: [sdb] Unhandled error code
Sep 24 13:55:44 centaur kernel: [40816.471967] sd 2:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_OK
Sep 24 13:55:44 centaur kernel: [40816.471972] sd 2:0:0:0: [sdb] CDB: Read(10): 28 00 38 40 6b e0 00 00 08 00
Sep 24 13:55:44 centaur kernel: [40816.471984] end_request: I/O error, dev sdb, sector 943746016
Sep 24 14:26:37 centaur kernel: [42670.078961] sd 2:0:0:0: [sdb] Unhandled error code
Sep 24 14:26:37 centaur kernel: [42670.078965] sd 2:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_OK
Sep 24 14:26:37 centaur kernel: [42670.078971] sd 2:0:0:0: [sdb] CDB: Read(10): 28 00 38 00 25 20 00 00 08 00
Sep 24 14:26:37 centaur kernel: [42670.078983] end_request: I/O error, dev sdb, sector 939533600
Sep 24 14:57:41 centaur kernel: [44533.796981] sd 2:0:0:0: [sdb] Unhandled error code
Sep 24 14:57:41 centaur kernel: [44533.796987] sd 2:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_OK
Sep 24 14:57:41 centaur kernel: [44533.796992] sd 2:0:0:0: [sdb] CDB: Read(10): 28 00 38 40 76 08 00 00 08 00
Sep 24 14:57:41 centaur kernel: [44533.797003] end_request: I/O error, dev sdb, sector 943748616
Información de smartctl:
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.2.0-4-amd64] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF INFORMATION SECTION ===
Model Family: Seagate Barracuda LP
Device Model: ST32000542AS
Serial Number: 6XW135W4
LU WWN Device Id: 5 000c50 01f01e7ee
Firmware Version: CC34
User Capacity: 2,000,398,934,016 bytes [2.00 TB]
Sector Size: 512 bytes logical/physical
Device is: In smartctl database [for details use: -P show]
ATA Version is: 8
ATA Standard is: ATA-8-ACS revision 4
Local Time is: Fri Sep 25 00:18:47 2015 MDT
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
See vendor-specific Attribute list for marginal Attributes.
General SMART Values:
Offline data collection status: (0x82) Offline data collection activity
was completed without error.
Auto Offline Data Collection: Enabled.
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: ( 623) seconds.
Offline data collection
capabilities: (0x7b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
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: ( 1) minutes.
Extended self-test routine
recommended polling time: ( 255) minutes.
Conveyance self-test routine
recommended polling time: ( 2) minutes.
SCT capabilities: (0x103f) SCT Status supported.
SCT Error Recovery Control supported.
SCT Feature Control supported.
SCT Data Table supported.
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 118 099 006 Pre-fail Always - 178542268
3 Spin_Up_Time 0x0003 100 100 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 085 085 020 Old_age Always - 15977
5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0
7 Seek_Error_Rate 0x000f 065 060 030 Pre-fail Always - 81661499813
9 Power_On_Hours 0x0032 045 045 000 Old_age Always - 48686
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 69
183 Runtime_Bad_Block 0x0032 100 100 000 Old_age Always - 0
184 End-to-End_Error 0x0032 100 100 099 Old_age Always - 0
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
188 Command_Timeout 0x0032 100 099 000 Old_age Always - 4295032833
189 High_Fly_Writes 0x003a 083 083 000 Old_age Always - 17
190 Airflow_Temperature_Cel 0x0022 052 040 045 Old_age Always In_the_past 48 (0 174 52 30)
194 Temperature_Celsius 0x0022 048 060 000 Old_age Always - 48 (0 14 0 0)
195 Hardware_ECC_Recovered 0x001a 042 020 000 Old_age Always - 178542268
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0
240 Head_Flying_Hours 0x0000 100 253 000 Old_age Offline - 208202834670158
241 Total_LBAs_Written 0x0000 100 253 000 Old_age Offline - 1107416570
242 Total_LBAs_Read 0x0000 100 253 000 Old_age Offline - 361340835
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
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.
También miré este sitio y uno de los carteles cambia su sysctl.conf como lo que se pega a continuación, pero el mío ya está configurado de esta manera ...
/etc/sysctl.conf
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10
fuente
Respuestas:
Hacer una copia de seguridad primero
Antes de solucionar problemas, asegúrese de que todos los datos que necesita en el disco duro afectado (
/dev/sdb
) estén respaldados.¿Problemas para retroceder?
Si encuentra errores de E / S que no son el resultado de la corrupción del sistema de archivos (indicó que sus
fsck
resultados estaban limpios) y sus datos son realmente importantes para usted, la forma más segura de recuperar lo que puede usar esgddrescue
(odd_rescue
, si tu prefieres).Aquí hay un ejemplo con
gddrescue
:... ¿dónde
/somewhere/else
está el camino a una montura que tiene más espacio libre que el tamaño de/dev/sdb
?gddrescue
El archivo de registro en/somewhere/else/ddrescue.log
también puede ayudarlo a identificar qué áreas de su disco duro son ilegibles.Una vez que se ha creado una imagen completa de la unidad, puede recuperar la mayor parte de lo que debería ser recuperable utilizando otras herramientas como TestDisk o
kpartx -av /somewhere/else/rescue.img
ycryptsetup luksOpen
, pero estas están fuera del alcance de su pregunta.Contestando tus preguntas
He visto una variedad de problemas de hardware en los discos duros y mi relativamente poco tiempo trabajando con ellos. Aunque no soy un experto, todavía es difícil determinar qué tipo de fallas pueden estar ocurriendo con su unidad de disco específica.
Bueno, tu disco no es consciente de que está fallando.
Podría descubrir o, a veces, causar más problemas cuanto más intente leer, y las operaciones de escritura a veces pueden empeorar las condiciones, dependiendo del tipo de daño presente.
Los errores de lectura de hardware pueden afectar el contenido de los archivos pero no el sistema de archivos en sí.
Sí, intenté escribir una guía completa para ti a continuación.
Hay muchas causas de problemas de E / S del disco duro.
Una común es dejar caer o mover la unidad con demasiada fuerza mientras está en uso. Esto sucede mucho con discos duros externos como el suyo.
Otra es que tiene una Barracuda Seagate, que tiende a ser poco confiable:
(Haga clic en la imagen de arriba para ver una revisión de la confiabilidad del disco duro).
También podrían ser solo problemas aleatorios que pueden afectar solo una pequeña parte de la unidad o eventualmente convertirse en una cancelación.
Solución de problemas
Los comandos en esta sección no son destructivos.
Leer sectores individuales
Su primera indicación de un problema fueron los errores de E / S de registro del núcleo. Intenta ver si esos sectores son legibles:
... dónde
947918344
está el número de sector registrado en el registro del kernel y/dev/sdb
es la unidad problemática sospechosa.La mayoría de los discos duros intentarán leer el sector, por lo que puede llevar algo de tiempo. Si obtiene un error de E / S de inmediato, significa que la unidad sabía con seguridad que el sector está fuera de los límites y ni siquiera intentará leerlo. Si tarda unos segundos en obtener un error de E / S, la unidad probablemente intentó y no pudo leer el sector. Aquí hay un ejemplo de un error de E / S que ocurrió de inmediato:
Aquí hay un ejemplo de una lectura exitosa:
Tiene un problema cuando los sectores que existen devuelven un error de entrada / salida. Podría significar corrupción de datos.
Autoevaluación extendida SMART
Puede ejecutar una autoprueba sin conexión extendida SMART con este comando:
Vea cómo verificar el progreso de una prueba aquí .
Una vez que finaliza la prueba, puede verificar su estado con este comando:
Aquí hay un ejemplo de un disco duro que "reparé" (próxima explicación):
En el pasado, el sector
1475120744
no se podía leer, y la prueba falló en ese momento, pero algún tiempo después, ¿se solucionó el sector? Siga leyendo para saber cómo puede ser esto."Reparación" de su unidad
Reasignar sectores defectuosos
Si los intentos repetidos de
hdparm --read-sector
reducir la velocidad de su unidad y devolver un error de E / S después de un tiempo, los datos probablemente nunca volverán. Puede indicarle al disco duro que reasigne el sector afectado a uno de repuesto, lo que eliminará completamente el sector desde su perspectiva:... dónde
947918344
está el número de sector que desea sobrescribir.Es posible quedarse sin sectores de repuesto, pero si lo hace, su unidad se ha estropeado y debe reemplazarla. ( Ejemplo )
Escanear y reparar
Una unidad solo puede conocer sectores defectuosos si los ve. Puede buscar sectores defectuosos usando
badblocks
:Las lecturas fallidas se registrarán en el registro del núcleo como viste antes y se generarán
badblocks
. Puede usar esta información para reasignar sectores usandohdparm --write-sector
.Borrado seguro ATA
Si no desea esperar
badblocks
o escribir algo para reasignar sectores, puede borrar todos los sectores defectuosos (así como todos los demás datos) de una sola vez.Nota: Es posible que estas instrucciones no funcionen en una interfaz USB.
Reasignar y limpiar con
dd
También puede reasignar sectores limpiando su unidad con
dd
:Reasigne y limpie con
dd
y conserve LUKSAlternativamente, si su dispositivo LUKS se descifra en
/dev/mapper/your-luks-device
:fuente