gjournal を用いて fsck を回避
2008-01-24


tmpfs で panic が続いていた為に、fsck を待つのに飽きた。tmpfs の panic 自体は回避しているので、早急な対応は必要ないが、次の時のために備えておきたい。

softupdates 自体は良くできている。次回の起動時に、簡単にバックグラウンドで fsck を走らせられるかを調べ、必要な時のみに動く。しかし、panic の原因を探っているときは、ほぼ毎回 fsck が必要になり、src や obj に ports もあるので、時間が掛かる。全ての fsck が終わるのを待てないのと共に、ディスクの余計な負荷が気に入らない。

FreeBSD 7.0 から入った新しい GEOM の中に、gjournal がある。これを使うと、fsck が必要無くなるようだ。今回は man gjournal で予習をする。

まずは、gjournal の概要だ。現在のところ、サポートされているのは UFS だけだ。また、mount 時は softupdates を無効にし、async を使うことを推奨している。async でも安全とある。gjornal はブロックレベルでのジャーナリングで、メタデータとユーザデータを記録するとの事だ。gjournal を gmirror や gstripe の上に作成した場合は、gjournal が整合性を保つので、これらの自動同期は無効にしてもよいそうだ。後、気に留めておくのは、sync の後に、gjournal sync が必要な事ぐらいか。

次は gjournal デバイスの作り方だ。一つのデバイスにファイルシステムとジャーナルを置く方法がある。そして、二つのデバイスに、別々に置く方法がある。違うデバイスを用意できたら、別にした方が性能的にはもちろんいい。一つのデバイスに両方作る場合には、gjournal label-j size を渡して、ジャーナル用の領域を確保する必要がある。残念ながら、-j の単位なのかは書いていない。同一デバイス上に二つのパーティションを作って、データとジャーナルを別にするのと、一つのパーティション上にデータとジャーナルを置いた時の性能の差は man からでは定かではない。

そして、デバイスの作り方だ。新規に作る方法と、既存の UFS にジャーナルを追加する方法がある。既存の UFS にジャーナルを追加するには、必ずジャーナルデバイスを加える必要がある。そして、最後のセクタが未使用である事も条件だ。最後のセクタは上書きできるが、止めておいた方が良いだろう。UFS に影響を与えずに連続した領域を確保するのが無理なのと思う。もちろん、新規に作る場合は自由に構成できる。

次回

[FreeBSD]
[fs]

コメント(全0件)
コメントをする


記事を書く
powered by ASAHIネット