Oracle 集群文件系统 (OCFS)
OCFS 第 1 版是原始设备的一个优秀替代品。 它不仅更易于管理和维护,而且克服了 255 个原始设备的限制。 但是,它并不是一个通用集群文件系统。 它只能用于存储以下类型的文件:
有关 OCFS 的更多背景知识,请阅读 OTN 技术文章“Linux 集群文件系统简介”。
获取 OCFS
转到 http://oss.oracle.com/projects/ocfs 并下载适于您的 Linux 版本的 OCFS RPM。 您需要三个 RPM: ocfs-support、ocfs-tools 和 ocfs-kernel-specific 模块。 要确定您所需要的内核专用模块,可使用 uname -r。
# uname -r
2.4.21-15.0.2.ELsmp
对于本示例,我下载了:
ocfs-support-1.0.10-1.i386.rpm
ocfs-tools-1.0.10-1.i386.rpm
ocfs-2.4.21-EL-smp-1.0.12-1.i686.rpm
安装 OCFS
# rpm -Uvh ocfs-support-1.0.10-1.i386.rpm
ocfs-tools-1.0.10-1.i386.rpm
ocfs-2.4.21-EL-smp-1.0.12-1.i686.rpm
Preparing... ########################################### [100%]
1:ocfs-support ########################################### [ 33%]
2:ocfs-tools ########################################### [67%]
3:ocfs-2.4.21-EL-smp ########################################### [100%]
Linking OCFS module into the module path [ OK ]
配置 OCFS
以 root 用户身份运行 ocfstool:
# ocfstool
选择 Tasks → Generate Config选择与 RAC 专用网络相对应的接口单击 OK 生成 /etc/ocfs.conf 文件,然后退出 ocfstool对集群中的每个节点重复这些操作。
在每个节点上装载 OCFS:
# /sbin/load_ocfs
/sbin/insmod ocfs node_name=ds1.orademo.org ip_address=192.168.100.51
cs=1795 guid=2FB60EDD8B872FC4216C00010324C023 comm_voting=1 ip_port=7000
Using /lib/modules/2.4.21-EL-smp-ABI/ocfs/ocfs.o
Warning:kernel-module version mismatch
/lib/modules/2.4.21-EL-smp-ABI/ocfs/ocfs.o was compiled for kernel version 2.4.21-4.ELsmp
while this kernel is version 2.4.21-15.0.2.ELsmp
Warning:loading /lib/modules/2.4.21-EL-smp-ABI/ocfs/ocfs.o will taint the kernel:forced load
See http://www.tux.org/lkml/#export-tainted for information about tainted modules
Module ocfs loaded, with warnings
不必担心关于不同内核版本和损坏模块的警告。 这仅仅是模块实用工具让我们了解该 ocfs 模块是为 Linux 内核较早版本编译的。 只要我们的内核版本与该 ocfs 模块相同或者比它更新,ocfs 就会正常工作。
为 OCFS 文件系统创建一个挂载点:
mkdir /u02
创建 OCFS 文件系统:
mkfs.ocfs -b 128 -L /u02 -m /u02 -p 0775
-u root -g root /dev/sdb1 -F
神奇的挂载
mkfs.ocfs 只完成 OCFS 文件系统初始化工作的一部分。其余的初始化工作在第一次挂载文件系统时进行。 因此,对于新创建的文件系统,您必须在创建它的同一主机上挂载它。
mount -t ocfs -L /u02 /u02
请注意,mount 命令使用了在创建文件系统期间所使用的文件系统标签 (-L /u02)。 这是一种既引用文件系统又不必记住设备名的便利方法。
要验证已挂载 OCFS 文件系统,可执行 mount 命令或运行 df:
mount -t ocfs
/dev/sdb1 on /u02 type ocfs (rw)
df /u02
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdb1 35557856 36064 35521792 1% /u02
在其他节点上挂载 OCFS 文件系统之前,最好在创建该文件系统的节点上进行卸下并再次挂载该文件系统的“循环”挂载操作:
umount /u02
mount -t ocfs -L /u02 /u02
现在就可以在其他集群节点上挂载 OCFS 文件系统了。
要在系统启动时自动挂载 OCFS 文件系统,可以在 /etc/fstab 中添加类似以下的一行:
LABEL=/u02 /u02 ocfs _netdev 0 0
我再次选择了使用设备标签 (LABEL=/u02) 而非设备名 (/dev/sdb1)。 这在设备名在每个节点上均不同时尤其有用。 在我的示例中,OCFS 设备在节点 ds1 名为 /dev/sdb1,而在节点 ds2 上名为 /dev/sdf1。 通过使用设备标签而非设备名,我可以在每个节点上使用相同的 /etc/fstab 项。
为共享文件创建目录:
CRS 文件
mkdir /u02/oracrs
chown oracle:oinstall /u02/oracrs
chmod 775 /u02/oracrs
数据库文件
mkdir /u02/oradata
chown oracle:oinstall /u02/oradata
chmod 775 /u02/oradata
对每个将要用于 ocfs 的磁盘分区重复这一过程。