F2FS, ¿el mejor sistema de archivos para las tarjetas SD?
Publicado: 30 Mar 2017, 09:20
AVISO... Post con contenido teórico y práctico. Longitud media, no apto para vagos y carentes de interés por aprender
========================================================================
======================== INTRODUCCIÓN ================================
========================================================================
Hola a todos...
Me ha extrañado no ver ninguna referencia a esto a lo largo y ancho del foro. Quizá no haya buscado bien, pero aparentemente, según el buscador, no hay ninguna referencia ni a F2FS ni a YAFFS, JFFS ni a ningún otro sistema de archivo pensado para dispositivos Flash, así que me he animado a abrir este hilo.
La mayoría de las distros actuales tanto para Raspberry como para Orange o cualquier otra "Fruta Pi" están basadas en dos particiones, por un lado la BOOT en formato VFAT (para aligerar el sistema de arranque) y una segunda basada en EXT4.
El sistema de archivos EXT4 es muy versátil, bastante robusto frente a corrupción, y muy eficiente, pero para memorias flash tiene un problema, y es el gasto reiterativo de los mismos sectores físicos del disco, sobre todo cuando hablamos de dispositivos de acceso directo como son las NAND flash que solemos usar en las PI (generalmente SD, pero también pinchos de memoria USB). En lo que se traduce esto es en el deterioro prematuro de ciertas celdas de la SD.
En teoría, una vez deteriorada la celda, el propio sistema EXT4 intentaría reparar el archivo afectado removiéndolo a otro punto, pero muchas veces no es posible, e independientemente nuestra memoria ya estaría tocada físicamente.
Para evitar esta problemática aparecieron los sistemas operativos pensados para memorias NAND flash. La primera aparición fue con el JFFS, originalmente creado por Axis para sus dispositivos (routers y similares basados en linux). Fue sustituido por el JFSS2 de RedHat, muy habitual en el principio de los 2000 en routers Linksys, Cisco y similares.
Posteriormente salieron otros, como el UBIFS y mucho más recientemente el F2FS creado por Samsung, que es el que da título a este hilo.
Estos sistemas de archivos se basan, a groso modo, en un sistema de grabación circular, que evita el uso reiterado de los mismos sectores una y otra vez. Obviamente esto puede implicar un pequeño retardo en la escritura, sobre todo en escritura aleatoria, pero durante el tiempo que llevo probándolo no he notado, a simple vista, ningún tipo de impacto real sobre el rendimiento en nuestras RaspPi.
No obstante, descubrí un interesante banco de pruebas en esta página web, donde no sólo no aparece haber un gran impacto en el rendimiento, sino que incluso en ciertas circunstancias, este tipo de sistema de fichero resulta más eficiente que incluso el tan afamado y reciente BTRFS de Oracle.
Aquí tenéis el link de dicho banco, para que podáis verlo:
http://www.phoronix.com/scan.php?page=a ... arks&num=1
========================================================================
======================== DESARROLLO ================================
========================================================================
Convencido de las ventajas técnicas de estos sistemas de archivos, el siguiente paso era ponerlo en producción. El observar en los últimos días que en el grupo de telegram varios usuarios habían sufrido de fallos en sus SD's y en sus sistemas de archivos fue el empujón final para decidirme a probarlo.
Obviamente las conclusiones se tendrán que ver a lo largo de los meses, pero la teoría me indica que, en este sentido, el rendimiento y la robustez deberá ser mucho mayor que el EXT4 en este aspecto.
A lo largo y ancho de internet hay muchas y variadas formas de realizar el proceso. Una de ellas se basa en usar una llave USB y la propia PI para realizar dicho proceso.
https://movr0.com/2016/08/19/convert-ra ... 3-to-f2fs/
Por mi parte, como tenía el sistema en una tarjeta SD de 8Gb. y lo quería pasar a una de 32Gb., realicé un "todo en uno" y lo hice de la siguiente manera:
1º) En la nueva tarjeta SD de 32Gb. copié la imagen de raspbian que ya tenía, arranqué la PI con ella y efectué el primer proceso de arranque, donde raspbian amplía la partición de datos y deja la SD operativa con todo su tamaño y el sistema Raspbian operativo (aunque esto último nos da igual, porque nos lo vamos a cargar).
2º) Me descargué una live de Debian desde https://www.debian.org/CD/live/
3º) La monté sobre una llave USB
4º) En el ordenador arranqué la debian y, mediante dos lectores de tarjetas monté la SD de origen y la SD de destino
5º) Descargué en la debian las tools de F2FS (sudo apt-get install f2fs-tools)
5º) Me cargué el sistema de archivos EXT4 de la tarjeta de destino (sudo wipefs -a /dev/<particion 2 de SD de destino>
6º) y formateé en F2FS sudo mkfs.f2fs /dev/<particion 2 de SD de destino>
7º) Traspasé la partición root de la origen a la de destino. sudo rsync -axv /mnt/sdorigen /mnt/sddestino
8º) Edité el fichero fstab del /etc de la tarjeta de destino para cambiar el sistema de archivos de ext4 a f2fs y añadí la opción "discard" a dicha línea
9º) Edité el fichero cmdline.txt de la partición boot también de ext4 a f2fs
10º) Desmonté ambas SD's y apagué el sistema.
Tras estas operaciones tengo, la SD de origen tal y como estaba, y en la SD de destino el mismo contenido pero ya con el sistema de archivos en F2FS.
Hecho esto, encendí la pi con la nueva tarjeta y, a parte del aumento lógico de tamaño en la partición root, el resto funciona exactamente igual, no notando diferencia alguna en rendimiento...
Dentro de unos meses veremos si el sistema aguanta...
========================================================================
======================== CONCLUSIONES ================================
========================================================================
Como ya he comentado, aún es muy pronto para sacar conclusiones, pero la teoría me indica que notaré una longevidad en el sistema mucho mayor, y una robustez mucho más estable con este sistema de archivo. Me alivia también comprobar que no se nota ningún impacto aparente en rendimiento frente al sistema de archivos EXT4. Dentro de unos meses volveremos por aquí para continuar con el desarrollo de conclusiones...
:adios
========================================================================
======================== INTRODUCCIÓN ================================
========================================================================
Hola a todos...
Me ha extrañado no ver ninguna referencia a esto a lo largo y ancho del foro. Quizá no haya buscado bien, pero aparentemente, según el buscador, no hay ninguna referencia ni a F2FS ni a YAFFS, JFFS ni a ningún otro sistema de archivo pensado para dispositivos Flash, así que me he animado a abrir este hilo.
La mayoría de las distros actuales tanto para Raspberry como para Orange o cualquier otra "Fruta Pi" están basadas en dos particiones, por un lado la BOOT en formato VFAT (para aligerar el sistema de arranque) y una segunda basada en EXT4.
El sistema de archivos EXT4 es muy versátil, bastante robusto frente a corrupción, y muy eficiente, pero para memorias flash tiene un problema, y es el gasto reiterativo de los mismos sectores físicos del disco, sobre todo cuando hablamos de dispositivos de acceso directo como son las NAND flash que solemos usar en las PI (generalmente SD, pero también pinchos de memoria USB). En lo que se traduce esto es en el deterioro prematuro de ciertas celdas de la SD.
En teoría, una vez deteriorada la celda, el propio sistema EXT4 intentaría reparar el archivo afectado removiéndolo a otro punto, pero muchas veces no es posible, e independientemente nuestra memoria ya estaría tocada físicamente.
Para evitar esta problemática aparecieron los sistemas operativos pensados para memorias NAND flash. La primera aparición fue con el JFFS, originalmente creado por Axis para sus dispositivos (routers y similares basados en linux). Fue sustituido por el JFSS2 de RedHat, muy habitual en el principio de los 2000 en routers Linksys, Cisco y similares.
Posteriormente salieron otros, como el UBIFS y mucho más recientemente el F2FS creado por Samsung, que es el que da título a este hilo.
Estos sistemas de archivos se basan, a groso modo, en un sistema de grabación circular, que evita el uso reiterado de los mismos sectores una y otra vez. Obviamente esto puede implicar un pequeño retardo en la escritura, sobre todo en escritura aleatoria, pero durante el tiempo que llevo probándolo no he notado, a simple vista, ningún tipo de impacto real sobre el rendimiento en nuestras RaspPi.
No obstante, descubrí un interesante banco de pruebas en esta página web, donde no sólo no aparece haber un gran impacto en el rendimiento, sino que incluso en ciertas circunstancias, este tipo de sistema de fichero resulta más eficiente que incluso el tan afamado y reciente BTRFS de Oracle.
Aquí tenéis el link de dicho banco, para que podáis verlo:
http://www.phoronix.com/scan.php?page=a ... arks&num=1
========================================================================
======================== DESARROLLO ================================
========================================================================
Convencido de las ventajas técnicas de estos sistemas de archivos, el siguiente paso era ponerlo en producción. El observar en los últimos días que en el grupo de telegram varios usuarios habían sufrido de fallos en sus SD's y en sus sistemas de archivos fue el empujón final para decidirme a probarlo.
Obviamente las conclusiones se tendrán que ver a lo largo de los meses, pero la teoría me indica que, en este sentido, el rendimiento y la robustez deberá ser mucho mayor que el EXT4 en este aspecto.
A lo largo y ancho de internet hay muchas y variadas formas de realizar el proceso. Una de ellas se basa en usar una llave USB y la propia PI para realizar dicho proceso.
https://movr0.com/2016/08/19/convert-ra ... 3-to-f2fs/
Por mi parte, como tenía el sistema en una tarjeta SD de 8Gb. y lo quería pasar a una de 32Gb., realicé un "todo en uno" y lo hice de la siguiente manera:
1º) En la nueva tarjeta SD de 32Gb. copié la imagen de raspbian que ya tenía, arranqué la PI con ella y efectué el primer proceso de arranque, donde raspbian amplía la partición de datos y deja la SD operativa con todo su tamaño y el sistema Raspbian operativo (aunque esto último nos da igual, porque nos lo vamos a cargar).
2º) Me descargué una live de Debian desde https://www.debian.org/CD/live/
3º) La monté sobre una llave USB
4º) En el ordenador arranqué la debian y, mediante dos lectores de tarjetas monté la SD de origen y la SD de destino
5º) Descargué en la debian las tools de F2FS (sudo apt-get install f2fs-tools)
5º) Me cargué el sistema de archivos EXT4 de la tarjeta de destino (sudo wipefs -a /dev/<particion 2 de SD de destino>
6º) y formateé en F2FS sudo mkfs.f2fs /dev/<particion 2 de SD de destino>
7º) Traspasé la partición root de la origen a la de destino. sudo rsync -axv /mnt/sdorigen /mnt/sddestino
8º) Edité el fichero fstab del /etc de la tarjeta de destino para cambiar el sistema de archivos de ext4 a f2fs y añadí la opción "discard" a dicha línea
9º) Edité el fichero cmdline.txt de la partición boot también de ext4 a f2fs
10º) Desmonté ambas SD's y apagué el sistema.
Tras estas operaciones tengo, la SD de origen tal y como estaba, y en la SD de destino el mismo contenido pero ya con el sistema de archivos en F2FS.
Hecho esto, encendí la pi con la nueva tarjeta y, a parte del aumento lógico de tamaño en la partición root, el resto funciona exactamente igual, no notando diferencia alguna en rendimiento...
Dentro de unos meses veremos si el sistema aguanta...
========================================================================
======================== CONCLUSIONES ================================
========================================================================
Como ya he comentado, aún es muy pronto para sacar conclusiones, pero la teoría me indica que notaré una longevidad en el sistema mucho mayor, y una robustez mucho más estable con este sistema de archivo. Me alivia también comprobar que no se nota ningún impacto aparente en rendimiento frente al sistema de archivos EXT4. Dentro de unos meses volveremos por aquí para continuar con el desarrollo de conclusiones...
:adios