到gfs2节点和gfs3节点上分别执行以下操作
# modprobe gfs
# modprobe gfs2
# /etc/init.d/gfs restart
# /etc/init.d/gfs2 restart
# /etc/init.d/clvmd restart
#chkconfig --add cman
#chkconfig --add clvmd
#chkconfig --add gfs
#chkconfig --level 35 cman on
#chkconfig --level 35 clvmd on
#chkconfig --level 35 gfs on
# lvscan
#mount /dev/gfsvg/gfs /opt
进入/opt目录查看是否有之前在gfs1上建立的文件file1
如图所示成功,可以在/opt目录里进行任何操作,三台机器将会保持一致,这样就达到了在一台机器上操作,其他机器保持同步的目的,用来提高可用性,当gfs1出了问题后,gfs2和gfs3同样可以用来提供服务!可以在各节点机器上执行命令clustat来查看gfs集群各节点的活动状态:
同样可以执行以下命令来检查是否连接成功
# ccs_test connect
Connect successful.
Connection descriptor = 9600
检查一下是否正常
#ccs_tool lsnode
#ccs_tool lsfence
#cman_tool services
注:在gfs2和gfs3节点上必须启动clvmd服务,不然无法挂载/dev/gfsvg/gfs设备。
如果要在存储服务器上即本实验的iscsi-storage 上,如果有外部节点连接着此存储,要想停止tgtd(service tgtd stop)服务, 有如下提示:
Stopping SCSI target daemon: Stopping target framework daemon
Some initiators are still connected - could not stop tgtd
表示无法停止,而采取杀掉tgtd的pid的方法来停止时,在此用service tgtd start来启动tgtd服务的时候,有如下的提示:
实际上tgtd并没有启动成功,用ps查看是查看不到tgtd服务进程的,要想解决此问题,是因为有个/var/lock/subsys/tgtd文件存在,只需删除掉即可。
# rm /var/lock/subsys/tgtd
在节点机上,如果想开机自动挂载则修改/etc/fstab文件,加入以下内容:
/dev/mapper/gfsvg-gfs /opt gfs defaults 0 0
本人在虚拟机上部署此gfs集群存储的时候,碰到很多问题,在查阅各种资料后才得以实现虚拟机上的gfs,也花费了很长的时间,其中就有很多的报错,举个例子:
Jan 19 04:04:00 gfs1 ccsd[19610]: Cluster is not quorate. Refusing connection.
Jan 19 04:04:00 gfs1 ccsd[19610]: Error while processing connect: Connection refused
Jan 19 04:04:01 gfs1 dlm_controld[18685]: connect to ccs error -111, check ccsd or cluster status
此报错跟fence的启动有关系,这是因为我在第一个节点上启动cman的时候fencing无法启动,原因在于要开启fence功能,必须多个机器节点都开启了,单独开启一个的时候他是不生效的,也就是说必须有一半的fence都开启了才能生效,因此需在多台节点上执行service cman start 这样才能够快速的解决fenc的启动问题。
最后疑问:
1 查看target的状态总是ready而不能得到running状态
2 在输入tgtd命令时总是有以下报错:
[root@iscsi-storage ~]# tgtd
librdmacm: couldn't read ABI version.
librdmacm: assuming: 4
CMA: unable to get RDMA device list ##注,是虚拟机故没有rdma设备,下面socket就有点不理解
(null): iscsi_rdma_init(1217) cannot initialize RDMA; load kernel modules?
(null): iscsi_tcp_init(222) unable to bind server socket, Address already in use
(null): iscsi_tcp_init(222) unable to bind server socket, Address already in use
No available low level driver!
本文只是写了个大概的框架,并非很完整,还有待完善,如朋友有更好的更改意见欢迎提出指正。这也是本人第一次接触Red Hat cluster suite的gfs系统,并把操作的经过记录于此,方便大家与自己。
完毕!