黑帽联盟

标题: RHCS,GFS2,ISCSI,CLVM实现共享可扩展集群存储 [打印本页]

作者: 定位    时间: 2017-6-2 22:44
标题: RHCS,GFS2,ISCSI,CLVM实现共享可扩展集群存储
一,GFS2简介
GFS2是一个基于GFS的先进的集群文件系统,能够同步每台主机的集群文件系统的metadata,能够进行文件锁的管理,并且必须要redhat cluster suite支持,GFS2可以grow,进行容量的调整,不过这是在disk动态容量调整的支持下,也就是本文所要实现的CLVM。

实验环境:
192.168.30.119  tgtd.luojianlong.com  OS:Centos 6.4 x86_64   管理服务器  iscsi-target-server
192.168.30.115  node1.luojianlong.com OS:Centos 6.4 x86_64    iscsi-initiator
192.168.30.116  node2.luojianlong.com OS:Centos 6.4 x86_64    iscsi-initiator
192.168.30.117  node3.luojianlong.com OS:Centos 6.4 x86_64    iscsi-initiator

原理:
node1,node2,node3分别通过ISCSI-initiator登录并挂载tgtd服务器的存储设备,利用RHCS搭建GFS2高可用集群文件系统,且保证3个节点对存储设备能够同时读写访问。

下面是拓扑图:
21.jpg


二,准备工作
分别设置4台服务器的hosts文件,以便能够解析对应节点,设置管理节点到各集群节点的ssh密钥无密码登录,关闭NetworkManager,设置开机不自动启动。
  1. [root@tgtd ~]# cat /etc/hosts
  2. 192.168.30.115 node1.luojianlong.com node1
  3. 192.168.30.116 node2.luojianlong.com node2
  4. 192.168.30.117 node3.luojianlong.com node3
  5. [root@tgtd ~]# ssh-copy-id -i node1
  6. The authenticity of host 'node1 (192.168.30.115)' can't be established.
  7. RSA key fingerprint is 66:2e:28:75:ba:34:5e:b1:40:66:af:ba:37:80:20:3f.
  8. Are you sure you want to continue connecting (yes/no)? yes
  9. Warning: Permanently added 'node1,192.168.30.115' (RSA) to the list of known hosts.
  10. root@node1's password:
  11. Now try logging into the machine, with "ssh 'node1'", and check in:
  12.   .ssh/authorized_keys
  13. to make sure we haven't added extra keys that you weren't expecting.
  14. [root@tgtd ~]# ssh-copy-id -i node2
  15. The authenticity of host 'node2 (192.168.30.116)' can't be established.
  16. RSA key fingerprint is 66:2e:28:75:ba:34:5e:b1:40:66:af:ba:37:80:20:3f.
  17. Are you sure you want to continue connecting (yes/no)? yes
  18. Warning: Permanently added 'node2,192.168.30.116' (RSA) to the list of known hosts.
  19. root@node2's password:
  20. Now try logging into the machine, with "ssh 'node2'", and check in:
  21.   .ssh/authorized_keys
  22. to make sure we haven't added extra keys that you weren't expecting.
  23. [root@tgtd ~]# ssh-copy-id -i node3
  24. The authenticity of host 'node3 (192.168.30.117)' can't be established.
  25. RSA key fingerprint is 66:2e:28:75:ba:34:5e:b1:40:66:af:ba:37:80:20:3f.
  26. Are you sure you want to continue connecting (yes/no)? yes
  27. Warning: Permanently added 'node3,192.168.30.117' (RSA) to the list of known hosts.
  28. root@node3's password:
  29. Now try logging into the machine, with "ssh 'node3'", and check in:
  30.   .ssh/authorized_keys
  31. to make sure we haven't added extra keys that you weren't expecting.
  32. [root@tgtd ~]# for I in {1..3}; do scp /etc/hosts node$I:/etc/; done
  33. hosts                                                                                                    100%  129     0.1KB/s   00:00
  34. hosts                                                                                                    100%  129     0.1KB/s   00:00
  35. hosts
复制代码
  1. [root@tgtd ~]# for I in {1..3}; do ssh node$I 'service NetworkManager stop'; done
  2. Stopping NetworkManager daemon: [  OK  ]
  3. Stopping NetworkManager daemon: [  OK  ]
  4. Stopping NetworkManager daemon: [  OK  ]
  5. [root@tgtd ~]# for I in {1..3}; do ssh node$I 'chkconfig NetworkManager off'; done
复制代码
关闭各节点的iptables,selinux服务
  1. [root@tgtd ~]# for I in {1..3}; do ssh node$I 'service iptables stop'; done
  2. [root@tgtd ~]# for I in {1..3}; do ssh node$I 'setenforce 0'; done
复制代码
集群安装
RHCS的核心组件为cman和rgmanager,其中cman为基于openais的“集群基础架构层”,rgmanager为资源管理器。RHCS的集群中资源的配置需要修改其主配置文件/etc/cluster/cluster.xml实现,其仅安装在集群中的某一节点上即可,而cman和rgmanager需要分别安装在集群中的每个节点上。这里选择将此三个rpm包分别安装在了集群中的每个节点上
  1. [root@tgtd ~]# for I in {1..3}; do ssh node$I 'yum -y install cman rgmanager'; done
复制代码
为集群创建配置文件
RHCS的配置文件/etc/cluster/cluster.conf,其在每个节点上都必须有一份,且内容均相同,其默认不存在,因此需要事先创建,ccs_tool命令可以完成此任务。另外,每个集群通过集群ID来标识自身,因此,在创建集群配置文件时需要为其选定一个集群名称,这里假设其为tcluster。此命令需要在集群中的某个节点上执行
  1. [root@tgtd ~]# for I in {1..3}; do ssh node$I 'ccs_tool create tcluster'; done
复制代码
查看生成的配置文件的内容

[root@node1 cluster]# cat cluster.conf
  1. <?xml version="1.0"?>
  2. <cluster name="tcluster" config_version="1">
  3.   <clusternodes>
  4.   </clusternodes>
  5.   <fencedevices>
  6.   </fencedevices>
  7.   <rm>
  8.     <failoverdomains/>
  9.     <resources/>
  10.   </rm>
  11. </cluster>
复制代码
#ccs_tool命令用于在线更新CCS的配置文件

为集群添加节点
RHCS集群需要配置好各节点及相关的fence设备后才能启动,因此,这里需要事先将各节点添加进集群配置文件。每个节点在添加进集群时,需要至少为其配置node id(每个节点的id必须惟一),ccs_tool的addnode子命令可以完成节点添加。将前面规划的三个集群节点添加至集群中,可以使用如下命令实现。
  1. [root@node1 ~]# ccs_tool addnode -n 1 node1.luojianlong.com
  2. [root@node1 ~]# ccs_tool addnode -n 2 node2.luojianlong.com
  3. [root@node1 ~]# ccs_tool addnode -n 3 node3.luojianlong.com
复制代码
查看已经添加完成的节点及相关信息:
  1. [root@node1 ~]# ccs_tool lsnode
  2. Cluster name: tcluster, config_version: 4
  3. Nodename                        Votes Nodeid Fencetype
  4. node1.luojianlong.com              1    1
  5. node2.luojianlong.com              1    2
  6. node3.luojianlong.com              1    3
复制代码
复制配置文件到其他2个节点
  1. [root@node1 ~]# scp /etc/cluster/cluster.conf node2:/etc/cluster/
  2. [root@node1 ~]# scp /etc/cluster/cluster.conf node3:/etc/cluster/
复制代码
启动集群
RHCS集群会等待各节点都启动后方才进入正常工作状态,因此,需要把集群各节点上的cman服务同时启动起来。这分别需要在各节点上执行如下命令
  1. [root@tgtd ~]# for I in {1..3}; do ssh node$I 'service cman start'; done
  2. Starting cluster:
  3.    Checking if cluster has been disabled at boot... [  OK  ]
  4.    Checking Network Manager... [  OK  ]
  5.    Global setup... [  OK  ]
  6.    Loading kernel modules... [  OK  ]
  7.    Mounting configfs... [  OK  ]
  8.    Starting cman... [  OK  ]
  9.    Waiting for quorum... [  OK  ]
  10.    Starting fenced... [  OK  ]
  11.    Starting dlm_controld... [  OK  ]
  12.    Tuning DLM kernel config... [  OK  ]
  13.    Starting gfs_controld... [  OK  ]
  14.    Unfencing self... [  OK  ]
  15.    Joining fence domain... [  OK  ]
  16. Starting cluster:
  17.    Checking if cluster has been disabled at boot... [  OK  ]
  18.    Checking Network Manager... [  OK  ]
  19.    Global setup... [  OK  ]
  20.    Loading kernel modules... [  OK  ]
  21.    Mounting configfs... [  OK  ]
  22.    Starting cman... [  OK  ]
  23.    Waiting for quorum... [  OK  ]
  24.    Starting fenced... [  OK  ]
  25.    Starting dlm_controld... [  OK  ]
  26.    Tuning DLM kernel config... [  OK  ]
  27.    Starting gfs_controld... [  OK  ]
  28.    Unfencing self... [  OK  ]
  29.    Joining fence domain... [  OK  ]
  30. Starting cluster:
  31.    Checking if cluster has been disabled at boot... [  OK  ]
  32.    Checking Network Manager... [  OK  ]
  33.    Global setup... [  OK  ]
  34.    Loading kernel modules... [  OK  ]
  35.    Mounting configfs... [  OK  ]
  36.    Starting cman... [  OK  ]
  37.    Waiting for quorum... [  OK  ]
  38.    Starting fenced... [  OK  ]
  39.    Starting dlm_controld... [  OK  ]
  40.    Tuning DLM kernel config... [  OK  ]
  41.    Starting gfs_controld... [  OK  ]
  42.    Unfencing self... [  OK  ]
  43.    Joining fence domain... [  OK  ]
复制代码
  1. [root@tgtd ~]# for I in {1..3}; do ssh node$I 'service rgmanager start'; done
  2. Starting Cluster Service Manager: [  OK  ]
  3. Starting Cluster Service Manager: [  OK  ]
  4. Starting Cluster Service Manager: [  OK  ]
复制代码
  1. [root@tgtd ~]# for I in {1..3}; do ssh node$I 'chkconfig rgmanager on'; done
  2. [root@tgtd ~]# for I in {1..3}; do ssh node$I 'chkconfig cman on'; done
复制代码
查看集群状态信息
  1. [root@node1 ~]# clustat
  2. Cluster Status for tcluster @ Tue Apr  1 16:45:23 2014
  3. Member Status: Quorate
  4. Member Name                                                     ID   Status
  5. ------ ----                                                     ---- ------
  6. node1.luojianlong.com                                               1 Online, Local
  7. node2.luojianlong.com                                               2 Online
  8. node3.luojianlong.com                                               3 Online
复制代码
cman_tool的status子命令则以当前节点为视角来显示集群的相关信息
  1. [root@node1 ~]# cman_tool status
  2. Version: 6.2.0
  3. Config Version: 4
  4. Cluster Name: tcluster
  5. Cluster Id: 10646
  6. Cluster Member: Yes
  7. Cluster Generation: 28
  8. Membership state: Cluster-Member
  9. Nodes: 3
  10. Expected votes: 3
  11. Total votes: 3
  12. Node votes: 1
  13. Quorum: 2
  14. Active subsystems: 8
  15. Flags:
  16. Ports Bound: 0 177
  17. Node name: node1.luojianlong.com
  18. Node ID: 1
  19. Multicast addresses: 239.192.41.191
  20. Node addresses: 192.168.30.115
复制代码
cman_tool的nodes子命令则可以列出集群中每个节点的相关信息
  1. [root@node1 ~]# cman_tool nodes
  2. Node  Sts   Inc   Joined               Name
  3.    1   M     24   2014-04-01 16:37:57  node1.luojianlong.com
  4.    2   M     24   2014-04-01 16:37:57  node2.luojianlong.com
  5.    3   M     28   2014-04-01 16:38:11  node3.luojianlong.com
复制代码
cman_tool的services子命令则可以列出集群中每个服务的相关信息
  1. [root@node1 ~]# cman_tool services
  2. fence domain
  3. member count  3
  4. victim count  0
  5. victim now    0
  6. master nodeid 1
  7. wait state    none
  8. members       1 2 3
  9. dlm lockspaces
  10. name          rgmanager
  11. id            0x5231f3eb
  12. flags         0x00000000
  13. change        member 3 joined 1 remove 0 failed 0 seq 3,3
  14. members       1 2 3
复制代码
在tgtd server上安装scsi-target-utils
  1. [root@tgtd ~]# yum -y install scsi-target-utils
  2. [root@tgtd ~]# cp /etc/tgt/targets.conf /etc/tgt/targets.conf.bak
复制代码
编辑target配置文件,定义target
  1. [root@tgtd ~]# vi /etc/tgt/targets.conf
复制代码
# 添加如下内容
  1. <target iqn.2014-04.com.luojianlong:target1>
  2.         backing-store /dev/sdb
  3.         initiator-address 192.168.30.0/24
  4. </target>
  5. [root@tgtd ~]# service  tgtd restart
复制代码
backing-store:指定后端要共享的磁盘编号
initiator-address:授权客户端访问的网络地址
incominguser:设置登录用户的账号密码
启动target并查看
  1. [root@tgtd ~]# tgtadm -L iscsi -m target -o show
  2. Target 1: iqn.2014-04.com.luojianlong:target1
  3.     System information:
  4.         Driver: iscsi
  5.         State: ready
  6.     I_T nexus information:
  7.     LUN information:
  8.         LUN: 0
  9.             Type: controller
  10.             SCSI ID: IET     00010000
  11.             SCSI SN: beaf10
  12.             Size: 0 MB, Block size: 1
  13.             Online: Yes
  14.             Removable media: No
  15.             Prevent removal: No
  16.             Readonly: No
  17.             Backing store type: null
  18.             Backing store path: None
  19.             Backing store flags:
  20.         LUN: 1
  21.             Type: disk
  22.             SCSI ID: IET     00010001
  23.             SCSI SN: beaf11
  24.             Size: 10737 MB, Block size: 512
  25.             Online: Yes
  26.             Removable media: No
  27.             Prevent removal: No
  28.             Readonly: No
  29.             Backing store type: rdwr
  30.             Backing store path: /dev/sdb
  31.             Backing store flags:
  32.     Account information:
  33.     ACL information:
  34.         192.168.30.0/24
复制代码
配置3个节点,使用iscsi-initiator登录tgtd服务的存储设备
  1. [root@tgtd ~]# for I in {1..3}; do ssh node$I 'iscsiadm -m discovery -t st -p 192.168.30.119'; done
  2. 192.168.30.119:3260,1 iqn.2014-04.com.luojianlong:target1
  3. 192.168.30.119:3260,1 iqn.2014-04.com.luojianlong:target1
  4. 192.168.30.119:3260,1 iqn.2014-04.com.luojianlong:target1
  5. [root@tgtd ~]# for I in {1..3}; do ssh node$I 'iscsiadm -m node -T iqn.2014-04.com.luojianlong:target1 -p 192.168.30.119:3260 -l'; done
  6. Logging in to [iface: default, target: iqn.2014-04.com.luojianlong:target1, portal: 192.168.30.119,3260] (multiple)
  7. Login to [iface: default, target: iqn.2014-04.com.luojianlong:target1, portal: 192.168.30.119,3260] successful.
  8. Logging in to [iface: default, target: iqn.2014-04.com.luojianlong:target1, portal: 192.168.30.119,3260] (multiple)
  9. Login to [iface: default, target: iqn.2014-04.com.luojianlong:target1, portal: 192.168.30.119,3260] successful.
  10. Logging in to [iface: default, target: iqn.2014-04.com.luojianlong:target1, portal: 192.168.30.119,3260] (multiple)
  11. Login to [iface: default, target: iqn.2014-04.com.luojianlong:target1, portal: 192.168.30.119,3260] successful.
  12. [root@tgtd ~]# for I in {1..3}; do ssh node$I 'fdisk -l /dev/sdb'; done
  13. Disk /dev/sdb: 10.7 GB, 10737418240 bytes
  14. 64 heads, 32 sectors/track, 10240 cylinders
  15. Units = cylinders of 2048 * 512 = 1048576 bytes
  16. Sector size (logical/physical): 512 bytes / 512 bytes
  17. I/O size (minimum/optimal): 512 bytes / 512 bytes
  18. Disk identifier: 0x00000000
  19. Disk /dev/sdb: 10.7 GB, 10737418240 bytes
  20. 64 heads, 32 sectors/track, 10240 cylinders
  21. Units = cylinders of 2048 * 512 = 1048576 bytes
  22. Sector size (logical/physical): 512 bytes / 512 bytes
  23. I/O size (minimum/optimal): 512 bytes / 512 bytes
  24. Disk identifier: 0x00000000
  25. Disk /dev/sdb: 10.7 GB, 10737418240 bytes
  26. 64 heads, 32 sectors/track, 10240 cylinders
  27. Units = cylinders of 2048 * 512 = 1048576 bytes
  28. Sector size (logical/physical): 512 bytes / 512 bytes
  29. I/O size (minimum/optimal): 512 bytes / 512 bytes
  30. Disk identifier: 0x00000000
复制代码
在其中一个节点上格式化一个分区
  1. [root@node1 ~]# fdisk /dev/sdb
  2. Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
  3. Building a new DOS disklabel with disk identifier 0x7ac42a91.
  4. Changes will remain in memory only, until you decide to write them.
  5. After that, of course, the previous content won't be recoverable.
  6. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
  7. WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
  8.          switch off the mode (command 'c') and change display units to
  9.          sectors (command 'u').
  10. Command (m for help): n
  11. Command action
  12.    e   extended
  13.    p   primary partition (1-4)
  14. p
  15. Partition number (1-4): 1
  16. First cylinder (1-10240, default 1):
  17. Using default value 1
  18. Last cylinder, +cylinders or +size{K,M,G} (1-10240, default 10240): +5G
  19. Command (m for help): w
  20. The partition table has been altered!
  21. Calling ioctl() to re-read partition table.
  22. Syncing disks.
  23. [root@node1 ~]# fdisk /dev/sdb
  24. WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
  25.          switch off the mode (command 'c') and change display units to
  26.          sectors (command 'u').
  27. Command (m for help): n
  28. Command action
  29.    e   extended
  30.    p   primary partition (1-4)
  31. p
  32. Partition number (1-4): 2
  33. First cylinder (5122-10240, default 5122):
  34. Using default value 5122
  35. Last cylinder, +cylinders or +size{K,M,G} (5122-10240, default 10240): +5G
  36. Value out of range.
  37. Last cylinder, +cylinders or +size{K,M,G} (5122-10240, default 10240): +4G
  38. Command (m for help): w
  39. The partition table has been altered!
  40. Calling ioctl() to re-read partition table.
  41. Syncing disks.
  42. [root@node1 ~]# fdisk -l /dev/sdb
  43. Disk /dev/sdb: 10.7 GB, 10737418240 bytes
  44. 64 heads, 32 sectors/track, 10240 cylinders
  45. Units = cylinders of 2048 * 512 = 1048576 bytes
  46. Sector size (logical/physical): 512 bytes / 512 bytes
  47. I/O size (minimum/optimal): 512 bytes / 512 bytes
  48. Disk identifier: 0x7ac42a91
  49.    Device Boot      Start         End      Blocks   Id  System
  50. /dev/sdb1               1        5121     5243888   83  Linux
  51. /dev/sdb2            5122        9218     4195328   83  Linux
复制代码
配置使用gfs2文件系统
  1. [root@tgtd ~]# for I in {1..3}; do ssh node$I 'yum -y install gfs2-utils'; done
复制代码
使用gfs2命令工具在之前创建好的/dev/sdb1上创建集群文件系统gfs2,可以使用如下命令
  1. [root@node1 ~]# mkfs.gfs2 -j 3 -p lock_dlm -t tcluster:sdb1 /dev/sdb1
  2. This will destroy any data on /dev/sdb1.
  3. It appears to contain: Linux GFS2 Filesystem (blocksize 4096, lockproto lock_dlm)
  4. Are you sure you want to proceed? [y/n] y
  5. Device:                    /dev/sdb1
  6. Blocksize:                 4096
  7. Device Size                5.00 GB (1310972 blocks)
  8. Filesystem Size:           5.00 GB (1310970 blocks)
  9. Journals:                  3
  10. Resource Groups:           21
  11. Locking Protocol:          "lock_dlm"
  12. Lock Table:                "tcluster:sdb1"
  13. UUID:                      478dac97-c25f-5bc8-a719-0d385fea23e3
复制代码
mkfs.gfs2为gfs2文件系统创建工具,其一般常用的选项有:

-b BlockSize:指定文件系统块大小,最小为512,默认为4096;
-J MegaBytes:指定gfs2日志区域大小,默认为128MB,最小值为8MB;
-j Number:指定创建gfs2文件系统时所创建的日志区域个数,一般需要为每个挂载的客户端指定一个日志区域;
-p LockProtoName:所使用的锁协议名称,通常为lock_dlm或lock_nolock之一;
-t LockTableName:锁表名称,一般来说一个集群文件系统需一个锁表名以便让集群节点在施加文件锁时得悉其所关联到的集群文件系统,锁表名称为clustername:fsname,其中的clustername必须跟集群配置文件中的集群名称保持一致,因此,也仅有此集群内的节点可访问此集群文件系统;此外,同一个集群内,每个文件系统的名称必须惟一。

格式化完成后,重启node1,node2,node3,不然无法挂载刚才创建的GFS2分区
  1. [root@node1 ~]# mount /dev/sdb1 /mnt/
  2. [root@node1 ~]# cp /etc/fstab /mnt/
复制代码
# 在node2,node3上面也同时挂载/dev/sdb1
  1. [root@node2 ~]# mount /dev/sdb1 /mnt/
  2. [root@node3 ~]# mount /dev/sdb1 /mnt/
复制代码
# 在node1上挂载目录中写入数据,检测node2,node3的挂载目录数据情况
  1. [root@node2 mnt]# tail -f fstab
  2. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  3. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  4. #
  5. /dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
  6. UUID=db4bad23-32a8-44a6-bdee-1585ce9e13ac /boot                   ext4    defaults        1 2
  7. /dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
  8. tmpfs                   /dev/shm                tmpfs   defaults        0 0
  9. devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
  10. sysfs                   /sys                    sysfs   defaults        0 0
  11. proc                    /proc                   proc    defaults        0 0
  12. [root@node3 mnt]# tail -f fstab
  13. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  14. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  15. #
  16. /dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
  17. UUID=db4bad23-32a8-44a6-bdee-1585ce9e13ac /boot                   ext4    defaults        1 2
  18. /dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
  19. tmpfs                   /dev/shm                tmpfs   defaults        0 0
  20. devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
  21. sysfs                   /sys                    sysfs   defaults        0 0
  22. proc                    /proc                   proc    defaults        0 0
  23. [root@node1 mnt]# echo "hello" >> fstab
  24. [root@node2 mnt]# tail -f fstab
  25. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  26. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  27. #
  28. /dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
  29. UUID=db4bad23-32a8-44a6-bdee-1585ce9e13ac /boot                   ext4    defaults        1 2
  30. /dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
  31. tmpfs                   /dev/shm                tmpfs   defaults        0 0
  32. devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
  33. sysfs                   /sys                    sysfs   defaults        0 0
  34. proc                    /proc                   proc    defaults        0 0
  35. hello
  36. [root@node3 mnt]# tail -f fstab
  37. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  38. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  39. #
  40. /dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
  41. UUID=db4bad23-32a8-44a6-bdee-1585ce9e13ac /boot                   ext4    defaults        1 2
  42. /dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
  43. tmpfs                   /dev/shm                tmpfs   defaults        0 0
  44. devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
  45. sysfs                   /sys                    sysfs   defaults        0 0
  46. proc                    /proc                   proc    defaults        0 0
  47. hello
复制代码
以上信息发现,node2,node3已经发现数据发生变化。

三,配置使用CLVM(集群逻辑卷)
在RHCS集群节点上安装lvm2-cluster
  1. [root@tgtd ~]# for I in {1..3}; do ssh node$I 'yum -y install lvm2-cluster'; done
复制代码
在RHCS的各节点上,为lvm启用集群功能
  1. [root@tgtd ~]# for I in {1..3}; do ssh node$I 'lvmconf --enable-cluster'; done
复制代码
为RHCS各节点启动clvmd服务
  1. [root@tgtd ~]# for I in {1..3}; do ssh node$I 'service clvmd start'; done
  2. Starting clvmd:
  3. Activating VG(s):   2 logical volume(s) in volume group "VolGroup" now active
  4.   clvmd not running on node node3.luojianlong.com
  5.   clvmd not running on node node2.luojianlong.com
  6. [  OK  ]
  7. Starting clvmd:
  8. Activating VG(s):   2 logical volume(s) in volume group "VolGroup" now active
  9.   clvmd not running on node node3.luojianlong.com
  10. [  OK  ]
  11. Starting clvmd:
  12. Activating VG(s):   2 logical volume(s) in volume group "VolGroup" now active
  13. [  OK  ]
复制代码
创建物理卷、卷组和逻辑卷,使用管理单机逻辑卷的相关命令即可
  1. [root@node1 ~]# pvcreate /dev/sdb2
  2.   Physical volume "/dev/sdb2" successfully created
  3. [root@node1 ~]# pvs
  4.   PV         VG       Fmt  Attr PSize  PFree
  5.   /dev/sda2  VolGroup lvm2 a--  29.51g    0
  6.   /dev/sdb2           lvm2 a--   4.00g 4.00g
复制代码
# 此时,在另外的其它节点上也能够看到刚刚创建的物理卷
创建卷组和逻辑卷
  1. [root@node1 ~]# vgcreate clustervg /dev/sdb2
  2.   Clustered volume group "clustervg" successfully created
  3. [root@node1 ~]# lvcreate -L 2G -n clusterlv clustervg
  4.   Logical volume "clusterlv" created
  5. [root@node1 ~]# lvs
  6.   LV        VG        Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  7.   lv_root   VolGroup  -wi-ao---- 25.63g                     
  8.   lv_swap   VolGroup  -wi-ao----  3.88g                     
  9.   clusterlv clustervg -wi-a-----  2.00g
复制代码
在其他节点也能看到对应的逻辑卷
  1. [root@tgtd ~]# for I in {1..3}; do ssh node$I 'lvs'; done
  2.   LV        VG        Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  3.   lv_root   VolGroup  -wi-ao---- 25.63g                     
  4.   lv_swap   VolGroup  -wi-ao----  3.88g                     
  5.   clusterlv clustervg -wi-a-----  2.00g                     
  6.   LV        VG        Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  7.   lv_root   VolGroup  -wi-ao---- 25.63g                     
  8.   lv_swap   VolGroup  -wi-ao----  3.88g                     
  9.   clusterlv clustervg -wi-a-----  2.00g                     
  10.   LV        VG        Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  11.   lv_root   VolGroup  -wi-ao---- 25.63g                     
  12.   lv_swap   VolGroup  -wi-ao----  3.88g                     
  13.   clusterlv clustervg -wi-a-----  2.00g
复制代码
格式化逻辑卷
  1. [root@node1 ~]# lvcreate -L 2G -n clusterlv clustervg
  2.   Logical volume "clusterlv" created
  3. [root@node1 ~]# lvs
  4.   LV        VG        Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  5.   lv_root   VolGroup  -wi-ao---- 25.63g                     
  6.   lv_swap   VolGroup  -wi-ao----  3.88g                     
  7.   clusterlv clustervg -wi-a-----  2.00g                     
  8. [root@node1 ~]# mkfs.gfs2 -p lock_dlm -j 2 -t tcluster:clusterlv /dev/clustervg/clusterlv
  9. This will destroy any data on /dev/clustervg/clusterlv.
  10. It appears to contain: symbolic link to `../dm-2'
  11. Are you sure you want to proceed? [y/n] y
  12. Device:                    /dev/clustervg/clusterlv
  13. Blocksize:                 4096
  14. Device Size                2.00 GB (524288 blocks)
  15. Filesystem Size:           2.00 GB (524288 blocks)
  16. Journals:                  2
  17. Resource Groups:           8
  18. Locking Protocol:          "lock_dlm"
  19. Lock Table:                "tcluster:clusterlv"
  20. UUID:                      c8fbef88-970d-92c4-7b66-72499406fa9c
复制代码
挂载逻辑卷
  1. [root@node1 ~]# mount /dev/clustervg/clusterlv /media/
  2. [root@node2 ~]# mount /dev/clustervg/clusterlv /media/
  3. [root@node3 ~]# mount /dev/clustervg/clusterlv /media/
  4. Too many nodes mounting filesystem, no free journals
复制代码
# 发现node3挂载不了,因为刚才创建了2个journal,需要再添加一个
  1. [root@node1 ~]# gfs2_jadd -j 1 /dev/clustervg/clusterlv
  2. Filesystem:            /media
  3. Old Journals           2
  4. New Journals           3
复制代码
# 然后挂载node3
  1. [root@node3 ~]# mount /dev/clustervg/clusterlv /media/
  2. [root@node1 ~]# df -hT
  3. Filesystem    Type    Size  Used Avail Use% Mounted on
  4. /dev/mapper/VolGroup-lv_root
  5.               ext4     26G  6.1G   18G  26% /
  6. tmpfs        tmpfs    1.9G   38M  1.9G   2% /dev/shm
  7. /dev/sda1     ext4    485M   65M  395M  15% /boot
  8. /dev/sdb1     gfs2    5.1G  388M  4.7G   8% /mnt
  9. /dev/mapper/clustervg-clusterlv
  10.               gfs2    2.0G  388M  1.7G  19% /media
复制代码
扩展逻辑卷
  1. [root@node1 ~]# lvextend -L +2G /dev/clustervg/clusterlv
  2.   Extending logical volume clusterlv to 4.00 GiB
  3.   Logical volume clusterlv successfully resized
  4. [root@node1 ~]# gfs2_grow /dev/clustervg/clusterlv
  5. FS: Mount Point: /media
  6. FS: Device:      /dev/dm-2
  7. FS: Size:        524288 (0x80000)
  8. FS: RG size:     65533 (0xfffd)
  9. DEV: Size:       1048576 (0x100000)
  10. The file system grew by 2048MB.
  11. gfs2_grow complete.
  12. [root@node1 ~]# df -hT
  13. Filesystem    Type    Size  Used Avail Use% Mounted on
  14. /dev/mapper/VolGroup-lv_root
  15.               ext4     26G  6.1G   18G  26% /
  16. tmpfs        tmpfs    1.9G   38M  1.9G   2% /dev/shm
  17. /dev/sda1     ext4    485M   65M  395M  15% /boot
  18. /dev/sdb1     gfs2    5.1G  388M  4.7G   8% /mnt
  19. /dev/mapper/clustervg-clusterlv
  20.               gfs2    4.0G  388M  3.7G  10% /media
复制代码
发现逻辑卷已经被扩展

到此,RHCS,GFS2,ISCSI,CLVM实现共享存储配置完毕。


作者: pangkee    时间: 2017-6-3 01:57
竟然看完了,我擦





欢迎光临 黑帽联盟 (https://bbs.cnblackhat.com/) Powered by Discuz! X2.5