¿Cómo se relacionan las pruebas automáticas SMART con los bloques defectuosos?

15

La herramienta smartctl permite iniciar una autocomprobación larga ( smartctl -t long /dev/sda). Sin embargo, también hay badblocksque puedo correr en un disco. ¿Cómo están relacionados los dos? Si los bloques defectuosos detectan bloques defectuosos, ¿la unidad actualiza automáticamente sus valores SMART (por ejemplo, actualizando su recuento de sectores reubicados)? ¿Se pueden reemplazar los bloques defectuosos smartctl -t longo viceversa?

Hongli Lai
fuente

Respuestas:

5

Tengo que estar en desacuerdo con voretaq7 : SMART no es mágico. Cuando tiene una unidad y uno de sus sectores se daña, ya no podrá leer datos de él. Por lo tanto, es perfectamente posible tener un archivo ilegible en una unidad de disco moderna. SMART marcaría este sector ilegible como "Pendiente actual" y "No corregible sin conexión" cuando se accedería por primera vez después de una falla.

Pero cuando se vuelva a escribir en este sector, se reasignará al espacio de reasignación, sin marcar y aumentará un contador "Reallocated_Sector_Ct". Entonces todo un disco sería legible nuevamente.

smartctl -t longLa prueba es útil: probará todo el espacio de la unidad en busca de sectores ilegibles y registrará y marcará como "Actual pendiente" y "Sin conexión no corregible" el primer sector defectuoso encontrado cuando se ejecuta. Estoy configurando mis servidores para ejecutar esta prueba larga una vez por semana en cada unidad. No afecta demasiado las funciones normales de la unidad, ya que las solicitudes del sistema operativo siempre tienen prioridad sobre los análisis SMART.

Como en un servidor, siempre ejecuto discos en espejos RAID1, por lo que cuando una prueba larga encuentra un sector defectuoso, puedo reescribir su contenido utilizando datos de otra unidad en un espejo, lo que obliga a la reasignación.

badblocksa veces también es útil; por ejemplo, probará todo el disco y no se detendrá ante el primer error. Puede probar una sola partición o cualquier otra parte de una unidad. Puede usarlo para verificar rápidamente si un bloque defectuoso se reasignó con éxito.

Tometzky
fuente
11

Como señalé en mi otra respuesta , cada disco duro moderno tiene espacio de reasignación disponible (porque especialmente en las densidades de disco actuales, ningún disco de disco será perfecto; siempre habrá algunos defectos que el disco debe reasignar, incluso en la marca -nuevo-nunca-ha-sido-usado-salió-de-la-línea-de-ensamblaje-en-mis-manos).

Debido a esto, teóricamente debería informarse sobre una falla SMART antes de badblocksavisos de sectores defectuosos (visibles para el usuario final) en una unidad.
En los discos duros modernos, cualquier sector defectuoso visible para el usuario final (como podría ser informado badblockso detectado automáticamente por el sistema operativo) es un jadeo final y un escalofrío de un disco que se está muriendo.


Finalmente, INTELIGENTE y badblockspruebe dos cosas diferentes, pero relacionadas:

SMART es una herramienta de autocontrol:

El disco duro conoce cierta información sobre sus parámetros de funcionamiento y tiene algunos metaconocimientos sobre lo que es "normal" para algunos y "aceptable" para otros.
Si la unidad detecta que ciertos parámetros son "anormales" o "inaceptables", informará una condición previa a la falla; en otras palabras, la unidad aún funciona, pero podría fallar pronto.

Por ejemplo: el motor del eje normalmente consume 0,10 amperios, pero ahora está consumiendo 0,50 amperios, un consumo anormalmente alto que puede indicar que el eje está atascado o que el lubricante permanente de los cojinetes se ha ido. Finalmente, el motor será incapaz de superar la resistencia y la unidad se bloqueará.

Otro ejemplo: la unidad tiene 1000 bloques de "reasignación" para lidiar con sectores defectuosos. Ha utilizado 750 de ellos, y los ingenieros que construyeron el disco determinaron que la cantidad de reasignaciones indica algo incorrecto internamente (disco defectuoso, falla de vejez, cabeza dañada): el disco informará una condición previa al fallo que le dará tiempo para obtener sus datos se apagan antes de que se agote el espacio de reasignación y se vuelvan visibles los sectores defectuosos.

SMART está buscando más que sectores defectuosos: es una evaluación más integral de la salud del disco. Podría tener una advertencia de falla previa SMART en un variador sin sectores defectuosos y sin errores de lectura / escritura (por ejemplo, el problema del motor del husillo que describí anteriormente).


badblocks es una herramienta con un propósito específico (obsoleto): buscar sectores defectuosos.

badblocksproviene de una época anterior a SMART y la reasignación de sectores defectuosos. En aquel entonces, sabíamos que las unidades tenían imperfecciones, pero la única forma de mapearlas para evitar el almacenamiento accidental de datos allí era hacer una prueba de esfuerzo del disco, causar una falla y luego recordar no volver a poner datos allí.

La razón por la que digo que está desactualizada es porque la electrónica en los discos modernos ya hace lo que badblockshace internamente y unos miles de veces más rápido. badblocksbásicamente permite que las unidades antiguas que carecen de componentes electrónicos sofisticados vuelvan a mapear (o saltear) sectores que han fallado, pero los discos duros modernos ya detectan sectores defectuosos y los reasignan por usted.

Teóricamente, podría usar badblocksdatos para tener fallas de reasignación del sistema operativo (visibles) como si su disco moderno fuera un disco antiguo de Winchester, pero eso es en última instancia contraproducente. Como dije anteriormente, CUALQUIER sector defectuoso detectado badblocksen una unidad moderna es una causa para descartar el unidad completa como defectuosa (o a punto de fallar).

Los sectores defectuosos visibles indican que la unidad está fuera del espacio de reasignación, lo cual es relativamente raro para los discos modernos a menos que sean viejos (cerca del final de la vida funcional) o defectuosos (platos / cabezales defectuosos de fábrica).


Básicamente, si ejecutarlo badblocksen un disco antes de implementarlo en producción lo hace sentir mejor, continúe y hágalo, pero si su disco se fabricó en este siglo y muestra un sector defectuoso visible, debe tirarlo a la basura (o llamar su garantía) Para mi dinero, el estado INTELIGENTE y la defensa en profundidad es un mejor uso de mi tiempo que verificar discos manualmente.

voretaq7
fuente
1
Muy bien, eso explica muy bien la diferencia entre SMART y badblocks. Pero, ¿implica esto que monitorear el estado SMART es suficiente, o también tengo que ejecutar pruebas SMART largas de vez en cuando si quiero que las advertencias SMART se activen correctamente? Es decir, ¿se supone que debo correr de smartctl -t long /dev/sdavez en cuando, o puedo suponer que smartdeso me "advertirá automáticamente" de problemas inminentes sin tener que configurar nada más?
Hongli Lai
Esa es una decisión que solo usted puede tomar, sin embargo, SMART no está diseñado para requerir intervención manual ("Simplemente funciona" y, por lo general, no debería meterse con eso). Confíe en su hardware (al menos en esta medida limitada), porque si no puede confiar en su hardware, también puede empacar e irse a casa.
voretaq7
2
"Las unidades modernas ya hacen lo que hacen los bloques defectuosos, internamente y unos miles de veces más rápido" badblockslee cada byte de la unidad, los sobrescribe con patrones aleatorios y luego vuelve a colocar los datos originales. Las autoevaluaciones SMART no hacen esto. Esto debería borrar cualquier sector "pendiente", si lo entiendo correctamente.
endolito el
44
@endolith Las pruebas no son equivalentes directos, pero el propósito al que sirven es equivalente (descubrir y permitir la reasignación de sectores defectuosos). Mi punto principal fue el último párrafo: si desea ejecutar bloqueos defectuosos como un ejercitador de disco (para ver si puede provocar errores SMART porque está encontrando un montón de bloques defectuosos), hágalo, pero si está ejecutando bloques defectuosos hoy con el intención de luego cargar la lista de bloqueos defectuosos para evitar el uso de esos sectores (como lo hicimos en la edad de piedra) estás haciendo mal: los sectores defectuosos visibles significan que debes tirar el disco en el contenedor de basura más cercano.
voretaq7
1
@Hashim Sí, creo que es útil usar bloques defectuosos porque eliminará los sectores pendientes.
endolito el
5

Buenas respuestas a esta pregunta son

/superuser//a/693065

/superuser//a/693064

Al contrario de otras respuestas, encuentro que los bloques defectuosos no están desactualizados, pero son una herramienta muy útil. Una vez que actualicé mi PC con un nuevo disco duro y comenzó a funcionar inestable. Me tomó bastante tiempo darme cuenta gracias a los bloques defectuosos de que la superficie del disco tenía defectos. Desde entonces ejecuto bloqueos defectuosos de modo de escritura completo (¡destructible!) Para cada disco duro nuevo que empiezo a usar y nunca tuve ese problema nuevamente. Recomiendo un

time sudo badblocks -swvo sdX.log / sev / sdX

para cada nuevo disco duro. Probará cada bit del disco varias veces para escribir y leer, por lo que puede evitar muchos problemas más adelante.

Durante esta prueba, la unidad trazará los bloques defectuosos. Por lo tanto, se debe anotar el "Recuento de sectores reasignados" antes y después de la prueba y compararlo con el umbral INTELIGENTE, ya que informará algo sobre el estado de la unidad.

Frank Breitling
fuente
2
Es una gran idea hacer una prueba de esfuerzo de un disco nuevo mientras todavía está en garantía.
endolito el
2

badblocks es una reliquia de los viejos tiempos y no es estrictamente útil, puede encontrar un sector actualmente ilegible, pero lo correcto con un sector defectuoso es recuperar los datos de la copia de seguridad. Lo que se puede hacer si los datos no son críticos para usted es eliminar el archivo asociado y escribir cualquier cosa en esa ubicación, esto permitirá que el disco reasigne el sector si cree que lo necesita y continúe trabajando.

La autocomprobación del disco también dará la vuelta y probará todo el medio en busca de varios defectos, se supone que usa umbrales más bajos en comparación con lo que usa en la operación normal para ver si el disco tiene muchos puntos débiles y, según la lógica del proveedor, puede decidir que el disco ha pasado su vida útil y declara que la prueba falló. En ese punto, debe extraer todos sus datos o recuperarlos de la copia de seguridad y reemplazar el disco.

Si una acción de disco (ya sea por bloques defectuosos u operación normal) golpea un error de lectura irrecuperable, el disco actualizará automáticamente su contador pendiente de reasignación y cuando se realice la reasignación actualizará la reasignación pendiente y los contadores reasignados. Un simple dd hará que eso suceda también.

Si necesita elegir entre los dos, use smartctl -t siempre que tenga un mejor análisis del disco.

También puedo sugerir el uso de mi utilidad diskscan https://github.com/baruch/diskscan , funciona más como bloques defectuosos pero trata de evaluar si hay sectores que van mal, algo así como un sector con problemas de audición que requiere un Mucho más tiempo para leer. Esto es indicativo de un problema de medios en desarrollo y en versiones futuras también puede ofrecer un intento automático de ayudar al disco a solucionar este problema.

Baruch Even
fuente
"Además, los bloques defectuosos son esencialmente obsoletos en la actualidad, ya que los discos mismos reasignarán los datos y ya no hay necesidad real de asignar los bloques defectuosos en el nivel del sistema de archivos". ¿No hace badblockshincapié en la unidad de manera que las autoevaluaciones SMART no lo hacen?
endolito el
No. badblocks hará un escaneo secuencial del disco. No es mejor que dd y será igual a lo que hace la autocomprobación.
Baruch Even
badblockslee cada byte del disco, lo reemplaza con patrones de prueba y luego vuelve a escribir los datos originales en su lugar. ¿Las autoevaluaciones SMART son pruebas de lectura y escritura similares?
endolito el
1
Bien, la reescritura de los datos de badblocks borrará los "sectores pendientes" y hará que la unidad los marque como buenos nuevamente o los reasigne, ¿correcto?
endolito el
1
Si. Puede ser lo que quieras en tal caso.
Baruch Even