みーがZFSに関してFreeNASでの設定を備忘録を兼ねてまとめておく.多くの情報はFreeNAS User Guide 9.3 8. Strorageにまとめてあるのでこれを読めば良いのだが,一般的な情報も多いので要点を絞ってまとめておく.
設定する前にまずどのようなNASを作るかを明確にする必要があり,将来の拡張性を視野に入れながらカスタマイズするべきなので,要件を列挙する.
- 5台のHDDでRAID-Z2を作る.
- DeduplicationやEncryptionは必要ないのでしない.
- DataSetを作成し,CIFSを使ってイーサネットからアクセスできるように共有を設定する.
- Smart情報を監視してアラートをメールする.
- autoexpandを有効にし,HDDを入れ替えれば自動でボリュームサイズをスケールアップする.
- Snapshotをとって,以前のバージョンに簡単に戻せるようにする.
これらの設定方法を述べる.
RAID-Z2 Volumeの作成
Storage > View Disksでディスクを確認する.
ada0から5まで接続してあって,ada4が250 GBytesと最小容量である.ada0から4でRAID-Z2を作成する.
Storage > Volumes > Volume manager > Manual Setup で,Volumeは"Tank"とし,Member disksに5台のHDDを指定し,Deduplicationはoffで Add Volumeする.
Group typeをRAID-Z2と指定する.
すると以下のようにTankが作成される.容量は理論上 250 Gbyte * (5-2) = 750 Gbyte だが,Gの単位換算の影響もあり660.4GByteとなっている.lz4の圧縮は推奨なのでonになる.
Tank Volumeに TankDSというDataSetを作成する.DataSetはルート直下のディレクトリみたいなもので,DataSetに所有者を設定したり共有を指定したりするらしい.
最後に CIFSで共有 の設定を有効にしたら,ネットワークドライブとして使えるようになる.
転送速度
転送速度が遅いとストレスなので,作成したFreeNASのスペックを調べた.Macで,Blackmagic Disk Speed Test を使ってベンチマークした.
NASNE (Gigabit Ethernet)
我が家にある市販のしょぼいNASとして比較用にNASNEをベンチマークした.Read, Write 共に20MB/s出ない.このスペックだとファイルコピーでもっさり感じる.
FreeNAS (Gigabit Ethernet)
Read, Writeともに 100MB/sである.Gigabit Ethernetの規格上限値 1000Mbit/sec = 125MB/sなので,転送速度としては十分本領を発揮していると思われる.LANケーブルを介した転送とは思えない程ファイルコピーがスムーズなので,大満足である.
Macの内蔵HDD
Read, Writeともに 100MB/sで,FreeNASと大して変わらないことに気づいた.
転送によるリソースの消費
FreeNASのReportingで,ファイルコピーの様子をモニターした.
40GByteのファイルの書き込み.ネットワークインターフェイスは800MBit/secとほぼ規格上限値で,CPUは60%も使っている.ZFSはCPUをたくさん使うみたいだ.1つのHDDの書き込みは 30MB/sであった.
PlexMediaServerで動画をiPad Air 2で視聴した.CPUは80%程度,ネットワークインターフェイスの使用率はごく微量で,メモリの使用率は3Gを目一杯使っていた.しかしSwapの使用率は0%なので,システムが足りないのではなく,ただメモリーにキャッシュしているだけみたい.
ディスクの入れ替え
autoexpandを有効に
Shellから以下のようにTankのautoexpandをonにすることで,最小容量のHDDの容量が大きくなった時に自動でTankの容量が大きくなる.
[root@freenas ~]# zpool set autoexpand=on Tank
[root@freenas ~]# zpool get autoexpand
NAME PROPERTY VALUE SOURCE
Tank autoexpand on local
freenas-boot autoexpand off default
注意 : autoexpand=onのイコールの前後にスペースは不要.
ディスクの入れ替えを行う
Storage > Volume Statusにて,HDDの構成を確認する.ここではada4p2 (0.25Tbytes) を ada5 (1Tbytes)に変更してHDDの入れ替えができるかどうかと,autoexpandによって容量が増加するかをやってみる.
なお,このやり方は,HDDの冗長性を低下させることなく入れ替えができるので安心だが,新しいHDDを接続するための余分なSATAポートが1つ必要である.結局のところ,
新しいHDD接続→古いのに対してReplace→Resilver→Complete→古いの外す
とするのが正常なHDDの交換で,
HDDが壊れている(degraded)→新しいHDD接続→壊れているのに対してReplace→Resilver→Complete→古いの外す
とすると,この間に問題が発生すると最悪ZFSが崩壊するので,できたら回避したい作業というわけだ.
ada4p2を選択して,Replaceする.
新しいHDD (ada5)にReplaceする.
するとResilverが始まる.進捗状況が表示される.この間もファイルにアクセスできるが,HDDに余計な負担はかけないほうが良さそう.
253GBytesのデータがあったが,ResilverがCompleteするまでに10分程かかった.思ったより早い.ちなみにReportingによると新しいHDDはWriteが60MB/sで,他のHDDはReadが60MB/sだった.フルでアクセスしているようだったので,RAIDでよく聞くリビルド中に他のHDDが力尽きるという問題は十分に考えられるのだなと思った.
autoexpandの効果を確かめた.以前の総容量が 250Gbyte * 5 \~ 900Gbyteであったのが,1Tbyte * 5 = 4.3Tbyteに増えていた. (実際の容量は510Gbyteから2.4Tbyteになった)
HDDを大きい物に変えるだけで容量が増えるのはとても運用が楽である.素晴らしい.