在上文中已经使用iSCSI搭建IP SAN存储网络,在此基础上,在构建GFS2集群文件系统

前文链接:http://evanlinux.blog.51cto.com/7247558/1388690


准备工作:

已构建完成IP SAN网络


IP地址系统
target主机192.168.0.22CentOS 6.4 i386
initiator主机192.168.0.23CentOS 6.4 i386
initiator2主机192.168.0.24CentOS 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上直接挂载即可直接使用。