【Storage】ZFSあれこれ 
あれから時間があるときにFreeNASとZFSをいじって色々様子を見ていたのですが、ようやく普通に使える程度にはZFS/ZPOOLコマンドと概念が分かってきました。

まずFreeNAS8.0RCの感想ですが、やっぱりまだ待ちかなあというのが本音です。
なおFreeNASの8.0RC5ではreadonlyで/がマウントされるのでmount -uw /しないとファイルが編集できません。最初にはまった点です。

1 つめは、DiskVolumeを作成するときに1とか2などの数字のみのボリュームを作ると「作成はされWebUIから見えるけど設定画面に行こうとするとそんなデバイスはないといわれる」という状態になりました。消すことは出来たのでvolとかTestという名前で作ったら問題なく作成できましたが…。

2 つめは、FreeNAS 8.0だとAHCIが有効になっていると/dev/gpt/にadaXとしてドライブがマウントされるのですが、ホットスワップしてから/dev/gpt 以下にマウントする方法が見つかりませんでした。camctrl devlistコマンドでデバイスは確認できるのですが…

3つめは、何故か起動時のBeepがならないという事。細かいかもしれないですが気にすると解決までその一点ではまるのが悪い癖です…。pfsenseで使われている Beepコマンドを使おうと思っても/dev/speakerが作成できず、/boot/loader.confni
Loadspeaker=trueとか色々試したのですが有効になりませんでした。

そんなわけで結局0.7.2のamd64版を使うことにしました。



今更FreeNASが云々と書いてももっと詳しい記事があるので書きませんがはまった点だけ何点かメモしておきます。

・/etc/crontabを編集しても起動時に初期化されるのでWebUIのSystem→Advancedから編集する。WebUIのCronにはない@reboot等の設定はCommand scriptsから編集する。

・ZFSをホットスワップするときはzpool offline tank devしてzpoolからデバイスをオフラインにする。atacontrol detach ataXでOSからのアクセスをとめたあとでもいい。
FreeBSD7だとahci認識されたHDDもatacontrolから設定する

実行する前

/root: zpool status

pool: vol
state: ONLINE
scrub: resilver completed after 0h0m with 0 errors on Sat Apr 23 15:54:26 2011
config:

NAME STATE READ WRITE CKSUM
vol ONLINE 0 0 0
raidz1 ONLINE 0 0 0
ad4 ONLINE 0 0 0
ad6 ONLINE 0 0 0
ad10 ONLINE 0 0 0
ad12 ONLINE 0 0 0



ata2(ad4)をOSからアクセスできなくする。実験用なので古いHDDが混ざってます。


/root: atacontrol list
ATA channel 2:
Master: ad4 <ST3408111AS/3.AAE> SATA revision 2.x
Slave: no device present
ATA channel 3:
Master: ad6 <ST340215AS/3.AAC> SATA revision 2.x
Slave: no device present
ATA channel 4:
Master: ad8 <ST340014AS/3.43> SATA revision 1.x
Slave: no device present
ATA channel 5:
Master: ad10 <ST340215AS/3.AAC> SATA revision 2.x
Slave: no device present
ATA channel 6:
Master: ad12 <WDC WD400JD-55MSA1/10.01E01> SATA revision 2.x
Slave: no device present
ATA channel 7:
Master: ad14 <SAMSUNG HD040GJ/P/ZG100-46> SATA revision 1.x
Slave: no device present

/root: atacontrol detach ata2

/root: zpool status
pool: vol
state: DEGRADED
scrub: resilver completed after 0h0m with 0 errors on Sat Apr 23 15:54:26 2011
config:

NAME STATE READ WRITE CKSUM
vol DEGRADED 0 0 0
raidz1 DEGRADED 0 0 0
ad4 REMOVED 0 0 0
ad6 ONLINE 0 0 0
ad10 ONLINE 0 0 0
ad12 ONLINE 0 0 0



zpoolからad4を除外する



/root: zpool offline vol ad4
/root: zpool status
pool: vol
state: DEGRADED
status: One or more devices has been taken offline by the administrator.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Online the device using 'zpool online' or replace the device with
'zpool replace'.
scrub: resilver completed after 0h0m with 0 errors on Sat Apr 23 15:54:26 2011
config:

NAME STATE READ WRITE CKSUM
vol DEGRADED 0 0 0
raidz1 DEGRADED 0 0 0
ad4 OFFLINE 0 0 0
ad6 ONLINE 0 0 0
ad10 ONLINE 0 0 0
ad12 ONLINE 0 0 0


そしたらHDDのホットスワップをしてみます。こういうケースだと無駄にHDDを抜き差ししたくなりますね。「Cover me while i reload!!!」とか言いながら。

ホットスワップが終わったらatacontrolでディスクの再認識をします


/root(115): atacontrol attach ata2
Master: ad4 <ST3408111AS/3.AAE> SATA revision 2.x
Slave: no device present


ここでSATA1のHDDを挿すとカーネルパニックが起きます。これだけ実験用HDDがあるとたまに地雷が混ざってるので怖いです。これはラジオデパートで40GのSATA HDDが400円で大量に流れた時にまとめて買ったものです
HDDSentinelで見た限りだと何故か起動時間が2h等しかないHDDもあったので、HDDに張ってあるラベルなどからサーバーの保守パーツっぽいです。




容量的にはゴミですが、自分みたいに実機で色々実験するとき(特にRAIDとかファイルシステムの評価の時)には弾数が必要になるのでそう言う人にはもってこいです。
実はまだあったりするのですが引っ張り出してくるのがしんどいのでやめました。さすがにこれは自分でもやりすぎた感が…w


・zpoolからディスクをアクティブにするときにzpool online tank devをすると元のデバイスだと同じHDDとしてアクセスしようとするらしくzpoolが応答しなくなって死ぬのでzpool replace tank devをする


/root: zpool replace vol ad4
/root: zpool status
pool: vol
state: DEGRADED
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scrub: resilver in progress for 0h0m, 5.80% done, 0h7m to go
config:

NAME STATE READ WRITE CKSUM
vol DEGRADED 0 0 0
raidz1 DEGRADED 0 0 0
replacing DEGRADED 0 0 0
ad4/old OFFLINE 0 0 0
ad4 ONLINE 0 0 0 131M resilvered
ad6 ONLINE 0 0 0 201K resilvered
ad10 ONLINE 0 0 0 198K resilvered
ad12 ONLINE 0 0 0 140K resilvered



しばらくするとリビルドがおわります。リビルドは使ってる容量に比例して増えるようです


/root: zpool status
pool: vol
state: ONLINE
scrub: resilver completed after 0h1m with 0 errors on Sat Apr 23 18:06:31 2011
config:

NAME STATE READ WRITE CKSUM
vol ONLINE 0 0 0
raidz1 ONLINE 0 0 0
ad4 ONLINE 0 0 0 2.20G resilvered
ad6 ONLINE 0 0 0 781K resilvered
ad10 ONLINE 0 0 0 752K resilvered
ad12 ONLINE 0 0 0 497K resilvered

errors: No known data errors


・シェルから全て設定してしまいましたが、WebUIからも一応設定できます。クリックする数が多すぎるのでやめましたが。
・シェルから設定するとWebUIのデバイスには出てきません。
・シェルから設定してしまうとPC起動時にZFSは自動的にマウントされないのでzfs set mountpoint=/mnt/point tankname等でマウントポイントを指定したあと、WebUIのCommand scriptsの項目にzfs mount -aと記述しておく

この辺が分かればZFSライフを満喫できるようになると思います。
あとはスナップショットがありますがこの辺はググって出てくる情報と同じなのでで省略します。


ちなみにHDD4台使ってRAIDZ1(RAID5相当)を組んだときの速度
CPU E3300@定格、Mem2G

4G書き込み
/root: dd if=/dev/zero of=/mnt/vol/4G bs=1M count=4000
4000+0 records in
4000+0 records out
4194304000 bytes transferred in 32.628626 secs (128546756 bytes/sec)

CPU: 0.0% user, 0.0% nice, 38.5% system, 1.9% interrupt, 59.6% idle

4G読み込み
/root: dd of=/dev/null if=/mnt/vol/4G bs=1M
4000+0 records in
4000+0 records out
4194304000 bytes transferred in 25.032930 secs (167551460 bytes/sec)

CPU: 0.0% user, 0.0% nice, 29.3% system, 3.2% interrupt, 67.5% idle


ブロックサイズが大きければ結構早いと言うことが分かりました。
しかしメインファイルサーバとの同期でrsync等を走らせたりして書き込みが発生するとメモリをがつがつ消費していくのでやっぱり割と高性能なHWを使うべきですね。

まあ、バックアップ機なので十分ですけどね。


[ コメントを書く ] ( 1910 回表示 )   |  このエントリーのURL  |  $star_image$star_image$star_image$star_image$star_image ( 3 / 1844 )  |  

<<最初へ <戻る | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 進む> 最後へ>>