¿Cómo determinar el número de ciclos de escritura o la vida esperada para SSD en Linux?

10

Hemos estado ejecutando un SSD (Intel X25-M) en un servidor Linux (RHEL 5) durante un tiempo, pero nunca hicimos ningún esfuerzo para determinar la carga de escritura durante el año pasado. ¿Hay alguna herramienta en Linux que nos diga aproximadamente cuánto se ha escrito en el disco a lo largo del tiempo o (aún mejor) cuánto desgaste se ha acumulado? Solo buscando una pista para ver si está cerca de la muerte o no ...

JZeta
fuente

Respuestas:

13

Los SSD de Intel mantienen estadísticas sobre las escrituras totales y qué tan probable es su vida útil.

Lo siguiente es de un Intel X25-M G2 160GB (SSDSA2M160G2GC)

# smartctl -data -A /dev/sda
smartctl 5.40 2010-10-16 r3189 [x86_64-redhat-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 5
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  3 Spin_Up_Time            0x0020   100   100   000    Old_age   Offline      -       0
  4 Start_Stop_Count        0x0030   100   100   000    Old_age   Offline      -       0
  5 Reallocated_Sector_Ct   0x0032   100   100   000    Old_age   Always       -       1
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       6855
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       68
192 Unsafe_Shutdown_Count   0x0032   100   100   000    Old_age   Always       -       30
225 Host_Writes_32MiB       0x0030   200   200   000    Old_age   Offline      -       148487
226 Workld_Media_Wear_Indic 0x0032   100   100   000    Old_age   Always       -       3168
227 Workld_Host_Reads_Perc  0x0032   100   100   000    Old_age   Always       -       1
228 Workload_Minutes        0x0032   100   100   000    Old_age   Always       -       1950295543
232 Available_Reservd_Space 0x0033   099   099   010    Pre-fail  Always       -       0
233 Media_Wearout_Indicator 0x0032   098   098   000    Old_age   Always       -       0
184 End-to-End_Error        0x0033   100   100   099    Pre-fail  Always       -       0

El valor sin procesar Host_Writes_32MIB muestra cuántas unidades de datos de 32MiB se han escrito en esta unidad.

El valor Media_Wearout_Indicator le muestra un porcentaje normalizado de qué tan útil es la vida útil de la unidad. Esto comienza en 100 (o 099, no recuerdo cuál), y continúa hasta 001, momento en el que Intel considera que la unidad ha excedido su vida útil. Intel también utiliza el MWI como parte de las reclamaciones de garantía: una vez que el MWI alcanza 001, la garantía caduca.

¡Sin embargo, el MWI que alcanza 001 no significa que la unidad fallará de inmediato! Intel tendrá tolerancia incorporada para lidiar con las variaciones en las unidades flash. He visto las unidades durar mucho más allá de este punto, y estoy probando activamente el desgaste de algunos SSD de la serie Intel 320 para ver cuánto duran.

Sin embargo, como la garantía caduca cuando el MWI llega a 001, reemplazaría cualquier unidad en ese momento.

Daniel Lawson
fuente
Para referencia futura, Media_Wearout_Indicatorcomienza en 100 para mi SSD Intel 520 Series.
pableu
Vale la pena señalar que incluso si la unidad no "falla" una vez que llega a 001, en algún momento posterior (tal vez mucho después), la capacidad de algunas unidades para retener datos cuando se pierde la energía se reduce a cantidades de tiempo alarmantemente cortas . Creo que se han publicado algunas pruebas de resistencia en línea que han medido esto.
sa289
6

Las unidades Corsair también exportan un indicador de porcentaje de vida útil similar. En su caso, es el atributo 231:

231 SSD_Life_Left           0x0013   100   100   010    Pre-fail  Always       -       0

(Tenga en cuenta que si smartctl muestra esto como una temperatura, debe actualizar la base de datos de su dispositivo. En mi sistema Debian eso significa ejecutar /usr/sbin/update-smart-drivedb)

Una publicación de blog de Corsair parece mostrar que el valor nunca cae por debajo del 10%, por lo que supongo que debe reemplazarse al 10%.

También tengo una unidad OCZ con el mismo controlador Sandforce que también exporta el mismo valor SSD_Life_Left.

Graham
fuente
3

Media_Wearout_Indicator es lo que estás buscando. Por 100 significa que su SSD tiene 100% de vida, el número más bajo significa que queda menos vida.

# smartctl -a /dev/sda | grep Media_Wearout_Indicator

Salida de mi laptop

233 Media_Wearout_Indicator 0×0032 100 100 000 Old_age Always – 0

Si desea ver más detalles y atributos completos de su unidad, puede ejecutar

# smartctl -data -A /dev/sda

y la salida

# smartctl -data -A /dev/sda
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.2.0-49-generic] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF READ SMART DATA SECTION ===
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
5 Reallocated_Sector_Ct 0×0032 100 100 000 Old_age Always – 0
9 Power_On_Hours 0×0032 000 000 000 Old_age Always – 232959027031342
12 Power_Cycle_Count 0×0032 100 100 000 Old_age Always – 279
170 Unknown_Attribute 0×0033 100 100 010 Pre-fail Always – 0
171 Unknown_Attribute 0×0032 100 100 000 Old_age Always – 0
172 Unknown_Attribute 0×0032 100 100 000 Old_age Always – 0
174 Unknown_Attribute 0×0032 100 100 000 Old_age Always – 278
184 End-to-End_Error 0×0033 100 100 090 Pre-fail Always – 0
187 Reported_Uncorrect 0×0032 100 100 000 Old_age Always – 0
192 Power-Off_Retract_Count 0×0032 100 100 000 Old_age Always – 278
225 Load_Cycle_Count 0×0032 100 100 000 Old_age Always – 10752
226 Load-in_Time 0×0032 100 100 000 Old_age Always – 65535
227 Torq-amp_Count 0×0032 100 100 000 Old_age Always – 66
228 Power-off_Retract_Count 0×0032 100 100 000 Old_age Always – 65535
232 Available_Reservd_Space 0×0033 100 100 010 Pre-fail Always – 0
233 Media_Wearout_Indicator 0×0032 100 100 000 Old_age Always – 0
241 Total_LBAs_Written 0×0032 100 100 000 Old_age Always – 10752
242 Total_LBAs_Read 0×0032 100 100 000 Old_age Always – 21803
249 Unknown_Attribute 0×0013 100 100 000 Pre-fail Always – 357

http://namhuy.net/1024/how-to-check-ssd-life-left.html

Alison Salazar
fuente
Es útil mencionar que en este caso se debe usar el valor normalizado.
Falcon Momot
1

Realmente no. Si la unidad no mantiene estadísticas, no lo sabría con seguridad. Incluso entonces, la unidad abstraería los algoritmos de nivelación de escritura y demás para tratar de optimizar las cosas debajo del capó, lejos de las llamadas e interfaces del sistema. En otras palabras, la unidad podría mentirle fácilmente sobre dónde se escriben realmente los datos en los "medios" para que no sepa qué células están obteniendo actividad.

Eso todavía no garantiza cuándo / si verá fallas o errores. La unidad podría fallar mañana, podría fallar en tres años.

La mejor opción es mantenerlo en una configuración RAID y tener un plan para reemplazarlo cuando falla (antes de que falle la otra unidad) y asegurarse de que sus copias de seguridad estén actualizadas.

Bart Silverstrim
fuente