Linux ocfs2集群文件系统应用介绍及环境搭建
概述
OCFS2是Oracle的第二代集群文件系统。在介绍OCFS2之前,这里先介绍一下OCSF1,OCFS1于2002年10月问世,它是Oracle公司为了让Oracle RAC用户避免必须要与裸设备打交道而开发出来的。这个文件系统用来存放数据库相关的文件,比如数据文件、控制文件、在线日志文件和归档日志文件等。
OCFS2是下一代的ORACLE集群文件系统,它已经被设计成为一种为通用的文件系统,它不仅可以存放数据库相关的文件,还可以存放Oracle二进制文件和配置文件,从而使RAC的管理更加轻松。当然,作为一个通用文件系统,我们可以在其上放置任何文件,从而实现集群访问。
为什么说OCFS2是集群文件系统?其主要是可以实现对同一存储设备的多活访问,也就是可以在多个客户端使用同一个存储设备构建文件系统,并且多个客户端可以同时访问该文件系统。基于该技术,可以实现互联网后端服务的高可用。如图所示多个客户端可以通过iSCSI或者其它网络存储协议访问后端存储,并在客户端内部构建文件系统,不同客户端应用可以同时访问该文件系统,不会产生数据冲突。
应用场景
可能通过上述描述还不足以表达清楚OCFS2的应用场景,OCFS2最常用的场景当然是Oracle数据库方面,但也可以用在其它方面。本文以Web服务为例来简要说明一下。比如一个比较大的Web站点,通常用一台服务器的计算能力肯定是不够的,这样需要前端通过负载均衡路由到多台服务器上进行处理,这样就可以承载比较多的访问量。但问题是请求会路由到不同的服务器,这样用户可能会访问到不同的数据。因此,需要在多台Web服务器共享数据,保证用户每次访问到的数据都是一样的。
如下图所示就是一个典型的部署图,当然这个只是一个简要的部署图,实际生产环境比这个要复杂的多。最上层是客户的访问终端,包括普通PC和手机终端等。到Web服务端,负载均衡器作为入后,其后是具体的Web服务器,其上运行具体的Web业务。而Web服务器的后端则是块存储系统。为了保证各个Web服务器上存储文件的一致性,需要连接后端存储的相同存储空间(同一个LUN),而后在Web服务器上进行格式化处理。之后,各个Web服务器就可以通过访问该存储,而且各个Web服务器上数据是相同的。
安装部署
上面介绍了OCFS2的基本应用场景,下面本文介绍一下如何安装部署该文件系统。为了操作方便,本文采用虚拟机方式建立共享磁盘,实际使用的时候通常采用IPSAN或者FCSAN的方式。
操作系统: Ubuntu 16.04 Server
后端存储: 通过Virtual Box虚拟机的共享磁盘模拟iSCSI
节点数量: 2个节点
- 安装OCFS2软件包
软件安装比较简单,直接执行如下命令即可。
sudo apt-get install ocfs2-tools
- 配置集群
本文配置了一个2个节点的集群,在每个节点的/etc/ocfs2/cluster.conf文件中输入如下内容,如果没有该文件则新建一个。
node: ip_port = 7777 ip_address = 192.168.100.20 number = 0 name = node0 cluster = ocfs2 node: ip_port = 7777 ip_address = 192.168.100.19 number = 1 name = node1 cluster = ocfs2 cluster: node_count = 2 name = ocfs2
在每个节点配置OCFS2服务的启动项,并进行重启,使配置生效。
sudo chkconfig o2cb on sudo chkconfig ocfs2 on sudo /etc/init.d/o2cb restart sudo /etc/init.d/ocfs2 restart
此时,我们就可以使用该服务了,首先在其中一个节点上格式化我们的共享磁盘。
sudo mkfs.ocfs2 /dev/sdc1
完成格式化后,就可以挂载使用了。挂载方式与其它文件系统类似。
mount -t ocfs2 /dev/sdb /mnt/test/
此时,我们可以试着在其中一个节点创建一个文件,或者往已经存在的文件中添加数据,在另外一个节点进行检查。
为了简单起见,在测试的时候可以把防火墙关闭,实际场景需要配置防火墙规则。