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