一、背景
相关资源: 在 Pacemaker 集群中配置 GFS2 文件系统、PCS集群维护、Distributed lock manager (DLM)
二、产品选型
1)集群文件系统和分布式文件系统的区别
集群文件系统(Clustered File System)和分布式文件系统(Distributed File System)是两种不同类型的文件系统,它们的主要区别在于它们对存储空间的访问方式和元数据的管理方式。
- 访问方式: 集群文件系统可以分为共享存储型集群文件系统和分布式集群文件系统。共享存储型集群文件系统(如Veritas的CFS、昆腾Stornext等)允许多台计算机识别到同样的存储空间,并相互协调共同管理其上的文件,也被称为共享文件系统。集群文件系统(CFS)通常建立在**共享存储架构**上,多个服务器节点可以访问相同的存储资源。而分布式集群文件系统(如HDFS、Gluster、Ceph、Swift等)则是每台计算机各自提供自己的存储空间,并各自协调管理所有计算机节点中的文件。这意味着在共享存储型集群中,所有节点共享同一个存储资源池,而在分布式集群中,每个节点管理自己的存储资源。即分布式文件系统不依赖于共享存储,每个节点拥有自己的本地存储资源。
\- 元数据管理:按照元数据的管理方式,集群文件系统可分为对称式和非对称式。对称式集群文件系统(如Veritas的CFS)中,每个节点的角色均等,共同管理文件元数据,节点间通过高速网络进行信息同步和互斥锁等操作。非对称式集群文件系统(如HDFS、GFS、BWFS、Stornext等)中,有专门的一个或者多个节点负责管理元数据,其他节点需要频繁与元数据节点通信以获取最新的元数据1。
\- 文件分布和命名空间:CFS拥有单一全局命名空间:提供统一的文件系统视图,所有节点看到相同的文件和目录结构。而DFS的文件数据被分割并分布在不同的节点上,每个节点负责管理一部分数据;它的每个节点可能拥有自己的文件系统命名空间,但通过特定的机制(如一致性哈希)来实现全局文件访问。
\- 锁和服务协调:CFS一般依赖于其他Linux集群管理软件,它通过集群管理软件(如Pacemaker和Corosync)协调对文件的访问,使用锁机制来保证数据一致性。而DFS通过自身的机制或外部来综合保障锁和一致性;
\
综上所述,集群文件系统和分布式文件系统的核心区别在于它们对存储资源的访问模式和元数据的管理策略。共享存储型集群文件系统提供对共享存储资源的集中访问,适合需要高度协调和数据一致性的应用场景;而分布式集群文件系统则通过将数据分布到多个节点上,提供更高的可扩展性和容错性,适合处理大规模数据和并发访问需求较高的应用场景
2)CFS集群文件系统常用推荐
- Veritas Cluster File System (VCFS):由Veritas(现为Micro Focus)提供的企业级集群文件系统,支持多种操作系统和硬件平台。
- Oracle Cluster File System (OCFS):Oracle提供的集群文件系统,专为Oracle数据库和应用优化,支持高并发访问和数据一致性。(阿里共享云硬盘)
- IBM General Parallel File System (GPFS):IBM开发的高性能集群文件系统,适用于大数据分析、高性能计算和企业应用。
- Red Hat Gluster Storage:虽然GlusterFS是一个分布式文件系统,但Red Hat Gluster Storage提供了额外的企业级特性和支持。
- HPE Scale-Out File Services (SOFS):由HPE提供的集群文件系统,适用于大容量存储和高性能计算环境。
- Microsoft Storage Spaces Direct (S2D):微软提供的软件定义存储解决方案,支持Windows Server上的集群文件共享。
- SUN Cluster File System:Oracle(原SUN Microsystems)提供的集群文件系统,适用于Solaris和Linux平台。
- RedHat Cluster Suite, RHCS)+GFS2:腾讯云和移动云的共享盘采用,参见配置集群更新系统
- Lustre:虽然Lustre主要用于高性能计算,但它也可以用于需要大规模并行文件访问的企业环境。
3)GFS:Global File System全局文件系统
GFS(Global File System)是全对称的集群文件系统,最早是Minnesota大学开发的基于SAN的共享存储的机群文件系统,后来Sistina公司将GFS产品化。GFS在很长一段时间都是以源代码开放软件的形式出现的,后来Sistina在2001年将GFS变成了一种“专有软件”。Red Hat公司收购Sistina之后,在遵循GPL协议(General Public License)的条件下履行诺言公开了GFS的源代码。现在,GFS的全名被称为“红帽全球文件系统”(Red Hat Global File System,GFS)的软件,每台服务器每年收取2200美元的费用。在Linux6中已支持GFS2,它跟GFS功能一样,它直接与 Linux 内核文件系统界面(VFS 层)互动。当作为集群文件系统使用时,GFS2 采用分布式元数据和多个日志(multiple journal)。Red Hat 只支持将 GFS2 文件系统作为在 High Availability Add-On 中的部署使用。Red Hat 不支持在部署超过 16 个节点的集群文件系统中使用 GFS2,目前支持的 64 位硬件的最大 GFS2 文件系统为 100 TB。更多参见Redhat GFS2说明。
当在集群中进行配置时,可使用 High Availability Add-On 配置和管理工具对Red Hat GFS2 节点进行配置和管理。然后Red Hat GFS2 会在集群的 GFS2 节点间提供数据共享,即在 GFS2 节点间可以提供单一、一致的文件系统名称查看,允许不同节点中的进程可以共享 GFS2 文件。注意: GFS2 文件系统配置为集群文件系统时,必须确定该集群中的所有节点都可访问共享存储。另外在一个很大的文件系统中运行 fsck.gfs2 命令需要很长时间,且会消耗大量内存。Red Hat 只支持在 CLVM 逻辑卷中创建的 GFS2 文件系统。CLVM (Clustered LVM)也包含在 Resilient Storage Add-On 中。过程中会在集群范围内部署 LVM,之后由在集群中管理 LVM 逻辑卷的 CLVM 守护进程 clvmd 启用。该守护进程可让 LVM2 在集群间管理逻辑卷,允许集群中的所有节点共享该逻辑卷。clvmd 守护进程在每个集群计算机上运行,并更新 LVM 元数据,让集群的每个计算机上的 LVM 信息都保持一致,用 CLVM 在共享存储上建立的逻辑卷对于访问过该共享存储的计算机都是可视的。CLVM 允许一个用户在共享存储上配置逻辑卷时,锁住正被配置的物理存储设备。CLVM 使用锁服务来保证基础信息方面的一致性。
GFS中有一个很重要的概念,叫网络存储池(The network storage pool,NSP)。NSP为每台机器提供了一个统一的存储地址空间。GFS通过NSP实现了存储设备的网络共享。这些存储设备可以是共享SCSI(Shared SCSI)和共享通道(Fibre Channel - FC)。NSP包装这些存储设备使得它们好像节点本地的文件系统。GFS把文件系统组织成数个资源组(resource groups,RG)。通过RG,GFS把文件系统的资源分布在整个NSP上。一个存储设备上可以存在多个RG。RG实际上是各微型的文件系统(minifile system)。从文件到RG,以