当前位置:   article > 正文

如何配置和挂载OCFS2文件系统

ocfs2

这次专门整理下多节点共享文件系统

背景

之前曾经安装过 Oracle RAC, 申请了多余的共享磁盘,配置了一下 OCFS2 系统, 挂载到所有节点,用于存放数据库备份, 这样的话, 备份的内容所有节点都可见。 当然了使用 Oracle ASM 的ACFS也行(以前做过,没记录,有空了再整理)。

这次呢,又一个新地方部署了同一个版本的RAC, 也想用相同方式,但在配置 OCFS2 的步骤 o2cb.init configure 步骤竟然报错,卡住了,时间比较紧, 最后,换 xfs 格式,只挂载在其中一个节点用于备份。

离开之后, 复盘了下原因, 是因为之前成功的 OCFS2 配置是在Oracle Linux 7 操作系统上,默认是 uek 内核启动, 默认是支持 OCFS2 文件系统的。 而我们这次呢,是 Redhat7 , 默认是不支持 OCFS2 文件系统的。

今天,主要分享共享储存的节点如何配置 OCFS2。 共享磁盘使用openfiler的iscsi服务提供,这个就不单独讲了,一共配置了4个lun。用于共享磁盘。

后面再讲vmware workstation共享磁盘和 DRBD 的方式实现共享磁盘。

日期: 2023-05-19

1 测试环境

openfiler : 192.168.55.201 提供共享磁盘

oracle linux 7.9 (uek)测试组: 2台 使用 ocfs2 挂载共享磁盘

oracle linux 8.7 (uek)测试组: 2台 使用 ocfs2 挂载共享磁盘

oracle linux 9.2 (uek)测试组: 2台 使用 ocfs2 挂载共享磁盘

almaliux 9.2 + rockylinux 9.2 测试组: 2台, 操作系统 分别为 almaliux 9.2 和 rockylinux 9.2 使用 xfs 挂载共享磁盘

2 openfiler 配置共享磁盘

3 主机配置 未特别指明,则所有节点都要执行

  1. hostnamectl set-hostname db01 #主机1执行,设置主机名称
  2. hostnamectl set-hostname db02 #主机2执行,设置主机名称
  3. #防火墙和selinux关闭
  4. systemctl disable firewalld --now
  5. sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config ; sed -i "s/SELINUX=permissive/SELINUX=disabled/g" /etc/selinux/config
  6. setenforce 0
  7. #安装iscsi工具包
  8. yum -y install iscsi-initiator-utils
  9. iscsiadm -m discovery -t st -p 192.168.55.201
  10. iscsiadm -m node -T iqn.db -p 192.168.55.201 --login
  11. systemctl enable iscsi --now
  12. #再看看, 多了4个磁盘
  13. ls /dev/sd*
  14. #使用udev固定磁盘
  15. /usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sdb #查看设备id,其他类推
  16. cat >/etc/udev/rules.d/99-oracle-ocfs2.rules<<EOF
  17. KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name", RESULT=="14f504e46494c4552627138374e762d69364c532d6b305565", SYMLINK+="sharedisk/disks/data1", OWNER="root", GROUP="root", MODE="0660"
  18. KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name", RESULT=="14f504e46494c45523267733435572d4b68496b2d63745147", SYMLINK+="sharedisk/disks/data2", OWNER="root", GROUP="root", MODE="0660"
  19. KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name", RESULT=="14f504e46494c455261453050486e2d727567582d72525474", SYMLINK+="sharedisk/disks/data3", OWNER="root", GROUP="root", MODE="0660"
  20. KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name", RESULT=="14f504e46494c4552463164374d712d6857417a2d52473474", SYMLINK+="sharedisk/disks/data4", OWNER="root", GROUP="root", MODE="0660"
  21. EOF
  22. #linux7之前重启udev
  23. /usr/sbin/udevadm control --reload-rules
  24. systemctl restart systemd-udev-trigger.service ; systemctl status systemd-udev-trigger.service ; systemctl enable systemd-udev-trigger.service
  25. systemctl restart systemd-udevd.service ; systemctl status systemd-udevd.service ; systemctl enable systemd-udevd.service
  26. #linux7之后不能手动启停udev,而是采用重新加载的方式
  27. /sbin/udevadm control --reload-rules
  28. udevadm trigger --action=add
  29. /sbin/udevadm trigger --type=devices --action=change
  30. sleep 3
  31. #可以看到4个设备了
  32. ll /dev/sharedisk/disks/

4 ocfs2配置

注意 name 要和机器 hostname 一致, ip要和实际的ip一致, 我这边4个测试组, 我随机贴了一组。

  1. yum -y install ocfs2-tools
  2. yum -y install ocfs2-tools-devel #linux 7 only
  3. [ -d /etc/ocfs2 ] || mkdir -p /etc/ocfs2
  4. cat >/etc/ocfs2/cluster.conf <<EOF
  5. cluster:
  6. node_count = 2
  7. name = ocfs2
  8. node:
  9. ip_port = 7777
  10. ip_address = 192.168.55.180
  11. number = 0
  12. name = db01
  13. cluster = ocfs2
  14. node:
  15. ip_port = 7777
  16. ip_address = 192.168.55.181
  17. number = 1
  18. name = db02
  19. cluster = ocfs2
  20. EOF
  21. #初始化ocfs2配置 第一项选yes,第三项集群名称填上面配置文件里的,默认是ocfs2,其他默认, 配置结果存入配置文件 /etc/sysconfig/o2cb
  22. o2cb.init configure
  23. #确保o2cb ocfs2服务启动并设置为开机自启
  24. systemctl enable o2cb --now
  25. systemctl enable ocfs2 --now
  26. #任选一个主机 分区并格式化分区 注意:不同的测试组使用不同的设备
  27. parted /dev/sharedisk/disks/data1 mklabel gpt
  28. parted /dev/sharedisk/disks/data1 mkpart p1 ext4 1 100%
  29. mkfs.ocfs2 /dev/sharedisk/disks/data1
  30. #另一个主机 探测分区变化 注意:不同的测试组使用不同的设备
  31. partprobe /dev/sharedisk/disks/data1
  32. #所有主机 持久化磁盘挂载 注意:不同的测试组使用不同的设备
  33. [ -d /u02 ] || mkdir /u02 ; mount /dev/sharedisk/disks/data1 /u02
  34. echo 'sleep 10 ; partprobe /dev/sharedisk/disks/data1 ; sleep 10 ; mount /dev/sharedisk/disks/data1 /u02' >> /etc/rc.local
  35. #以下方法SAN共享磁盘测试可以,但iscsi共享磁盘开机没有自动挂载,应该是启动顺序原因,因此 iscsi 共享磁盘最好是手动挂载或延迟设置在 /etc/rc.local, 不要使用 /etc/fstab
  36. echo "#/dev/sharedisk/disks/data1 /u02 ocfs2 _netdev,defaults 0 0" >> /etc/fstab ; mount -a #_netdev: 表示当系统联网后再进行挂载操作,以免系统开机时间过长或开机失败

测试

  1. #在crontab job中添加如下内容
  2. * * * * * echo ${HOSTNAME} $(date) >> /u02/test.log

然后节点 查看 /u02/test.log 可以看到,各个节点都在往相同文件写入数据,并不会互相覆盖。

测试出现的问题

发布 reboot 命令后 7.9组 有时会启动失败,需vmware干预。

发布 poweroff 命令后会重启,但有时会启动失败。需vmware干预。( 7.9组 和 8.7组 发生过失败)

发布 poweroff -f 立刻关机 重启曾经有一台 8.7 已经识别分区,但没有自动挂载

8.7 组启动后发生过: 1 识别分区失败,无法挂载,需手动识别分区并挂载。2. 发生识别到分区,但无法挂载,需手动挂载

启动脚本中 刚开始设置 sleep 30 上面杰哥问题发生率较多, 设置为 sleep 10 后上面几个问题发生率较少。

结论

可以同时挂载,2节点都可以写入数据并互相可见.

iscsi 共享磁盘测试出的问题比较多, 生产环境不要使用 iscsi 共享磁盘。

5 普通挂载配置

前面发表了几篇 CentOS 的替代品 AlmaLinux 和 RockyLinux , 所以这边顺便测试了一下, 没有使用 OCFS2 文件系统。

这是 almaliux 9.2 + rockylinux 9.2 测试组

  1. #任选一个主机 使用格式化分区
  2. parted /dev/sharedisk/disks/data4 mklabel gpt
  3. parted /dev/sharedisk/disks/data4 mkpart p1 ext4 1 100%
  4. mkfs.xfs /dev/sharedisk/disks/data4
  5. #其余主机 探测分区变化
  6. partprobe /dev/sharedisk/disks/data2
  7. #只能一个主机 持久化磁盘挂载
  8. [ -d /u02 ] || mkdir /u02 ; mount /dev/sharedisk/disks/data4 /u02

测试结果

同一时刻, 2个节点虽然都可以挂载,但写入的内容互相看不见(即使其中一个以只读挂载,也看不到另一个节点写入的数据)。 全部卸载并重新挂载后,其中一个节点的写入数据丢失。

结论

必须保证同一时刻,只能有1个节点挂载

补充测试 Redhat7.9 和 CentOS7.9

2023-05-20, 在自行编译支持 OCFS2 的linux内核后, 也测试了一下 Redhat 和 CentOS 的 OCFS 配置,跟 Oracle Linux 一样。故简述一下:

测试组

Redhat 7.9 + CentOS 7.9 测试组1: 自行编译内核
kernel-3.10.0-1160.90.1.el7.x86_64.rpm 并安装使用

Redhat 7.9 + CentOS 7.9 测试组2: 安装自行编译内核后复制出来的
kernel-3.10.0-1160.90.1.el7.x86_64.rpm

Redhat 7.9 + CentOS 7.9 测试组3: 安装 Orace Linux 中的包
linux-firmware-20200902-999.5.gitd5f9eea5.el7.noarch.rpm 和 kernel-uek-5.4.17-2011.6.2.el7uek.x86_64.rpm

以上三种重启后均支持 ocfs2 文件系统,再安装 Oracle Linux 安装介质中的
ocfs2-tools-1.8.6-14.el7.x86_64.rpm 和 ocfs2-tools-devel-1.8.6-14.el7.x86_64.rpm 即可以支持 ocfs2 共享文件系统

测试结果和 oracle linux 7.9 (uek)测试组 相同

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/235248
推荐阅读
相关标签
  

闽ICP备14008679号