6.6. 启用数据日志
通常 GFS2 只将元数据写入其日志中。文件内容会随后由内核定期进行的同步(同步会清除文件系统缓冲)写入磁盘。对一个文件的 fsync()
调用会导致将文件数据立即写入磁盘。当磁盘报告所有数据被安全写入时,调用会返回。
对于非常小的文件,数据日志可缩短 fsync()
时间,因为除元数据外,文件数据也会写入日志。随着文件的增大,这个优势会明显降低。在启用数据日志的情况下,对中等和较大文件的写操作会较慢。
对于依赖于 fsync()
同步文件数据的应用程序,启用数据日志会提高性能。在标记的目录及其所有子目录中创建的 GFS2 文件可自动启用数据日志。现有的长度为零的文件也可以打开或者关闭数据日志。
在一个目录上启动数据日志会把目录设定为 "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