3.8. データジャーナリング

通常、GFS2 はそのジャーナルにメタデータのみを書き込みます。ファイルの内容は、ファイルシステムバッファーをフラッシュするカーネルの定期的な同期によって、最終的にディスクに書き込まれます。ファイルに対して fsync() を呼び出すと、そのファイルのデータはディスクに即時に書き込まれます。このコールは、ディスクがすべてのデータが安全に書き込まれたことを報告した時に戻ります。
データのジャーナリングでは、メタデータに加えて更にファイルデータがジャーナルに書き込まれるため、極めて小さなファイルでは fsync() にかかる時間を縮小することができます。ファイルサイズが大きくなると、この利点は急激に少くなります。データジャーナリング機能をオンにすると、中型および大型のファイルへの書き込み速度は大幅に低減します。
fsync() に依存してファイルデータを同期するアプリケーションは、データジャーナリングを使用することでパフォーマンスが向上する可能性があります。データジャーナリングは、フラグ付きディレクトリー(および、その全サブディレクトリー)内に作成された GFS2 ファイル用に、自動的に有効にされます。長さゼロの既存のファイルもデータジャーナリングをオン/オフに切り替えることができます。
1つのディレクトリー上でデータジャーナリングを有効にすると、そのディレクトリーは「inherit jdata」にセットされ、そのディレクトリー内に以後作成されるファイルやディレクトリーはすべてジャーナル化されることを示します。ファイルのデータジャーナリング機能は chattr コマンドで有効にしたり無効にしたりすることができます。
以下のコマンドでは、 /mnt/gfs2/gfs2_dir/newfile ファイルに対するデータジャーナリングを有効にしてからフラグが正しくセットされているかどうかをチェックします。
# chattr +j /mnt/gfs2/gfs2_dir/newfile
# lsattr /mnt/gfs2/gfs2_dir
---------j--- /mnt/gfs2/gfs2_dir/newfile
以下のコマンドは、/mnt/gfs2/gfs2_dir/newfile ファイルに対するのデータジャーナリングを無効にして、次にフラグが正しくセットされていることをチェックします。
# chattr -j /mnt/gfs2/gfs2_dir/newfile
# lsattr /mnt/gfs2/gfs2_dir
------------- /mnt/gfs2/gfs2_dir/newfile
また、chattr コマンドを使用してディレクトリーに j フラグを設定することもできます。このフラグをディレクトリーに設定すると、そのディレクトリーで以降に作成されるファイルやディレクトリーはすべてジャーナリングされます。以下のコマンドのセットは gfs2_dir ディレクトリーに j フラグを設定し、そのフラグが正しくセットされているかどうかを確認します。この後、コマンドにより /mnt/gfs2/gfs2_dir ディレクトリーに newfile と言う新しいファイルが作成され、そのファイルに j フラグが正しく設定されていることをチェックします。j フラグはディレクトリーが設定してあるので、newfile もジャーナリングが有効になっているはずです。
# chattr -j /mnt/gfs2/gfs2_dir
# lsattr /mnt/gfs2
---------j--- /mnt/gfs2/gfs2_dir
# touch /mnt/gfs2/gfs2_dir/newfile
# lsattr /mnt/gfs2/gfs2_dir
---------j--- /mnt/gfs2/gfs2_dir/newfile