您的位置:首页 > 运维架构 > Linux

centos6.4 环境下配置使用gfs2以及clvm

2014-03-05 14:43 337 查看
博文目录:
环境说明
一、准备工作
二、安装配置iscsi target端
三、安装集群套件
四、配置启动集群服务
五、使用GFS2
六、使用Clvm

环境说明:

1)本配置共有三个测试节点(RHCS集群套件,要求节点最少得3个),分别node1.rhcs.com、node2.rhcs.com和node3.rhcs.com,相的IP地址分别为192.168.88.138、192.168.88.139和192.168.88.141;操作系统为centos6.4 32bit;
2)iscsiserver的主机名为 www.iscsi.com ,ip 地址为192.168.88.145
3)为集群中的每个节点事先配置好yum源;
4)清除防火墙规则iptables -Fservice iptables save

网络拓扑:





一、准备工作
1.1 设定主机名称解析
所有节点的主机名称和对应的IP地址解析服务可以正常工作,且每个节点的主机名称需要跟"uname-n“命令的结果保持一致;因此,需要保证三个测试节点上的/etc/hosts文件均为下面的内容:
192.168.88.138 node1.rhcs.com node1
192.168.88.139 node2.rhcs.com node2
192.168.88.141 node3.rhcs.com node3

1.2 为了使得重新启动系统后仍能保持如上的主机名称,还分别需要在各节点更改/etc/sysconfig/network
把hostname改为各自对应的主机名

1.3 三个节点确保时间保持一致

1.4 在某个节点上配置ssh与其他两个节点互相通信
注:由于后续的诸多设定,如rpm包安装、配置文件修改等都需要在三个节点上同时进行;为了便于实现此过程,我们这里设定node1,使其可以以基于密钥认证的方式与其他个节点进行通信,如此一来,在node1上进行的配置文件的修改,复制给其他两个节点即可。实际使用中,可以设置专用的跳板机,与三个节点通信。

[root@node1 ~]# ssh-keygen
[root@node1 ~]# ssh-copy-id root@node2
[root@node1 ~]# ssh-copy-id root@node2

1.5 验证配置
[root@node1 ~]# date;ssh node2"date";ssh node3 "date"
Wed Mar5 09:47:47 CST 2014
Wed Mar5 09:47:47 CST 2014
Wed Mar5 09:47:47 CST 2014

二、安装与配置iscsi server

2.1 安装服务端软件
注:在www.iscsi.com 这台主机上执行

yum -y install scsi-target.utils

2.2 配置target

配置文件在/etc/tgt/targets.conf

<targetiqn.2014-09.com.iscsi:server.target1> #配置target名称
backing-store /dev/sdb#配置target共享的磁盘
initiator-address 192.168.88.0/24#设定访问控制
</target>

2.3 启动并验证

[root@www ~]# service tgtd start
Starting SCSI target daemon:[OK]
[root@www ~]# chkconfig tgtd on

root@www ~]# tgtadm --mode target --opshow
Target 1:iqn.2014-09.com.iscsi:server.target1
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: IET00010000
SCSI SN: beaf10
Size: 0 MB, Block size: 1
Online: Yes
Removable media: No
Readonly: No
Backing store type: null
Backing store path: None
Backing store flags:
LUN: 1
Type: disk
SCSI ID: IET00010001
SCSI SN: beaf11
Size: 1074 MB, Block size: 512
Online: Yes
Removable media: No
Readonly: No
Backing store type: rdwr
Backing store path: /dev/sdb
Backing store flags:
Account information:
ACL information:
192.168.88.0/24

2.4 在三个节点安装配置initiator端
分别在三个节点安装iscsi-initiator-utils
在三个节点上分别配置InitiatorName

[root@node1 iscsi]# echo"InitiatorName= `iscsi-iname -p "iqn.2014-09.com.iscsi"`"> initiatorname.iscsi
[root@node1 iscsi]# catinitiatorname.iscsi
InitiatorName=iqn.2014-09.com.iscsi:ae6ba451e3a9

在三个节点发现target
[root@node1 ~]# iscsiadm --modediscovery --type sendtargets --portal 192.168.88.145 --discover
Starting iscsid:[OK]
192.168.88.145:3260,1iqn.2014-09.com.iscsi:server.target1
[root@node1 ~]#

在三个节点登陆target 并验证
[root@node1 ~]# iscsiadm --mode node--targetname iqn.2014-09.com.iscsi:server.target1 --portal 192.168.88.145--login
Logging in to [iface: default, target:iqn.2014-09.com.iscsi:server.target1, portal: 192.168.88.145,3260] (multiple)
Login to [iface: default, target:iqn.2014-09.com.iscsi:server.target1, portal: 192.168.88.145,3260] successful.

[root@node1 ~]# fdisk -l

Disk /dev/sda: 32.2 GB, 32212254720bytes
255 heads, 63 sectors/track, 3916cylinders
Units = cylinders of 16065 * 512 =8225280 bytes
Sector size (logical/physical): 512bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes /512 bytes
Disk identifier: 0x000b315a

Device BootStartEndBlocksIdSystem
/dev/sda1*15240960083Linux
Partition 1 does not end on cylinderboundary.
/dev/sda25213261024000083Linux
/dev/sda313261454102400082Linux swap / Solaris

Disk /dev/sdb: 1073 MB, 1073741824 bytes
34 heads, 61 sectors/track, 1011cylinders
Units = cylinders of 2074 * 512 =1061888 bytes
Sector size (logical/physical): 512bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes /512 bytes
Disk identifier: 0x00000000

#到此为止,iscsi配置完成。

三、安装集群套件
RHCS的核心组件为cman和rgmanager,其中cman为基于openais的“集群基础架构层”,rgmanager为资源管理器。RHCS的集群中资源的配置需要修改其主配置文件/etc/cluster/cluster.conf
cman和rgmanager需要分别安装在集群中的每个节点上。

在三个节点分别执行:
yum install cman rgmanager

四、集群配置及其启动
4.1 为集群创建配置文件
RHCS的配置文件/etc/cluster/cluster.conf,其在每个节点上都必须有一份,且内容均相同,其默认不存在,因此需要事先创建,ccs_tool命令可以完成此任务。另外,每个集群通过集群ID来标识自身,因此,在创建集群配置文件时需要为其选定一个集群名称,这里假设其为cluster1。此命令需要在集群中的某一个节点上执行。
[root@node1 ~]# ccs_tool -h
Usage:
ccs_tool [options] <command>

Options:
-verboseMake some operations print moredetails.
-hPrint this usage and exit.
-VPrint version information andexit.

Commands:
helpPrint this usage and exit.
query <xpath query> Query thecluster configuration.
addnode <node>Add a node
delnode <node>Delete a node
lsnodeList nodes
lsfenceList fence devices
addfence <fencedev> Add a newfence device
delfence <fencedev> Delete a fencedevice
createCreate a skeleton config file
addnodeidsAssign node ID numbers to all nodes

[root@node1~]# ccs_tool create cluster1
查看生成的配置文件的内容:
[root@node1 ~]# cat/etc/cluster/cluster.conf
<?xml version="1.0"?>
<cluster name="cluster1"config_version="1">

<clusternodes>
</clusternodes>

<fencedevices>
</fencedevices>

<rm>
<failoverdomains/>
<resources/>
</rm>
</cluster>
4.2为集群添加节点

RHCS集群需要配置好各节点及相关的fence设备后才能启动,因此,这里需要事先将各节点添加进集群配置文件。
每个节点在添加进集群时,需要至少为其配置nodeid(每个节点的id必须惟一)及相关的fence设备两个属性(红帽5上必须配置,红帽6非必须配置,我们这里的系统centos6)。

ccs_tool的addnode子命令可以完成节点添加。

查看ccs_tool添加节点时的帮助信息:
[root@node1 ~]# ccs_tool addnode
Usage: ccs_tool addnode [options]<nodename> [<fencearg>=<value>]...
-n --nodeidNode id (required)
-v --votesNumber of votes for this node (default1)
-a --altnameAlternative name/interface formultihomed hosts
-f --fence_typeName reference of fencing to use
-c --configfileName of configuration file(/etc/cluster/cluster.conf)
-o --outputfileName of output file (defaults to same as--configfile)
-h --helpDisplay this help text

Examples:

Add a new node to default configurationfile:
ccs_tool addnode newnode1 -n 1 -f wti7port=1

Add a new node and dump config file tostdout rather than save it
ccs_tool addnode -o- newnode2 -n 2 -fapc port=1

向集群中添加节点:
[root@node1 ~]# ccs_tool addnode -n 1node1.rhcs.com
[root@node1 ~]# ccs_tool addnode -n 2node2.rhcs.com
[root@node1 ~]# ccs_tool addnode -n 3node3.rhcs.com
查看已经添加完成的节点及相关信息:
[root@node1 ~]# ccs_tool lsnode

Cluster name: cluster1, config_version:4

NodenameVotes Nodeid Fencetype
node1.rhcs.com11
node2.rhcs.com12
node3.rhcs.com

4.3 复制配置文件至其他两个节点:
[root@node1 cluster]# scp cluster.confroot@node2/etc/cluster/
[root@node1 cluster]# scp cluster.confroot@node3:/etc/cluster/

4.4 启动集群
RHCS集群会等待各节点都启动后方才进入正常工作状态,因此,需要把集群各节点上的cman服务同时(一定要同时启动,否则服务启动不起来)启动起来。这分别需要在各节点上执行如下命令。
# /etc/rc.d/init.d/cman start

在三个节点检查服务启动情况,三个节点输出一下信息,表名启动成功
Starting cluster:
Checking if cluster has been disabled atboot...[OK]
Checking Network Manager...[OK]
Global setup...[OK]
Loading kernel modules...[OK]
Mounting configfs...[OK]
Starting cman...[OK]
Waiting for quorum...[OK]
Starting fenced...[OK]
Starting dlm_controld...[ OK]
Tuning DLM kernel config...[OK]
Starting gfs_controld...[OK]
Unfencing self...[OK]
Joining fence domain...[OK]

cman 启动成功后在三个节点启动rgmanager

#至此为止,集群服务启动。

4.5 查看集群状态
[root@node1 ~]# clustat
Cluster Status for cluster1 @ WedMar5 10:21:40 2014
Member Status: Quorate

Member NameIDStatus
------ -------- ------
node1.rhcs.com1 Online, Local
node2.rhcs.com2 Online
node3.rhcs.com3 Online

也可以使用cman_tool的status子命令则以当前节点为视角来显示集群的相关信息。

[root@node1 ~]# cman_tool status
Version: 6.2.0
Config Version: 4
Cluster Name: cluster1
Cluster Id: 53623
Cluster Member: Yes
Cluster Generation: 16
Membership state: Cluster-Member
Nodes: 3
Total votes: 3
Node votes: 1
Quorum: 2
Active subsystems: 8
Flags:
Ports Bound: 0 177
Node name: node1.rhcs.com
Node ID: 1
Multicast addresses: 239.192.209.73
Node addresses: 192.168.88.138

五、配置使用GFS2文件系统

5.1 安装gfs2-utils

5.2 创建gfs2文件系统
mkfs.gfs2为gfs2文件系统创建工具,其一般常用的选项有:

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

5.3 挂载

三个节点挂载文件系统。
[root@node1 ~]# mount /dev/sdb /mnt
[root@node2 ~]#mount /dev/sdb /mnt
[root@node3 ~]# mount /dev/sdb /mnt

5.4 测试文件是否能够同步
在node1 上复制一个文件至/mnt
[root@node3 mnt]# cp /etc/inittab ./
[root@node3 mnt]# ls
inittab
在node2node3 上面查看,此时可以看到文件已经同步。

[root@node2 ~]# cd /mnt/
[root@node2 mnt]# ls
inittab

[root@node3 mnt]# ls
inittab

补充:使用gfs2工具查看挂载目录的属性

用法:
gfs2_tool COMMAND [OPTION]

常用COMMAND

freezeFreeze (quiesce) a GFS2 cluster
gettunePrintout the current values ofthe tuning parameters
in a running filesystem. A bettersourceofsimilar
(morecomprehensive)informationisthatinthe
/proc/mounts file. Running the mountcommandwithno
arguments will also provide the sameinformation. This
option is considered obsoleteandwillprobablybe
removed at some future date.
journalsPrintout information about thejournals in a mounted
filesystem.

clearflag Flag File1 File2
Clearanattribute flag on a file. Thisis now obso-
lete and kept only for backwardcompatibility,chattr
isthepreferredwaytoclear attribute flags. See
setflag for available flags. This optionwill probably
be removed at a future date

[root@node1 ~]# gfs2_tool journals /mnt
journal2 - 128MB
journal1 - 128MB
journal0 - 128MB
3 journal(s) found.

[root@node1 ~]# gfs2_tool gettune /mnt
incore_log_blocks = 8192
log_flush_secs = 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_jdata = 0#设置是否立刻同步到磁盘的,一般设置为1。(可使用gfs2_toolsettune /mnt new_files_jdata 1 来设置)

gfs2-jadd
为挂载至的gfs2文件系统添加新的日志区域:
例如:#gfs2_jadd -j 1 /mnt
gfs2-grow
如果需要扩展逻辑卷,其方式与普通逻辑卷相同,只是gfs2文件系统的扩展,
则需要gfs2_grow进行,其需要以挂载点为参数:

六、使用CLVM

如果期望在gfs2中实现弹性的存储空间,可以使用Clvm
6.1 安装
在三个节点上安装lvm2-cluster
yum install lvm2-cluster

6.2 在RHCS的各节点上,为lvm启用集群功能

启用lvm 集群功能有两种方法:

1.cd /etc/lvm
grep -i "locking_type"lvm.conf
把locking_type= 3

2 .或者在三个节点上执行'lvmconf --enable-cluster

[root@www ~]# lvmconf --help
usage: /sbin/lvmconf <command>
Commands:
Enable clvm: --enable-cluster[--lockinglibdir <dir>] [--lockinglib <lib>]

6.3 再三个节点启动clvmd服务

service clvmd start

这里,在node1 上创建一个卷组,名字为clustervg,从卷组中创建一个400M的逻辑卷命名为clusterlv
逻辑卷的位置在/dev/mycluster/clusterlv
[root@node1 ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb"successfully created
[root@node1 ~]# vgcreate clustervg/dev/sdb
Clustered volume group"clustervg" successfully created
[root@node1 ~]# vgs
VG#PV #LV #SN AttrVSizeVFree
clustervg100 wz--nc 1020.00m 1020.00m
[root@node1 ~]# lvcreate -L 400M -nclusterlv clustervg
Logical volume "clusterlv"created
[root@node1 ~]# lvs
LVVGAttrLSizePool Origin Data%Move LogCpy%Sync Convert
clusterlv clustervg -wi-a----- 400.00m

6.4格式化文件系统;
mkfs.gfs2 -j 3 -p lock_dlm -tcluster1:clusterlv /dev/mycluster/clusterlv

6.5在三个节点挂载并测试

在三个节点挂载,创建文件,看能否立即同步

mount /dev/clustervg/clusterlv /mnt

6.6 扩展集群逻辑卷

使用集群逻辑卷的主要目的是实现文件系统可弹性的扩充。下面我们来研究下怎么扩展集群逻辑卷:
扩展集群逻辑卷和普通逻辑卷的思路一致,但是使用的命令少有差异:
实现思路
1.查看当前大小
2.扩展物理边界
3.扩展逻辑边界

查看当前空间大小
[root@node1 mnt]# lvs#目前的逻辑卷空间为400M
LVVGAttrLSizePool Origin Data%Move LogCpy%Sync Convert
clusterlv clustervg -wi-ao---- 400.00m

扩展物理边界
root@node1 ~]# lvextend -L +300M/dev/clustervg/clusterlv
Extending logical volume clusterlv to700.00 MiB
Logical volume clusterlv successfullyresized

扩展逻辑边界
[root@node1 ~]# gfs2_grow/dev/clustervg/clusterlv
FS: Mount Point: /mnt
FS: Device:/dev/dm-0
FS: Size:102397 (0x18ffd)
FS: RG size:51188 (0xc7f4)
DEV: Size:179200 (0x2bc00)
The file system grew by 300MB.
gfs2_grow complete.

验证:

[root@node1 ~]# df -h
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: