在上文中已经使用iSCSI搭建IP SAN存储网络,在此基础上,在构建GFS2集群文件系统
前文链接:http://evanlinux.blog.51cto.com/7247558/1388690
准备工作:
已构建完成IP SAN网络
IP地址 | 系统 | |
target主机 | 192.168.0.22 | CentOS 6.4 i386 |
initiator主机 | 192.168.0.23 | CentOS 6.4 i386 |
initiator2主机 | 192.168.0.24 | CentOS 6.4 i386 |
一. GFS概念
前文中,我们已经搭建了SAN存储网络,由于SAN是块级别共享存储,那么当多个节点需要操作同一个共享存储时,麻烦就来,每个节点打开文件所持有的锁都是在本节点内核中的,无法通知其他节点,当多个节点同时读写某一文件,会使整个存储网络崩溃。
因此,如果有多个节点需要同时操作某个共享存储时,就需要集群文件系统GFS。当节点打开文件时,本地持有锁,因此它需要通知其他节点它持有该锁,则GFS必须建立在高可用集群上,本文使用cman+rgmanager构建高可用集群。
二. 配置cman+rgmanager
注:下文中所有操作都在一台initiator上进行,另外一台执行同样的操作即可,当然,也可以在一台initiator上安装ansible作为跳板机,同时在两个节点上执行,针对文件系统的格式化等操作只要在一个节点上完成即可
1. 使两台initiator主机互信
[root@initiator ~]# ssh-copy-id -i .ssh/id_rsa.pub root@initiator2
编辑/etc/hosts 192.168.0.24 initiator2 192.168.0.23 initiator [root@initiator ~]# ssh-keygen -t rsa -P "" [root@initiator ~]# ssh-copy-id -i .ssh/id_rsa.pub root@initiator2
2. 同步时间
[root@initiator ~]# ntpdate time.nist.gov
3. 安装cman和rgmanager
[root@initiator ~]# yum install cman rgmanager -y
4. 建立集群服务,添加节点
[root@initiator ~]# ccs_tool create tcluster [root@initiator ~]# ccs_tool addnode initiator -n 1 [root@initiator ~]# ccs_tool addnode initiator2 -n 2
5. 将配置文件复制到initiator2上
[root@initiator ~]# scp /etc/cluster/cluster.conf initiator2:/etc/cluster/
6. 两个节点上启动cman和rgmanager
[root@initiator ~]# service cman start [root@initiator ~]# service rgmanager start
三. 配置gfs2和clvm
1. 在两个节点上都安装gfs2-utils
[root@initiator ~]# yum install gfs2-utils
2. 将/dev/sdb2格式化为集群文件系统
[root@initiator ~]# mkfs.gfs2 -h Usage: mkfs.gfs2 [options] <device> [ block-count ] Options: -b <bytes> Filesystem block size -c <MB> Size of quota change file -D Enable debugging code -h Print this help, then exit -J <MB> Size of journals -j <num> Number of journals -K Don't try to discard unused blocks -O Don't ask for confirmation -p <name> Name of the locking protocol -q Don't print anything -r <MB> Resource Group Size -t <name> Name of the lock table -u <MB> Size of unlinked file -V Print program version information, then exit
[root@initiator ~]# mkfs.gfs2 -j 2 -p lock_dlm -t tcluster:sdb2 /dev/sdb2
gfs为日志文件系统,每个节点都要有一个日志,本次实验有两个节点,所以创建两个日志
3.将/dev/sdb2挂载到/mnt,就可正常使用
[root@initiator ~]# mount /dev/sdb2 /mnt
4.测试
在initiator主机上,将fstab文件复制到/mnt中,则在initiator2上立刻就能看到
#在initiator主机上 [root@initiator ~]# cp /etc/fstab /mnt #在initiator2主机撒谎能够 [root@initiator2 ~]# ls /mnt fstab
也可以使用tail -f在initiator2上打开文件不退出,在initiator上追加一行,则在initiator2上立刻就能看到
5. gfs2的其它管理工具简单介绍
#查看某文件系统的日志数 [root@initiator ~]# gfs2_tool journals /mnt journal1 - 128MB journal0 - 128MB 2 journal(s) found. #增加日志 [root@initiator ~]# gfs2_jadd -j 1 /mnt Filesystem: /mnt Old Journals 2 New Journals 3 如果需要扩展逻辑卷,其方式与普通逻辑卷相同,只是gfs2文件系统的扩展,则需要gfs2_grow进行,其需要以挂载点为参数: # gfs2-grow /mnt
四. 配置cLVM
1. 在两个节点上安装lvm2-cluster
[root@initiator ~]# yum install lvm2-cluster
2. 为lvm启用集群功能
[root@initiator ~]# lvmconf --enable-cluster
3. 启动clvm服务
[root@initiator ~]# service clvm start
4. 创建集群逻辑卷
将/dev/sda1创建为集群逻辑卷
[root@initiator ~]# pvcreate /dev/sdb1 [root@initiator ~]# vgcreate clustervg /dev/sdb1 [root@initiator ~]# lvcreate -L 2G -n clusterlv clustervg [root@initiator ~]# mkfs.gfs2 -j 2 -p lock_dlm -t tcluster:lv /dev/clustervg/clusterlv [root@initiator ~]# mount /dev/clustervg/clusterlv /mnt
然后再initiator2上直接挂载即可直接使用。