这次专门整理下多节点共享文件系统
背景
之前曾经安装过 Oracle RAC, 申请了多余的共享磁盘,配置了一下 OCFS2 系统, 挂载到所有节点,用于存放数据库备份, 这样的话, 备份的内容所有节点都可见。 当然了使用 Oracle ASM 的ACFS也行(以前做过,没记录,有空了再整理)。
这次呢,又一个新地方部署了同一个版本的RAC, 也想用相同方式,但在配置 OCFS2 的步骤 o2cb.init configure 步骤竟然报错,卡住了,时间比较紧, 最后,换 xfs 格式,只挂载在其中一个节点用于备份。
离开之后, 复盘了下原因, 是因为之前成功的 OCFS2 配置是在Oracle Linux 7 操作系统上,默认是 uek 内核启动, 默认是支持 OCFS2 文件系统的。 而我们这次呢,是 Redhat7 , 默认是不支持 OCFS2 文件系统的。
说明
Oracle Linux uek引导支持是支持 OCFS2 文件系统的,Oracle 从 Oracle Linux 6开始 不再推送 OCFS2/ASMLIB 给 Redhat,所以 CentOS, Redhat (包括 compatible kernel 引导的Oracle Linux) 是不支持 OCFS2 文件系统的。 运行 o2cb.init configure 会报错: Loading filesystem "ocfs2_dlmfs": Unable to load filesystem "ocfs2_dlmfs" Failed 需要重新编译安装支持 OCFS2 的内核
今天,主要分享下自行编译支持 OCFS2 内核的步骤。
后面再说下几种配置 OCFS2 的方法, 包括
- 使用共享储存的节点如何配置 OCFS2
- vmware workstation共享磁盘配置 OCFS2
- 使用本地磁盘,不使用共享磁盘, 通过 DRBD 配置 OCFS2
再顺便,整理了一下, 如何挂载远程的 sshfs, cifs, nfs磁盘。当然了, 这个不算是共享文件系统,只能算是网络共享,所有节点可见。 不能保证文件读写不被覆盖。
而 OCFS2 , ACFS 是共享文件系统, 和 Redhat 的GFS2, IBM的GPFS 等是共享文件系统, 可以多节点进行读写控制的。
编译支持ocfs2的内核
测试环境
redhat 7.9/CentOS7.9
测试日期: 2023-05-19
步骤
首先安装工具包
yum install wget rpm-build yum install gcc m4 net-tools bc xmlto hmaccalc python-devel perl elfutils-devel zlib-devel binutils-devel bison audit-libs-devel java-devel numactl-devel ncurses-devel perl-ExtUtils-Embed python-docutils #以下CentOS适用 yum install asciidoc newt-devel pesign pciutils-devel #以下Redhat 适用: 以下4个包在rehdat 源中没有,需要到CentOS官方源中先下载 yum install --downloadonly --downloaddir=/tmp/rpmbuild asciidoc newt-devel pesign pciutils-devel slang-devel source-highlight #CentOS 环境下载,复制到Redhat环境 yum localinstall asciidoc-8.6.8-5.el7.noarch.rpm newt-devel-0.52.15-4.el7.x86_64.rpm pesign-0.109-11.el7_9.x86_64.rpm pciutils-devel-3.5.1-3.el7.x86_64.rpm slang-devel-2.2.4-11.el7.x86_64.rpm source-highlight-3.1.6-6.el7.x86_64.rpm #Redhat环境安装
创建用户, 略过也可以, 会有警告
下载内核源码包并安装
useradd mockbuild cd wget https://vault.centos.org/7.9.2009/updates/Source/SPackages/kernel-3.10.0-1160.90.1.el7.src.rpm rpm -ivh kernel-3.10.0-1160.90.1.el7.src.rpm cd /root/rpmbuild/SPECS/
需要修改部分内容 kernel.spec 修改以下2处
for i in *.config do sed -i "s/# CONFIG_OCFS2_FS is not set/CONFIG_OCFS2_FS=m/" $i #847后增加这一行 mv $i .config %define listnewconfig_fail 0 #242行值由1改为0
开始编译了,我的电脑配置是 物理机 i7-1165G7 @ 2.80GHz 8CPU,32G 内存, 使用虚拟机(8cpu,16G) 运行编译,编译过程中 空间使用约 15G, CenOS7.9 花费时间 1h08m, Redhat7.9 花费时间:2h54m
编译结束,查看生成的内核包中已经支持ocfs2,编译好的内核文件, 可以复制到其他环境使用
rpmbuild -ba kernel.spec # cd /root/rpmbuild/RPMS/x86_64 rpm -qpl kernel-3.10.0-1160.90.1.el7.x86_64.rpm |grep ocfs2 rpm -ivh kernel-3.10.0-1160.90.1.el7.x86_64.rpm # uname -r #旧内核: 3.10.0-1160.el7.x86_64 reboot #重启默认使用新安装的内核 uname -r #新内核: 3.10.0-1160.90.1.el7.x86_64 ll /lib/modules/$(uname -r)/kernel/fs/|grep ocfs2
结束语:
1. 此时,这2台(Redhat7.9, CentOS7.9) 已经支持 OCFS2 文件系统。
2. 编译生成的
kernel-3.10.0-1160.90.1.el7.x86_64.rpm 也可以复制到其他同版本上使用。
3. 还有一种方法是:到 Oracle Linux 7 安装介质中复制
linux-firmware-20200902-999.5.gitd5f9eea5.el7.noarch.rpm 和 kernel-uek-5.4.17-2011.6.2.el7uek.x86_64.rpm 到 Redhat7 或CentOS 7 安装也还是可以的, 重启默认使用新uek内核, 支持 OCFS2
4. 以上3种方式,更新内核后,再安装 Oracle Linux 中的
ocfs2-tools-1.8.6-14.el7.x86_64.rpm 和 ocfs2-tools-devel-1.8.6-14.el7.x86_64.rpm 即可以支持 ocfs2 共享文件系统, 这2个包在 Oracle Linux 安装介质中
谢谢,关注防丢失, 下一次讲配置OCFS2 .