そもそもZFSとは
on Linux でなく本家Solaris版に対する評価ですが、こちらの記事がわかりやすいと思います。用語の説明はオフィシャルサイトが詳しいでしょうか。少し使ってみて感じた個人的な評価は下記の通りです
メリット
- クラウドサービスベンダのごとく、ありもしないディスク領域を割り当てしてみせることで ディスクの空き容量を共有できる
- ファイルシステムレベルでRAIDが構成できる
- 何となく堅牢な気がして安心(特にRAID5/6の書き込みホール対策)
- 色々カスタマイズができて楽しいかもしれない
デメリット
- 物理的にドライブを追加するのが意外と難しい
- メモリがたくさん必要
- 色々カスタマイズしても何となく遅い
ストレージプールを作成する
まず zpool create コマンドでストレージプールを作成します。-f はディスク上に既存の定義があっても上書きするオプションです。tank はプールにつける名称、raidzはRAID5に相当するRAIDレベルを表します。raidzの後に続くデバイスファイル(今回は4つ)でraidzを構成します。のちの構成変更に備えるため、デバイスの指定には/dev/sd[a-z]でなく /dev/disk/by-id/hoge を使うとよいです。
$ sudo zpool create -f tank raidz /dev/disk/by-id/ata-TOSHIBA_MQ01ABD100_Y4FIP28VT /dev/disk/by-id/ata-WDC_WD10EACS-00D6B0_WD-WCAU41201490 /dev/disk/by-id/ata-WDC_WD20EZRX-00D8PB0_WD-WMC4M0E2Y15L /dev/disk/by-id/ata-WDC_WD5000AADS-00S9B0_WD-WCAV90513859
プールの作成はすぐに終わり、/tank にマウントされます。
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 94G 1.5G 92G 2% /
(略)
tank 1.3T 128K 1.3T 1% /tank
今回、1TB, 2TB, 1TB, 500GB の4台のディスクでraidzを構成しましたので、一番小さいサイズの 500GB x (4 - 1) = 約1.5TB がプールの容量になります。500GBのディスクを構成に含めることによって むしろ容量が減っているのですが、なぜそうまでして4台構成にしたいのか、以下で説明します。
プールの容量を増やすには
raidzは、最初に構成するときにだけ ディスク台数を指定できます。あとからディスクを追加することはできないのです。従って ディスクを増設してプールの容量を増やしたいときは、
- raidzを構成しているディスクそれぞれを、よりサイズの大きいものに置き換える
- 同じプールにもう1つraidzを追加し、既存のraidzとストライピングする(RAID5+0に相当)
のいずれかの対処が必要となります。個人利用では1も2も結構な投資になるため おいそれとはできません。デメリットに記述した「物理的にドライブを追加するのが意外と難しい」は この事を指しています。
"家庭内サーバの移行"という要件で ZFSを使おうとしており、移行が済めば2TBのディスクがいくつか余る予定です。raidzを4台構成としておき、1TB/500GBのディスクを2TBと置き換えれば 2TB x (4 - 1) = 約6TB がプールの容量となります。これが一時的に500GBのディスクを借り出してでも4台構成としたかった理由です。