iSCSI(二)iSCSI cLVM GFS2 配置共享存储

iSCSI(二)iSCSI cLVM GFS2 配置共享存储

       在《RHCS 及 RHCS配置》认识了RHCS并用cman+rgmanager进行了集群的相关配置,在前面《iSCSI 及 iSCSI配置》认识并配置了iSCSI,但在测试中发现了多个节点挂载同时使用很可能会造成数据崩溃的问题,下面将解决这个问题,在前文的基础上配置iSCSI+c.LVM+GFS2的共享存储。

1、认识GFS2

       GFS2(Global File System 2,全局文件系统v2)是一种由RedHat公司开发的,允许群集节点同时访问某个共享的块设备的群集文件系统。

       GFS2是一个原生的(native)文件系统,它直接和Linux内核文件系统接口的VFS层进行通信。GFS2使用分布式元数据和多个日志来优化群集操作。要维护文件系统的完整性,GFS2使用一个分布式锁管理器(DLM,DistributedLock Manager)来协调I/O,当一个节点操作系统时,会进行加锁。当节点修改了GFS2文件系统上的数据,这个改动马上为使用这个文件系统的其他群集节点可见。

2、认识cLVM

       CLVM(Cluster Logical Volume Manager,群集逻辑卷管理器)是LVM的一组群集的扩展。这些扩展允许计算机群集使用LVM管理共享存储(例如:在SAN中),当在一个节点上对共享存储进行LVM操作时,会通过高可用组件通知其他节点。

       要使用CLVM,则必须运行红帽集群套件,其中包括clvmd守护进程。 clvmd守护进程是LVM的关键集群扩展。clvmd 在每个集群节点中运行,并在集群中发布LVM元数据更新,用相同的逻辑卷视图来显示每个集群节点。

3、相关准备配置

3-1、具体使用环境资源

扫描二维码关注公众号,回复: 1922795 查看本文章

1、各主机系统:RHEL 5.8 64bit

2、Target:

Soft:scsi-target-utils

IP:192.168.18.240

LUN1:/dev/sda5 50G(以分区代替)

LUN2:/dev/sda6 20G

3、三台节点主机node1,node2,node3:

Soft:

iscsi-initiator-utils

cman, rgmanger

lvm2-cluster

gfs2-utils

Node1: IP:192.168.18.241 host name:node1.tjiyu,com;

Node2: IP:192.168.18.242 host name:node2.tjiyu.com;

Node3: IP:192.168.18.243 host name:node3.tjiyu.com;

3-2、配置前所需要的准备

1、像在前面《iSCSI 及 iSCSI配置》配置iSCSI,可以在各节点上识别到两个LUN为磁盘设备:

2、像《RHCS 及 RHCS配置》配置cman+rgmanager集群,不用配置资源,到"4-4、启动cman和rgmanager"使群集可以正常运行就可以了注意,本文主要不是配置高可用集群,所以像配置clvmd资源,gfs2资源挂载都不进行。集群状态如下:

4、下载安装cLVM和GFS2管理工具

       配置好yum源,直接各节点上分别执行安装lvm2-cluster和gfs2-utils,当然也可以在Target上通过SSH执行,但那是串行的,不如分别在各节点上分别执行快;注意,这两个只是管理工具(类似ipvsadm),具体的数据处理模块已整合在内核中,如下:

[plain]  view plain  copy
  1. [root@node3 ~]# yum install -y lvm2-cluster gfs2-utils  

5、配置cLVM

5-1、配置使用LVM的集群功能

      各节点LVM功能默认不是开启集群功能的,需要手动配置使用,可以用lvmconf --enable-cluster命令开启,这命令实际上是使得/etc/lvm/lvm.conf配置文件里的locking_type为3(默认为1),如下:

[plain]  view plain  copy
  1. [root@localhost ~]# ssh_node 'lvmconf --enable-cluster'; done  
  2.   
  3. [root@localhost ~]# ssh_node 'grep "locking_type = 3" /etc/lvm/lvm.conf'; done  

5-2、启动clvmd服务

       上面认识cLVM时就说到lvmd守护进程是LVM的关键集群扩展,必须在每个集群​​​​​​​节点中运行,所以可以把这个配置成集群的clone资源,但本文简单处理就不配置了,直接在各节点上配置开机启动,然后启动服务,如下:

[plain]  view plain  copy
  1. [root@localhost ~]# ssh_node 'chkconfig clvmd on'; done  
  2.   
  3. [root@localhost ~]# ssh_node 'service clvmd start'; done  

5-3、创建集群逻辑卷

       前面配置iSCSI后,在各节点可以识别到两个磁盘设备/dev/sdb和/dev/sdc,测试时还把/dev/sdb格式化一个分区,这里就用另外一个20G的/dev/sdc,先在node1创建物理卷,然后创建卷组,最后创建一个2G的逻辑卷(空间小点,加快测试),如下:

[plain]  view plain  copy
  1. [root@node1 cluster]# pvcreate /dev/sdc  
  2.   
  3. [root@node1 cluster]# vgcreate clustervg /dev/sdc  
  4.   
  5. [root@node1 cluster]# vgs  
  6.   
  7. [root@node1 cluster]# lvcreate -L 2G -n clusterlv clustervg  
  8.   
  9. [root@node1 cluster]# lvs  

       在node1上创建好后,在其他节点也可以识别到,如下:

[plain]  view plain  copy
  1. [root@localhost ~]# ssh_node 'lvs'; done  

6、配置GFS2

6-1、格式化GFS2

      将上面创建的集群逻辑卷格式化为GFS2,这需要使用mkfs.gfs2命令工具,mkfs.gfs2用法如下:

[plain]  view plain  copy
  1. mkfs.gfs2  
  2.   
  3.     -j #: 指定日志区域的个数,有几个就能够被几个节点所挂载;  
  4.   
  5.     -J #: 指定日志区域的大小,默认为128MB;  
  6.   
  7.     -p {lock_dlm|lock_nolock}:所使用的锁协议名称,集群需要使用lock_dlm;  
  8.   
  9.     -t <name>: 锁表的名称,格式为clustername:fsname, clustername为当前节点所在的集群的名称,这也是为什么要使用RHCS;fsname文件系统名称,自定义,要在当前集群惟一,这也叫锁表名称,表明是分布式锁的范围。  

      下面我们在node1先格式化创建两个日志区,测试下看三个节点能否都挂载上来,操作如下:

[plain]  view plain  copy
  1. [root@node1 cluster]# mkfs.gfs2 -j 2 -p lock_dlm -t tjiyu_cluster:sharedstorage /dev/clustervg/clusterlv  

      在各节点创建挂载目录/sharedstore,测试下看三个节点能否都挂载上来,可以看到提示日志区不够,如下:

[plain]  view plain  copy
  1. [root@localhost ~]# ssh_node 'mkdir /sharedstore'; done  
  2.   
  3. [root@localhost ~]# ssh_node 'mount -t gfs2 /dev/clustervg/clusterlv /sharedstore'; done  

      然后在node1上操作增加集群逻辑卷的日志区,再各节点重新挂载,成功,如下:

[plain]  view plain  copy
  1. [root@node1 cluster]# gfs2_jadd -j 1 /dev/clustervg/clusterlv  

6-2、挂载可调参数查看和设置

      当各节点成功挂载后,可以查看挂载点的参数,这些参数都是可调的,其中有一个参数new_files_directio,为1时写入数据不会缓存,直接写到存储设备中,这样一个节点的操作另一个节点会立即看到,但性能比较差;注意在node1上设置,其他节点不会生效,操作如下:

[plain]  view plain  copy
  1. [root@node1 cluster]# gfs2_tool gettune /sharedstore  
  2.   
  3. [root@node1 cluster]# gfs2_tool settune /sharedstore new_files_directio 1  
  4.   
  5. [root@node1 cluster]# gfs2_tool gettune /sharedstore  

6-3、扩展集群逻辑卷及GFS2边界

      上面我们创建集群逻辑卷时只给了2G空间,之后可以进行扩展,先要扩展集群逻辑卷大小,还需要扩展GFS2的边界,这些操作在一个节点上进行,其他节点也生效,如下:

[plain]  view plain  copy
  1. [root@node1 cluster]# lvextend -L 3G /dev/clustervg/clusterlv  
  2.   
  3. [root@node1 cluster]# lvs  
  4.   
  5. [root@node1 cluster]# gfs2_grow /dev/clustervg/clusterlv  

7、测试

1、在node1上复制/etc/fstab进去挂载点/sharedstore,可以在各节点上立即看到,如下:

2、在node2上创建两个文件到挂载点/sharedstore,可以在各节点上立即看到,如下:

 

 

       到这里,配置iSCSI+c.LVM+GFS2的共享存储就可以正常运行了,但一些高可用配置没有进行,像clvmd和gfs2目录挂载等都可以作为clone资源运行在高可用集群上, 不过在多节点数据访问量大的情况下这种集群文件系统性能较差,一般都使用分布式的集群文件系统;后面将会认识、配置keepalived、nginx等集群相关组件……

 

 

【参考资料】

1、RedHat官方文档:https://access.redhat.com/documentation/zh_cn/red-hat-enterprise-linux/?version=5/

2、iSCSI 及 iSCSI配置:http://blog.csdn.net/tjiyu/article/details/52811458

3、RHCS 及 RHCS配置:http://blog.csdn.net/tjiyu/article/details/52736285

4、RHEL7 – Configuring GFS2 on Pacemaker/Corosync Cluster:http://www.unixarena.com/2016/01/rhel7-configuring-gfs2-on-pacemakercorosync-cluster.html

5、CentOS6.4+cman+rgmanager+iscsi+gfs2+cLVM 实现廉价的可扩展的集群共享存储:http://freeloda.blog.51cto.com/2033581/1279063

猜你喜欢

转载自blog.csdn.net/shangyuanlang/article/details/80696697