Elección del sistema de archivos para GNU / Linux en una tarjeta SD


31

Tengo un sistema integrado basado en ARM que se ejecuta en una tarjeta SD. Actualmente es Debian GNU / Linux usando ext3 como sistema de archivos. Cuando estoy a punto de reinstalar el sistema, comencé a preguntarme sobre cambiar a un sistema de archivos más amigable con el flash. He oído hablar de JFFS2, YAFFS2 y LogFS, y todos parecen adecuados para el trabajo. ¿Cuál recomendarías? Además, he oído que ha habido muchas mejoras ext4 para adaptarse mejor a los discos SSD; ¿debo interpretar que ejecutar ext4 debería estar bien? ¿En qué tengo que pensar especialmente en ese caso?

Supongo que el uso del sistema es importante. Pero en aras de la generalidad, imagine que hará cosas de escritorio estándar (aunque de hecho sea un pequeño sistema basado en ARM).

Gracias por cualquier respuesta

Editar: Wikipedia me dice (en una declaración de "cita requerida") que las tarjetas de memoria flash extraíbles y las unidades flash USB tienen controladores incorporados para realizar nivelación de desgaste y corrección de errores, por lo que el uso de un sistema de archivos flash específico no agrega ningún beneficio . Por lo tanto, me inclino por seguir con un sistema de archivos ext.

Respuestas:


18

Excelente artículo sobre sistemas de archivos flash .

La siguiente es una pregunta importante cuando se habla de sistemas de archivos flash: ¿Qué es la nivelación de desgaste? Artículo de Wikipedia . Básicamente, en los discos flash puede escribir un número limitado de veces hasta que el bloque salga mal. Después de eso, el sistema de archivos (si no hay una gestión de nivelación de desgaste incorporada en el hardware, como en el caso de las unidades SSD), debe marcar ese bloque como no válido y evitar usarlo más.

Los sistemas de archivos típicos (por ejemplo, ReiserFS, NTFS, ext3, etc.) están diseñados para discos duros, que no tienen tales limitaciones.

JFFS2

Incluye compresión y elegante protección antidesgaste.

YAFFS2

  • Una cosa que hace la diferencia: tiempos de montaje cortos, después de un montaje exitoso.
  • Implementa la propiedad de escritura única: una vez que los datos se escriben en un bloque, no hay necesidad de reescribirlos. Esto es importante, ya que reduce el desgaste.

LogFS

  • No muy maduro, pero ya está incluido en el árbol del kernel de Linux.
  • Admite sistemas de archivos más grandes que JFFS2 / YAFFS2 sin problemas.

UBIFS

  • Más maduro que LogFS
  • Escribir soporte de almacenamiento en caché
  • Sobre escalabilidad: artículo . En discos grandes, mejor rendimiento que con JFFS2

ext4

Si ningún controlador o tarjeta (por ejemplo, las unidades SSD tienen nivelación de desgaste interno, al menos generalmente) manejan la nivelación de desgaste, entonces ext4 no es la mejor idea, ya que no está destinado para el uso de flash sin procesar.

¿Cuál es el mejor?

Por supuesto, depende del uso y el soporte. Por lo que leí en Internet, recomendaría UBIFS. Buen soporte para grandes sistemas de archivos, fase de desarrollo maduro, rendimiento adecuado y sin grandes inconvenientes.


66
Gracias, esto es muy informativo! Sin embargo, la "gran nota roja" del sitio web de UBIFS dice: "Una cosa que la gente tiene que entender cuando se trata de UBIFS es que UBIFS es muy diferente a cualquier sistema de archivos tradicional: no funciona sobre dispositivos de bloque (como discos duros) , Tarjetas MMC / SD, unidades flash USB, SSD, etc.) UBIFS fue diseñado para funcionar sobre flash sin procesar, que no tiene nada que ver con dispositivos de bloque. Es por eso que UBIFS no funciona en tarjetas MMC y similares. parecen dispositivos de bloque para el mundo exterior porque implementan soporte FTL (Flash Translation Layer) en hardware ".
gspr

3
Buena respuesta, además hay F2FS de Samsung, también un sistema muy prometedor, aunque bastante nuevo.
lzap

16
@gspr es correcto: SD tiene una capa de traducción flash y JFFS2, YAFFS2, LOGFS y UBIFS están diseñados para flash no administrado . Las opciones para SD son sistemas de archivos de dispositivos de bloque tradicionales, como ext2 / ext3 / ext4.
Robert Calhoun

@Olli ¿Es NILFS2 una buena opción para una unidad SSD?
SebMa

12

Estaba enfrentando el mismo problema y también investigué un poco. Finalmente decidí ir con ext2.

Parece que algunas tarjetas SDHC implementan su propia nivelación de desgaste en la capa de hardware. Si puede obtener tarjetas SDHC que tienen incorporada nivelación de desgaste.

Los sistemas de archivos que proporcionan nivelación de desgaste pueden interferir con la nivelación de desgaste de nivel Flash, por lo que en realidad puede ser malo para el flash usarlos (el artículo de IBM citado anteriormente habla sobre cómo lo hace JFFS, por lo que está claro que eso no funcionará con nivel de flash WL). Decidí que no necesitaba el diario de ext3 ya que no estoy almacenando datos críticos en él y, de todos modos, generalmente hago copias de seguridad regularmente (cron).

También monté / tmp y / var como tmpfs para acelerar las cosas. Si tiene suficiente RAM, debe hacerlo (pero asegúrese de rotar o eliminar sus registros regularmente)

SUGERENCIA: monte sus tarjetas SD ext con la opción "noatime"


He tenido problemas con viejas tarjetas SD y ext2 (corrupción de datos) que desaparecieron al cambiar a XFS.
Alexander

1

No sé si esto encaja en el perfil de su sistema, pero ¿qué pasa con el uso de un sistema de archivos de solo lectura más una partición de lectura-escritura (o un dispositivo USB que se puede reemplazar fácilmente)? De esa manera, tendrá un disco rápido para su sistema operativo y podrá reemplazar su almacenamiento rw fácilmente cuando se agote.

Y luego están los unionfs. Según lo entendí, "apila" diferentes sistemas de archivos (es decir, un ro fs encima de un rw fs). Si hay un acceso de lectura, unionfs busca a través de la pila hasta que alcanza el FS que contiene el archivo que buscamos. Al escribir unionfs busca el primer FS escribible en la pila y lo usa.

También encontré estos artículos que pueden ser interesantes: http://www.linux-mag.com/id/7357/ http://www.linux-mag.com/id/7345/

Y dos artículos con consejos para usar SSD: http://danweinreb.org/blog/using-solid-state-disks-on-linux http://www.zdnet.com/blog/perlow/geek-sheet-a- tweakers-guide-to-solid-state-drives-ssds-and-linux / 9190


1
Tenga en cuenta que no soy yo quien rechazó esta respuesta. Contiene información útil en general, pero no está relacionada con lo que necesito. Gracias de todos modos :)
gspr

0

Seleccionar (y dimensionar) el sistema de archivos correcto es más importante que cualquier otra cosa, no solo por seguridad sino por muchas otras razones que la gente no suele reconocer. Sin un sistema de archivos, todo el procesamiento sería nulo.

Muy bien respondido por Olli, y el OP está muy anticuado, pero los sistemas de archivos son mi motivo favorito. No podía mantenerme alejado. superuser.com no es algo que visité antes, no soy administrador, pero me inscribí y voy a visitar más.

Las cosas cambiaron mucho desde 2011, pero incluso entonces formateé las tarjetas USB FAT y usé unidades USB para transportar archivos de 4 Gb +. La razón, por supuesto, era la compatibilidad, no la seguridad (tanto para S en SD, pero uso contraseñas en mis 7z), y nunca llevé nada más grande que un CD ISO, fueron principalmente para scripts SQL y diferencias diarias por hora de instantáneas cifradas de la base de datos comprimidas hasta casi la muerte por 7-Zip.

En estos días uso cualquier SD más rápido que cualquiera que conozco. Tengo una memoria USB en algunas máquinas de producción de mi empleador para copias de seguridad automatizadas por hora, FAT formateado. Sin embargo, los vigilo todos los días y, adivinaron, los respaldan religiosamente a mano (están asegurados fuera de línea para construir cosas ITAR). El SSD niveló parte del campo de juego, pero todavía no confío en ellos tanto como el HD normal, y el SD es peor que el óptico. Van mal en un instante y la pérdida es total.

Cualquier sistema de archivos que invite al sistema operativo host a escribir aleatoriamente en él (NTFS, Papelera de reciclaje) es una mala noticia para una SD. Además, desmontarlo ayuda mucho, ningún sistema operativo intentará acceder al almacenamiento desmontado, por lo que cualquier sistema de archivos funcionará siempre que la SD incluya una secuencia de comandos para desengancharse (uno de los archivos estándar en cada SD en la mía).

La lectura de una SD todavía es lenta hoy, por lo que recomendaría algo como el volcado de disco (dd) para capturar toda la imagen al duplicar en lugar de archivo por archivo. dd también le avisa cuando hay algo mal, para que su administrador de archivos no se vuelva kaboom.

Por supuesto, si su propósito principal es extender la vida de un centavo, está haciendo su negocio de la manera incorrecta. Hago lo que no hago para extender la vida útil de una SD, pero para evitar que se deteriore cuando no estoy mirando, y ahí está la diferencia.

Evito ext4 o cualquier FS de diario en SD porque no me importa cuando les escribo mal, ¡pero me duele cuando un día más tarde no puedo leerlos!


2
Lo siento, pero esto realmente no responde la pregunta. Es un ensayo interesante sobre el uso de medios extraíbles, pero no sobre la elección del sistema de archivos.
sospechoso

Quería comentar pero no pude. La publicación es un poco detallada, lo que recomendé no era que el OP lo estuviera considerando, sino que recomendé FAT. Debería haber compuesto con más enfoque y claridad con seguridad.
arch-abit

¿Por qué es Any file system which invites the host OS to write randomly to it (NTFS, Recycle Bin) is bad news for an SD.? No consiste en discos giratorios, así que donde sea que leas / escribas no debería importar, creo. Y por cierto, NTFS escribe de forma contigua, lo que conduce a la fragmentación. «Almacenes aleatorios de archivos» es, por ejemplo, sobre EXTα.
Hola Ángel

0

Como respuesta a la recomendación de usar fat (32?): He realizado algunas pruebas de rendimiento y descubrí que fat32 tiene un tiempo muy predecible para escribir un archivo (2 GB necesita dos veces de 1 GB + offset, 3 GB necesita tiempos de árbol de 1GB + offset). El rendimiento de ext4 es ligeramente mejor que ext3. Tanto ext3 como ext4 a veces son rápidos, pero a veces necesitan algo de tiempo extra para escribir los archivos de diario en el disco (sin comportamiento de tiempo de escritura lineal). Todas las pruebas se realizaron con fsync () para asegurarse de que el archivo realmente esté escrito en el disco. Realicé algunas pruebas con sync (). Resultan en muy mal rendimiento de escritura. Entonces volví a fsync (). Verifiqué si fsync () es suficiente. Por lo tanto, apagué el dispositivo sin apagar el sistema o quité la tarjeta SD sin desmontar. En ningún caso los archivos escritos o la estructura del directorio fueron dañados.

Saludos, Thomas


1
La comparación es injusta. Comparó el FAT no diario con el diario EXT3 / 4. Debería comparar FAT versus EXT2. Y solo para su información, el sistema de archivos que viene preformateado por el fabricante generalmente tiene los tamaños / compensaciones de bloque más óptimos. Es decir, después de reformatear el sistema de archivos, existe la posibilidad de que IO tarde más que con el original.
Hola Ángel

0

si desea una tarjeta SD sin pérdidas, sugiero usar BTRFSporque:

BTRFS es un nuevo sistema de archivos en comparación con EXT creado originalmente por Oracle en 2007.

Aporta nuevas características a los sistemas de archivos tradicionales:

  • Clonación / instantáneas
  • Diffs (enviar / recibir)
  • Quotat
  • Unión
  • Auto curación (con períodos de compromiso predeterminados a 30 segundos)

Para una explicación y comparación adicionales, consulte este pdf

para nuevas comparaciones consulte este sitio

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.