本文通过一个实际的生产系统案例 , 主要介绍了搭建高可用并行文件系统集群(GPFS)的设计思路和设计过程中的问题解决。本文也通过案例介绍了 GPFS 并行文件系统的一些基本框架和原理 ,GPFS 系统的可靠性分析方法,以及如何最大可能的提高 GPFS 系统的性能与可靠性。
GPFS (General Parallel File System) 是 IBM 公司第一个共享文件系统,起源于 IBM SP 系统上使用的虚拟共享磁盘技术 ( VSD )。作为这项技术的核心, GPFS 是一个并行的磁盘文件系统,它保证在资源组内的所有节点可以并行访问整个文件系统。而且针对此文件系统的服务操作,可以同时安全地在使用此文件系统的多个节点上实现。 GPFS 允许客户共享文件,而这些文件可能分布在不同节点的不同硬盘上。它提供了许多标准的 UNIX 文件系统接口,允许应用不需修改或者重新编辑就可以在其上运行。 GPFS 也支持 UNIX 文件系统的工具,即:用户可以像使用普通文件系统一样使用基于 GPFS 的文件系统,唯一不同的在于管理 GPFS 文件系统的命令。 GPFS 提供的文件系统操作服务可以支持并行应用和串行应用,它允许任何节点(这些节点属于同一个节点组)上的并行应用同时访问同一个文件或者不同的文件。
GPFS 文件系统基本上由三层架构组成:磁盘,网络共享磁盘(NSD), GPFS 文件设备,如下图所示。
- 磁盘
GPFS 文件系统最底层的是物理磁盘设备。原则上可以采用系统上任何块设备,包括磁盘,磁盘分区,逻辑卷。从物理连接上来看,GPFS 支持使用所有方式连接的磁盘。包括本地 IDE 磁盘,本地 SCSI 磁盘,光纤 SAN 磁盘,iSCSI 磁盘,等等。
- 网络共享磁盘(NSD)
NSD 是由磁盘映射出来的虚拟设备,NSD 与磁盘是一一对应的关系。NSD 被标记了不同属性来区分其用途,我们可以将磁盘标记为 4 种用途:
Desc Only:只存储 GPFS 文件系统描述信息的磁盘。
Data Only:只存储文件系统中的数据信息。
Meta data only: 只存储文件系统中的目录结构 inode 信息。
Meta and data: 存储所有信息(默认)。
- GPFS 文件设备
GPFS 设备是一个可被系统挂载的文件设备,由 NSD 创建而成,可以并行的同时挂载在多个节点上。
- 高性能
GPFS 允许在同一节点内的多进程或者应用使用标准文件系统调用,同时访问(并发,读写)同一个文件。通过将节点内读写操作分布到多个磁盘上,大大增加了文件系统的带宽,通过整个系统的负载均衡避免了某个磁盘过大的读写。
- 跨平台设计
GPFS 支持在一个集群内加入异构的平台。
支持异构的硬件环境:System p, System x。
支持异构的操作系统:AIX, Linux。
- 数据一致性
GPFS 通过一套复杂的信令管理机制提供数据一致性。通过这套机制允许任意节点通过各自独立的路径到达同一个文件。即使节点无法正常工作, GPFS 也可以找到其它的路径。
- 数据安全性
GPFS 是一种日志文件系统,为不同节点建立各自独立的日志。日志中记录 metadata 的分布,一旦节点发生故障后,可以保证快速恢复数据。
GPFS 的 fail-over 功能通过规划,将数据分布到不同 failure group 内达到高可用性,减少单点故障的影响。为了保证数据可用性, GPFS 在多个 failure group 内为每个数据实例做备份,即使创建文件系统时没有要求复制, GPFS 也会自动在不同的 failure group 内复制恢复日志。
- 系统可扩展性
通过 GPFS ,系统资源可以动态调整,可以在文件系统挂载情况下添加或者删除硬盘。系统处于相对空闲时,用户可以在已配置的硬盘上重新均衡文件系统以提高吞吐量。可以在不重新启动 GPFS 服务情况下添加新节点。
- 管理简单
GPFS 自动在各个节点间同步配置文件和文件系统信息,而且在同一个节点内,对 GPFS 的管理可以在任一个节点上进行。
GPFS 的数据完整性一方面是由以上提到的数据安全机制来保证,另外也通过一套可用性判断机制来完全保证数据完整性与系统安全。 GPFS 提供三套不同的 quorum 机制来判断系统当前的状态,其中 File Descriptor Quorum 是系统内置的,不能做配置,另外两种 node quorum 和 tiebreaker quorum 方式只能二者选其一,使用那种方式要基于我们的系统环境与可靠性分析。
- File system Descriptor Quorum,File system Descriptor 顾名思义即描述文件系统信息的数据。我们在几个不同的 failure-group 的磁盘上创建 GPFS 文件系统时,会把文件系统的配置信息(简写为 FD)的拷贝写到多个磁盘上,以实现冗余备份。FD quorum 的机制即通过判断含有 FD 磁盘的在线情况来判断当前系统是否正常,当超过半数的含有 FD 的磁盘掉线时,就判断为系统故障,将会自动关闭文件系统。
- Node Quorum 是通过主机状态的来判断系统可用性的机制。GPFS 文件系统集群中,可以设置多个主机节点为 Quorum node。Node Quorum 的机制是通过判断 Quorum node 的状态来判断系统是否正常,当超过半数的 Quorum node 在线时,判断系统为正常,反之,将关闭文件系统。
- Tiebreaker quorum 是通过磁盘的状态来判断系统的可用性。我们可以设置系统通过监视指定的一些磁盘作为 Tiebreaker Disk。当超过半数的 Tiebreaker Disk 掉线时,则判断系统故障,将自动关闭文件系统。Tiebreaker 最多只能配置两个用来监控磁盘状态的 quorum 主机,当 2 台 quorum 主机都宕机的话,GPFS 系统也将会关闭。其优势在于节点数较少时可用性较高,但节点数较多的情况建议采用 Node quorum 模式。
根据以上三种判断机制,GPFS 自动判断系统的状态,当异常发生时自动关闭系统以保护系统和数据的完整性。
基于上面阐述的 GPFS 可用性机制,我们可以看出 GPFS 是通过上述的三种 quorum 机制来检查资源是否超过半数状态正常来判断系统状态好坏。我们在设计 GPFS 文件系统集群的时候需要注意最好保证各种资源数都为 2N+1 个(N 是指数量),也即数量为奇数,来获得系统最大的可用性。
- Filesystem Descriptor (FD)Quorum 的设计。我们在一般的生产系统中都会使用两组不同的 failure group 的磁盘来创建一个文件系统,以实现数据的冗余保护,但是丢失一个 failure group 的磁盘实际不影响数据的完整性,但是由于 FD quorum 2N+1 的机制,文件系统仍将会关闭,所以我们在创建一个 GPFS 文件系统时,可以通过增加一个很小的本地的磁盘作为第三个 failure group。以实现 2N+1 的冗余设计。本地的磁盘可以设置为只保存 GPFS 文件系统信息(FD),实际不参与数据读写。(同一个 failure group 的磁盘是指有可能同时坏掉的磁盘,比如来自同一个存储的磁盘或连在同一个适配器上的磁盘)
- Node Quorum 如果采用了 2N+1 个 Quorum Node,那么这个系统就能容忍 N 个主机节点的离线,所以如果主机节点小于 5 个采用此种方法都不是很经济,此时建议采用 Tiebreaker quorum 机制。
- Tiebreaker quorum 只能配置两个 quorum 主机,但是只要 tiebreaker 磁盘在线,只有一个 quorum 主机状态正常,系统也能正常工作,同时也意味着必须有一台 quorum 主机在线。如果是主机节点数较多的情况,采用此种机制其可靠性不如 Node quorum。
测试系统需要构建一个高性能且高可靠的文件系统平台。其基本要求如下:
- 文件系统读写带宽至少达到 720MByte/s。
- 工作负荷每天超过 16 小时或两个轮班。
- 由 4 台主服务器和 2 台存储提供服务。
- 至少 2TB 的空间 , 存放的文件大小一般在 600MB 左右,文件传输 80% 采用 samba 或 NFS,20% 采用 TFTP。
- 可靠性考虑 ,此系统为生产系统,而且负荷较大,对可靠性有非常高的要求。所以本方案中所有的组件都将采用双机冗余或多节点冗余,以保证无单点故障。
- Quorum 机制的选择 ,本方案预算只有 4 台主服务器,如果采用 Node quorum 的方式,整个系统可用性只能支持一台主机离线,可用性非常差。如果采用 Break Tie Disk 的方式,整个系统可用性支持被指定为 quorum 的两台主机,任意一台离线,以及其他 2 台主机的任意离线。我们可以看到采用 Break Tie Disk 的方式有较高的可用性。但是由于采用 Break Tie Disk 模式对两台设置为 quorum 的主机可用性要求较高,而且灵活性较差。从 FD quorum 的角度来看,我们只有 2 个存储,也即 2 个 Failure Group。任意一个存储的宕机也将会导致文件系统的关闭。我们必须增加第三个 Failure Group 的磁盘来提高可用性。我们考虑从某一台服务器本地拿出一个磁盘作为第三个 Failure Group 的磁盘。
我们最后采用的方案是 , 增加一台配置较低,但可用性较高的服务器,并使用这第五台服务器上的一个 Raid 1 磁盘作为第三个 Failure Group 磁盘。总共 5 个节点采用 Node Quorum 方式。可以支持任意两台的服务器同时离线,任意一台存储的离线。
通过以上的原理与可靠性分析,我们最终的设计方案如下。
硬件结构
硬件结构分三层,如下图(图 2)所示。
- 存储层: 采用 2 台 DS4700 存储,保证数据的完全的冗余备份。每台 DS4700 有两个控制器,保证了控制器的冗余以及链路的冗余。
- SAN 存储网络层: 两台 SAN 交换机,保证 SAN 存储链路设备的完全冗余。
- 服务器层: 增加一台配置较低的服务器 , 对性能没有要求 , 但需要是可靠性较高的配置,一共 5 台服务器以实现 2N+1 的冗余。从新增加的服务器中划分出一个磁盘 ( 比如 lv),设置为 Desc Only 的磁盘,以实现磁盘组的 2N+1 的冗余。每台服务器都有 2 个 HBA 卡,以及多个网卡,以保证链路冗余。
本 GPFS 方案系统逻辑结构
GPFS 的逻辑结构如下图(图 3 )所示。也基本分为三层。
- GPFS 逻辑磁盘设备 ,由物理磁盘创建而成,按保存数据类型分为,meta-data,data,meta-data and data,Desc only 4 种。两个存储节点分别是 Failure Goup1 和 Failure Group2。用来存放数据文件。而 Disk5 只用来保存 GPFS 文件系统描述信息。
- GPFS 文件系统设备 ,通过组合逻辑磁盘设备创建 GPFS 文件系统设备。此设备在 Linux 操作系统中相当于一个格式化好的硬盘分区,可以将其挂载到文件系统中。
- 服务器端的文件系统 ,GPFS 的文件系统设备在所有集群的系统内都是可以看到的,用户可以按需 GPFS 文件系统挂载到各主机节点上。
解决方案的性能分析
要实现 720MByte/s 的吞吐量,就要求从服务输出端,到磁盘存储系统,所有通道都要满足大于 720MByte/s 的带宽。以下我们逐个分析所有路径中设备的性能。
- 存储设备, 存储设备采用的是两台 DS4700,每台 DS4700 最高支持 8 个 4Gbps 光纤出口,磁盘数最高支持 112 个。本方案中,一共采用了 4 个 4Gbps 的光纤出口,带宽总共达到了 2000MByte/s。
- 光纤存储交换机 ,属于交换设备,在理论上点到点通信相互不影响,不存在瓶颈。
- 服务器 ,每台服务器都有 2 个 HBA 卡与 SAN 存储网络直连,带宽达到 1000MByte/s。4 台服务器的总带宽达到了 4000MByte/s。
我们可以看到,整个通道中带宽都大于应用需求,保证了在物理带宽上不存在任何瓶颈。
解决方案的可靠性分析
本方案的在设计上保证了无任何单点故障,也即任何一台设备故障都不会引起系统的可用性。下面我们就各个层面的可靠性做一个分析。
- 存储设备 ,存储设备我们采用了两台 DS4700 相互冗余备份,任意一台故障都不会导致系统关闭,同时存储内部采用了 RAID5 磁盘冗余保护技术,任意一个磁盘的损坏也不会导致存储本身的关闭。任意单个存储可停机维护或在线更换。
- SAN 光纤链路 ,所有的存储与主机间光纤链路都是双路冗余,任意一个链路的中断都不影响存储与主机间的通信。光纤通道交换机也是采用双机备份方案。任意一台光纤通道交换机故障都不会影响设备间的通信。
- 服务器 ,每台服务器都是通过 2 条光纤线路与两台交换设备链接,同时服务器本身采用的 2N+1 的冗余方案,本方案一共五台服务器,也即任意两台服务器的宕机不影响整个系统的可用性。
本系统中所有设备都是冗余配置,也即任意单个设备都能在线更换,整个系统所有的资源都能实现按需的动态的扩展与收缩 , 真正实现了无宕机(down time)的高可用性。保障了系统的 7x24 小时的无故障运行。
采用 GPFS 并行文件系统集群这一方案满足了生产部的测试服务器要求,成功的解决了高性能与高可靠的技术难题。总结来说采用 GPFS 方案有以下优势。
- 成本上的节约 ,采用 GPFS 文件系统的方案,节省了 3 倍的存储空间需求。通过采用 GPFS 自身的数据冗余的功能,从而减免了一些存储产品数据冗余的费用。
- 可扩展的高性能文件系统 ,GPFS 是并行的可扩展的高性能系统,当应用对服务器集群压力增大时,可以根据需要增加服务器数量提高性能。真正实现了动态的按需扩展,以及对前期工程的投资保护。
- 高可扩展的可用性 ,GPFS 集群系统其先进的架构体系加上合理的部署,随着服务器数量、存储数量、光纤链路的数量增加能不断提高整个系统的可靠性,以满足各种安全生产的可用性需求。
- 非常高的灵活性和可管理性 。GPFS 可以按照对磁盘性能和空间的需求,动态的添加删除磁盘。集群服务器节点也可以实现动态的增加删减,给集群管理带来极高的灵活性。同时任意节点都可以对集群进行管理和配置,更改会自动同步到其他节点。
目前,新的版本 GPFS3.2 已经发布。在扩展性和管理特性上都有比较多的增强,但其高可用机制与原理仍然与 GPFS 3.1(即本文所介绍的内容)保持一致。
阅读(3738) | 评论(0) | 转发(1) |