この問題を広範に研究した本当に賢くて経験豊富な人々は、ユーザーのデータを食い尽くすバグを作りました。計算レイヤーのバグ (カーネル クラッシュなど) とストレージ レイヤーのバグの違いは、ユーザーのデータを黙って食べることは非常に悪いことです。スプレッドシートで間違った回答をするよりもはるかに悪いです (Excel はバグがありますが、人気があります)。ディスク上のデータを保持しながら sigfaulting (これは、頻繁な自動保存によって簡単に軽減されます)。
古いオペレーティング システムの本 [1] (Linus Torvalds が 20 年前に始めたものと同じもの) の minix ファイルシステムのような、より単純な設計を研究することから始めます。
他の人が言ったように、ジャーナリング、エクステント、または ACL のない ext2 は、ext4 よりも優れた出発点です。そのソース コードは、Linux カーネルと e2fsprogs ユーザー空間ツール パッケージ [2] にあります。フォーマットは十分に文書化されています。
チュートリアルについては、誰が作成し、なぜこの作業に労力を費やすのかを考えてください。チュートリアルは通常、プラットフォームの利害関係者によって作成され、そのプラットフォームを使用して開発する新しい人々を呼び込み、ネットワーク効果を使用してプラットフォームを成長させ、より大きなエコシステムですでに確立されたアクターであることから利益を得ます。
独自の互換性のないバギー[3] ファイル システムを実装する人の数が増えることにビジネス モデルがあると思いますか? ソフトウェア工学の学位を販売する場合のみ。そのため、Microsoft は NTFS の実装方法ではなく、NTFS の使用方法に関するチュートリアルのみを作成しています。Sun と ZFS、Red Hat と Google と EXT2/3/4、SGI と XFS、IBM と JFS、Oracle と BTRFS などについても同様です。
トレーニングではなく教育が必要な場合は、チュートリアルを探すのではなく、本を読んで、彼らが本番環境で使用するスマートな人々のコードを研究する必要があります。
- http://en.wikipedia.org/wiki/Operating_Systems:_Design_and_Implementation
- http://e2fsprogs.sourceforge.net/
- どのくらいの使用で、いくつの異なる使用パターンで見ることができますか?数百万台のコンピューターで何年も使用した後、実稼働 FS で発見されたバグを考えてみてください。あなたが Matthew Dillon のように賢くても、あなたのコードのバグが少ないとは思えません。