Uso de "bloques defectuosos" en discos modernos

21

Quiero usar badblocks para verificar mis discos duros y agradecería que me aclaren su funcionamiento.

¿Alguien puede explicar las mejores opciones para usar con -by -c? He incluido sus definiciones en la página de manual, pero no estoy seguro de si los tamaños más grandes serían beneficiosos para los discos modernos con 64 MB de RAM y 4k sectores.

-b block-size       Specify the size of blocks in bytes. The default is 1024. 
-c number of blocks the number of blocks which are tested at a time. The default is 64

En segundo lugar, me gustaría saber si la prueba del modo de escritura es más exhaustiva que el modo de lectura-escritura no destructivo.

Por último, ¿cuántas reasignaciones del sector SMART son aceptables / deberían reemplazarse inmediatamente las unidades con recuentos de reasignación distintos de cero?

Yoren
fuente
3
para la segunda parte: tan pronto como comience a ver bloques defectuosos, significa que algo salió mal. Esta es probablemente una buena señal de que debe reemplazar el disco antes de que no pueda leerlo. Pero en todos los casos, incluso antes de fallar, siempre debe tener 2 copias de seguridad de datos importantes (1 local, 1 remota) además de la copia de trabajo. ver detalles sobre mi respuesta allí: superuser.com/a/528181/174998
Olivier Dulac
44
para el tamaño de bloque: debe reflejar el tamaño de bloque real que usaba su sistema operativo para almacenar datos en ese disco duro (de acuerdo con el sistema de archivos utilizado). No es para acelerar las cosas, es para que marque un bloque "malo", ese bloque es de hecho 1 bloque, y no 1/2 o 1 / 4th o incluso 2 (o más) bloques.
Olivier Dulac

Respuestas:

21

Pregunta 1:

Con respecto a la -bopción: esto depende de su disco. Los discos grandes y modernos tienen bloques de 4KB, en cuyo caso debe configurar -b 4096. Puede obtener el tamaño de bloque del sistema operativo , y generalmente también se puede obtener leyendo la información del disco de la etiqueta o buscando en Google el número de modelo del disco. Si -bse establece en algo más grande que el tamaño de su bloque, la integridad de los badblocksresultados puede verse comprometida (es decir, puede obtener falsos negativos: no se encuentran bloques defectuosos cuando aún pueden existir). Si -bse establece en algo más pequeño que el tamaño de bloque de su unidad, la velocidad de la badblocksejecución puede verse comprometida. No estoy seguro, pero puede haber otros problemas con la configuración-ba algo más pequeño que el tamaño de su bloque, ya que no está verificando la integridad de un bloque completo, aún podría ser posible obtener falsos negativos si se configura demasiado pequeño.

La -copción corresponde a cuántos bloques deben verificarse a la vez. Lote de lectura / escritura, básicamente. Esta opción no afecta la integridad de sus resultados, pero sí afecta la velocidad a la que se badblocksejecuta. badblocksescribirá (opcionalmente), luego leerá, almacenará en búfer, verificará y repetirá para cada N bloques según lo especificado por -c. Si -cse establece demasiado bajo, esto hará que sus badblocksejecuciones tarden mucho más de lo normal, ya que la cola y el procesamiento de una solicitud de E / S adicional conlleva una sobrecarga, y el disco también puede imponer una sobrecarga adicional por solicitud. Si -cestá configurado demasiado alto, badblockspodría quedarse sin memoria. Si esto sucede, badblocksfallará bastante rápido después de que comience. Consideraciones adicionales aquí incluyen badblocksejecuciones paralelas : si está ejecutandobadblockscontra múltiples particiones en el mismo disco (mala idea), o contra múltiples discos sobre el mismo canal de E / S, probablemente querrá sintonizar -calgo sensiblemente alto dada la memoria disponible para badblocksque las ejecuciones paralelas no luchen por el ancho de banda de E / S y puede paralelizar de una manera sensata.

Pregunta 2:

Al contrario de lo que indican otras respuestas, la -wprueba de modo de escritura no es más o menos confiable que la prueba de lectura-escritura no destructiva, pero es dos veces más rápida, a costa de ser destructiva para todos sus datos. Explicaré por qué:

En modo no destructivo, badblockshace lo siguiente:

  1. Lea los datos existentes, realice una suma de comprobación (lea nuevamente si es necesario) y guárdelos en la memoria.
  2. Escriba un patrón predeterminado (anulable con la -popción, aunque generalmente no es necesario) en el bloque.
  3. Lea el bloque de nuevo, verificando que los datos leídos sean los mismos que el patrón.
  4. Escriba los datos originales en el disco.
    • No estoy seguro de esto, pero también es probable que vuelva a leer y verifique que los datos originales se escribieron correctamente y sigan sumando lo mismo.

En el modo destructivo ( -w), badblockssolo realiza los pasos 2 y 3 anteriores. Esto significa que la cantidad de operaciones de lectura / escritura necesarias para verificar la integridad de los datos se reduce a la mitad. Si un bloque es malo, los datos serán erróneos en cualquier modo. Por supuesto, si le importan los datos almacenados en su unidad, debe usar el modo no destructivo, ya -wque eliminará todos los datos y dejará badblockslos patrones escritos en el disco.

Advertencia: si un bloque va mal, pero aún no se ha eliminado por completo, algunos pares de verificación de lectura / escritura pueden funcionar, y algunos pueden no funcionar. En este caso, el modo no destructivo puede darle una indicación más confiable de la "característica" de un bloque, ya que realiza dos conjuntos de verificación de lectura / escritura (tal vez, vea la viñeta en el paso 4). Incluso si el modo no destructivo es más confiable de esa manera, solo es más confiable por coincidencia . La forma correcta de verificar si hay bloques que no están completamente mal pero que no pueden soportar múltiples operaciones de lectura / escritura es ejecutar badblocksvarias veces sobre los mismos datos, utilizando la -popción.

Pregunta 3:

Si SMART está reasignando sectores, probablemente debería considerar reemplazar la unidad lo antes posible. Las unidades que pierden algunos sectores no siempre las pierden, pero la causa suele ser una unidad muy utilizada que se vuelve magnéticamente blanda o que los cabezales / motores fallan y producen lecturas / escrituras inexactas o fallidas. La decisión final depende de usted, por supuesto: en función del valor de los datos en el disco y la confiabilidad que necesita de los sistemas que ejecuta, puede decidir mantenerlo. Tengo algunas unidades con bloques defectuosos conocidos que han estado girando con advertencias SMART durante años en mi servidor de archivos, pero están respaldados en un horario tal que podría manejar una falla total sin mucho dolor.

Zac B
fuente
44
¿Alguna idea de por qué por -bdefecto 1024? Eso me parece un poco raro. ¿Por qué no 512?
Ryan J
66
@RyanJ 1024 es el tamaño mínimo de bloque para ext2. badblocks es parte de e2fsprogs, y originalmente estaba destinado a llenar la lista de bloques defectuosos de un sistema de archivos ext2. Debe ejecutarlo con el mismo tamaño de bloque que el FS para obtener los números en el formato correcto para mkfs.ext2. TL; DR: razones históricas con las que no debe preocuparse.
sourcejedi
BUUUTT, @Zac B dijo "Si -b se establece en algo más grande que el tamaño de su bloque, la integridad de los resultados de badblocks puede verse comprometida" 1024> 512. Puedo entender cómo 513 podría hacer que algunos bytest no sean controlados. Pero tal vez debería reexpresarse "Si -b se establece en algo más grande que el tamaño de su bloque Y NO AÚN MÚLTIPLE, la integridad de los resultados de bloques defectuosos puede verse comprometida". ¿Qué dices cartel original, otras personas más inteligentes que yo?
Billy C.
4

1) Si su disco moderno usa un tamaño de sector diferente a 512b, entonces necesita establecer ese tamaño con la -bopción (es decir -b 4096). Sin esa opción, su verificación será mucho más lenta ya que cada sector real se probará varias veces (8 veces en el caso del sector 4k). También como se mencionó Olivier Dulac en el comentario a la pregunta:block is indeed 1 block, and not 1/2 or 1/4th or even 2 (or more) blocks.

La opción -cimplica cuántos sectores se tratan a la vez. Podría tener alguna implicación en el rendimiento y el valor de ese rendimiento podría depender del modelo de disco específico.

2) write-mode test- En mi opinión, solo verificará si tiene un error grave o incorrecto (también conocido como Degradación silenciosa de datos, descomposición de bits, descomposición de los medios de almacenamiento, sectores UNC)

3) No confiaría en el informe SMART en un momento dado. Es más importante cómo cambian los valores a través del tiempo. También aquí hay una investigación de Google Failure Trends en una gran población de unidades de disco y aquí hay una discusión al respecto. Aquí está la cita de la investigación:

A pesar de esta alta correlación, llegamos a la conclusión de que es poco probable que los modelos basados ​​solo en parámetros SMART sean útiles para predecir fallas de unidades individuales.

En cuanto a las menciones de otros para el reemplazo del disco, es posible que no tenga un problema de disco duro, sino una degradación silenciosa de los datos (descomposición de bits, descomposición de los medios de almacenamiento, sectores UNC). En ese caso, no tiene sentido reemplazar el disco, pero es útil realizar la lectura / escritura de los mismos datos de nuevo en el disco. Puedes ver aquí cómo se podría resolver.

Si tiene un error de disco duro, puede intentar volver a dividir la unidad en la forma en que el área defectuosa se encuentra fuera de las particiones. Para mí, ese enfoque fue útil y ese mal manejo se usó durante mucho tiempo sin ningún problema.

Broomerr
fuente
La primera oración es incorrecta, el valor -bpredeterminado es 1024. Si su disco usa un tamaño de sector diferente a 1024, que es bastante común fuera de los sistemas de archivos ext2, entonces debe especificar eso.
Hashim
1

Dejaría -b y -c por defecto a menos que tenga una razón específica para cambiarlos. Probablemente podría establecer -b en 4096 si su disco tiene tamaños de bloque de 4k.

Te sugiero que primero ejecutes badblocks con una prueba rw no destructiva. Si encuentra algún sector defectuoso, el disco está roto y debe reemplazarse. Si NO encuentra bloques defectuosos en no destructivos, pero aún sospecha que tiene bloques defectuosos, ejecute la prueba destructiva rw.

Por último, ¿cuántas reasignaciones del sector SMART son aceptables / deberían reemplazarse inmediatamente las unidades con recuentos de reasignación distintos de cero?

Reemplazaría la unidad tan pronto como se reemplacen los sectores.

Thomas
fuente
2
Reemplazaría la unidad tan pronto como se reemplacen los sectores. ¿Cómo sabes que los bloques van mal en el funcionamiento normal? ¿Recibes una señal de alguna manera?
Alexis Wilke
55
Debe monitorear los registros SMART.
Ярослав Рахматуллин
1
a menos que tenga una razón específica para cambiarlos . ¿Como tener un tamaño de bloque diferente del predeterminado 1024, que es muy común?
Carcamano
1

Este tipo de diferencia va entre el modo de lectura de bloques defectuosos (no destructivo) y el modo de escritura (destructivo):

Una unidad solo reasignará un sector defectuoso cuando falla una escritura. Los errores de lectura de los archivos solo se "corrigen" cuando se intenta volver a escribir el archivo. De otra manera. el bloque defectuoso sigue siendo parte del archivo suponiendo que pueda recuperar algo. Los errores de lectura para las tablas de particiones solo pueden "corregirse" ejecutando bloques defectuosos en modo de escritura y recreando la partición

Entonces, el modo de lectura le dirá dónde están los bloques malos, pero no puede hacer nada al respecto. El modo de escritura prueba el estado de cada sector y hará que el disco reasigne un bloque defectuoso pero a expensas de destruir los datos. Elige tu opción.

David Miller
fuente
0

Para responder a su segunda pregunta sobre sectores reasignados, depende. Estoy hablando desde el contexto de un usuario doméstico que (ocasionalmente) monitorea este tipo de cosas.

  • ¿Qué tan críticos son los datos almacenados en el disco?
  • ¿Qué se pierde si la unidad de disco de repente se arruina?
  • ¿Se respaldan los datos en otro lugar?
  • ¿La unidad es miembro de un RAID donde la pérdida de la unidad tiene un impacto mínimo?
  • ¿Crece el número de sectores reasignados?

Aquí hay dos situaciones que enfrenté. Tenía un RAID5 de 6 unidades de 200GB. Después de una falla de energía que resultó en luces parpadeantes, una unidad mostró 14 sectores reasignados y registró varios errores. Observé la unidad y no se registraron más errores y el recuento de sectores reasignados se mantuvo estable. Llegué a la conclusión de que la unidad sufrió debido a una potencia transitoria y no estaba fallando. Seguí usándolo durante años. El RAID5 original fue retirado, pero tengo dos de esas unidades en servicio con aproximadamente 10 años de horas de encendido. Tienen un puñado de sectores reasignados. Utilizo dos de ellos duplicados para almacenar volcados de copia de seguridad incrementales de mi copia de seguridad primaria. De esa manera, la copia de seguridad principal está viendo (principalmente) operaciones de lectura y las escrituras van a diferentes dispositivos. Si una de estas unidades antiguas falla, la otra debería continuar. Si ambos fallan, Los reemplazo con algo más y vuelvo a ejecutar el script de copia de seguridad. El impacto si una de estas unidades falla es casi cero, así que no me preocupo por los sectores reasignados.

Tenía un HDD de 2TB que era uno de un par de unidades duplicadas y que comenzó a crecer sectores reasignados. Al principio eran docenas, luego cientos, luego miles. Esto fue durante un período de años. La otra unidad en el par permaneció saludable y, de hecho, la derivación que falla lentamente no se eliminó de la matriz. Finalmente, reemplacé ambas unidades con unidades de 6 TB y el creciente recuento de sectores reasignados se convirtió en un problema. Todavía tengo el disco y todavía "funciona", incluso con unos 4500 sectores reasignados. He puesto unidades como esta en un sistema de prueba (como miembro RAID) para ver qué sucede cuando uno realmente muere. He tenido un par de oportunidades para trabajar con esto y, en todas las circunstancias, el reemplazo fue sin drama.

Tuve una falla de unidad en mi servidor de archivos de respaldo principal. No produjo ninguna advertencia avanzada, simplemente dejó de responder a los comandos SATA. Era miembro de un ZFS RAIDZ2 y lo reemplacé sin ningún drama. De hecho, en mi servidor de prueba he reemplazado las unidades defectuosas sin apagar y reiniciar el servidor.

Un punto más a tener en cuenta, tengo copias de seguridad en el sitio y fuera del sitio de todos los datos importantes. Si se pierde un sistema, hay dos copias de los datos en otro lugar.

HankB
fuente