一,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個節點對儲存設備能夠同時讀寫通路。
下面是拓撲圖:
<a href="http://s3.51cto.com/wyfs02/M01/23/8F/wKiom1M6b0qQH5r3AAFy2epQhV8916.jpg" target="_blank"></a>
二,準備工作
分别設定4台伺服器的hosts檔案,以便能夠解析對應節點,設定管理節點到各叢集節點的ssh密鑰無密碼登入,關閉NetworkManager,設定開機不自動啟動。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<code>[root@tgtd ~]</code><code># cat /etc/hosts</code>
<code>192.168.30.115 node1.luojianlong.com node1</code>
<code>192.168.30.116 node2.luojianlong.com node2</code>
<code>192.168.30.117 node3.luojianlong.com node3</code>
<code>[root@tgtd ~]</code><code># ssh-copy-id -i node1</code>
<code>The authenticity of host </code><code>'node1 (192.168.30.115)'</code> <code>can't be established.</code>
<code>RSA key fingerprint is 66:2e:28:75:ba:34:5e:b1:40:66:af:ba:37:80:20:3f.</code>
<code>Are you sure you want to </code><code>continue</code> <code>connecting (</code><code>yes</code><code>/no</code><code>)? </code><code>yes</code>
<code>Warning: Permanently added </code><code>'node1,192.168.30.115'</code> <code>(RSA) to the list of known hosts.</code>
<code>root@node1's password:</code>
<code>Now try logging into the machine, with </code><code>"ssh 'node1'"</code><code>, and check </code><code>in</code><code>:</code>
<code> </code><code>.</code><code>ssh</code><code>/authorized_keys</code>
<code>to </code><code>make</code> <code>sure we haven</code><code>'t added extra keys that you weren'</code><code>t expecting.</code>
<code>[root@tgtd ~]</code><code># ssh-copy-id -i node2</code>
<code>The authenticity of host </code><code>'node2 (192.168.30.116)'</code> <code>can't be established.</code>
<code>Warning: Permanently added </code><code>'node2,192.168.30.116'</code> <code>(RSA) to the list of known hosts.</code>
<code>root@node2's password:</code>
<code>Now try logging into the machine, with </code><code>"ssh 'node2'"</code><code>, and check </code><code>in</code><code>:</code>
<code>[root@tgtd ~]</code><code># ssh-copy-id -i node3</code>
<code>The authenticity of host </code><code>'node3 (192.168.30.117)'</code> <code>can't be established.</code>
<code>Warning: Permanently added </code><code>'node3,192.168.30.117'</code> <code>(RSA) to the list of known hosts.</code>
<code>root@node3's password:</code>
<code>Now try logging into the machine, with </code><code>"ssh 'node3'"</code><code>, and check </code><code>in</code><code>:</code>
<code>[root@tgtd ~]</code><code># for I in {1..3}; do scp /etc/hosts node$I:/etc/; done</code>
<code>hosts 100% 129 0.1KB</code><code>/s</code> <code>00:00</code>
<code>hosts</code>
<code>[root@tgtd ~]</code><code># for I in {1..3}; do ssh node$I 'service NetworkManager stop'; done</code>
<code>Stopping NetworkManager daemon: [ OK ]</code>
<code>[root@tgtd ~]</code><code># for I in {1..3}; do ssh node$I 'chkconfig NetworkManager off'; done</code>
關閉各節點的iptables,selinux服務
<code>[root@tgtd ~]</code><code># for I in {1..3}; do ssh node$I 'service iptables stop'; done</code>
<code>[root@tgtd ~]</code><code># for I in {1..3}; do ssh node$I 'setenforce 0'; done</code>
叢集安裝
RHCS的核心元件為cman和rgmanager,其中cman為基于openais的“叢集基礎架構層”,rgmanager為資料總管。RHCS的叢集中資源的配置需要修改其主配置檔案/etc/cluster/cluster.xml實作,其僅安裝在叢集中的某一節點上即可,而cman和rgmanager需要分别安裝在叢集中的每個節點上。這裡選擇将此三個rpm包分别安裝在了叢集中的每個節點上
<code>[root@tgtd ~]</code><code># for I in {1..3}; do ssh node$I 'yum -y install cman rgmanager'; done</code>
為叢集建立配置檔案
RHCS的配置檔案/etc/cluster/cluster.conf,其在每個節點上都必須有一份,且内容均相同,其預設不存在,是以需要事先建立,ccs_tool指令可以完成此任務。另外,每個叢集通過叢集ID來辨別自身,是以,在建立叢集配置檔案時需要為其標明一個叢集名稱,這裡假設其為tcluster。此指令需要在叢集中的某個節點上執行
<code>[root@tgtd ~]</code><code># for I in {1..3}; do ssh node$I 'ccs_tool create tcluster'; done</code>
檢視生成的配置檔案的内容
<code>[root@node1 cluster]</code><code># cat cluster.conf</code>
<code><?xml version=</code><code>"1.0"</code><code>?></code>
<code><cluster name=</code><code>"tcluster"</code> <code>config_version=</code><code>"1"</code><code>></code>
<code> </code><code><clusternodes></code>
<code> </code><code><</code><code>/clusternodes</code><code>></code>
<code> </code><code><fencedevices></code>
<code> </code><code><</code><code>/fencedevices</code><code>></code>
<code> </code><code><</code><code>rm</code><code>></code>
<code> </code><code><failoverdomains/></code>
<code> </code><code><resources/></code>
<code> </code><code><</code><code>/rm</code><code>></code>
<code><</code><code>/cluster</code><code>></code>
<code>#ccs_tool指令用于線上更新CCS的配置檔案</code>
為叢集添加節點
RHCS叢集需要配置好各節點及相關的fence裝置後才能啟動,是以,這裡需要事先将各節點添加進叢集配置檔案。每個節點在添加進叢集時,需要至少為其配置node id(每個節點的id必須惟一),ccs_tool的addnode子指令可以完成節點添加。将前面規劃的三個叢集節點添加至叢集中,可以使用如下指令實作。
<code>[root@node1 ~]</code><code># ccs_tool addnode -n 1 node1.luojianlong.com</code>
<code>[root@node1 ~]</code><code># ccs_tool addnode -n 2 node2.luojianlong.com</code>
<code>[root@node1 ~]</code><code># ccs_tool addnode -n 3 node3.luojianlong.com</code>
檢視已經添加完成的節點及相關資訊:
<code>[root@node1 ~]</code><code># ccs_tool lsnode</code>
<code>Cluster name: tcluster, config_version: 4</code>
<code>Nodename Votes Nodeid Fencetype</code>
<code>node1.luojianlong.com 1 1</code>
<code>node2.luojianlong.com 1 2</code>
<code>node3.luojianlong.com 1 3</code>
複制配置檔案到其他2個節點
<code>[root@node1 ~]</code><code># scp /etc/cluster/cluster.conf node2:/etc/cluster/</code>
<code>[root@node1 ~]</code><code># scp /etc/cluster/cluster.conf node3:/etc/cluster/</code>
啟動叢集
RHCS叢集會等待各節點都啟動後方才進入正常工作狀态,是以,需要把叢集各節點上的cman服務同時啟動起來。這分别需要在各節點上執行如下指令
36
37
38
39
40
41
42
43
<code>[root@tgtd ~]</code><code># for I in {1..3}; do ssh node$I 'service cman start'; done</code>
<code>Starting cluster:</code>
<code> </code><code>Checking </code><code>if</code> <code>cluster has been disabled at boot... [ OK ]</code>
<code> </code><code>Checking Network Manager... [ OK ]</code>
<code> </code><code>Global setup... [ OK ]</code>
<code> </code><code>Loading kernel modules... [ OK ]</code>
<code> </code><code>Mounting configfs... [ OK ]</code>
<code> </code><code>Starting cman... [ OK ]</code>
<code> </code><code>Waiting </code><code>for</code> <code>quorum... [ OK ]</code>
<code> </code><code>Starting fenced... [ OK ]</code>
<code> </code><code>Starting dlm_controld... [ OK ]</code>
<code> </code><code>Tuning DLM kernel config... [ OK ]</code>
<code> </code><code>Starting gfs_controld... [ OK ]</code>
<code> </code><code>Unfencing self... [ OK ]</code>
<code> </code><code>Joining fence domain... [ OK ]</code>
<code>[root@tgtd ~]</code><code># for I in {1..3}; do ssh node$I 'service rgmanager start'; done</code>
<code>Starting Cluster Service Manager: [ OK ]</code>
<code>[root@tgtd ~]</code><code># for I in {1..3}; do ssh node$I 'chkconfig rgmanager on'; done</code>
<code>[root@tgtd ~]</code><code># for I in {1..3}; do ssh node$I 'chkconfig cman on'; done</code>
檢視叢集狀态資訊
<code>[root@node1 ~]</code><code># clustat</code>
<code>Cluster Status </code><code>for</code> <code>tcluster @ Tue Apr 1 16:45:23 2014</code>
<code>Member Status: Quorate</code>
<code> </code><code>Member Name ID Status</code>
<code> </code><code>------ ---- ---- ------</code>
<code> </code><code>node1.luojianlong.com 1 Online, Local</code>
<code> </code><code>node2.luojianlong.com 2 Online</code>
<code> </code><code>node3.luojianlong.com 3 Online</code>
cman_tool的status子指令則以目前節點為視角來顯示叢集的相關資訊
<code>[root@node1 ~]</code><code># cman_tool status</code>
<code>Version: 6.2.0</code>
<code>Config Version: 4</code>
<code>Cluster Name: tcluster</code>
<code>Cluster Id: 10646</code>
<code>Cluster Member: Yes</code>
<code>Cluster Generation: 28</code>
<code>Membership state: Cluster-Member</code>
<code>Nodes: 3</code>
<code>Expected votes: 3</code>
<code>Total votes: 3</code>
<code>Node votes: 1</code>
<code>Quorum: 2</code>
<code>Active subsystems: 8</code>
<code>Flags:</code>
<code>Ports Bound: 0 177</code>
<code>Node name: node1.luojianlong.com</code>
<code>Node ID: 1</code>
<code>Multicast addresses: 239.192.41.191</code>
<code>Node addresses: 192.168.30.115</code>
cman_tool的nodes子指令則可以列出叢集中每個節點的相關資訊
<code>[root@node1 ~]</code><code># cman_tool nodes</code>
<code>Node Sts Inc Joined Name</code>
<code> </code><code>1 M 24 2014-04-01 16:37:57 node1.luojianlong.com</code>
<code> </code><code>2 M 24 2014-04-01 16:37:57 node2.luojianlong.com</code>
<code> </code><code>3 M 28 2014-04-01 16:38:11 node3.luojianlong.com</code>
cman_tool的services子指令則可以列出叢集中每個服務的相關資訊
<code>[root@node1 ~]</code><code># cman_tool services</code>
<code>fence domain</code>
<code>member count 3</code>
<code>victim count 0</code>
<code>victim now 0</code>
<code>master nodeid 1</code>
<code>wait state none</code>
<code>members 1 2 3</code>
<code>dlm lockspaces</code>
<code>name rgmanager</code>
<code>id</code> <code>0x5231f3eb</code>
<code>flags 0x00000000</code>
<code>change member 3 joined 1 remove 0 failed 0 </code><code>seq</code> <code>3,3</code>
在tgtd server上安裝scsi-target-utils
<code>[root@tgtd ~]</code><code># yum -y install scsi-target-utils</code>
<code>[root@tgtd ~]</code><code># cp /etc/tgt/targets.conf /etc/tgt/targets.conf.bak</code>
編輯target配置檔案,定義target
<code>[root@tgtd ~]</code><code># vi /etc/tgt/targets.conf</code>
<code># 添加如下内容</code>
<code><target iqn.2014-04.com.luojianlong:target1></code>
<code> </code><code>backing-store </code><code>/dev/sdb</code>
<code> </code><code>initiator-address 192.168.30.0</code><code>/24</code>
<code><</code><code>/target</code><code>></code>
<code>[root@tgtd ~]</code><code># service tgtd restart</code>
backing-store:指定後端要共享的磁盤編号
initiator-address:授權用戶端通路的網絡位址
incominguser:設定登入使用者的賬号密碼
啟動target并檢視
<code>[root@tgtd ~]</code><code># tgtadm -L iscsi -m target -o show</code>
<code>Target 1: iqn.2014-04.com.luojianlong:target1</code>
<code> </code><code>System information:</code>
<code> </code><code>Driver: iscsi</code>
<code> </code><code>State: ready</code>
<code> </code><code>I_T nexus information:</code>
<code> </code><code>LUN information:</code>
<code> </code><code>LUN: 0</code>
<code> </code><code>Type: controller</code>
<code> </code><code>SCSI ID: IET 00010000</code>
<code> </code><code>SCSI SN: beaf10</code>
<code> </code><code>Size: 0 MB, Block size: 1</code>
<code> </code><code>Online: Yes</code>
<code> </code><code>Removable media: No</code>
<code> </code><code>Prevent removal: No</code>
<code> </code><code>Readonly: No</code>
<code> </code><code>Backing store </code><code>type</code><code>: null</code>
<code> </code><code>Backing store path: None</code>
<code> </code><code>Backing store flags:</code>
<code> </code><code>LUN: 1</code>
<code> </code><code>Type: disk</code>
<code> </code><code>SCSI ID: IET 00010001</code>
<code> </code><code>SCSI SN: beaf11</code>
<code> </code><code>Size: 10737 MB, Block size: 512</code>
<code> </code><code>Backing store </code><code>type</code><code>: rdwr</code>
<code> </code><code>Backing store path: </code><code>/dev/sdb</code>
<code> </code><code>Account information:</code>
<code> </code><code>ACL information:</code>
<code> </code><code>192.168.30.0</code><code>/24</code>
配置3個節點,使用iscsi-initiator登入tgtd服務的儲存設備
<code>[root@tgtd ~]</code><code># for I in {1..3}; do ssh node$I 'iscsiadm -m discovery -t st -p 192.168.30.119'; done</code>
<code>192.168.30.119:3260,1 iqn.2014-04.com.luojianlong:target1</code>
<code>[root@tgtd ~]</code><code># 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</code>
<code>Logging </code><code>in</code> <code>to [iface: default, target: iqn.2014-04.com.luojianlong:target1, portal: 192.168.30.119,3260] (multiple)</code>
<code>Login to [iface: default, target: iqn.2014-04.com.luojianlong:target1, portal: 192.168.30.119,3260] successful.</code>
<code>[root@tgtd ~]</code><code># for I in {1..3}; do ssh node$I 'fdisk -l /dev/sdb'; done</code>
<code>Disk </code><code>/dev/sdb</code><code>: 10.7 GB, 10737418240 bytes</code>
<code>64 heads, 32 sectors</code><code>/track</code><code>, 10240 cylinders</code>
<code>Units = cylinders of 2048 * 512 = 1048576 bytes</code>
<code>Sector size (logical</code><code>/physical</code><code>): 512 bytes / 512 bytes</code>
<code>I</code><code>/O</code> <code>size (minimum</code><code>/optimal</code><code>): 512 bytes / 512 bytes</code>
<code>Disk identifier: 0x00000000</code>
在其中一個節點上格式化一個分區
44
45
46
47
48
49
50
51
<code>[root@node1 ~]</code><code># fdisk /dev/sdb</code>
<code>Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel</code>
<code>Building a new DOS disklabel with disk identifier 0x7ac42a91.</code>
<code>Changes will remain </code><code>in</code> <code>memory only, </code><code>until</code> <code>you decide to write them.</code>
<code>After that, of course, the previous content won't be recoverable.</code>
<code>Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)</code>
<code>WARNING: DOS-compatible mode is deprecated. It's strongly recommended to</code>
<code> </code><code>switch off the mode (</code><code>command</code> <code>'c'</code><code>) and change display </code><code>units</code> <code>to</code>
<code> </code><code>sectors (</code><code>command</code> <code>'u'</code><code>).</code>
<code>Command (m </code><code>for</code> <code>help): n</code>
<code>Command action</code>
<code> </code><code>e extended</code>
<code> </code><code>p primary partition (1-4)</code>
<code>p</code>
<code>Partition number (1-4): 1</code>
<code>First cylinder (1-10240, default 1):</code>
<code>Using default value 1</code>
<code>Last cylinder, +cylinders or +size{K,M,G} (1-10240, default 10240): +5G</code>
<code>Command (m </code><code>for</code> <code>help): w</code>
<code>The partition table has been altered!</code>
<code>Calling ioctl() to re-</code><code>read</code> <code>partition table.</code>
<code>Syncing disks.</code>
<code>Partition number (1-4): 2</code>
<code>First cylinder (5122-10240, default 5122):</code>
<code>Using default value 5122</code>
<code>Last cylinder, +cylinders or +size{K,M,G} (5122-10240, default 10240): +5G</code>
<code>Value out of range.</code>
<code>Last cylinder, +cylinders or +size{K,M,G} (5122-10240, default 10240): +4G</code>
<code>[root@node1 ~]</code><code># fdisk -l /dev/sdb</code>
<code>Disk identifier: 0x7ac42a91</code>
<code> </code><code>Device Boot Start End Blocks Id System</code>
<code>/dev/sdb1</code> <code>1 5121 5243888 83 Linux</code>
<code>/dev/sdb2</code> <code>5122 9218 4195328 83 Linux</code>
配置使用gfs2檔案系統
<code>[root@tgtd ~]</code><code># for I in {1..3}; do ssh node$I 'yum -y install gfs2-utils'; done</code>
使用gfs2指令工具在之前建立好的/dev/sdb1上建立叢集檔案系統gfs2,可以使用如下指令
<code>[root@node1 ~]</code><code># mkfs.gfs2 -j 3 -p lock_dlm -t tcluster:sdb1 /dev/sdb1</code>
<code>This will destroy any data on </code><code>/dev/sdb1</code><code>.</code>
<code>It appears to contain: Linux GFS2 Filesystem (blocksize 4096, lockproto lock_dlm)</code>
<code>Are you sure you want to proceed? [y</code><code>/n</code><code>] y</code>
<code>Device: </code><code>/dev/sdb1</code>
<code>Blocksize: 4096</code>
<code>Device Size 5.00 GB (1310972 blocks)</code>
<code>Filesystem Size: 5.00 GB (1310970 blocks)</code>
<code>Journals: 3</code>
<code>Resource Groups: 21</code>
<code>Locking Protocol: </code><code>"lock_dlm"</code>
<code>Lock Table: </code><code>"tcluster:sdb1"</code>
<code>UUID: 478dac97-c25f-5bc8-a719-0d385fea23e3</code>
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分區
52
53
<code>[root@node1 ~]</code><code># mount /dev/sdb1 /mnt/</code>
<code>[root@node1 ~]</code><code># cp /etc/fstab /mnt/</code>
<code># 在node2,node3上面也同時挂載/dev/sdb1</code>
<code>[root@node2 ~]</code><code># mount /dev/sdb1 /mnt/</code>
<code>[root@node3 ~]</code><code># mount /dev/sdb1 /mnt/</code>
<code># 在node1上挂載目錄中寫入資料,檢測node2,node3的挂載目錄資料情況</code>
<code>[root@node2 mnt]</code><code># tail -f fstab</code>
<code># Accessible filesystems, by reference, are maintained under '/dev/disk'</code>
<code># See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info</code>
<code>#</code>
<code>/dev/mapper/VolGroup-lv_root</code> <code>/ ext4 defaults 1 1</code>
<code>UUID=db4bad23-32a8-44a6-bdee-1585ce9e13ac </code><code>/boot</code> <code>ext4 defaults 1 2</code>
<code>/dev/mapper/VolGroup-lv_swap</code> <code>swap swap defaults 0 0</code>
<code>tmpfs </code><code>/dev/shm</code> <code>tmpfs defaults 0 0</code>
<code>devpts </code><code>/dev/pts</code> <code>devpts gid=5,mode=620 0 0</code>
<code>sysfs </code><code>/sys</code> <code>sysfs defaults 0 0</code>
<code>proc </code><code>/proc</code> <code>proc defaults 0 0</code>
<code>[root@node3 mnt]</code><code># tail -f fstab</code>
<code>[root@node1 mnt]</code><code># echo "hello" >> fstab</code>
<code>hello</code>
以上資訊發現,node2,node3已經發現資料發生變化。
三,配置使用CLVM(叢集邏輯卷)
在RHCS叢集節點上安裝lvm2-cluster
<code>[root@tgtd ~]</code><code># for I in {1..3}; do ssh node$I 'yum -y install lvm2-cluster'; done</code>
在RHCS的各節點上,為lvm啟用叢集功能
<code>[root@tgtd ~]</code><code># for I in {1..3}; do ssh node$I 'lvmconf --enable-cluster'; done</code>
為RHCS各節點啟動clvmd服務
<code>[root@tgtd ~]</code><code># for I in {1..3}; do ssh node$I 'service clvmd start'; done</code>
<code>Starting clvmd:</code>
<code>Activating VG(s): 2 logical volume(s) </code><code>in</code> <code>volume group </code><code>"VolGroup"</code> <code>now active</code>
<code> </code><code>clvmd not running on node node3.luojianlong.com</code>
<code> </code><code>clvmd not running on node node2.luojianlong.com</code>
<code>[ OK ]</code>
建立實體卷、卷組和邏輯卷,使用管理單機邏輯卷的相關指令即可
<code>[root@node1 ~]</code><code># pvcreate /dev/sdb2</code>
<code> </code><code>Physical volume </code><code>"/dev/sdb2"</code> <code>successfully created</code>
<code>[root@node1 ~]</code><code># pvs</code>
<code> </code><code>PV VG Fmt Attr PSize PFree</code>
<code> </code><code>/dev/sda2</code> <code>VolGroup lvm2 a-- 29.51g 0</code>
<code> </code><code>/dev/sdb2</code> <code>lvm2 a-- 4.00g 4.00g</code>
<code># 此時,在另外的其它節點上也能夠看到剛剛建立的實體卷</code>
建立卷組和邏輯卷
<code>[root@node1 ~]</code><code># vgcreate clustervg /dev/sdb2</code>
<code> </code><code>Clustered volume group </code><code>"clustervg"</code> <code>successfully created</code>
<code>[root@node1 ~]</code><code># lvcreate -L 2G -n clusterlv clustervg</code>
<code> </code><code>Logical volume </code><code>"clusterlv"</code> <code>created</code>
<code>[root@node1 ~]</code><code># lvs</code>
<code> </code><code>LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert</code>
<code> </code><code>lv_root VolGroup -wi-ao---- 25.63g </code>
<code> </code><code>lv_swap VolGroup -wi-ao---- 3.88g </code>
<code> </code><code>clusterlv clustervg -wi-a----- 2.00g</code>
在其他節點也能看到對應的邏輯卷
<code>[root@tgtd ~]</code><code># for I in {1..3}; do ssh node$I 'lvs'; done</code>
<code> </code><code>clusterlv clustervg -wi-a----- 2.00g </code>
格式化邏輯卷
<code>[root@node1 ~]</code><code># mkfs.gfs2 -p lock_dlm -j 2 -t tcluster:clusterlv /dev/clustervg/clusterlv</code>
<code>This will destroy any data on </code><code>/dev/clustervg/clusterlv</code><code>.</code>
<code>It appears to contain: symbolic link to `..</code><code>/dm-2</code><code>'</code>
<code>Device: </code><code>/dev/clustervg/clusterlv</code>
<code>Device Size 2.00 GB (524288 blocks)</code>
<code>Filesystem Size: 2.00 GB (524288 blocks)</code>
<code>Journals: 2</code>
<code>Resource Groups: 8</code>
<code>Lock Table: </code><code>"tcluster:clusterlv"</code>
<code>UUID: c8fbef88-970d-92c4-7b66-72499406fa9c</code>
挂載邏輯卷
<code>[root@node1 ~]</code><code># mount /dev/clustervg/clusterlv /media/</code>
<code>[root@node2 ~]</code><code># mount /dev/clustervg/clusterlv /media/</code>
<code>[root@node3 ~]</code><code># mount /dev/clustervg/clusterlv /media/</code>
<code>Too many nodes mounting filesystem, no </code><code>free</code> <code>journals</code>
<code># 發現node3挂載不了,因為剛才建立了2個journal,需要再添加一個</code>
<code>[root@node1 ~]</code><code># gfs2_jadd -j 1 /dev/clustervg/clusterlv</code>
<code>Filesystem: </code><code>/media</code>
<code>Old Journals 2</code>
<code>New Journals 3</code>
<code># 然後挂載node3</code>
<code>[root@node1 ~]</code><code># df -hT</code>
<code>Filesystem Type Size Used Avail Use% Mounted on</code>
<code>/dev/mapper/VolGroup-lv_root</code>
<code> </code><code>ext4 26G 6.1G 18G 26% /</code>
<code>tmpfs tmpfs 1.9G 38M 1.9G 2% </code><code>/dev/shm</code>
<code>/dev/sda1</code> <code>ext4 485M 65M 395M 15% </code><code>/boot</code>
<code>/dev/sdb1</code> <code>gfs2 5.1G 388M 4.7G 8% </code><code>/mnt</code>
<code>/dev/mapper/clustervg-clusterlv</code>
<code> </code><code>gfs2 2.0G 388M 1.7G 19% </code><code>/media</code>
擴充邏輯卷
<code>[root@node1 ~]</code><code># lvextend -L +2G /dev/clustervg/clusterlv</code>
<code> </code><code>Extending logical volume clusterlv to 4.00 GiB</code>
<code> </code><code>Logical volume clusterlv successfully resized</code>
<code>[root@node1 ~]</code><code># gfs2_grow /dev/clustervg/clusterlv</code>
<code>FS: Mount Point: </code><code>/media</code>
<code>FS: Device: </code><code>/dev/dm-2</code>
<code>FS: Size: 524288 (0x80000)</code>
<code>FS: RG size: 65533 (0xfffd)</code>
<code>DEV: Size: 1048576 (0x100000)</code>
<code>The </code><code>file</code> <code>system grew by 2048MB.</code>
<code>gfs2_grow complete.</code>
<code> </code><code>gfs2 4.0G 388M 3.7G 10% </code><code>/media</code>
發現邏輯卷已經被擴充
到此,RHCS,GFS2,ISCSI,CLVM實作共享存儲配置完畢。
本文轉自ljl_19880709 51CTO部落格,原文連結:http://blog.51cto.com/luojianlong/1388556,如需轉載請自行聯系原作者