1、 简介
OCFS2是下一代的ORACLE集群文件系统,它已经被设计成为一种为通用的文件系统。OCFS2能使运行在集群中所有节点并发的通过标准文件系统接口来访问存储备。
2、 下载
OCFS2的发行版包括了2个安装包,一个称为核心模块,另一个叫工具包。
核心模块链接:
工具包链接:
首先要相应的软件包,对于核心模块,下载时要考虑它的发行号,适用的平台,操作系统内核版本以及内核的类型(比如SMP,HUGEMEM,PSMP等),对于工具包,只要符合发行版本和平台就可以了。
工具包又分为两部分,ocfs2-tools命令行工具,ocfs2console图形工具,用户可以选择不安装这部分,但它的确可以令操作简单化。
3、安装(每个节点都安装)
以Linux2.6.18-128.7AXS3 服务器安装为例:
操作系统:Linux
操作系统版本:2.6.18-128.7AXS3 x86_64
OCFS2核心模块安装包:
ocfs2console-1.4.1-1AXS3.x86_64.rpm
OCFS2工具安装包:
ocfs2-tools-1.4.1-1AXS3.x86_64.rpm
切换root用户进行安装:
rpm -ivh ocfs2console-1.4.1-1AXS3.x86_64.rpm
rpm –ivh ocfs2-tools-1.4.1-1AXS3.x86_64.rpm
安装后,若执行/etc/init.d/ocfs2出现:
Usage: /etc/init.d/ocfs2 {start|stop|status|reload|force-reload|restart|try-restart}
执行/etc/init.d/o2cb出现
Usage: /etc/init.d/o2cb {start|stop|restart|force-reload|enable|disable|configure|load|unload|online|offline|force-offline|status}
说明OCFS2核心模块和工具包安装成功。
4、 OCFS2配置文件(每个节点都配置)
OCFS2有一个配置文件,路径为/etc/ocfs2/cluster.conf。在这个配置文件中,你需要指定集群中所有的节点信息,并且所有的节点上都应该保留相同的一份。你可以动态的增加新节点到集群,或者改变一些节点的IP,名字,但这需要重起OCFS2以便使更改生效。
以两台Linux2.6.18-128.7AXS3服务器配置为例,保证两台机器相互ping通:
服务器主机名:h104、h105
服务器IP地址:192.168.4.104、192.168.4.105
下图为配置文件cluster.cof内容:
node:
ip_port = 7777
ip_address = 192.168.4.104 number = 0 name = h104 cluster = ocfs2node:
ip_port = 7777 ip_address = 192.168.4.105 number = 1 name = h105 cluster = ocfs2cluster:
node_count = 2 name = ocfs2
该配置文件分别放在两台服务器/etc/ocfs2目录中,配置完成。
5、 O2CB介绍
OCFS2有自己的集群服务结构,叫做O2CB,它包括:
NM:节点管理器,它对cluster.conf文件中所有节点进行的监控。
HB:心跳服务(Heart beat service),他在节点离开或加入rac时提示up和down的消息。
TCP:控制节点间的通讯。
DLM:分布式锁管理器,它持续跟踪所有的锁,锁的所有者及状态。
CONFIGFS:用户配置文件系统驱动空间,挂节点是/config
DLMFS:用户空间和内核空间DLM的接口。
所有这些cluster服务都已经被打包在o2cb系统服务当中,所有的操作,比如format,mount等,都需要cluster可用。在使用format等命令前,要先启动这些服务。
6、 OCFS2集群服务启动(每个节点都执行)
通过以下命令启动所有服务:
/etc/init.d/o2cb load
通过以下命令使cluster ocfs2 启动:
/etc/init.d/o2cb online ocfs2
通过以下命令停止cluster ocfs2:
/etc/init.d/o2cb offline ocfs2
通过以下命令停止所有服务:
/etc/init.d/o2cb unload
通过以下命令检查所有服务的状态:
/etc/init.d/o2cb status
7、 格式化
首先采用parted工具对共享磁盘进行分区,分出一个KingbaseSD区供OCFS2集群使用。详细分区命令如下:
选择要分区的硬盘,此处为/dev/sdb:
[root@h105 ~]# parted /dev/sdb
创建一个分区表:
(parted) mklabel
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No? yesNew disk label type? [gpt]? Gpt
执行mkpart命令,分别输入分区名称,文件系统和分区的起止位置:
(parted) mkpart
分区名称? []? KingbaseSD
文件系统类型? [ext2]? ext3
起始点?500G
结束点?1000G
分完区后退出:
(parted) q
最后查看下分完区后的结果:
parted -l
Model: LSI INF-01-00 (scsi)
Disk /dev/sdb: 6743GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name 标志
1 17.4kB 500GB 500GB KingbaseSD
如果O2CB CLUSTER没有启动,首先启动它。格式化操作依赖于这些服务。同时它需要你确保所有的节点上都没有挂载需要格式化的设备。
为要格式化的设备输入一个标签,为了便于管理,我们建议你输入一个标签,你仍然可以在格式化之后修改它。
为设备选择一个集群单元大小(cluster size),它支持从4k到1M。如果这个设备用来存储数据文件或者大的文件,比较合适的大小是128K。
选择一个块单元大小(block size),它支持从512字节到4k,由于OCFS2在格式化的时候并不分配一个静态的inode 区域,所以4k是我们强烈推荐的大小,它几乎适合所有的磁盘大小,换句话说,即时这些磁盘支持512字节,但我们仍然不建议使用小的单元。
一旦格式化完毕,集群单元和块单元都不可以再改变。
输入一个节点槽位(node slots),这个数值决定了允许多少节点同时挂载这个设备。这个数值随后可以修改,但只能增加,不能减小。
例如要格式化一个3k块大小,32k集群单元大小,包括4个节点的设备,在命令行下,可以通过mkfs.ocfs2工具按如下操作完成(在一个节点执行格式化即可):
# mkfs.ocfs2 -b 4K -C 32K -N 4 -L KingbaseSD /dev/sdb1
可以通过man 获得mkfs.ocfs2的帮助信息。
8、 挂载
把共享磁盘挂载到所有节点上,首先在每个节点上创建一个共同的目录名,例如在h104和h105创建/home/kingbasesd_DATA目录名:
h104:mkdir –p /home/kingbasesd_DATA
h105: mkdir –p /home/kingbasesd_DATA
创建完目录后,通过以下命令把共享磁盘挂载到本地,以h104、h105为例:
h104:mount -t ocfs2 /dev/sdb1 /home/kingbasesd_DATA/
h105:mount -t ocfs2 /dev/sdb1 /home/kingbasesd_DATA/
注意:在OCFS2文件集群系统退出时,每个节点要卸载已挂载的共享磁盘,以防对共享磁盘损坏,通过以下命令卸载:
umount /dev/sdb1
9、挂载本地的共享磁盘配置
为了使每个节点对挂载到本地的共享磁盘都有读写权限,需要创建专门的用户对共享磁盘访问,并且每个节点创建的用户ID必须一致。以h104,、h105为例进行配置:
首先在h104、h105上创建用户node104、node105:
useradd node104
useradd node105
为node104、node105分配密码:
passwd node104
passwd node105
接着修改node104和node105的用户ID和用户组ID都为808:
在h105上:
usermod -d 808 node105
groupmod -g 808 node105
在h104上:
usermod -d 808 node104
groupmod -g 808 node104
最后在其中一个节点上修改/home/kingbasesd_DATA用户属组:
chown -R node104:node104 /home/kingbasesd_DATA/
10、 测试
在h104上/home/kingbasesd_DATA 目录上创建一个test文件,在h105上/home/kingbasesd_DATA目录上可以看到,在h105上/home/kingbasesd_DATA上删除test文件,在h104上看不到test文件。