准备环境

node1:192.168.139.2

node2:192.168.139.4

node4:192.168.139.8

node5:192.168.139.9

node1:target

node2|node4|node5:initiator端


在node1安装scsi-target-utils

因为要将发现并登入的target做成集成文件系统及clvm,所以必须在node2 node4 node5上安装gfs2-utils,lvm2-cluster,iscsi-initiator-utils

并且将node2 node4 node5安装cman+rgmanager后配置成一个三节点的RHCS高可用集群,因为gfs2为一个集群文件系统,必须借助HA高可用集群将故障节点Fence掉,及借助Message Layer进行节点信息传递。



[root@node2 ~]# clustat \\这是上一个实验创建的集群,删除掉

Cluster Status for mycluster @ Wed Dec 21 21:58:31 2016

Member Status: Quorate


 Member Name         ID   Status

 ------ ----         ---- ------

 node2.zxl.com       1 Online, Local

 node4.zxl.com       2 Online

 node5.zxl.com       3 Online

[root@node2 ~]# service cman stop

[root@node2 ~]# service cman stop

[root@node2 ~]#  rm -f /etc/cluster/*


通过编辑配置文件的方式。自动创建target,和LUN

[root@node1 tgt]# vim /etc/tgt/targets.conf

#    backing-store /dev/LVM/somedevice

#</target>

<target iqn.2016-12.com.zxl:disk1.1>

  <backing-store /dev/sdc>

  vendor_id zxl

  lun 1

</backing-store>

initiator-address 192.168.139.0/24

incominguser zxl 888

</target>

[root@node1 tgt]# tgtadm --lld iscsi --mode target --op show 

Target 1: iqn.2016-12.com.zxl:disk1.1

    System information:

        Driver: iscsi

        State: ready

    I_T nexus information:

    LUN information:

        LUN: 0

            Type: controller

            SCSI ID: IET     00010000

            SCSI SN: beaf10

            Size: 0 MB, Block size: 1

            Online: Yes

            Removable media: No

            Prevent removal: No

            Readonly: No

            Backing store type: null

            Backing store path: None

            Backing store flags: 

        LUN: 1

            Type: disk

            SCSI ID: IET     00010001

            SCSI SN: beaf11

            Size: 21475 MB, Block size: 512

            Online: Yes

            Removable media: No

            Prevent removal: No

            Readonly: No

            Backing store type: rdwr

            Backing store path: /dev/sdc

            Backing store flags: 

    Account information:

        zxl

    ACL information:

        192.168.139.0/24

[root@node1 tgt]# netstat -tnlp |grep tgtd

tcp        0                 LISTEN      1937/tgtd           

tcp        0                 LISTEN      1937/tgtd  

[root@node1 tgt]# chkconfig tgtd on


直接删除discovery的数据库,清理以前实验的数据

[root@node2 iscsi]#  iscsiadm -m node -T iqn.2016-12.com.zxl:store1.disk1 -p 192.168.139.2 -o delete

[root@node2 iscsi]#  rm -rf /var/lib/iscsi/send_targets/192.168.139.2,3260/ \\192.168.139.2,3260目录下已近没有了记录数据,将这个目录页删了

[root@node4 iscsi]#  iscsiadm -m node -T iqn.2016-12.com.zxl:store1.disk1 -p 192.168.139.2 -o delete

[root@node4 iscsi]#  rm -rf /var/lib/iscsi/send_targets/192.168.139.2,3260/

[root@node5 iscsi]#  iscsiadm -m node -T iqn.2016-12.com.zxl:store1.disk1 -p 192.168.139.2 -o delete

[root@node5 iscsi]#  rm -rf /var/lib/iscsi/send_targets/192.168.139.2,3260/


为initiator起个名

[root@node2 iscsi]# iscsi-iname -p iqn.2016-12.com.zxl \\你写前缀,后缀系统生成

iqn.2016-12.com.zxl:79883141ce9


将initiator_name写入文件

[root@node2 iscsi]# echo "InitiatorName=`iscsi-iname -p iqn.2016-12.com.zxl`" > /etc/iscsi/initiatorname.iscsi 

[root@node2 iscsi]# cat /etc/iscsi/initiatorname.iscsi 

InitiatorName=iqn.2016-12.com.zxl:31dcbfbcf845


[root@node4 iscsi]# echo "InitiatorName=`iscsi-iname -p iqn.2016-12.com.zxl`" > /etc/iscsi/initiatorname.iscsi 

[root@node5 iscsi]# echo "InitiatorName=`iscsi-iname -p iqn.2016-12.com.zxl`" > /etc/iscsi/initiatorname.iscsi 


编辑配置文件,进行基于用户的认证

[root@node2 iscsi]# vim /etc/iscsi/iscsid.conf 

node.session.auth.authmethod = CHAP

node.session.auth.username = zxl

node.session.auth.password = 888


在三个节点执行一下步骤

[root@node2 iscsi]# service iscsi start

[root@node2 iscsi]# chkconfig iscsi on

发现target

[root@node2 iscsi]#  iscsiadm  -m discovery -t st -p 192.168.139.2

192.168.139.2:3260,1 iqn.2016-12.com.zxl:disk1.1

登录target

[root@node2 iscsi]# iscsiadm -m node -T iqn.2016-12.com.zxl:disk1.1 -p 192.168.139.2 -l

Logging in to [iface: default, target: iqn.2016-12.com.zxl:disk1.1, portal: 192.168.139.2,3260] (multiple)

Login to [iface: default, target: iqn.2016-12.com.zxl:disk1.1, portal: 192.168.139.2,3260] successful.


[root@node2 iscsi]# fdisk -l

Disk /dev/sdc: 21.5 GB, 21474836480 bytes


在三个节点安装cman rgmanager gfs2-utils lvm2-cluster


[root@node2 iscsi]# yum install -y cman rgmanager gfs2-utils lvm2-cluster


clvm:将共享存储做成lvm,要借助HA集群的心跳传输机制,脑裂阻止机制......,从而让多个节点共同使用LVM,一个节点对LVM的操作会立马通过集群的Message Layer层通知给其他节点

cLVM在各个节点都启动一个服务clvmd,这个服务让各个节点相互通信


启动lvm集群功能在每个节点上

[root@node2 mnt]# vim /etc/lvm/lvm.conf

 locking_type = 3

或者用命令也可以改

[root@node2 cluster]# lvmconf --enable-cluster 


创建集群,添加Fence设备,加入集群节点

[root@node4 cluster]# ccs_tool create mycluster

[root@node4 cluster]# ccs_tool addfence meatware fence_manual

[root@node4 cluster]# ccs_tool addnode -v 1 -n 1 -f meatware node2.zxl.com

[root@node4 cluster]# ccs_tool addnode -v 1 -n 2 -f meatware node4.zxl.com

[root@node4 cluster]# ccs_tool addnode -v 1 -n 3 -f meatware node5.zxl.com

[root@node4 cluster]# ccs_tool lsnode


Cluster name: mycluster, config_version: 5


Nodename                        Votes Nodeid Fencetype

node2.zxl.com                      1    1    meatware

node4.zxl.com                      1    2    meatware

node5.zxl.com                      1    3    meatware


启动cman rgmanager

[root@node2 mnt]# service cman start

cman启动时启动不了,可能是因为组播冲突,当节点刚启动时,由于没有cluster.conf这个配置文件,节点可能会接受任何组播传来的配置文件(当一个教室许多人同时做实验时),解决办法:提前改一个没人用的组播或者直接将配置文件手动scp过去,不用ccsd自动同步

[root@node2 mnt]# service rgmanager start

[root@node4 mnt]# service cman start

[root@node4 mnt]# service rgmanager start

[root@node5 mnt]# service cman start

[root@node5 mnt]# service rgmanager start

[root@node2 mnt]# clustat 

 

[root@node2 cluster]# clustat 

Cluster Status for mycluster @ Wed Dec 21 23:06:16 2016

Member Status: Quorate


 Member Name                 ID   Status

 ------ ----                 ---- ------

 node2.zxl.com                1 Online, Local

 node4.zxl.com                2 Online

 node5.zxl.com                3 Online

三个节点都进行如下操作

[root@node2 cluster]# service clvmd start

[root@node2 cluster]# chkconfig clvmd on

[root@node2 cluster]# chkconfig cman on

[root@node2 cluster]# chkconfig rgmanager on


创建LVM

[root@node2 cluster]# fdisk -l

Disk /dev/sdb: 21.5 GB, 21474836480 bytes

[root@node2 cluster]# pvcreate /dev/sdc

[root@node2 cluster]# vgcreate clustervg /dev/sdc

[root@node2 cluster]# lvcreate -L 10G -n clusterlv clustervg

  Logical volume "clusterlv" created.

[root@node2 cluster]# lvs

  LV        VG        Attr    LSize   Pool Origin Data%  Meta%  Move Log  Cpy%Sync Convert

 clusterlv clustervg -wi-a-----  10.00g      


换个节点也可以看到创建的LV

[root@node4 cluster]# lvs

  LV        VG        Attr     LSize   Pool Origin Data%  Meta%  Move Log    Cpy%Sync Convert

 clusterlv clustervg -wi-a-----  10.00g     


格式化为gfs2文件系统

[root@node2 ~]# mkfs.gfs2 -j 2 -p lock_dlm -t mycluster:lock1 /dev/clustervg/clusterlv 

[root@node2 ~]# mkdir /mydata

root@node2 ~]# mount -t gfs2 /dev/clustervg/clusterlv /mydata

[root@node2 ~]# cd /mydata/

[root@node2 mydata]# touch a.txt

[root@node2 mydata]# ll

total 8

-rw-r--r--. 1 root root 0 Dec 22 08:57 a.txt


显示所有可调的参数

[root@node2 mydata]# gfs2_tool gettune /mydata

incore_log_blocks = 8192

log_flush_secs = 60 \\60秒刷新一下日志

quota_warn_period = 10

quota_quantum = 60

max_readahead = 262144

complain_secs = 10

statfs_slow = 0

quota_simul_sync = 64

statfs_quantum = 30

quota_scale = 1.0000   (1, 1)

new_files_directio = 0 \\0 表示不直接写入磁盘,要先通知其他节点,1表示直接写入磁盘,性能更                   差

改参数的值为1

[root@node2 mydata]#gfs2_tool settune /mydata new_files_directio 1


冻结集群文件系统,相当于只读模式(创建备份时很好用)

[root@node2 mydata]# gfs2_tool freeze /mydata

[root@node2 mydata]# touch b.txt \\卡着不能创建

另打开一个连接,解除冻结

[root@node2 ~]# gfs2_tool unfreeze /mydata/

文件立马创建好了

[root@node2 mydata]# ll

total 16

-rw-r--r--. 1 root root 0 Dec 22 08:57 a.txt

-rw-r--r--. 1 root root 0 Dec 22 09:25 b.txt


node4挂载测试

[root@node4 ~]# mount /dev/clustervg/clusterlv /mydata/

[root@node4 ~]# cd /mydata/

[root@node4 mydata]# touch c.txt

[root@node4 mydata]# ll

total 24

-rw-r--r--. 1 root root 0 Dec 22 08:57 a.txt

-rw-r--r--. 1 root root 0 Dec 22 09:25 b.txt

-rw-r--r--. 1 root root 0 Dec 22 09:29 c.txt


再加一个日志,再挂载一个节点node5

[root@node2 mydata]# gfs2_jadd -j 1 /dev/clustervg/clusterlv 

[root@node5 ~]# mount /dev/clustervg/clusterlv /mydata/

[root@node5 ~]# cd /mydata/

[root@node5 mydata]# touch d.txt

[root@node5 mydata]# ll

total 32

-rw-r--r--. 1 root root 0 Dec 22 08:57 a.txt

-rw-r--r--. 1 root root 0 Dec 22 09:25 b.txt

-rw-r--r--. 1 root root 0 Dec 22 09:29 c.txt

-rw-r--r--. 1 root root 0 Dec 22 09:31 d.txt


扩展LV(物理边界)

[root@node2 mydata]# lvextend -L +5G /dev/clustervg/clusterlv 

[root@node2 mydata]# lvs \\已经扩展为15G

clusterlv clustervg -wi-ao----  15.00g   

换个节点

[root@node4 mydata]# lvs \\其他节点立马知道了分区大小的改变

 clusterlv clustervg -wi-ao----  15.00g  


扩展gfs2文件系统的边界(逻辑边界)

[root@node2 mydata]# gfs2_grow /dev/clustervg/clusterlv 

  The file system grew by 5120MB.

  gfs2_grow complete.

 

本次实验结束