首页 > 系统相关 >CentOS 7环境部署和配置GFS2共享存储

CentOS 7环境部署和配置GFS2共享存储

时间:2024-09-04 14:13:47浏览次数:3  
标签:CentOS cluster GFS2 node203 node202 node201 集群 共享 root

案例说明:
在CentOS 7环境部署gfs2共享存储应用。

系统环境:

[root@node201 ~]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)

系统架构:

[root@node203 ~]# cat /etc/hosts
192.168.1.201 node201
192.168.1.202 node202
192.168.1.203 node203  iscsi server

如下所示,通过iscsi server建立共享存储,在集群节点对共享存储建立gfs2文件系统应用:

一、系统环境准备
如下所示,所有节点安装以下软件:

yum -y install gfs2-utils  lvm2-cluster
yum -y install lvm2-sysvinit
yum -y pacemaker corosync

二、配置集群
gfs2文件系统用于集群共享存储环境,必须在集群环境下使用,不能用于单实例环境:
1、建立用户认证
如下所示,在集群节点及qdevice节点建立哈cluster用户并设置密码:

[root@node201 ~]# id hacluster
uid=003(hacluster) gid=1004(haclient) groups=1004(haclient)
[root@node202 ~]# id hacluster
uid=5001(hacluster) gid=5010(haclient) groups=5010(haclient)
[root@node203 ~]# id hacluster
uid=5001(hacluster) gid=1004(haclient) groups=1004(haclient)

如下所示,在集群节点建立到qdevice节点的认证:

[root@node201 ~]# pcs cluster auth node203
Username: hacluster
Password:
node203: Authorized
[root@node202 ~]# pcs cluster auth node203
Username: hacluster
Password:
node203: Authorized

2、创建集群
如下所示,创建集群test_cluster:

[root@node201 pcs]# pcs cluster setup --name test_cluster node201 node202 node203 --force
Destroying cluster on nodes: node201, node202, node203...
node202: Stopping Cluster (pacemaker)...
node203: Stopping Cluster (pacemaker)...
node201: Stopping Cluster (pacemaker)...
node203: Successfully destroyed cluster
node202: Successfully destroyed cluster
node201: Successfully destroyed cluster

Sending 'pacemaker_remote authkey' to 'node201', 'node202', 'node203'
node201: successful distribution of the file 'pacemaker_remote authkey'
node203: successful distribution of the file 'pacemaker_remote authkey'
node202: successful distribution of the file 'pacemaker_remote authkey'
Sending cluster config files to the nodes...
node201: Succeeded
node202: Succeeded
node203: Succeeded

Synchronizing pcsd certificates on nodes node201, node202, node203...
node201: Success
node203: Success
node202: Success
Restarting pcsd on the nodes in order to reload the certificates...
node201: Success
node203: Success
node202: Success

[root@node201 pcs]#  pcs cluster start --all
node201: Starting Cluster (corosync)...
node202: Starting Cluster (corosync)...
node203: Starting Cluster (corosync)...
node203: Starting Cluster (pacemaker)...
node202: Starting Cluster (pacemaker)...
node201: Starting Cluster (pacemaker)...

[root@node201 pcs]#  pcs cluster status
Cluster Status:
 Stack: unknown
 Current DC: NONE
 Last updated: Thu Aug 29 19:24:45 2024
 Last change: Thu Aug 29 19:24:40 2024 by hacluster via crmd on node203
 3 nodes configured
 0 resource instances configured
PCSD Status:
  node203: Online
  node201: Online
  node202: Online

[root@node201 pcs]# pcs cluster enable --all
node201: Cluster Enabled
node202: Cluster Enabled
node203: Cluster Enabled

3、集群节点corosync配置
1)集群节点配置corosync.conf(所有集群节点)

[root@node202 corosync]#  cat /etc/corosync/corosync.conf |grep -v ^#|grep -v ^$|grep -v '#'
totem {
    version: 2
    cluster_name: test_cluster
    secauth: off
    transport: udpu
}
nodelist {
    node {
        ring0_addr: node201
        nodeid: 1
    }

    node {
        ring0_addr: node202
        nodeid: 2
    }

    node {
        ring0_addr: node203
        nodeid: 3
    }
}

quorum {
    provider: corosync_votequorum
    device {
        model: net
        votes: 1

        net {
            algorithm: ffsplit
            host: node203
        }
    }
}

logging {
    to_logfile: yes
    logfile: /var/log/cluster/corosync.log
    to_syslog: yes
}

quorum配置说明:

  • cluster_name: 此项设置的集群名,在之后格式化逻辑卷为gfs2类型时要用到。
  • clear_node_high_bit: yes:dlm服务需要,否则无法启动。
  • quorum {}模块:集群选举投票设置,必需配置。如果是2节点的集群,可参考如下配置:
quorum {
        provider: corosync_votequorum      # 启动了votequorum
        expected_votes: 7             # 7表示,7个节点,quorum为4。如果设置了nodelist参数,expected_votes无效
        wait_for_all: 1              # 值为1表示,当集群启动,集群quorum被挂起,直到所有节点在线并加入集群,这个参数是Corosync 2.0新增的。
        last_man_standing: 1            # 为1表示,启用LMS特性。默认这个特性是关闭的,即值为0。
                             # 这个参数开启后,当集群的处于表决边缘(如expected_votes=7,而当前online nodes=4),处于表决边缘状态超过last_man_standing_window参数指定的时间,
                             # 则重新计算quorum,直到online nodes=2。如果想让online nodes能够等于1,必须启用auto_tie_breaker选项,生产环境不推荐。
        last_man_standing_window: 10000        # 单位为毫秒。在一个或多个主机从集群中丢失后,重新计算quorum

2)重启corosync服务

[root@node201 corosync]# systemctl restart corosync
[root@node201 corosync]# systemctl status corosync

三、配置iSCSI共享存储
具体配置见:
文档:CentOS 7配置iSCSI共享存储案例.note
链接:https://note.youdao.com/ynoteshare/index.html?id=96ee40b99499d1d4695d0838cf988f21&type=note&_time=1725353430791

查看集群节点磁盘信息,如下所示,sdc为iscsi共享存储:

四、客户端创建gfs文件系统

1、查看lvm配置

开启lvm的集群模式。
这个命令会自动修改/etc/lvm/lvm.conf配置文件中的locking_type和use_lvmetad选项的值

[root@node201 ~]# lvmconf --enable-cluster
[root@node201 ~]# cat /etc/lvm/lvm.conf|egrep -E 'locking_type|use_lvm'|grep -v '#'
    locking_type = 3
    use_lvmetad = 0

2、查看集群配置

[root@node201 ~]# corosync-quorumtool -s
Quorum information
------------------
Date:             Tue Sep  3 16:59:31 2024
Quorum provider:  corosync_votequorum
Nodes:            3
Node ID:          1
Ring ID:          1.d0
Quorate:          Yes

Votequorum information
----------------------
Expected votes:   4
Highest expected: 4
Total votes:      4
Quorum:           3
Flags:            Quorate Qdevice

Membership information
----------------------
    Nodeid      Votes    Qdevice Name
         1          1    A,V,NMW node201 (local)
         2          1    A,V,NMW node202
         3          1    A,V,NMW node203
         0          1            Qdevice

3、启动集群服务(all nodes)
在 LVM 之外使用 GFS2 文件系统时,Red Hat 只支持在 CLVM 逻辑卷中创建的 GFS2 文件系统。CLVM 包含在 Resilient Storage Add-On 中。这是在集群范围内部署 LVM,由在集群中管理 LVM 逻辑卷的 CLVM 守护进程 clvmd 启用。该守护进程可让 LVM2 在集群间管理逻辑卷,允许集群中的所有节点共享该逻辑卷

[root@node201 ~]# systemctl enable dlm
[root@node201 ~]# systemctl start dlm

[root@node201 ~]# systemctl enable clvmd
[root@node201 ~]# systemctl start clvmd

如下所示,clvmd服务状态:

4、创建gfs文件系统
1)创建物理卷

[root@node201 ~]# pvcreate /dev/sdc
WARNING: dos signature detected on /dev/sdc at offset 510. Wipe it? [y/n]: y
  Wiping dos signature on /dev/sdc.
  Physical volume "/dev/sdc" successfully created.

2)查看物理卷信息

[root@node201 ~]# pvscan
  PV /dev/sda2   VG centos          lvm2 [102.39 GiB / 64.00 MiB free]
  PV /dev/sdc                       lvm2 [4.00 GiB]
  Total: 2 [106.39 GiB] / in use: 1 [102.39 GiB] / in no VG: 1 [4.00 GiB]
[root@node201 ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  102.39g 64.00m
  /dev/sdc          lvm2 ---    4.00g  4.00g

3)创建集群卷组

[root@node201 ~]# vgcreate -Ay -cy gfsvg /dev/sdc
  Clustered volume group "gfsvg" successfully created
  
[root@node201 ~]# vgdisplay /dev/gfsvg
  --- Volume group ---
  VG Name               gfsvg
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  Clustered             yes
  Shared                no
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <3.97 GiB
  PE Size               4.00 MiB
  Total PE              1016
  Alloc PE / Size       0 / 0
  Free  PE / Size       1016 / <3.97 GiB
  VG UUID               mFPDmx-yrW4-e4EZ-mqKE-Ya25-lHWw-yKdY3i

4)创建逻辑卷

[root@node201 ~]# lvcreate -L 2G -n lv_gfs1 gfsvg
WARNING: LVM2_member signature detected on /dev/gfsvg/lv_gfs1 at offset 536. Wipe it? [y/n]: y
  Wiping LVM2_member signature on /dev/gfsvg/lv_gfs1.
  Logical volume "lv_gfs1" created.
[root@node201 ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/gfsvg/lv_gfs1
  LV Name                lv_gfs1
  VG Name                gfsvg
  LV UUID                Pjy2Qy-4MXj-pR87-2NcQ-9E02-5BF4-eHz3XR
  LV Write Access        read/write
  LV Creation host, time node201, 2024-09-02 19:43:43 +0800
  LV Status              available
  # open                 0
  LV Size                2.00 GiB
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:3

# 查看逻辑卷信息
[root@node201 ~]# lvs -o +devices gfsvg
  LV      VG    Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Devices
  lv_gfs1 gfsvg -wi-a----- 2.00g                                                     /dev/sdc(0)

5)创建gfs文件系统

[root@node201 ~]# mkdir /mnt/shgfs
# 创建gfs2文件系统
[root@node201 ~]# mkfs.gfs2 -p lock_dlm -t test_cluster:gfs2 -j 2 /dev/gfsvg/lv_gfs1
/dev/gfsvg/lv_gfs1 is a symbolic link to /dev/dm-3
This will destroy any data on /dev/dm-3
Are you sure you want to proceed? (Y/N): y
Discarding device contents (may take a while on large devices): Done
Adding journals: Done
Building resource groups: Done
Creating quota file: Done
Writing superblock and syncing: Done
Device:                    /dev/gfsvg/lv_gfs1
Block size:                4096
Device size:               2.00 GB (524288 blocks)
Filesystem size:           2.00 GB (524285 blocks)
Journals:                  2
Journal size:              16MB
Resource groups:           10
Locking protocol:          "lock_dlm"
Lock table:                "test_cluster:gfs2"
UUID:                      445e065a-08e2-4d0b-81cc-5325cc444c54

# 挂载gfs2文件系统
[root@node201 ~]# mount -t gfs2 /dev/gfsvg/lv_gfs1  /mnt/shgfs

[root@node201 ~]# mount -v |grep gfs
/dev/mapper/gfsvg-lv_gfs1 on /mnt/shgfs type gfs2 (rw,relatime)

# 访问gfs2文件系统
[root@node201 ~]# cd /mnt/shgfs/
[root@node201 shgfs]# touch gfs1
[root@node201 shgfs]# ls -lh
total 4.0K
-rw-r--r-- 1 root root 0 Sep  2 19:46 gfs1

mkfs创建gfs2文件系统格式:
mkfs.gfs2 -p LockProtoName -t LockTableName -j NumberJournals BlockDevice

  • LockProtoName
    指定要使用的锁定协议名称,集群的锁定协议为 lock_dlm。
  • LockTableName
    这个参数是用来指定集群配置中的 GFS2 文件系统。它有两部分,用冒号隔开(没有空格)如下:ClusterName:FSName
    ClusterName,用来创建 GFS2 文件系统的集群名称。
    FSName,文件系统名称,长度可在 1-16 个字符之间。该名称必须与集群中所有 lock_dlm 文件系统以及每个本地节点中的所有文件系统(lock_dlm 和 lock_nolock)不同。
  • Number
    指定由 mkfs.gfs2 命令生成的日志数目。每个要挂载文件系统的节点都需要一个日志。对于 GFS2 文件系统来说,以后可以添加更多的日志而不会增大文件系统。
  • BlockDevice
    指定逻辑卷或者物理卷。

附件:常见错误

1、 运行pvs、vgcreate等lvm相关命令时提示connect()等错误
错误示例如下,原因是clvmd没有正常启动

connect() failed on local socket: 没有那个文件或目录
Internal cluster locking initialisation failed.
WARNING: Falling back to local file-based locking.
Volume Groups with the clustered attribute will be inaccessible.
运行pvs、vgcreate等lvm相关命令时提示Skipping clustered volume group XXX或者Device XXX excluded by a filter

这通常是做了vgremove等操作后、或块设备上存在旧的卷组信息导致的。

2、无clvmd服务
如下所示,启动clvmd服务,提示无此service:

[root@node202 ~]# systemctl start clvmd
Failed to start clvmd.service: Unit not found.

[root@node202 ~]# ls /etc/rc.d/init.d/clvmd
ls: cannot access /etc/rc.d/init.d/clvmd: No such file or directory

安装lvm2-sysvinit软件:
[root@node202 ~]# yum install -y lvm2-sysvinit-2.02.187-6.el7_9.5.x86_64
[root@node202 ~]# ls /etc/rc.d/init.d/clvmd
/etc/rc.d/init.d/clvmd

标签:CentOS,cluster,GFS2,node203,node202,node201,集群,共享,root
From: https://www.cnblogs.com/tiany1224/p/18396351

相关文章

  • 在centos上安装docker
    第一步,安装docker,因为我是在centos上面安装的docker,这里就细讲centos的安装步骤1:官方建议Linux内核为3.10及以上,我们可以查看一下自己的Linux内核uname-r2:启用centos-extras存储库该存储库默认情况下是处于启用状态的,如果之前禁用过,需要重新启用它yumrepolistenabled......
  • 共享单车小程序-计算机毕业设计源码+LW文档
    摘要随着高校规模扩大和师生出行需求增长,传统出行方式已难以满足校园绿色、便捷出行的要求。单车以其环保、节能、灵活的特点,逐渐成为校园出行的理想选择。然而,单车的随意停放和管理难题也随之而来。因此,搭建一个集租赁、管理、监控于一体的共享单车小程序显得尤为必要。这不仅有......
  • java并发 共享模型之管程 4.
    1. waitnotify1.小故事原理注:虽然 blocked 和 waiting 状态的线程都在等待,但二者有区别。waiting 状态的线程通常是因为它持有了某个对象的锁,但由于某个条件不满足而被挂起。线程在 waiting 状态中会等待其他线程通过调用 notify() 或 notifyAll() 来通知它......
  • 如何通过SMB协议添加隐藏的共享路径映射为本地驱动器?
    要将远程服务器上的隐藏共享路径(如D:\wwwroot\WINCEAPI)映射为本地驱动器,你可以按照以下步骤操作:Windows系统打开文件资源管理器:按 Win+E 快捷键,或者在任务栏上点击文件夹图标。映射网络驱动器:在文件资源管理器的地址栏中输入 \\192.168.1.111,然后按Enter键。......
  • Hyper-V 安装 Centos
    Author:ACatSmilingSince:2024-09-02CentOS安装ISO镜像下载官方网站:https://www.centos.org/目前,最新版本为CentOSStream9:本文以CentOS7为例,下载页拉到下面,选择旧版本安装。OlderVersionsLegacyversionsofCentOSarenolongersupported.Forhistor......
  • 使用centos7搭建Cloudreve,在这条路上我尝试过自建、Owncloud等,恰巧最近发现了 Cloudre
     1.首先开始之前配置一个华为的源vi/etc/yum.repos.d/openstack.repo#内容如下[base]name=basebaseurl=https://repo.huaweicloud.com/centos/7/os/x86_64/enable=1gpgcheck=0[extras]name=extraxbaseurl=https://repo.huaweicloud.com/centos/7/extras/x86_64/......
  • 【SCI复现】基于纳什博弈和ADMM的多微网主体能源共享研究(Matlab代码实现)
    ......
  • centos8 配置清华大学yum源
    在CentOS8上更换为清华源,你需要编辑/etc/yum.repos.d/CentOS-Linux-BaseOS.repo和/etc/yum.repos.d/CentOS-Linux-AppStream.repo文件,将其中的baseurl和metalink地址替换为清华源地址。1.备份原始的repo文件:sudocp/etc/yum.repos.d/CentOS-Linux-BaseOS.repo/etc/yum.repos.d/C......
  • 【开题报告】基于Springboot+vue家庭儿童玩具共享系统(程序+源码+论文) 计算机毕业设计
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着家庭对儿童早期教育的重视及生活水平的提高,儿童玩具市场需求日益增长,但同时也带来了资源浪费与存储空间不足的问题。许多家庭在购买大量玩具后,发......
  • CentOS 7 docker 部署遇到内网通,外网不同 问题
     问题  [root@localhost~]#systemctlstatusnetwork●network.service-LSB:Bringup/downnetworkingLoaded:loaded(/etc/rc.d/init.d/network;bad;vendorpreset:disabled)Active:failed(Result:exit-code)sinceTue2024-09-0314:21:22CST;......