¿Por qué esta unidad SSD falla con sectores defectuosos? ¿Era predecible?

15

Nota: esta pregunta se cerró anteriormente como fuera de tema. Puedes leer la discusión . Mis razones para preguntarlo aquí son:

  • Esta unidad está en un servidor de caché de contenido fuera de línea para escuelas en zonas rurales de Zambia.
  • Los servidores se crean a partir de imágenes de disco y todo el contenido es reemplazable.
  • Tiene que ser barato porque las escuelas de Zambia tienen un presupuesto limitado y habrá muchas.
  • También tiene que ser confiable porque pueden ser 8 horas en cada sentido en carreteras en mal estado para reemplazar.
  • No se me permite preguntar aquí qué unidades no son "basura ultra barata".
  • Así que estamos haciendo nuestra propia investigación y experimentación en unidades que cumplen con estos criterios.
  • Mi incapacidad para reparar los sectores defectuosos sobrescribiéndolos (reasignación automática) desafió mis suposiciones y quería saber por qué.
  • Pensé que tal vez un BORRADO DE SEGURIDAD podría reparar los sectores defectuosos, pero quería opiniones de otros antes de tirar a la basura el disco.
  • Pensé que podría haber perdido algo en los datos SMART que podría haber predicho la falla.

Este es un disco SSD de 240 GB de Kingston que funcionó bien en el sitio durante aproximadamente 3 meses, y de repente ha desarrollado sectores defectuosos:

smartctl 5.41 2011-06-09 r3365 [i686-linux-3.2.20-net6501-121115-1cw] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF INFORMATION SECTION ===
Device Model:     KINGSTON SVP200S3240G
Serial Number:    50026B7228010E5C
LU WWN Device Id: 5 0026b7 228010e5c
Firmware Version: 502ABBF0
User Capacity:    240,057,409,536 bytes [240 GB]
Sector Size:      512 bytes logical/physical
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   8
ATA Standard is:  ACS-2 revision 3
Local Time is:    Tue Mar  5 17:10:24 2013 CAT
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:  (0x02) Offline data collection activity
                    was completed without error.
                    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:            (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:    (  48) minutes.
Conveyance self-test routine
recommended polling time:    (   2) minutes.
SCT capabilities:          (0x0021) SCT Status 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   084   084   050    Pre-fail  Always       -       10965286670575
  5 Reallocated_Sector_Ct   0x0033   100   100   003    Pre-fail  Always       -       16
  9 Power_On_Hours          0x0032   000   000   000    Old_age   Always       -       46823733462185
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       127
171 Unknown_Attribute       0x0032   000   000   000    Old_age   Always       -       0
172 Unknown_Attribute       0x0032   000   000   000    Old_age   Always       -       0
174 Unknown_Attribute       0x0030   000   000   000    Old_age   Offline      -       131
177 Wear_Leveling_Count     0x0000   000   000   000    Old_age   Offline      -       1
181 Program_Fail_Cnt_Total  0x0032   000   000   000    Old_age   Always       -       0
182 Erase_Fail_Count_Total  0x0032   000   000   000    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   000   000   000    Old_age   Always       -       49900
194 Temperature_Celsius     0x0022   033   078   000    Old_age   Always       -       33 (Min/Max 21/78)
195 Hardware_ECC_Recovered  0x001c   120   120   000    Old_age   Offline      -       235163887
196 Reallocated_Event_Count 0x0033   100   100   003    Pre-fail  Always       -       16
201 Soft_Read_Error_Rate    0x001c   120   120   000    Old_age   Offline      -       235163887
204 Soft_ECC_Correction     0x001c   120   120   000    Old_age   Offline      -       235163887
230 Head_Amplitude          0x0013   100   100   000    Pre-fail  Always       -       100
231 Temperature_Celsius     0x0013   100   100   010    Pre-fail  Always       -       0
233 Media_Wearout_Indicator 0x0000   000   000   000    Old_age   Offline      -       363
234 Unknown_Attribute       0x0032   000   000   000    Old_age   Always       -       208
241 Total_LBAs_Written      0x0032   000   000   000    Old_age   Always       -       208
242 Total_LBAs_Read         0x0032   000   000   000    Old_age   Always       -       1001

SMART Error Log not supported
SMART Self-test Log not supported
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.

Ahora obtengo bloques defectuosos en ciertos lugares del disco:

root@iPad2:~# badblocks /dev/sda -v
Checking blocks 0 to 234431063
Checking for bad blocks (read-only test): 8394752 done, 1:15 elapsed
8394756 done, 1:21 elapsed
8394757 done, 1:23 elapsed
8394758 done, 1:24 elapsed
8394759 done, 1:27 elapsed
...
190882871one, 29:49 elapsed
190882888one, 29:53 elapsed
190882889one, 29:54 elapsed
190882890one, 29:56 elapsed
190882891one, 29:58 elapsed
done                                
Pass completed, 80 bad blocks found.

Parecen repetibles, y la reasignación automática falla, por lo que no se pueden solucionar escribiéndoles:

root@iPad2:~# badblocks /dev/sda -wvf 8394756 8394756
/dev/sda is apparently in use by the system; badblocks forced anyway.
Checking for bad blocks in read-write mode
From block 8394756 to 8394756
Testing with pattern 0xaa: 8394756
done                                
Reading and comparing: done                                
Testing with pattern 0x55: done                                
Reading and comparing: done                                
Testing with pattern 0xff: done                                
Reading and comparing: done                                
Testing with pattern 0x00: done                                
Reading and comparing: done                                
Pass completed, 1 bad blocks found.

Y obtengo errores como este en los registros del sistema:

ata1.00: exception Emask 0x0 SAct 0x1 SErr 0x0 action 0x0
ata1.00: irq_stat 0x40000000
ata1.00: failed command: READ FPDMA QUEUED
ata1.00: cmd 60/08:00:08:30:00/00:00:01:00:00/40 tag 0 ncq 4096 in
         res 51/40:08:08:30:00/00:00:01:00:00/40 Emask 0x409 (media error) <F>
ata1.00: status: { DRDY ERR }
ata1.00: error: { UNC }
ata1.00: configured for UDMA/133
sd 0:0:0:0: [sda] Unhandled sense code
sd 0:0:0:0: [sda]  Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
sd 0:0:0:0: [sda]  Sense Key : Medium Error [current] [descriptor]
Descriptor sense data with sense descriptors (in hex):
        72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00 
        01 00 30 08 
sd 0:0:0:0: [sda]  Add. Sense: Unrecovered read error - auto reallocate failed
sd 0:0:0:0: [sda] CDB: Read(10): 28 00 01 00 30 08 00 00 08 00
end_request: I/O error, dev sda, sector 16789512
Buffer I/O error on device sda, logical block 2098689
ata1: EH complete

Ahora no entiendo por qué la reasignación automática falla en este disco. La smartctlsalida me parece bien. Solo 16 sectores han sido reasignados, eso no es mucho. No veo ninguna razón legítima por la cual esta unidad se niega a reasignar sectores. ¿Este modelo de SSD está roto o mal diseñado?

Notas:

  • El atributo 174 es "Pérdida inesperada de energía" según los documentos de Kingston.
  • 131 pérdidas de energía inesperadas son bastante malas.
  • el atributo 187 (Reportado_ Incorrecto) es 49900 de un máximo posible de 65535
  • la temperatura más alta es bastante alta a 78'C

Kingston oculta los contadores SMART más interesantes en esta unidad. Pero podemos inferir el número de sectores libres del atributo 196. Reallocated_Event_Count, que tiene la siguiente fórmula para el valor normalizado:

100 -(100* RBC / MRC)
RBC = Retired Block Count (Grown)
MRE = Maximum reallocation count

Como el valor normalizado es 100, esto implica que RBC << MRE, por lo que no estamos cerca de haber agotado todos los sectores disponibles para la reasignación.

qris
fuente
3
Sus datos SMART no indican ningún problema significativo. ¿Ha probado este disco en un controlador diferente con un cable diferente para eliminar las otras posibilidades de problemas de hardware?
Michael Hampton
1
Todavía no he probado otro controlador / cable, porque algunos sectores leen bien repetidamente y otros errores repetidamente. De esto deduzco que la falla está en la unidad, no en el controlador o el cable.
qris
1
Su deducción es incorrecta porque exactamente lo mismo podría suceder con un controlador o cable defectuoso (aunque el cable debería ser un poco más errático, pero vale la pena intentarlo de todos modos).
gparent
3
@gparent La deducción no es necesariamente incorrecta; solo la lógica que llevó a la conclusión. El impulso puede ser el culpable, pero sus razones para pensarlo tienen poca base. En cualquier caso, debe probar en otro controlador / cable como se sugiere.
Chris S
Sí, eso es lo que pensé que acababa de decir. Creo que puede considerar con seguridad cualquier diferencia como parte de una barrera del idioma porque estoy totalmente de acuerdo con su comentario.
gparent

Respuestas:

2

Los SSD baratos parecen tener serios problemas de calidad. Encontrará muchos usuarios que tienen problemas con su disco en particular. Sin embargo, creo que los proveedores también venden diferentes unidades (por ejemplo, con otros chips / controladores NAND) bajo la misma etiqueta. Por lo tanto, cada unidad puede comportarse de manera diferente.

Los valores SMART no indican que la unidad fallará pronto. En mi experiencia, es lo mismo: de repente se producen errores de unidad y luego el disco falla.

¿Cuáles son sus razones por las que usa SSD? Veo las ventajas de los SSD ya que no hay piezas mecánicas y son a prueba de polvo y producen menos calor. Sin embargo, también veo muchas desventajas.

por ejemplo, el número de escrituras en una sola celda de memoria que incluso con nivelación de desgaste puede alcanzarse rápidamente en un volumen ocupado, por ejemplo, cuando está utilizando un sistema de archivos con registro en diario.

Y la electrónica también se ve afectada por la alta humedad o las altas temperaturas, lo mismo que con los discos duros convencionales.

¿Por qué no utilizar discos duros convencionales más baratos en su lugar y (si no se requiere una incursión) enviar el servidor con unidades de repuesto que no estén conectadas hasta que se necesiten como reemplazo (ya presente en la carcasa del servidor o montado en una jaula de intercambio en caliente para que el disco puede usarse en diferentes servidores). Luego podrían prepararse mediante un script en el campo o desde un control remoto (si es posible).

Mientras los discos duros convencionales no estén encendidos, el transporte a su destino puede ser difícil ...

Si hay varios servidores escolares / clientes permanentes y una red confiable / redundante, tal vez un sistema de archivos distribuido también podría ayudar a crear un servidor de caché a prueba de fallas (por ejemplo, usando glusterfs).

Reiner Rottmann
fuente
Gracias Brian, acepto esta respuesta porque no tengo otras mejores. Mi experiencia con los discos duros es que los sectores pueden reasignarse y, por lo tanto, la recuperación es posible. Tiene razón sobre los motivos para usar SSD. La protección contra el polvo es un gran problema para Zambia. Las unidades no se escribirán con frecuencia, la mayoría del contenido es estático. La electrónica de estado sólido se ve menos afectada por el calor y la humedad que el óxido giratorio. Se nos había ocurrido RAIDar discos duros, pero esperábamos que los SSD fueran más confiables y, por lo tanto, ahorraran dinero. Quizás estábamos equivocados. Y las escuelas tienen una conectividad muy pobre, por lo que no hay más.
qris