SPARC/Solaris探検隊
第21回: Oracle Solaris 11 のファイルシステム
2019年6月18日
OSには、ディスクにデータを保存したり、ディスクからデータを読み出したりするための「ファイルシステム」という機能が備わっています。
今回は、Oracle Solaris 11から標準採用された「ZFS」とはどのようなものか、お話ししたいと思います。
ワンポイント
OSについては、SPARC/Solaris 探検隊の第6回をご参照ください。
ZFSファイルシステムを知ろう!
Oracle Solaris 10までは、主にUFS(UNIX File System)が使用されてきました。
Oracle Solaris 11では、新たにZFS(Zettabyte File System)が標準のファイルシステムとして採用されています。
UFSは、ファイルシステムの拡張が困難であること、またディスク管理用のソフトが必要であることなど、使いづらい点がありました。
ZFSは、UFSの使いづらさが改善され、さまざまなよいところがあります。そこで、「拡張性」、「堅牢性」、「容易性」の3つのポイントで、ZFSの特長を見ていきましょう。
ワンポイント
UFSは、Oracle Solaris 11でも使用できますが、システム領域としては使用できません。
優れた拡張性
ZFSは、最大25京6000兆 ZB(256,000,000,000,000,000,000,000,000 TB)という途方もない容量に対応しています。UFSの最大容量である16 TBと比較すると、ZFSはほぼ無限大ともいえるサイズのファイルシステムを構築することができるのです。
また、ZFSには、単一または複数のディスクをまとめて1つのプールとして管理する「ストレージプール」という機能があります。ZFSファイルシステムは、ストレージプールの領域を切り出して作成します。
ZFSファイルシステムの追加や、各ファイルシステムで使用する容量の拡張により、ディスクリソースが不足する場合は、ストレージプールにディスクを追加するだけなので、とても簡単です。また、拡張の際にシステムを停止する必要もありません。
データの堅牢性
ストレージプールを作成する際に複数のディスクを使用することで、ディスクの冗長化設定ができます。これにより、ディスクの故障に対する障害耐性とデータの堅牢性を高めています。
ワンポイント
「冗長化」といえば、以前、電源の冗長化やファンの冗長化について紹介しました。
電源ユニットやファンは、壊れたときのために予備を用意しています。
ディスクの冗長化には、「RAID」の仕組みを使用します。複数のディスクを組み合わせることで、ディスクが故障しても、ほかのディスクで補えるような構成を構築します(RAID構成)。
- RAIDとは
RAID(Redundant Array of Inexpensive Disks)は、複数のディスクにデータを分散(ストライピング)して書き込んだり、複数のディスクにデータを複製(ミラーリング)して書き込んだりすることで、データ保存の高速化や、ディスク故障に対する障害耐性を高める技術のことです。
RAID構成は、実現方式によっていくつかの種類があります。
ZFSでサポートするRAID構成
RAID構成の種類 | 特徴 |
RAID 0(ストライピング) | 非冗長化構成、RAID 1との併用も可能 |
RAID 1(ミラーリング) | 3本以上のディスクによるミラーも可能 |
RAID-Z(シングルパリティ) | 1本のディスク障害に対応(RAID 5相当) |
RAID-Z2(ダブルパリティ) | 2本までのディスク障害に対応(RAID 6相当) |
RAID-Z3(トリプルパリティ) | 3本までのディスク障害に対応 |
ワンポイント
RAID-Z~RAID-Z3では、ディスクの故障時に記録データを修復するための「パリティ」と呼ばれるコードをすべてのディスクに分散して保存します。なお、ストレージプール内では、RAID構成の種類をそろえる必要があります。
- ストライピングとミラーリング
- パリティを使用した構成
管理の容易性
ZFSの管理コマンドは、以下の2種類だけなので、容易にZFSを管理できます。シンプルでわかりやすいですね。
- ストレージプールを管理するzpoolコマンド
- ストレージプール上のZFSファイルシステムを管理するzfsコマンド
RAID構成(ディスクの冗長化)の設定は、Oracle Solaris 11の標準機能で実現できます。そのため、RAID構成用のソフトは不要です。
ワンポイント
RAID構成の構築については、以下のドキュメントをご参照ください。
ZFSを構築してみよう!
ここまで、ZFSの特長や使いやすさを説明しました。
それでは、ZFSファイルシステムを構築するまでの実際の流れを見てみましょう。
実は、ZFSの作成はとても簡単なのです。
今回は、最新のSPARCサーバであるSPARC M12を使って構築します。OSはOracle Solaris 11.4です。ユーザーデータ用のストレージプール「upool」を作成し、その上にZFSファイルシステム「user_data」を作成してみます。
ワンポイント
図の左側の「rpool」は、「ルートプール」と呼ばれるOracle Solaris 11がインストールされたストレージプールです。OSのインストール時に自動的に作成されます。
ストレージプールの作成
最初に、ストレージプール「upool」を作成します。
今回、ストレージプールに使用するディスクは、600 GBの「c0t50000395A822CB0Cd0」としています。
ストレージプール「upool」が作成されました。
ストレージプールの状態を確認することもできます。
簡単に作成できましたね。
ここまでで、ストレージプールの作成は完了です。
ストレージプールの拡張
次に、ストレージプール「upool」に同じ容量のディスクをもう1本追加して、ストレージプールの容量を増やしてみたいと思います。
先ほど作成したストレージプール「upool」に、同じサイズ(600 GB)のディスク「c0t50000395A822CCA0d0」を追加します。
ストレージプール「upool」の容量が556 GBから1.09 Tに増加しました。
ワンポイント
追加するディスク容量によっては、必ずしも追加ディスクの容量と同じだけストレージプールの容量が増加しない場合があります。
ストレージプールの状態を確認すると、ディスクが追加されたことがわかります。
ストレージプールの拡張も簡単ですね。
ZFSファイルシステムの構築
次にZFSファイルシステムを構築します。
ストレージプール「upool」の配下に、ZFSファイルシステム「user_data」を作成します。
ZFSファイルシステム「user_data」が作成されました。
ZFSの構築は、これで完了です。
もうできたの? という感じですね。
ファイルを書き込めることを確認
最後に、ファイルを書き込めることを確認してみましょう。
作成したZFSファイルシステムにファイル「test.txt」を作成します。
ファイル「test.txt」がZFSファイルシステム(/upool/user_data)上に作成されました。
ワンポイント
ZFSファイルシステムは、作成した時点で自動的にマウントポイントが作成されます。
マウントポイントとは、ファイルシステムにアクセスするためのディレクトリ(パス)のことです。
先ほどのzfs listコマンドの実行結果を見ると、「MOUNT POINT」に「/upool/user_data」が設定されています。
そのため、ZFSファイルシステムを作成後、「/upool/user_data」というディレクトリが認識されるようになり、すぐにファイルを作成することができたのです。
今回は、Oracle Solaris 11で標準採用された「ZFS」を紹介しました。
ZFSには、ほかにも便利な機能がたくさんあります。ぜひ活用してみてください。
ZFSについて詳しく知りたい方は、以下の資料も参考にしてください。
応援メッセージはtwitterにて、ハッシュタグ #fjsparc までお願いします。