6 puntos por GN⁺ 2024-01-09 | 1 comentarios | Compartir por WhatsApp

¿Cómo se ve el sistema de archivos ext4?

  • Al ejecutar el comando mkfs.ext4 en una unidad vacía, se crea en la unidad un sistema de archivos ext4.
  • En este proceso, pasa de ser una “nada” compuesta de 0x00 a convertirse en una disposición intencional de bytes propia del sistema de archivos ext4.
  • Se simplifica el trabajo agregando una pequeña unidad secundaria a una máquina virtual o usando un archivo normal configurado como dispositivo de bucle.

Experimento usando un dispositivo de bucle

  • El uso de dispositivos de bucle se ha simplificado, y ahora se puede montar y desmontar solo con mount -o loop <foo_file> <bar_dir> y umount <bar_dir>, sin necesidad de losetup.
  • Con el comando dd, se crea un archivo con 8 bloques de tamaño 64x1024 bytes leyendo datos desde /dev/zero.

Cambios después de crear el sistema de archivos ext4

  • Después de ejecutar mkfs.ext4, se puede revisar la estructura del archivo de bloques mediante la salida del comando od.
  • En esa salida se pueden observar las características estructurales del sistema de archivos ext4.

Entender la estructura de ext4 mediante visualización

  • Se crea una imagen de visualización donde cada bloque mide 1024x64 píxeles y cada píxel representa un byte.
  • En la imagen posterior a la creación del sistema de archivos ext4, se pueden ver las estructuras y ubicaciones de datos añadidas por mkfs.ext4.
  • Para distinguir los datos de ext4 de los datos del “usuario”, se copia al dispositivo de bucle un archivo de 1024 bytes generado desde /dev/urandom, y el código de visualización los diferencia y los muestra con colores distintos.

Visualización después de agregar datos de usuario

  • En la imagen después de copiar los datos de usuario a la unidad, es posible distinguir entre los datos de ext4 y los datos del usuario.
  • Además, se copia tres veces el archivo de datos de usuario a la unidad para generar un GIF animado.

Comparación entre ext4 y ext2

  • Además de la animación del sistema de archivos ext4, también se crea una animación del sistema de archivos ext2 para compararlas.

Opinión de GN⁺

  • Este artículo ayuda a entender visualmente cómo se organiza realmente el sistema de archivos ext4 en una unidad.
  • El método de visualización que distingue entre datos de usuario y datos del sistema resulta muy útil para aprender cómo funciona un sistema de archivos.
  • La comparación entre ext4 y ext2 ofrece una oportunidad de comprender de forma intuitiva las diferencias entre sistemas de archivos.

1 comentarios

 
GN⁺ 2024-01-09
Comentarios en Hacker News
  • Hace algunos años en FOSDEM hicieron una verdadera visualización gráfica del sistema de archivos ext4. Hay un video donde la visualización empieza alrededor del minuto 20. Puede resultar confuso porque el proyector no logró mostrar bien el azul claro que usaron, pero en el blog está el video renderizado correctamente.

  • El objetivo de muchas personas que intentan simplificar el uso de las computadoras termina produciendo cosas que pueden tener valor educativo. Por ejemplo, una luz roja que representa la actividad del disco duro puede despertar la curiosidad del usuario y darle información. Ocultar la vista avanzada, pero dejarla disponible para la gente curiosa, podría ser un buen punto intermedio.

  • Una utilidad de línea de comandos llamada pixd ofrece una visualización de datos parecida, pero no es tan genial como un GIF animado que muestra los cambios del sistema de archivos a lo largo del tiempo. Usar una curva de Hilbert para acomodar los píxeles podría ayudar más que dibujarlos línea por línea.

  • Me pareció interesante la demo de nbdkit que visualiza el IO del sistema de archivos.

  • Hice un experimento para visualizar el sistema de archivos. El resultado, a.png, puede convertirse de vuelta, así que se puede recuperar de nuevo un archivo .ext4 válido.

  • La visualización de datos puede ayudar a entender la complejidad de cómo un formato de disco realmente organiza los datos en el disco. Por ejemplo, hay metadatos preasignados incluso para un uso mínimo. Me da curiosidad qué pasaría cuando empiece a faltar espacio, pero la animación se detiene antes de eso.

  • Si el autor ve este comentario, podría convertir el GIF a video para ahorrar bytes transferidos y darle al usuario controles de video, como pausa, scrubbing, ajuste de velocidad, etc.

    • Comando de ejemplo: ffmpeg -i ext4.gif -pix_fmt yuv420p -c:v libx264 ext4.mp4
  • Un conjunto de herramientas llamado innodb_ruby es muy útil para visualizar y aprender la estructura de InnoDB.

  • Con Kaitai IDE se pueden visualizar varios formatos binarios byte por byte (o bit por bit). Recuerdo que existe un archivo de definición para ext4.

  • Al ver este diagrama, me pregunto si existe algún sistema de archivos que pueda guardar los metadatos en un dispositivo separado. Por ejemplo, guardar los datos en un HDD y los metadatos en un SSD asociado. Tal vez sea fácil almacenar los metadatos en caché en memoria, así que el beneficio no sería mayor que la complejidad adicional.