GFS2文件系统介绍

GFS2文件系统是64位对称集群文件系统,它提供了共享命名空间并管理共享公共块设备的多个节点之间的一致性。GFS2文件系统旨在提供尽可能接近本地文件系统的功能集,同时在节点之间实现完全集群一致性。

在少数情况下,linux文件系统API不允许GFS2的集群特性完全透明,因为在集群环境中,进程ID可能用于集群中的不同节点。但是在大多数情况下,GFS2文件系统的功能与本地文件系统的功能相同。

内核模块gfs2.ko实现了GFS2文件系统的内核接口,RHEL弹性存储插件提供了GFS2文件系统支持并且依赖RHEL高可用插件提供的集群管理功能。为了使GFS2发挥最佳性能,GFS2依赖于页面缓存,以通过本地缓存常用数据来提高性能。为了保持集群中节点之间的一致性,glock状态机提供了缓存控制。

GFS2关键参数

  • GFS2nodes 决定了集群中哪个node用来挂载GFS2文件系统
  • Number of file systems 决定有多少GFS2文件系统会在开始时创建
  • File system name 为每个文件系统创建一个独一无二的名字
  • journals 决定GFS2文件系统的日志数量,GFS2要求集群中每个挂载文件系统的节点至少要有一个日志
  • Storage devices and partitions 决定用文件系统中哪个存储设备和分区创建逻辑卷
  • time protocol 确保GFS2中节点间时钟同步

GFS2使用建议

建议挂载GFS2文件系统使用noatime和nodiratime参数选项。这能让GFS2对每次访问更新磁盘节点使用更少的时间。

每个文件节点和目录节点由三种时间参数:

  • ctime:节点状态最后更新时间
  • mtime:节点数据最后修改时间
  • atime:节点数据最后访问时间

如果GFS2文件系统默认像其他linux文件系统一样启用atime更新,那么当每次文件被读取时,节点都会被更新。由于很少有应用使用到atime参数,这些更新会消耗没必要的资源并降低性能,因此最好关闭这个选项。

两种方式减少atime更新影响:

  • 使用relatime(relative atime)挂载选项,只有在之前的atime早于mtime或ctime时才更新
  • 使用noatime挂载选项,禁用atime

如同所有linux文件系统,GFS2处于VFS层。你可以使用sysctl命令调整VFS层参数来改进GFS2的性能,比如参数dirty_background_ratio和参数vfs_cache_pressure。可以通过编辑/etc/sysctl.conf配置文件来永久性保存改变

创建GFS2文件系统

可以使用mkfs.gfs2命令在LVM卷上创建GFS2文件系统

mkfs.gfs2 -p lock_dlm -t  ClusterName:FSName -j NumberJournals BlockDevice

-p参数指定lock协议,-t参数为集群的名字,-j参数为journal日志的数量
创建了GFS2文件系统之后不能缩小文件系统大小只能使用gfs2_grow增加大小


hhhan
13 声望1 粉丝