Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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

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