ZFS (Zettabyte File System)は、かつては
Solaris (SunOS)上で主に利用されていた
ファイルシステムであり、Unix File System (UFS)の後継として位置づけられていました。現在では、その名称の由来は公式には否定されていますが、128ビット・アドレッシングを特徴とする、堅牢で高度な機能を備えた
ファイルシステムとして知られています。
概要と主要機能
2004年に発表され、
2005年にはOpen
Solarisで公開されたZFSは、CDDL (Common Development and Distribution License)の下、オープンソースとして開発されています。その主な特徴として、以下の点が挙げられます。
高度なデータ整合性: 64ビットのチェックサムによるデータの完全性を確保します。
コピーオンライト: データの更新時に、元のデータのコピーを作成してから変更を加えるため、データの整合性を維持し、元データの復元を容易にします。
柔軟なストレージ管理: ボリュームマネージャを必要とせず、ストレージプールと呼ばれる仮想ボリュームを用いて、異なる容量や種類のディスクを統合的に管理できます。ストレージプールの作成、フォーマット、マウントは、コマンド1行で実行可能です。
組み込みRAID機能: RAID-Z (
RAID-6相当)やミラーリングといった
RAID機能を
ファイルシステム自体に備えています。ホットスペアにも対応しており、ディスク障害への対応も容易です。
可変長ブロックサイズ: ブロックサイズはファイルシステム単位で変更可能で、最大16MBまで設定できます。
スナップショット機能: データの一貫性のある時点を記録するスナップショット機能により、データのバックアップや復元、テスト環境の作成などが容易になります。
さらに、
Solarisのバージョンアップに伴い、
RAID-Z2、クローンプロモーション、Persistant L2ARC (ブートをまたがるL2ARCの内容の再利用)などの機能が追加されています。これらの機能は、ZFSのバージョン番号によって利用可能なものが異なります。
バージョンと機能追加
ZFSのバージョンは、利用可能な機能や形式を指定するために、新機能の追加に伴って増加します。初期バージョンから、圧縮アルゴリズム、キャッシュデバイス、ユーザー/グループのスペース管理、データセットの暗号化、様々な
RAID-Zの拡張、デデュプリケーションなど、多くの機能が追加されてきました。 `zpool upgrade -v`コマンドで、現在システムがサポートしているバージョンを確認できます。
訴訟と発展
2007年には、NetAppがZFSが自社の特許を侵害していると
サン・マイクロシステムズを訴えるという出来事がありました。その後、
サン・マイクロシステムズは反訴し、オラクルによる買収後、訴訟は取り下げられました。この訴訟は、ZFSの技術的な優位性と、その開発経緯を示す出来事の一つと言えます。
キャパシティとプラットフォーム
ZFSは128ビット・アドレッシングを採用しており、
ファイルシステムとファイルの最大サイズはそれぞれ16
エクサバイトです。
当初は
[Solaris]]上で主に使用されていましたが、現在ではOpenSolaris、OpenIndiana、FreeBSD、そして
Linuxなど、様々なプラットフォームにポートされています。macOSでもMacZFSプロジェクトなどによって利用されていましたが、
Appleは自社の
ファイルシステム]を開発しました。[[Linuxでは、
カーネルへの統合は困難でしたが、ユーザー空間での実装であるZFS-fuseや、OpenZFSプロジェクトなどによって利用可能です。
Ubuntu 16.04以降では、正式にZFSが採用されています。
制限事項
ZFSはコピーオンライト方式を採用しているため、データの更新が頻繁に行われる
ファイルシステムでは、空き容量が十分にあるにも関わらず、データ更新に失敗することがあります。これは、ファイルの書き戻し時に、必要な容量が確保できない場合に発生します。また、ランダムアクセスによるデータ更新では、ファイルブロックの断片化が起こりやすいため、連続したブロックを前提としたソフトウェアとの互換性に注意が必要です。`fallocate()`関数のサポート状況も、この問題と関連しており、プラットフォームやバージョンによって異なる点に注意が必要です。
まとめ
ZFSは、高度な機能と堅牢性を備えた
ファイルシステムであり、データの整合性とストレージ管理の柔軟性を重視するユーザーにとって魅力的な選択肢となります。ただし、コピーオンライト方式による制限事項も理解した上で利用することが重要です。様々なプラットフォームへの移植が進められ、その進化は今後も継続していくものと期待されています。