先日、
という、うっかり、をしてしまいまして、全ファイルを別のZFSに待避して、プールを作り直し、ということになりました。復旧するまで、3日かかりました[E:shock]
そんなわけで、プールを作り直したのですが・・・
プールを作って
# zpool create storage raidz ada1 ada2 ada3 ada4
zdbというコマンドを実行
# zdb
storage:
version: 28
name: 'storage'
state: 0
txg: 4
pool_guid: ほにゃらら
hostid: ほにゃらら
hostname: 'ほにゃらら'
vdev_children: 1
vdev_tree:
type: 'root'
id: 0
guid: ほにゃらら
create_txg: 4
children[0]:
type: 'raidz'
id: 0
guid: ほにゃらら
nparity: 1
metaslab_array: 30
metaslab_shift: 36
ashift: 9
以下省略
というように、zdbコマンドで見ると、「ashift: 9」と出てきます。
しばらく前に知ったことなんですが、従来の512バイトセクタのハードディスクではこれでよいが、4K(4096バイト)セクタのハードディスクでは、ashiftは12にした方が性能がよくなるそうです。
2の9乗は512、2の12乗は4096ですが、ashift 12にしておくと、ZFSが4096バイト単位で、ディスクを扱ってくれるようになる、とかなんとかいう話でした
使っている2TBディスクなので、せっかくの機会だし、ashift 12にしたい!ということで、ネット検索して見つけた情報のとおりにやってみました。
ちなみに、9.2-RELEASEにアップデートしても ashift: 9 でした。
作ったばかりですが、プールを削除
# zpool destroy storage
gnopというコマンドを実行
# gnop create -S 4096 /dev/ada1
# gnop create -S 4096 /dev/ada2
# gnop create -S 4096 /dev/ada3
# gnop create -S 4096 /dev/ada4
gnopってコマンドを初めて知りました。
本物のハードディスクは
# diskinfo /dev/ada1
/dev/ada1 512 2000398934016 3907029168 4096 0 387602116 63
というように、512バイトセクタになっていますが、
gnopで作ったほうのディスク(ada1.nop)は
# diskinfo /dev/ada1.nop
/dev/ada1.nop 4096 2000398934016 488378646 0 0 484502 16 63
というように、4096バイトセクタに見せかけることができる、という仕組みらしいです。
そしてプールを作成
# zpool create storage raidz ada1.nop ada2.nop ada3.nop ada4.nop
zdbで確認
# zdb
storage:
version: 5000
name: 'storage'
state: 0
txg: 4
pool_guid: ほにゃらら
hostid: ほにゃらら
hostname: 'ほにゃらら'
vdev_children: 1
vdev_tree:
type: 'root'
id: 0
guid: ほにゃらら
create_txg: 4
children[0]:
type: 'raidz'
id: 0
guid: ほにゃらら
nparity: 1
metaslab_array: 33
metaslab_shift: 36
ashift: 12
以下省略
というように、今度はashiftが12になりました。
# zpool list -v
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
storage 7.25T 1.10M 7.25T 0% 1.00x ONLINE -
raidz1 7.25T 1.10M 7.25T -
ada1.nop - - - -
ada2.nop - - - -
ada3.nop - - - -
ada4.nop - - - -
# zpool status
pool: storage
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
storage ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
ada1.nop ONLINE 0 0 0
ada2.nop ONLINE 0 0 0
ada3.nop ONLINE 0 0 0
ada4.nop ONLINE 0 0 0
errors: No known data errors
プールができてしまった後は、「なんとか.nop」という変換する仕組みは不要らしいので、もとのada1などに戻します。
こんな感じ。
いったんプールをexportします。
# zpool export storage
プールが見えなくなります。
# zpool list
no pools available
「なんとか.nop」をやめます。
# gnop destroy ada1.nop ada2.nop ada3.nop ada4.nop
プールをimportします。
# zpool import storage
プールが見えるようになります。
# zpool status
pool: storage
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
storage ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
ada1 ONLINE 0 0 0
ada2 ONLINE 0 0 0
ada3 ONLINE 0 0 0
ada4 ONLINE 0 0 0
errors: No known data errors
というわけで、ada1とかに戻りました。
一応確認。
# zdb
storage:
version: 5000
name: 'storage'
state: 0
txg: 25
pool_guid: ほにゃらら
hostid: ほにゃらら
hostname: 'ほにゃらら'
vdev_children: 1
vdev_tree:
type: 'root'
id: 0
guid: ほにゃらら
children[0]:
type: 'raidz'
id: 0
guid: ほにゃらら
nparity: 1
metaslab_array: 33
metaslab_shift: 36
ashift: 12
以下省略。
ashiftは12になってます。
さて、これで速くなったのかどうか…計測していないのでわかりません。
0 件のコメント:
コメントを投稿