Ubuntu 12.04配置GFS2

By , June 15, 2013 8:02 pm

简单地作个笔记。

测试环境包含三台服务器。其中一台服务器配置iSCSI TGT山寨一个IP SAN服务,将一块本地硬盘通过iSCSI协议暴露给所有的服务器。三台服务器均通过openi-scsi发现山寨IP SAN所提供的iSCSI存储。具体的配置方法可以参见《在Ubuntu 12.04上配置iSCSI Target服务》一文。

安装GFS2软件:

sudo apt-get install gfs2-utils gfs2-cluster

修改配置文件/etc/cluster/cluster.conf,内容如下(需要根据你的配置替换掉配置文件中的主机名)。

<?xml version="1.0"?>
 <cluster name="myGfs2" config_version="1">
       <clusternodes>
               <clusternode name="node01" nodeid="1"/>
               <clusternode name="node02" nodeid="2"/>
               <clusternode name="node03" nodeid="3"/>
       </clusternodes>
 </cluster>

在所有的服务器上启动cman和gfs2-cluster服务:

sudo chkconfig cman on
sudo chkconfig gfs2-cluster on
sudo /etc/init.d/cman restart
sudo /etc/init.d/gfs2-cluster restart

可以通过cman_tool命令查看集群中的节点:

$ sudo cman_tool nodes
Node  Sts   Inc   Joined               Name
   1   M     12   2013-06-15 16:53:35  node01
   2   M     12   2013-06-15 16:53:35  node02
   3   M      4   2013-06-15 16:53:35  node03

在iSCSI TGT服务器上将通过iSCSI协议暴露出去的硬盘上创建一个分区,并格式化为GFS2文件系统(假设该分区所对应的设备名为/dev/sdc1)。在下面的命令中,-p lock_dlm参数指定使用lock_dlm作为文件系统的加锁机制;-t myGfs2:mydisk参数中的myGfs2是集群的名称,需要与/etc/cluster/cluster.conf中的设置相同,mydisk则是文件系统的标签;-j 16参数指定为该文件系统所创建的日志的份数为16,由于每一个节点需要一份日志,所以该参数也限定了最多可以同时有16个节点挂载同一块磁盘。

sudo mkfs.gfs2 -p lock_dlm -t myGfs2:mydisk -j 16 /dev/sdc1

在所有的服务器上挂载对应的分区到/data目录:

sudo mkdir /data
sudo mount -t gfs2 /dev/sdc1 /data

也可以将对应的配置写入/etc/fstab文件,以便在操作系统启动时自动挂载:

/dev/sdc1        /data        gfs2        _netdev        0        0

可以通过gfs_control命令来查看一些基本的相关信息:

$ sudo gfs_control -n ls
gfs mountgroups
name          mydisk
id            0x48e6326b
flags         0x00000008 mounted
change        member 3 joined 1 remove 0 failed 0 seq 1,1
members       1 2 3 
all nodes
nodeid 1 jid 0 member 1 failed 0 start 1 seq_add 1 seq_rem 0 mount done
nodeid 2 jid 1 member 1 failed 0 start 1 seq_add 1 seq_rem 0 mount done
nodeid 3 jid 2 member 1 failed 0 start 1 seq_add 1 seq_rem 0 mount done

下面利用iozone来对在GFS2上运行虚拟机的文件IO性能做一个简单的测试。在这个测试中,将存储节点A 本地磁盘上的一个分区通过iSCSI TGT服务暴露给所有的服务器,并在此基础上配置GFS2集群文件系统,虚拟机实例运行在计算节点B 上,其磁盘映像文件存放在GFS2上。存储服务器和计算节点的配置都是单颗4 核处理器(Intel(R) Core(TM) i5-3330S CPU @ 2.70GHz),8 GB内存,750GB的7200转SATA硬盘,千兆网卡,运行64位Ubuntu 12.04服务器版+KVM进行虚拟化。虚拟机的配置为2 个处理器核,4 GB内存,10 GB磁盘,运行64位Ubuntu 12.04服务器版,磁盘和网卡都启用了virtio,并且设置虚拟机磁盘缓存参数为cache=”none”。

在我的前一篇博客文章《Ubuntu 12.04配置OCFS2》中对在NFS和OCFS2上分别运行虚拟机的文件IO性能做了一些类似的测试,在这里将NFS、GFS2和OCFS2的测试结果综合如下:

测试环境 write rewrite read reread
存储节点 | 本地硬盘 122684 119326 8564609 8792814
计算节点 | NFS 63184 66472 95322 6738489
计算节点 | OCFS2 75547 82115 175872 7654664
计算节点 | GFS2 61191 64561 8950366 9134438
虚拟机 | NFS 36678 26711 160948 163411
虚拟机 | OCFS2 59251 60797 140720 148803
虚拟机 | GFS2 57181 58439 147742 172711

从这个非常粗糙的测试可以看出,在没有进行任何性能调优的情况下,GFS2和OCFS2的文件IO性能是类似的,都比NFS要好许多。OCFS2的性能似乎比GFS2好一点点,但是优势并不是十分明显。

回头找个强悍一点的FC SAN做个更加详细的测试看看结果。

Leave a Reply

Panorama Theme by Themocracy