У систем хранения всегда были одни и те же враги: диски, которые лгут, обрезанные записи и сбои посреди обновления. ZFS отвечает на них небольшим набором идей, а Uberblok — интерактивный музей, созданный опытным инженером по хранению данных, — показывает их по одному залу, напрямую из кода, который их реализует. Каждая анимация соответствует строкам Open ZFS zfs-2.4.4, зафиксированным на коммите 71a9f9578616, и каждый фрагмент кода ведёт к исходнику. Автор считает ZFS самым впечатляющим инженерным достижением в этой области, создал проект в честь него и для лучшего понимания его внутреннего устройства и приветствует поправки от читателей, которые знают код лучше.
Музей открывается в Холле uberblock — небольшой записью, которая указывает на корень всего пула. Она содержит номер группы транзакций ub_txg и указатель на блок ub_rootbp, через который достижим любой другой блок. Каждый диск несёт четыре метки, и в каждой есть кольцо uberblock размером 128 КиБ. Новый uberblock никогда не перезаписывает предыдущий: он занимает слот N mod число слотов. При импорте ZFS читает все слоты и сохраняет действительный uberblock с наибольшим txg.
Следующие залы рассказывают об истории проекта, о дереве и о том, как копирование при записи, контрольные суммы и самовосстановление поддерживают согласованность пула без fsck, о переходе групп транзакций через состояния открытия, остановки и синхронизации, а также об иерархии vdev: зеркала, raidz, draid, устройства журнала, кэша и специальные устройства. Музей также объясняет RAID-Z, снимки, ARC, metaslab, ZIL и send/receive — всё с анимированными диаграммами.
Проект доступен по адресу uberblok.storagebits.workers.dev, а исходный код находится на GitHub в репозитории algotitanhq/uberblok.
Источник: Hacker News · Сводку подготовил HeadlinesBriefing