3.7. データジャーナリング
通常、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