Mi dispositivo Linux incorporado utiliza una tarjeta SD para guardar ciertos datos de diagnóstico, demasiado copiosos para flash interno.
El problema es que si el dispositivo se apaga inesperadamente, el sistema de archivos (FAT32) en la tarjeta está dañado.
No hay forma de evitar cortes de energía inesperados o que el usuario lo apague así, y el dispositivo debería estar relativamente libre de mantenimiento. Peor aún, los datos se escriben continuamente, por lo que las corrupciones son muy frecuentes, y Linux al detectar FS defectuoso los vuelve a montar en modo de solo lectura en silencio.
¿Qué métodos sugerirías para mitigar esto? ¿Será suficiente ejecutar fsck.vfat automáticamente en el inicio?
Alguna información más:
- La tarjeta no debe considerarse extraíble por el usuario. Debe considerarse como un disco interno. Todos los datos almacenados en él serán accesibles para su descarga a través de la red o en una unidad usb, y el sistema purgará automáticamente las entradas más antiguas. Eso significa que no necesita ser legible en su PC promedio.
- El sistema actualmente admite FAT, yaffs y jffs2. Es posible agregar otros sistemas de archivos al núcleo, pero si existen otras vías, las preferiríamos primero.
- La escritura puede suspenderse bajo demanda incluso durante varios minutos sin pérdida de datos.
- pérdida de datos parcial o corrupción menor es aceptable. La detención completa del registro no lo es.
- Los eventos de apagado son completamente impredecibles la mayor parte del tiempo.
- el sistema funciona con ARM9, 200MHZ, 64MB de RAM, 32MB de memoria flash interna y utiliza la mayor parte de la potencia de la CPU para su función principal. Tenga esto en cuenta al pensar en soluciones sofisticadas con muchos recursos.
Respuestas:
Puede usar el
block2mtd
controlador para usar los sistemas de archivos transaccionales jffs2 o yaffs (2) que parece estar empleando en otro lugar para su tarjeta SD, lo que resolvería su problema de pérdida de datos o corrupción del sistema de archivos al apagar.Sin embargo, hacerlo podría generar otros problemas. Como es probable que la tarjeta SD tenga mecanismos propios para nivelar el desgaste y reasignar el sector, estos podrían interferir con las implementaciones de jffs2 y yaffs para hacer lo mismo, disminuyendo la vida útil o el rendimiento de su tarjeta SD. Si esto no es un problema, vale la pena intentarlo.
fuente
Compruebe si el kernel que usa admite el vaciado y / o el indicador de sincronización para vfat (parece que algunas versiones lo ignoran, ¡tenga cuidado!).
O simplemente elimine el sistema de archivos por completo si todo puede ir en un archivo (¡como sería el caso con una secuencia de registro sin formato!) O en algunos archivos de tamaño fijo (use particiones;)
fuente