OCFS第1版是原始设备的一个优秀替代品。它不仅更易于管理和维护,而且克服了255个原始设备的限制。但是,它并不是一个通用集群文件系统。它只能用于存储以下类型的文件:
Oracle数据文件
联机重做日志
归档重做日志
控制文件
Spfile
CRS共享文件(Oracle Cluster Registry和CRS voting disk)。
有关OCFS的更多背景知识,请阅读OTN技术文章“Linux集群文件系统简介”。
获取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 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
Filesystem1K-blocksUsedAvailableUse%Mounted on
/dev/sdb13555785636064355217921% /u02
在其他节点上挂载OCFS文件系统之前,最好在创建该文件系统的节点上进行卸下并再次挂载该文件系统的“循环”挂载操作:
umount /u02
mount -t ocfs -L /u02 /u02
现在就可以在其他集群节点上挂载OCFS文件系统了。
要在系统启动时自动挂载OCFS文件系统,可以在/etc/fstab中添加类似以下的一行:
LABEL=/u02/u02ocfs_netdev0 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的磁盘分区重复这一过程。