ZFS is a new kind of file system that provides simple administration, transactional semantics, end-to-end data integrity, and immense scalability. |
エンタープライズや大規模ストレージで利用できるファイルシステムとして開発されたZFSは、今やSolaris、OpenSolarisのみならずFreeBSDでも利用でき、まだプロダクションレベルには達していないがNetBSDにも移植されている。ZFSはボリューム管理とファイルシステムの双方を提供。柔軟で強力な機能は高信頼性が要求されるエンタープライズ用途から、簡単にディスク容量を追加できるというデスクトップユースまで、幅広くユーザを魅了している。
ZFSの特徴のひとつにfsckが不要というものがある。ZFSではCOW (Copy On Write)とトランザクション的な振る舞いを採用しており、データの上書きは行われない。フリー領域に書き込んでから、ファイルシステムポインタを向け直すという処理をおこなっている。このためいきなりPCの電源を引き抜いたとしても、メタデータがポインタが指し示すのはどちらかであって、不整合が発生しない。
ハードウェアエラーでデータが失われる可能性に対しては、チェックサムとレプリケーションでこれに対処している。ZFSではすべてをチェックサムしているため、どこかが壊れれば簡単に検出できる。またデータとメタデータの双方をストレージプールの別の場所へ複製できる。破壊を検出すれば複製の方を使ってデータを復元できる。この復元処理をセフルヒーリングといい、チェックサムを実施するコマンドをスクラブという。スクラブを実施してセフルヒーリングが実行されるようにする方法は、従来のfsckに近いものだ。しかし、途中でユーザに修正の判断を委ねたり、推測して修復を実施するfsckと比べれば、スクラブ+セフルヒーリングはより確実な方法といえる。
ソフトウェアの設計にしても、ハードウェアの故障が発生したとしても、ZFSではfsckが必要になるようなケースは発生しない、ということになる。それにそもそも、そうした事態が発生することがないように設計されている。しかし、やはりZFSにはfsckが必要だし、近いうちに登場することになるのではないか、という話がOSnews、Should ZFS Have a fsck Tool?においてまとめられている。
設計的にみてもZFSは優れているが、ZFSのメーリングリストを見れば、実際にfsckが必要なケースが発生していると指摘している。スクラブ+セフルヒーリングは強力な機能だが、これはZFSをマウントしなければ利用できない。ZFSをマウントできない状況になったら、fsckがなければ修復できない、というわけだ。しかし現在のZFSにはfsckは提供されていない。
こうした問題はディスクの不具合が原因になっていることがある。すべてのディスクが期待したとおりに動作しているとは限らない。このため、設計上想定しているとおりにはいかず、fsckが必要になるケースが発生している。さらにVirtualBoxのような仮想環境でSolarisを動作させ、ZFSを使うケースだとどうだろう。仮想ディスクの信頼性は、ホストOSのファイルシステムの信頼性まで下がることになり、ZFSが当初仮定していたものは適用しにくくなるだろう、というわけだ。
また、ZFSと同じことは過去に別のファイルシステムでもあったという。SGIがジャーナリングファイルシステムであるXFSを開発したときは、「XFSにはfsckが不要」というスローガンが展開されたという。ジャーナリングが開発されたのはfsckを不要にすることが目的のひとつだから、これは自然なスローガンなわけだが、現実にはそうはならなかった。NetAppのWAFLでも同じことがおこったという。現実にはfsckが必要な場面が発生したという。こうしたことから、Pobrecito Hablador氏はShould ZFS Have a fsck Tool?において、ZFSにも最終的にfsck的なツールが登場することになるのではないかとしている。