6 points par GN⁺ 2024-01-09 | 1 commentaires | Partager sur WhatsApp

À quoi ressemble le système de fichiers ext4 ?

  • Lorsqu’on exécute la commande mkfs.ext4 sur un disque vide, un système de fichiers ext4 y est créé.
  • Au cours de ce processus, l’état de « rien du tout » composé de 0x00 se transforme en un agencement d’octets structuré propre au système de fichiers ext4.
  • L’expérience est simplifiée en ajoutant un petit disque secondaire à une machine virtuelle, ou en utilisant un fichier ordinaire configuré comme périphérique loop.

Expérimentation avec un périphérique loop

  • L’utilisation d’un périphérique loop a été simplifiée : il est possible de monter et démonter uniquement avec mount -o loop <foo_file> <bar_dir> et umount <bar_dir>, sans losetup.
  • La commande dd est utilisée pour lire des données depuis /dev/zero et créer un fichier composé de 8 blocs de 64x1024 octets.

Les changements après la création du système de fichiers ext4

  • Après l’exécution de mkfs.ext4, il est possible d’examiner la structure du fichier de blocs via la sortie de la commande od.
  • Cette sortie permet d’observer les caractéristiques structurelles du système de fichiers ext4.

Comprendre la structure d’ext4 grâce à la visualisation

  • Une image de visualisation est créée où chaque bloc mesure 1024x64 pixels, chaque pixel représentant un octet.
  • Dans l’image après la création du système de fichiers ext4, on peut voir les structures et l’emplacement des données ajoutées par mkfs.ext4.
  • Pour distinguer les données ext4 des données « utilisateur », un fichier de 1024 octets généré à partir de /dev/urandom est copié sur le périphérique loop, puis le code de visualisation les différencie et les affiche avec un code couleur.

Visualisation après l’ajout de données utilisateur

  • Dans l’image obtenue après la copie des données utilisateur sur le disque, la distinction entre données ext4 et données utilisateur est visible.
  • En complément, le fichier de données utilisateur est copié trois fois sur le disque afin de générer un GIF animé.

Comparaison entre ext4 et ext2

  • En plus de l’animation du système de fichiers ext4, une animation du système de fichiers ext2 a également été réalisée à des fins de comparaison.

L’avis de GN⁺

  • Cet article aide à comprendre visuellement comment le système de fichiers ext4 est réellement organisé sur un disque.
  • La méthode de visualisation qui distingue les données utilisateur des données système est très instructive pour apprendre le fonctionnement d’un système de fichiers.
  • La comparaison entre ext4 et ext2 offre l’occasion de saisir intuitivement les différences entre systèmes de fichiers.

1 commentaires

 
GN⁺ 2024-01-09
Avis Hacker News
  • Il y a quelques années, à la FOSDEM, quelqu’un a réalisé une véritable visualisation graphique du système de fichiers ext4. La visualisation commence vers la 20e minute dans la vidéo. Le projecteur rendait mal le bleu clair utilisé, ce qui peut prêter à confusion, mais une vidéo correctement rendue est disponible sur le blog.

  • L’objectif de nombreuses personnes qui cherchent à simplifier l’usage des ordinateurs aboutit parfois à des éléments ayant une valeur pédagogique. Par exemple, le voyant rouge indiquant l’activité du disque dur peut éveiller la curiosité de l’utilisateur et lui fournir des informations. Masquer la vue avancée tout en la laissant accessible aux plus curieux peut être un bon compromis.

  • Un utilitaire en ligne de commande appelé pixd propose une visualisation de données similaire, mais ce n’est pas aussi impressionnant qu’un GIF animé montrant l’évolution du système de fichiers dans le temps. Utiliser une courbe de Hilbert pour agencer les pixels peut être plus utile que de les dessiner ligne par ligne.

  • J’ai trouvé la démo nbdkit visualisant les entrées/sorties du système de fichiers intéressante.

  • J’ai mené une expérience de visualisation du système de fichiers. Le résultat, a.png, peut être reconverti, ce qui permet de récupérer à nouveau un fichier .ext4 valide.

  • La visualisation de données peut aider à comprendre la complexité de la manière dont les formats de disque placent réellement les données sur le disque. Par exemple, il existe des métadonnées préallouées, même pour un usage minimal. Je me demande ce qui se passerait dans une situation de manque d’espace, mais l’animation s’arrête avant d’y arriver.

  • Si l’auteur voit ce commentaire, il pourrait convertir le GIF en vidéo afin d’économiser des octets lors du transfert et offrir aux utilisateurs des contrôles vidéo (pause, scrub, réglage de la vitesse, etc.).

    • Exemple de commande : ffmpeg -i ext4.gif -pix_fmt yuv420p -c:v libx264 ext4.mp4
  • Un ensemble d’outils appelé innodb_ruby est très utile pour visualiser et apprendre la structure d’InnoDB.

  • Avec Kaitai IDE, on peut visualiser différents formats binaires octet par octet (ou bit par bit). Je me souviens qu’il existe un fichier de définition pour ext4.

  • En regardant ce diagramme, je me demande s’il existe des systèmes de fichiers capables de stocker les métadonnées sur un appareil distinct. Par exemple, les données sur un HDD et les métadonnées sur un SSD associé. Comme il est facile de mettre les métadonnées en cache en mémoire, le bénéfice n’est peut-être pas suffisant pour justifier la complexité supplémentaire.