HeadlinesBriefing HeadlinesBriefing.com

Uberblok:ZFS内部構造のインタラクティブ博物館

Hacker News •
×

ストレージには、常に同じ敵がいました。嘘をつくディスク、途中で切れる書き込み、そして更新の最中のクラッシュです。ZFSはいくつかの基本的な考え方でこれらに立ち向かいます。そして、ベテランのストレージエンジニアが作ったインタラクティブな博物館Uberblokは、それらの仕組みを実装しているコードから直接材料を取り、部屋ごとに一つずつ見せてくれます。すべてのアニメーションはOpen ZFS zfs-2.4.4のコード行に対応しており、そのコミット71a9f9578616に固定されています。また、すべてのコード抜粋は元のソースに戻れるようになっています。作者はZFSをこの分野で最も優れた工学的成果の一つと考えており、敬意を表し、その内部構造をより深く理解するためにこのプロジェクトを作りました。コードをよく知る読者からの訂正も歓迎しています。

博物館はホールから始まり、そこにはuberblockがあります。これはプール全体のルートを指し示す小さなレコードです。トランザクショングループ番号ub_txgと、他のすべてのブロックに到達できるブロックポインタub_rootbpを保持しています。各ディスクには4つのラベルがあり、それぞれに128 KiBのuberblockリングがあります。新しいuberblockが前のものを上書きすることはなく、スロット数で割った余りのNスロット目に書き込まれます。インポート時には、ZFSがすべてのスロットを読み取り、有効でtxgが最大のuberblockを保持します。

以降の部屋では、プロジェクトの歴史、ツリー構造、そしてコピーオンライト、チェックサム、自己修復がfsckなしでプールの整合性をどう保つのか、トランザクショングループがopen、quiescing、syncingの状態を移る仕組み、そしてミラー、raidz、draid、ログ、キャッシュ、特殊デバイスを含むvdevの階層が取り上げられています。博物館ではRAID-Z、スナップショット、ARC、metaslab、ZIL、send/receiveについても、すべてアニメーション図で解説しています。

このプロジェクトはuberblok.storagebits.workers.devで利用でき、ソースコードはGitHubのalgotitanhq/uberblokにあります。

出典: Hacker News · 要約:HeadlinesBriefing