準備環境
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 ~]# 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
Backing store type: rdwr
Backing store path: /dev/sdc
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 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/
檔案立馬建立好了
total 16
-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 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 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.