Una forma garantizada de dañar la tarjeta SD

2

Estoy trabajando en un proyecto de Linux incorporado, es importante asegurarse de que el sistema de archivos no se destruya cuando ocurra algo inesperado (por ejemplo, un fallo de alimentación durante una operación de escritura en la tarjeta SD). Para este propósito, estoy tratando de implementar un posible escenario de falla.

He leído que hay sdctl para este propósito, pero en el artículo, dice que puede tomar aproximadamente 4 semanas , que es mucho tiempo para una prueba única .

¿Sabe, o piensa, en buenos escenarios o combinaciones especiales (escribir datos en un lugar determinado, etc.) para acelerar este proceso de falla?

Por cierto, también aprecio las ideas de "combinación inmune a la corrupción para tarjetas SD" (por ejemplo, utilizando un sistema de archivos de registro por diario). Gracias de antemano.

  

Editar: Prevenir la pérdida (menor) de datos no es mi prioridad. Cuando   la corrupción se produce, el sistema de archivos se destruye. Por lo tanto, tengo que configurar el   sistema de archivos en la tarjeta SD todo de nuevo, manualmente. Esto es lo que quiero   para evitar al menos. Y la pregunta anterior es acerca de establecer una buena   entorno de prueba para acortar el tiempo de prueba.

    
pregunta ddyn

4 respuestas

1

He logrado mi objetivo con esta combinación:

  • Un relé para simular un restablecimiento completo (apagado) de la placa de Linux incorporada. Está controlado por otro mCU, crea ciclos de encendido / apagado de forma periódica (el tiempo de encendido es entre 10-15 minutos al azar, el tiempo de apagado es de 5 segundos).

En el tablero de destino:

  • Una secuencia de comandos que copia los directorios /etc/ y /lib/ a /home/root/ . Este comienza inicialmente y se repite todo el tiempo que se alimenta la placa.
  • (No estoy seguro de que sea necesario). Un programa que crea un archivo de configuración ficticia (.ini), lee y cambia sus claves y valores continuamente.

Esta configuración tiene aproximadamente el 80% de tasa de éxito en mi pizarra. Por cierto, estoy usando el sistema de archivos ext2 para este paso. Gracias a todos por ayudarme en este asunto.

    
respondido por el ddyn
6

Si los datos son realmente importantes, debe utilizar una suma de comprobación moderna CoW (copia en escribir) sistema de archivos como btrfs o ZFS. Un kernel + btrfs reciente puede hacer "raid" en un solo dispositivo, almacenando los datos dos veces con suma de comprobación para determinar si un bloque está dañado, y repararlo desde la copia (con la esperanza de que sea correcta) si sucede. La copia en escritura garantiza que los datos nunca se sobrescriban y que cualquier eventual cambio se produzca de forma atómica. Combinado con funciones como instantáneas para restablecer la configuración de fábrica de manera confiable, y la compresión automática lo convierte en una buena opción para almacenamiento con espacio limitado en sistemas integrados. El principal inconveniente es que no ha visto a casi tantas pruebas como sistemas de archivos "menos confiables", lo que puede ser un gran cambio.

Para responder a su primera pregunta sobre la corrupción de datos, debe agregar más detalles. No está claro qué esperas que suceda. El modo de error para el almacenamiento Flash es generalmente que ya no puede cambiar un poco de 1 a 0; son de forma permanente 1. Tampoco nos ha dicho qué sistema de archivos está utilizando actualmente, por lo que no puedo aconsejarle sobre los sectores y lugares donde podría escribir datos aleatorios. La rociada liberal de 0xFF a bytes aleatorios en la tarjeta debería hacerlo, tal vez incluso 0xFF..FF en sectores completos.

    
respondido por el pipe
4

Después de haber tenido un problema similar con peores restricciones (el requisito de usar el sistema de archivos FAT), lo que hicimos con fines de prueba fue construir una caja de relés controlada por software para apagar y encender el dispositivo repetidamente a intervalos de un par de minutos (tomó > 1m para iniciar y reanudar las pruebas). Los sistemas generalmente fallaron durante la noche.

    
respondido por el pjc50
1

Si necesita fallar uno o más bits / sectores en una tarjeta SD, sugeriría encontrar uno viejo / barato sin nivelación de desgaste. Ese wat puede bitear un bit / sector una y otra vez hasta que falle. Suponiendo que se trate de un flash MCL (el más común) dentro de la tarjeta SD, 10 000 escrituras harán el trabajo.

Si la tarjeta SD tiene nivelación de desgaste, su esfuerzo aumentará en varios órdenes de magnitud y necesita escribir muchos más datos. Obtenga uno lo más pequeño posible para minimizar el esfuerzo y llenar todo menos unos pocos bytes. Escribe esos bytes una y otra vez hasta que falle.

    
respondido por el winny

Lea otras preguntas en las etiquetas