¿Cómo puedo formatear una tarjeta SD con un sistema de archivos más robusto utilizable por Linux con un tamaño de clúster específico para un mejor rendimiento de escritura?

¿Cómo puedo formatear una tarjeta SD con un sistema de archivos más robusto utilizable por Linux con un tamaño de clúster específico para un mejor rendimiento de escritura?

Objetivo: tarjeta microSD formateada...

  • para un mejor rendimiento de escritura
  • para uso únicamente con Linux integrado
  • para una mayor confiabilidad (pueden ocurrir fallas de energía aleatorias)
  • usando un tamaño de clúster de 64kB

Estoy usando una tarjeta microSD de 8 GB para el almacenamiento de datos dentro de un dispositivo Linux/ARM integrado. La tarjeta SD no es extraíble. He estado usando ext3 en lugar del FAT32 preinstalado porque parece manejar mejor los cortes de energía aleatorios durante las escrituras. Sin embargo, seguí notando que mi rendimiento de escritura siempre es mejor con el FAT32 preinstalado de Kingston. Si reformateo la tarjeta con FAT32, el rendimiento aún se ve afectado. Después de navegar por Wikipedia, me topé con el siguiente comentario que decía que algunas tarjetas están optimizadas para tamaños de clúster específicos. En mi caso, Kingston viene preformateado para un tamaño de clúster de 64 kB.

Riesgos de reformatear

Reformatear una tarjeta SD con un sistema de archivos diferente, o incluso con el mismo, puede hacer que la tarjeta sea más lenta o acortar su vida útil. Algunas tarjetas utilizan nivelación de desgaste, en la que los bloques modificados con frecuencia se asignan a diferentes partes de la memoria en diferentes momentos, y algunos algoritmos de nivelación de desgaste están diseñados para los patrones de acceso típicos de la tabla de asignación de archivos en un dispositivo FAT16 o FAT32. Además, el sistema de archivos preformateado puede utilizar un tamaño de clúster que coincida con la región de borrado de la memoria física de la tarjeta; reformatear puede cambiar el tamaño del clúster y hacer que las escrituras sean menos eficientes.

Respuesta1

La mayoría de las tarjetas SD (así como las unidades USB) que existen están optimizadas para su uso con FAT32. Usarlos con cualquier otro FS hará que su rendimiento se vea afectado.

Más información enLWN.

Respuesta2

Nota laHerramienta de formato de asociación de tarjetas SDhace lo siguiente por usted.

Aún no tengo la respuesta completa para todos los dispositivos. Sin embargo, aquí está la respuesta para tarjetas de 8GiB que usan FAT32.

Particione la tarjeta de modo que la partición FAT32 comience en el sector 8192, que está a 4 MiB del inicio del disco. A continuación, formatee la partición FAT32 con grupos de 32 kiB y establezca el número de "sectores reservados" de modo que el área de datos, grupo 2, de la partición FAT32 comience en el sector lógico 8192 (u 8 MiB desde el inicio del disco (4 MiB desde el inicio). de la partición).

Use 32kiB clusters
| 4MiB      | 4MiB                                | remainder of disk    |  
| -------   | ---------------------------------   | ------------------   |  
| MBR       | First Partition Header + FAT tables | First Partition Data |  

Razonamiento resumido: la SD Card Association ha recomendado estos límites de 4MiB como zonas optimizadas y recomienda FAT32 como sistema de archivos para tarjetas de este tamaño. El chip controlador de la tarjeta está optimizado para pequeñas lecturas/escrituras en esa segunda área de 4MiB.

Hay mucho más que eso, pero esa es la respuesta rápida y sucia. El método anterior solo funciona para discos < 16 GiB para clústeres de 32 kiB y < 32 GiB para clústeres de 64 kiB. Sospecho que en discos de mayor tamaño, el área de datos se desplaza a 8MiB lógicos, pero no tengo un disco de más de 8GiB para usar.

información relacionada