FreeBSD Daily Topics

2010年4月28日≪注目≫UFS2にジャーナル機能登場、Soft-Updates Journaling

heads-up

Soft-Updates Journaling

current - 2010年4月24日に実施されたsvn commit: r207141のコミットでFreeBSD 9-CURRENTへSoft-Updates Journalingの機能がマージされました。これはUFS2にジャーナリングの機能を追加するもので、開発者の間では短縮してSUJと呼ばれています。

UFS2の最大の問題点のひとつが、予期せぬシステムクラッシュのあとにファイルシステムの整合性を保つためにfsck(8)を実施する必要があることにあります。最近の大容量ディスクでたくさんのファイルを保持している場合、fsck(8)に長い時間がかかります。システムが起動するまで何時間も、場合によっては日単位で待たなければならないという状況が生まれます。

Softupdatesの導入とスナップショット機能の導入、これらを活用したバックグラウンドfsck(8)の実現で、システムクラッシュ後もそのままシステムが起動するようにはなりました。システム起動後にスナップショットに対してfsck(8)を実施することで、システムを起動してからチェックを実施することができるようになったからです。

しかし、バックグラウンドfsck(8)の実行時にはIOにとても高い負荷がかかります。全体の整合性をチェックする必要があるという問題は解消していませんでした。SUJはUFS2にジャーナリング機能を追加して、これを解消しようというものです。fsck(8)で必要になるメタデータに関する情報のみを記録します。このためジャーナリングに使用するディスクサイズが小さいという特徴があります。

SUJを有効にするには、システムをシングルユーザモードで起動して、マウントしていない状態でtunefs(8)を実行します。-jにenableを指定すると有効になります。ジャーナリング機能が有効になっているかどうかはdumpfs(8)で確認できます。

tunefs(8) - SUJを有効にする方法(シングルユーザモードでマウントしていない状態で実施)
# tunefs -j enable /
dumpfs(8)でジャーナリングが有効になっているかどうかを確認
# dumpfs / | grep flags
flags	soft-updates+journal 
#

ジャーナル機能が有効になっていると、システムクラッシュ後の起動でfsck(8)の手動実施モードに入ったり、バックグラウンドfsck(8)がはじまったり、ということがなくなります。ジャーナルを使ったチェックが実施され、起動処理が継続されるようになります。手動でfsck(8)を実施する場合はジャーナルを使うかどうかを選択しながらの実行が可能です。

SUJはUFS2そのものにはほとんど手を加えることなく実現されているという特徴があります。このため、ジャーナリング機能を追加することで、これまでのUFS2の信頼性が損なわれるという可能性が低く抑えられているところもポイントです。

おすすめ記事

記事・ニュース一覧