iSCSI+GFS实现网络存储(3)

到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集群各节点的活动状态:

iSCSI+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系统,并把操作的经过记录于此,方便大家与自己。

完毕!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/ppyjy.html