前几天接到一个工作,应要求写了个文档,共享出来。
一、GFS概念
Global 文件系统(Global File System, GFS)全局文件系统或是叫集群文件系统。允许多个Linux机器通过网络共享存储设备。每一台机器都可以将网络共享磁盘看作是本地磁盘,而且GFS自己也以本地文件系统的形式出现。如果 某台机器对某个文件执行了些操作,则后来访问此文件的机器就会读到写以后的结果。为底层的共享块设备在文件系统级别提供并发的读写功能。与传统的NAS结构不同,GFS的文件系统层运行于高带宽的FC协议网络(NAS的文件系统层依托传统的IP网络实现),因此更能发挥SAN存储架构的性能优势。 GFS 6.0 集群代码运行于kernel 2.4.xx (RHEL 3 ) 。GFS 6.1代码运行于kernel 2.6.xx 系列 ( RHEL 4) 或其他同级内核的发行版。核心不同实现的方式不同。2.4及2.6.9核心需要核心的配合,2.6.18的核心相对的配置较为简单。下文以Red Hat EL5 为例说明安装是和使用方法。且在Red Hat EL5上还有GFS2(gfs的升级版)
二、实验环境和前提描述
操作系统
Red Hat Enterprise Linux Server release 5.4 32bit
kernel: 2.6.18-164.el5xen
软件版本 :所用软件rhel erver5.4-i386-dvd.iso中
Server目录中的:
cman-2.0.115-1.el5.i386.rpm
gfs2-utils-0.1.62-1.el5.i386.rpm
openais-0.80.6-8.el5.i386.rpm
perl-Net-Telnet-3.03-5.noarch.rpm
perl-XML-LibXML-1.58-5.i386.rpm
perl-XML-LibXML-Common-0.13-8.2.2.i386.rpm
perl-XML-NamespaceSupport-1.09-1.2.1.noarch.rpm
perl-XML-SAX-0.14-5.noarch.rpm
pexpect-2.3-1.el5.noarch.rpm
Cluster目录中的:
rgmanager-2.0.52-1.el5.centos.i386.rpm
system-config-cluster-1.0.57-1.5.noarch.rpm
piranha-0.8.4-13.el5.i386.rpm
ipvsadm-1.24-10.i386.rpm
ClusterStorage目录中的:
gfs-utils-0.1.20-1.el5.i386.rpm
kmod-gfs-0.1.34-2.el5.i686.rpm
kmod-gfs-PAE-0.1.34-2.el5.i686.rpm
kmod-gfs-xen-0.1.34-2.el5.i686.rpm
注:kmod-gfs包的拷贝需要根据uname -a命令的结果拷贝对应的版本;比如我的实验系统执行uname –a的命令的结果如下: [root@gfs1 ~]# uname -aLinux gfs1 2.6.18-164.el5xen #1 SMP Tue Aug 18 16:06:30 EDT 2009 i686 i686 i386 GNU/Linux 所以需要拷贝的kmod-gfs包是:kmod-gfs-xen-0.1.34-3.el5.i686.rpm
三、检查系统的及安装相关软件包
一)、检查软件包
执行如下命令检查系统是否已经安装了相关的软件包(操作系统版本不同包的版本也不相同)
[root@gfs1 ~]# rpm -qa |grep cman
cman-2.0.115-1.el5
[root@gfs1 ~]# rpm -qa |grep gfs
gfs-utils-0.1.20-1.el5
gfs2-utils-0.1.62-1.el5
kmod-gfs-xen-0.1.34-2.el5
[root@gfs1 ~]# rpm -qa |grep openais
openais-0.80.6-8.el5
[root@gfs1 ~]# rpm -qa |grep perl-Net
perl-Net-Telnet-3.03-5
[root@gfs1 ~]# rpm -qa |grep perl-XML
perl-XML-NamespaceSupport-1.09-1.2.1
perl-XML-LibXML-Common-0.13-8.2.2
perl-XML-LibXML-1.58-5
perl-XML-SAX-0.14-5
[root@gfs1 ~]# rpm -qa |grep pexpect
pexpect-2.3-1.el5
[root@gfs1 ~]# rpm -qa |grep piranha
piranha-0.8.4-13.el5
[root@gfs1 ~]# rpm -qa |grep ipvsadm
ipvsadm-1.24-10
[root@gfs1 ~]# rpm -qa |grep rgmanager
rgmanager-2.0.52-1.el5
[root@gfs1 ~]# rpm -qa |grep system-config-cluster
system-config-cluster-1.0.57-1.5
检查有没有相关的包的信息,如果没有请按照下面的方法安装对应得包
二)、安装软件包
请将上文描述的相关的软件包拷贝到系统某一目录中以/home/gfs为例,
#mkdir /home/gfs (创建目录)
上传相关软件至目录下
#cd /home/gfs
因为个软件包有依赖关系请执行如下命令按序列安装,
rpm -ivh perl-Net-Telnet-3.03-5.noarch.rpm
rpm -ivh perl-XML-NamespaceSupport-1.09-1.2.1.noarch.rpm
rpm -ivh perl-XML-SAX-0.14-5.noarch.rpm
rpm -ivh perl-XML-LibXML-Common-0.13-8.2.2.i386.rpm
rpm -ivh perl-XML-LibXML-1.58-5.i386.rpm
rpm -ivh pexpect-2.3-1.el5.noarch.rpm
rpm -ivh openais-0.80.6-8.el5.i386.rpm
rpm -ivh ipvsadm-1.24-10.i386.rpm
rpm -ivh piranha-0.8.4-13.el5.i386.rpm
rpm -ivh gfs2-utils-0.1.62-1.el5.i386.rpm
rpm -ivh gfs-utils-0.1.20-1.el5.i386.rpm
rpm -ivh kmod-gfs-xen-0.1.34-2.el5.i686.rpm
rpm -ivh cman-2.0.115-1.el5.i386.rpm
rpm -ivh rgmanager-2.0.52-1.el5.centos.i386.rpm
rpm -ivh system-config-cluster-1.0.57-1.0.noarch.rpm
四、创建GFS系统
格式化文件系统
格式化的命令如下:
gfs_mkfs -p lock_nolock -j NumberJournals BlockDevice
或者
mkfs -t gfs -p lock_nolock -j NumberJournals BlockDevice
参数解释:
-p lock_nolock 定义为nolock锁方式
-j NumberJournals NumberJournals 为一个数字表示,GFS分区中最多支持多少个节点同时挂载,这个可以在使用中动态调整
BlockDevice 为要格式化的分区
以要格式化的分区/dev/vg0/lvtest1 为例,请执行如下操作:
[root@gfs1 ~]# mkfs.gfs -p lock_nolock -j 3 /dev/vg0/lvtest1
This will destroy any data on /dev/vg0/lvtest1.
It appears to contain a gfs filesystem.
Are you sure you want to proceed? [y/n] y
Device: /dev/vg0/lvtest1
Blocksize: 4096
Filesystem Size: 29652
Journals: 3
Resource Groups: 8
Locking Protocol: lock_nolock
Lock Table:
Syncing...
All Done 此处回到#提示符下标示格式化完毕。
五、挂载文件系统
1、 首先在系统中创建一个挂载目录
[root@gfs1 /]#mkdir /pan
2、 然后执行[root@gfs1 ~]# lsmod |grep gfs 命令检查对应的gfs模块是否加载,如果执行上面命令能看到下面类似的结果
gfs 268644 4 表示对应的模块已经加载,如果没有执行#modprobe gfs 加载模块,一般在安装rpm包的时候会自动加载。
3、 最后执行下面的命令挂载分区
[root@gfs1 /]# mount -t gfs /dev/vg0/lvtest1 /pan/
4、 检查挂载状态执行mount命令能看到类似如下的信息:
[root@gfs1 ClusterStorage]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
…
/dev/mapper/vg0-lvtest1 on /pan type gfs (rw,hostdata=jid=0:id=262145:first=1) 此处说明挂载成功。
5、 检查文件系统状态,进入挂载目录,创建一个文件,使用正常说明文件系统挂载。
[root@gfs1 ClusterStorage]# cd /pan/
[root@gfs1 pan]# ls
[root@gfs1 pan]# touch test 创建一个文件
[root@gfs1 pan]# ls
test
查看创建文件成功,说明文件系统的读写没有问题。
6、自动挂载
vi /etc/fstab 加入
/dev/mapper/vg0-lvtest1 /pan gfs defaults 0 0
对应的信息分别是:
挂载的设备 挂载点 文件系统类型 挂载参数 (0 0 标示开机的挂载时不会自动检测文件系统)