nkj827
作者nkj8272020-04-05 19:53
项目经理, 长春长信华天

GPFS文件系统

字数 4380阅读 5101评论 0赞 17

GPFS

什么是 GPFS 文件系统
GPFS ( General Parallel File System )是 IBM 公司开发的高性能集群文件系统,从 1998 年
开始首先应用于 AIX 集群, 2001 年后应用于 Linux 集群。
在集群的环境中, GPFS 文件系统允许集群中所有的节点访问同一文件的数据,并提供统一的文件存储空间。应用可以使用标准的 UNIX 文件系统接口访问文件的内容。 GPFS 支持 32 位和 64 位的应用,经过测试的文件系统的大小为 100TB 。 GPFS 可以动态的增加或减少文件系统的容量。
GPFS 提供了标准的 POSIX 应用开发接口,支持缓存方式的 I/O ( buffered I/O )、同步 I/O 操作(文件打开时使用 O_SYNC 或 O_DSYNC 标示符)、核心级的异步 I/O ( kernel asynchronous I/O ,通过使用异步 I/O 系统调用实现)和直接 I/O ( Direct I/O ,没有缓存的 I/O )。直接 I/O 可以在文件级,使用 O_DIRECT 标识打开文件,也可以在文件系统级使用 dio 参数挂接文件系统。
直接 I/O 的特点是执行 I/O 操作时忽略文件系统的缓存,这样可以节省处理器的消耗,避免数据从文件系统的缓存拷贝到应用的缓存。
GPFS 并行文件系统区别于其他的集群文件系统的特点是,在多个 AIX 、 Linux 节点中,为应用提供并发的、高速的文件访问,提供突出的性能,尤其是大数据量的顺序操作,尽管典型的 GPFS 应用适用于多个节点,但对单个节点也能提供有益的性能。
GPFS 文件系统适用于 AIX 和 Linux 节点的异构集群
从 GPFS 版本 2.2 开始,允许集群中同时存在 AIX 和 Linux 的节点。 GPFS 的 AIX 版本和 GPFS 的 Linux 版本基于同样的 源代码 ,只是适应于不同的硬件环境和不同的操作系统环境。
GPFS 使用共享硬盘的模式( Shared Disk Model )
GPFS 使用共享硬盘的方式,可以通过多种方式实现硬盘的共享:
1 )基于硬件的 SAN 结构,集群中的所有节点物理的连接到所有的存储
2 )使用单独的 软件 驱动 VSD ( Virtual Shared Disk ),对集群节点体统虚拟的共享硬盘,通过 VSD 调度 I/O 操作 3 )使用 NSD ( Network Shared Disk ),是有 GPFS 本身提供的,通过 NSD 调度 I/O 操作在 VSD 或 NSD 的环境中使用 GPFS ,为增强 GPFS 的性能,建议存储和节点之间通过高速的通道互连,增加数据的带宽。
提高 GPFS 性能的关键点
以下 GPFS 的特点可以帮助 GPFS 文件系统取得高性能的 I/O :

  • 跨越多个硬盘和多个节点的条带化数据
  • 高效的客户端数据缓存
  • 允许 管理 员配置大的数据块,满足应用的特点
  • 使用预读( read-ahead )和后台写( write-behind ) 技术
  • 使用字节级( byte-range )的锁技术,提供数据的一致性要求,可以使多个应用节点并发访问同一文件
    GPFS 元数据( GPFS metadata )
    在集群中, GPFS 在所有的节点上处理元数据( metadata )。这是 GPFS 文件系统的架构和设计区别于其他集群文件系统的显著特点,需要集中的元数据 服务器 处理文件系统的边界( fixed region )。在大量的元数据操作下,元数据服务器将是潜在的性能瓶颈,另外,如果没有配置 备份 服务器,元数据服务器将变成一个单点故障。
    高可靠性的 GPFS
    GPFS 是高可靠性的文件系统,即使是在下列失败的情况下,仍可以配置为不间断的数据访问:
  • 计算节点
  • I/O 服务器节点
  • 硬盘的连接
    可以配置 GPFS 的多个备份,即使在丢失硬盘路径,或者硬盘自身不可访问的情况下,仍可以保持操作的连续性。
    另外, GPFS 也可以与 RAID 或者其他硬件冗余的功能协同使用,提供商业的连续性( business continuity )。要达到这一目的,需配置多个 I/O 服务器,当某一 I/O 服务器失败时, I/O 请求仍可以通过备份服务器实现。
    在 GPFS 的环境中,某一节点的硬盘连接丢失,不会影响到其他的节点, GPFS 使用 RSCT 的功能持续的监控不同文件模块的健康状态,当任一错误被检测到时,相应的 恢复 动作将自动执行。 GPFS 还提供了额外的日志和恢复功能,可以维持元数据的一致性。
    GPFS 顺序读写的性能
    建议
    在配置高性能 GPFS 文件系统的过程中,从性能方面考虑,有几种配置和优化的方法,在考虑 GPFS 的配置的同时,应当考虑应用对性能的影响。
    配置硬盘
    GPFS 可以使用 VSD 或者 AIX 物理卷,一段时间内, VSD 在一些大的集群中是一个比较好的选择,在使用 HPS ( High Performance Switch )的系统中, VSD 可充分利用 HPS 高性能的特点。 VSD 是建立在逻辑卷组( Logical Volume )之上的, I/O 大小是有卷组( Volume Group )的 LTG ( Logical Track Group )的大小决定的。 LTG 的性能将影响到 GPFS ,比较来看, GPFS 2.2 只允许 128KB 的 LTG 大小。
    数据条带
    在 AIX 环境下, GPFS 顺序 I/O 要取得较高的性能,配置使用 RAID5 ,可以考虑三种方式:
    a . GPFS 条带,每一个 RAID5 组成一个 GPFS 的逻辑盘,这是配置 GPFS 的最典型的方法,对大数据量顺序读写,可以充分利用 GPFS 预读和延迟写( pre-fetch/wirte-behind )的功能。
    b . AIX 逻辑卷( Logical Volume Manager )条带,条带化的逻辑卷可以使用部分或全部的 RAID5 组,构成 GPFS 的逻辑盘。
    c . GPFS 和 AIX 逻辑卷条带的组合。推荐使用方式 a ,可充分发挥 GPFS 的预取功能。但是,在单节点的情况下,如果系统存在数量较多的硬盘,方式 b 和方式 c 也能提供较好的性能,可以从系统级充分发挥物理卷的并发操作。
    GPFS 块大小
    影响 GPFS 文件系统顺序 I/O 性能的另一个重要因素是 GPFS 文件系统的块大小, GPFS 2.2 版本支持最大块为 1MB 。
    使用连续的数据存储块
    创建 GPFS 文件系统时在每一个独立的逻辑盘上申请使用连续的存储块,也是影响 GPFS 性能的重要因素,在 GPFS 后续的版本中,将是一个新的功能。相反的 GPFS 2.2 仍然是随机的在每一个逻辑盘上申请存储块
    GPFS 优化
    在 GPFS 的参数配置中,有些可优化的参数会影响到 GPFS 的性能,部分可调整的参数如下:
  • pagepool : GPFS 缓存可申请使用的容量
  • prefetchThreads :配置 GPFS 服务进程可使用的读写线程数,此参数配置 GPFS 可使用的最大并发请求数
  • maxMBpS :基于 I/O 的响应时间,动态的调整 prefetchThreads 的数量
  • maxBuddyBufferSize :设置最大的 VSD 通讯数据包大小
    应用方面的建议
    考虑 GPFS 的性能时,应当考虑到应用方面的影响,有些 I/O 比较敏感的应用使用单个线程执行大数据量的顺序读写操作,通常情况下, GPFS 能很好的执行读或者写系统调用, GPFS 会使用多个线程调度 I/O 操作到多个磁盘,这种操作方式使用 GPFS 文件系统的缓存存储被切割的数据。在单节点, I/O 密集的负载中,处理器的使用可能会占用较多的处理器时间,影响到系统的性能。
    在处理器瓶颈的情况下,为提高 I/O 的性能,应用可以考虑使用直接 I/O ( Direct I/O ),避免数据在文件系统缓存和应用缓存之间拷贝数据,处理器可以节省时间处理额外的 I/O 请求。尽管直接 I/O 的使用节省了处理器的时间,但会要求应用使用固定缓存 (pinned) 。使用固定缓存可保证系统不会将 I/O 请求的内存换页出去。
    固定( pining )缓存的操作比较消耗处理器时间,如果应用的缓存的固定( pin )操作在初始化过程中完成,可以节省处理器的时间,这要求文件系统存在一种机制知道应用的缓存已经被固定,因而不需要在调度 I/O 时再固定同样的缓存。
    GPFS 2.2 版本不存在这种识别应用缓存是否被固定( pin )的能力,但在后续的 GPFS 版本中将会增加这一新的功能。应用可以通知 GPFS ,相应的使用直接 I/O ( direct I/O )的应用缓存已经被固定( pinned ),因而 GPFS 不需要重新固定缓存。
    注意:直接 I/O ( Direct I/O )的目的是直接读或写数据到应用缓存,这种方式会限制 GPFS 的预取功能,可以从异步 I/O 或者多线程读写的方式弥补性能的损失。
    GPFS read-behind-write 性能
    Read-behind-write 技术常被一些高端用户采用,目的是降低延迟,提高性能。 Read-behind-write 技术意味着一旦写者( writer )开始写操作,读者( reader )立刻开始读操作,思想是重叠写和读的时间,对一些 I/O 性能较差的服务器而言,优势是明显的,但对高性能的机器,例如 P690 ,相应的操作可能会演化为并行写整个文件,然后再并行读回数据。
    实施 read-behind-write 这种方式,可以有很多种方式,例如写者( writer )写完纪录后,等待读者( reader )读取纪录,然后再处理此项纪录,尽管这种策略只是时写者和读者在纪录级保持同步,仍然需要消耗系统时间处理读者和写者间的同步锁。
    如果应用并不关心读者和写者之间存在的未读的纪录差,也可以采取这样的策略,写者可以尽可能快的写,而不用关心读者的问题,写者可以在一定数量的纪录写完后更新相应的标示量,写者可以根据此标示量确定有多少纪录未读。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

17

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广