一、描述:部署基于IP网络GNBD方案的GFS。
二、环境:三台采用centos 5.2 x64 的系统,采用PXE方式安装,各有一块8G系统硬盘,另外对gfs服务端增加两块8G硬盘。
三、IP配置:
GFS服务端:10.0.70.51
GFS服务端/客户端:10.0.70.41
GFS客户端:10.0.70.61
四、安装软件:
涉及软件:
kmod-gfs.x86_64 0.1.23-5.el5 installed
kmod-gfs-xen.x86_64 0.1.23-5.el5 installed
kmod-gfs2.x86_64 1.92-1.1.el5 installed
kmod-gfs2-xen.x86_64 1.92-1.1.el5 installed
gfs-utils.x86_64 0.1.17-1.el5 base
gfs2-utils.x86_64 0.1.44-1.el5 base
gnbd.x86_64 1.1.5-1.el5 installed
kmod-gnbd.x86_64 0.1.4-12.el5 installed
kmod-gnbd-xen.x86_64 0.1.4-12.el5 installed
lvm2-cluster.x86_64 2.02.32-4.el5 base
安装命令:
yum -y install gfs* kmod-gfs* gnbd* kmod-gnbd*
五、配置步骤
1、检查先决条件
在编译时,将GFS编译为可加载模块,所以在使用时,首先要加载GFS模块。加载模块命令如下:
#modprobe nolock
在加载gfs模块之前首先要加载nolock模块,因为gfs依赖于nolock模块
#modprobe gfs
编译时,GFS文件系统是以可插入模块方式编译的,所以用此命令加载gfs模块。
内核加载了对GFS文件系统的支持模块后,接下来是创建一个GFS文件系统,使用GFS工具创建GFS文件系统。
2、创建GFS文件系统
命令说明:
gfs_mkfs -p LockProtoName -t LockTableName -j Number BlockDevice
LockProtoName:锁协议,其值有:
lock_dlm标准协议
lock_gulm 早期版本使用
lock_nolock建立本地gfs系统时使用
创建过程:
[root@10_0_70_51 /sbin]# ./mkfs_gfs -j 5 /dev/sdb1 -p nolock
Device: /dev/sdb1
Blocksize: 4096
Filesystem Size: 177484
Journals: 5
Resource Groups: 10
Locking Protocol:
Lock Table:
Syncing...
All Done
[root@10_0_70_51 /sbin]#
说明:将分区/dev/sdb1格式化为gfs文件系统,在本分区内保存日志记录。
3、加载GFS文件系统
格式化完成后,下来是加载GFS文件系统
使用方法:mount -t gfs BlockDevice MountPoint -o option
# mount -t gfs /dev/sdb1 /gfs ##说明:将GFS分区加载到/gfs目录下
GFS: Trying to acquire journal lock 0…
GFS: Trying at journal 0…
GFS: Done
以上表示成功mount
改写/etc/fstab文件,可以让机器启动以后自动加载GFS文件系统加以下内容:
/dev/sdb1 /gfs default 0 0
六、GNBD (Global Network Block Device)全局网络块设备配置
GNBD由服务端和客户端两部分组成,GNBD服务接点从自己的块存储设备中输出块级别存储到一个gfs接点
1、配置GNBD的命令
#gnbd_export 在gnbd服务端创建,输出,管理gnbds
#gnbd_import 在客户端实现输入和管理gnbds
2、启动gnbd服务:
#gnbd_serv
启动成功后显示如下信息:
gnbd_serv: startup succeeded
gnbd_export使用方法:
gnbd_export -d pathname -e gnbdname [-c]
pathname:指定要输出的存储设备
gnbdname:要被客户端使用的设备名,在整个网络上必须是唯一的但是任意的
-o:以只读方式输出设备名
-c:能使用缓存,linux默认不使用
例:gnbd_export -d /dev/sdb2 -e tgnbd2 -c
3、gnbd_import:使用方法:
在使用该命令前,一定要保证gnbd.ko内核模块在接点上已经被加载了,另外,服务端已经要输出块设备.
使用方法:
gnbd_import -i Server
server:要输入gnbds的主机名或ip地址
例:gnbd_import -i nodeA
4、性能问题
在一个 gnbd服务接点上运行gfs
可以在gnbd服务端接点上运行gfs,但性能将受到影响
且必遵从下面的限制:
必须让gnbd服务接点上的所有设备都mount成gfs文件系统,且没有输出任何其他gnbd设备.
gnbd服务接点必须一不能使用缓存的模式输出所有的gnbds,切必须是裸设备.必须在一个逻辑设备的顶部运行而不是在raw devices.上.
6、补充说明
当提示mod缺少信息时候使用命令
#modprobe -l|grep *
查找是否存在模块,之后运行下面命令注册
#modprobe *
没有设置集群,上述命令如有提示加”-n”时候,在命令后加“-n”参数;
GNBD方案经测试性能低于ISCSI方案;