黑帽联盟

 找回密码
 会员注册
查看: 1686|回复: 1
打印 上一主题 下一主题

[集群服务] RHCS,GFS2,ISCSI,CLVM实现共享可扩展集群存储

[复制链接]

895

主题

38

听众

3323

积分

管理员

Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    无聊
    5 天前
  • 签到天数: 1644 天

    [LV.Master]伴坛终老

    一,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实现共享存储配置完毕。

    帖子永久地址: 

    黑帽联盟 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与黑帽联盟享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和黑帽联盟的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、黑帽联盟管理员和版主有权不事先通知发贴者而删除本文

    勿忘初心,方得始终!

    4

    主题

    3

    听众

    302

    积分

    黑帽学员

    Rank: 3Rank: 3

  • TA的每日心情
    郁闷
    2019-5-8 02:08
  • 签到天数: 265 天

    [LV.8]以坛为家I

    竟然看完了,我擦
    来自安卓客户端来自安卓客户端
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部