Le stockage a toujours eu les mêmes ennemis : des disques qui mentent, des écritures interrompues et des pannes au milieu d'une mise à jour. ZFS y répond avec un petit nombre d'idées, et Uberblok, un musée interactif conçu par un ingénieur de stockage chevronné, les présente pièce par pièce, directement à partir du code qui les met en œuvre. Chaque animation correspond à des lignes de Open ZFS zfs-2.4.4, figé au commit 71a9f9578616, et chaque extrait renvoie vers le code source. L'auteur, qui considère ZFS comme la réalisation d'ingénierie la plus impressionnante du domaine, a conçu ce projet en hommage et pour mieux comprendre ses mécanismes internes, et accueille avec plaisir les corrections des lecteurs qui connaissent mieux le code.
Le musée s'ouvre dans le Hall avec l'uberblock, le petit enregistrement qui désigne la racine de tout un pool. Il contient un numéro de groupe de transactions, ub_txg, et un pointeur de bloc, ub_rootbp, à partir duquel tous les autres blocs sont accessibles. Chaque disque porte quatre étiquettes, chacune avec un anneau d'uberblocks de 128 KiB. Un nouvel uberblock n'écrase jamais le précédent : il occupe l'emplacement N mod le nombre d'emplacements. À l'importation, ZFS lit tous les emplacements et conserve l'uberblock valide dont le txg est le plus élevé.
Les salles suivantes retracent l'histoire du projet, l'arbre, et expliquent comment la copie sur écriture, les sommes de contrôle et l'auto-réparation maintiennent un pool cohérent sans fsck, le passage des groupes de transactions par les états ouvert, figé et synchronisé, ainsi que la hiérarchie des vdev, avec les miroirs, raidz, draid, les périphériques de journal, de cache et spéciaux. Le musée présente aussi RAID-Z, les instantanés, l'ARC, les metaslabs, le ZIL et send/receive, le tout à l'aide de schémas animés.
Le projet est accessible à l'adresse uberblok.storagebits.workers.dev et son code source est disponible sur GitHub, dans algotitanhq/uberblok.
Source: Hacker News · Résumé par HeadlinesBriefing