IBM GPFS(General Parallel FileSystem)是一个分布式、共享、并行集群文件系统,支持从多个节点同时对单一文件系统或一组文件系统的访问。GPFS可以在AIX、Linux和windows操作系统和IBM Power、Intel/AMD x86架构下使用,被全世界HPC用户广泛使用。GPFS集群中每一个节点都由管理命令集GPFS内核扩展多线程守护进程三个组件构成。

      GPFS管理命令集,是用来控制GPFS操作和配置的脚本集合,默认情况下GPFS命令可以在集群中任何一个节点执行,GPFS集群会自动处理并把请求的操作重定向到合适的节点执行。可以定义为在所有GPFS节点同步,还是在一个子网内的节点间同步请求。

      GPFS内核扩展提供了一个接口和操作系统的vNode、VFS层交互模块,并注册GPFS作为一个Native文件系统,GPFS在操作系统中以一个标准的处理应用下发给操作系统的请求。

      GPFS守护进程处理所有I/O操作和Buffer管理,包括对于顺序读进行Read-ahead,对于非同步的所有写进行Write-behind操作,I/O操作被GPFS的Token管理保护,以确认数据分布在集群中所有节点的一致性。GPFS守护进程会和其他节点的守护进程共同工作,进行文件系统的配置变更、修复、并行更新元数据状态。

      GPFS NSD组件对运行在节点上的应用,提供一种在集群中相对于直接访问普通硬盘的集群访问,集群中NSD可能会物理的连接到所有的节点或者服务器上,数据通过NSD server对外提供一个虚拟连接,最多可以为每个NSD指定8个NSD Server,如果其中一个服务器宕机了,列表中的下一个服务器将会接管宕机的节点工作。

      当启动GPFS和一个文件系统挂载的时候,GPFS通过守护进程确认哪些NSD可以通过物理或者虚拟的方式访问,即NSD的发现过程,NSD的默认发现顺序是优先本地的块设备接口,例如SAN、SCSI和IDE,其次是NSD Server。

      对GPFS文件系统集群中的组件和其关系进行总结。Node在GPFS文件系统中独立的OS实例,NSD则是对GPFS集群可见用于创建文件系统的存储设备,NSD server提供对特定NSD访问的I/O服务器,通过一组NSD创建的文件系统称为GPFS文件系统。运行应用程序并通过挂载文件系统访问文件系统节点称为Application Node。

      GPFS支持配置一些节点直接连接到磁盘上而其他的一些节点通过这些节点访问磁盘,这种配置组网通常在一些较大的HPC集群中使用,提供一种低成本高性能的组网方式。当GPFS节点为其他节点提供访问磁盘的服务时,这个节点称之为NSD Server,GPFS节点通过NSD Server访问数据时称之为GPFS客户端。服务器通常都会复用,以来降低成本,服务器的许可可以作为客户端使用,但是有客户端许可的服务器不能做服务器角色使用。

      每个GPFS集群有一个集群管理服务器,从设置为Quorum的节点中选举得来,并且可以通过命令更改,主要负责监视磁盘状态,检测节点故障,执行节点恢复,确定仲裁节点是否满足启动GPFS daemon管理与远程集群的通信,选择文件系统管理节点。

      每个文件服务器都会有一个文件系统管理服务器,文件管理服务器通过集群管理进行选择。文件系统管理服务器通常分布在管理服务器中,文件管理服务器不可以跨节点,但是可以在一台服务器上运行多个文件系统的文件管理服务器,文件管理服务器通常有以下功能。

  • 文件系统配置(添加磁盘,改变磁盘可达性,修复文件系统,挂载、解挂载文件系统)
  • 磁盘空间分配(控制磁盘的那个段的空间分配给哪个节点)
  • 令牌管理(令牌管理服务器通过授权令牌协调访问共享磁盘上的文件传达到读或写一个文件的数据或元数据的权利)。
  • Quota管理(在启用了配额的文件系统中GPFS文件系统管理节点自动承担配额管理的职责)
  •  配置管理(在每个GPFS集群中配置管理服务器通常有主备两台相互协同工作,当主不可用备机接替工作,配置管理服务器通常有Manager Node来充当)

      文件系统在执行元数据的写操作时,为了保证数据的一致需要对数据进行加锁,也就会产生锁冲突,为了解决写冲突GPFS引入Meta node,通过Meta node去收集和合并其他节点的元数据的状态更新,维护元数据的完整性。

      Meta node节点是在每个文件打开时动态选择的,在每个文件关闭时动态删除,一个文件的读写可以由所有节点操作,一个文件的所有元数据操作都通过Meta node执行(主要包括权限和属性),也只可以通过Meta node执行。通常情况下打开文件操作时间持续最长的会被选举为Meta node。

      GPFS在系统架构设计十分灵活,丰富的功能延伸出了多种组网方式,而每种组网方式适配不同的应用模式,常见组网方式包括SAN、NSD、SNC、Remote Cluster混合组网方式。

  • Storage Area Network(SAN) Model要求计算节点直接挂载存储,并且充当计算节点、NSD Server、NSD Client三种角色。NSD Server通过存储网络或直连的方式连接到存储设备上,前端通信协议为GE,后端通信协议为FC或Infiniband,适用于小规模集群。
  • Network Shared Disk(NSD) Server Model要求计算节点安装GPFS软件,并充当NSD Client角色,使用单独的服务器充当NSD Server,负责处理I/O。NSD磁盘BuildingBlock的方式,每两台服务器通过直连的方式连接到NSD Server上,前端通信协议为10GE或Infiniband,后端通信协议为FC或Infiniband,适用于大规模集群扩展。
  • Shared Nothing Cluster(SNC)Model要求计算节点安装GPFS软件,并充当NSD Client角色,使用单独的服务器充当NSD Server,负责处理I/O。NSD采用服务器自带硬盘,或者独立存储,数据之间不使用宽条带方式进行分布,而采用FPO方式进行排布。前端通信协议为10GE或Infiniband,后端通信协议为FC或Infiniband。适用于Hadoop和Mapreduce环境。
  • Remote Cluster Mount Model要求GPFS提供在多个GPFS集群间共享数据的服务,GPFS在其他集群mount本集群的资源,其访问磁盘和本地访问磁盘体验类似,这种跨集群访问可以是在一个数据中心也可以是跨远距离的WAN。 在一个多集群配置中每个集群可以进行分别的管理,在简化管理的同时提供一个多组织数据访问的视图。前端通信协议为10GE或Infiniband,后端通信协议为FC或Infiniband,适用于同城或异地部署环境。
  • 混合组网环境下,GPFS允许在一个集群中混合部署多种组网环境,例如集群中部分主机采用Storage Area Network (SAN) Model,部分主机采用Network Shared Disk (NSD) Server Model方式进行组网。 当多个组网类型同时存在于一个集群中时,影响的只是集群使用NSD的方式,对于上层主机对数据的访问没有影响。

      GPFS文件系统解决方案的BuildingBlock如何设计呢?如上文所述GPFS的架构、组网相比Lustre和NAS等来说要较为复杂,如何可以简化存储设计以匹配性能和容量需求,如何让GPFS易于规划、交付和调优,如何让GPFS以近线性的方式进行扩容呢?这里基于最佳项目实践讨论下BuildingBlock设计(Building Block即一个最小的可通过模块叠加实现性能和容量线性扩展的服务器和存储组合)。

      Building Block类型一般分为性能和容量2大类型,Capacity Building Block以获取最大容量为目的的BuildingBlock,实际使用中可通过Building Blcok的叠加实现容量和性能的近线性增长;Performance Building Block以获取最大性能为目的的BuildingBlock,实际使用中可通过Building Block的叠加实现性能和容量的近线性增长。

      Building Block可选配置选项非常灵活,如计算网络组网方式存储磁盘选项仲裁节点数数据副本等等。

      计算网络组网方式默认Infiniband组网,适用于带宽要求较高,时延敏感的应用。通过提供了可选的10GE组网,适用于带宽较低,延时不敏感的应用,如每个BuildingBlock的带宽要求高时,需要通过端口绑定汇聚端口带宽。

      数据存储磁盘选项包括磁盘类型、磁盘框类型(2.5寸2U硬盘框、3.5寸4U高密框)等,可靠性选项需要考虑数据份数(默认值元数据2份),仲裁节点数、磁盘仲裁。仲裁节点数默认值6~8台NSD Server采用3个仲裁节点,10台NSD Server时5个仲裁节点,10台NSD Server以上使用7个仲裁节。磁盘仲裁默认值2~4台NSD Server时,用3个仲裁盘。

      Building Block扩展性设计主要考虑2种典型场景,即初次新建交付Building Block已存在GPFS通过Building Block扩容

      在初次新建交付多个Building Block场景下,由于GPFS实行宽条带策略,性能存在木桶效应,所以建议每个Building Block配置一致。同时在交付多个Building Block时考虑后续的扩容,即扩容以之前交付的Building Block作为一个扩展模块,保持配置均衡。

      在已存在GPFS通过Building Block扩容场景下,当对现有GPFS文件系统进行扩容时,推荐使用GPFS集群中已有的BuildingBlock模式进行配置,保持GPFS文件系统的配置均衡。当对现有GPFS文件系统进行扩容时,需要将新增Building Block的节点在线加入到集群中,新增BuildingBlock中的LUN在线添加为新的NSD,在线添加过程不会中断现有业务。

Comments are closed.