百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

使用DRBD配置和挂载OCFS2文件系统

moboyou 2025-04-10 22:52 30 浏览

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

背景

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

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

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

今天,主要分享DRBD使用本地磁盘同步来配置OCFS2共享文件系统

DRBD是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。这就不多说了,出现很多年了,没钱买高大上硬件存储之前,一种廉价的高可用磁盘同步方案,但用起来真的不错。


日期: 2023-05-23

1 测试环境

oracle linux 7.9 (uek)测试组: 2台 使用 本地磁盘 无共享磁盘

2 准备工作

创建逻辑卷 /dev/vg1/lv1 和 /dev/vg1/lv2

#2个节点都是本地磁盘,创建lvm逻辑卷
pvcreate /dev/sdb
vgcreate vg1 /dev/sdb
lvcreate -n lv1 -l 40%VG vg1
lvcreate -n lv2 -l 40%VG vg1
ll /dev/vg1

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

hostnamectl set-hostname db01 #主机1执行,设置主机名称
hostnamectl set-hostname db02 #主机2执行,设置主机名称

#关闭seliux, 防火墙允许drbd和ocfs端口
firewall-cmd --permanent --add-port=7788/tcp --add-port=7789/tcp --add-port=7777/tcp && firewall-cmd --reload && firewall-cmd --permanent --list-all
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config ; sed -i "s/SELINUX=permissive/SELINUX=disabled/g" /etc/selinux/config
setenforce 0

#安装软件包
yum -y install http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
yum -y install drbd90-utils kmod-drbd90
systemctl enable drbd --now
lsmod |grep drbd

#配置drbd
cat > /etc/drbd.d/global_common.conf << eof global usage-count no common net protocol c eof drbd1 cat> /etc/drbd.d/drbd1.res << eof resource drbd1 disk devvg1lv1 device devdrbd1 meta-disk internal db01 address 192.168.55.144:7788 db02 address 192.168.55.185:7788 eof drbd2 cat> /etc/drbd.d/drbd2.res << eof resource drbd2 net allow-two-primaries disk devvg1lv2 device devdrbd2 meta-disk internal db01 address 192.168.55.144:7789 db02 address 192.168.55.185:7789 eof drbdadm create-md drbd1 drbdadm up drbd1 drbdadm primary drbd1 --force 1 drbdadm role drbd1 drbdadm status drbd1 drbdsetup status drbd1 --verbose --statistics drbdadm create-md drbd2 drbdadm up drbd2 drbdadm primary drbd2 --force 1 drbdadm primary drbd2 2 drbdadm role drbd2 drbdadm status drbd2 drbdsetup status drbd2 --verbose --statistics drbd1 ocfs2 1 parted devdrbd1 mklabel gpt parted devdrbd1 mkpart p1 ext4 1 100 mkfs.xfs devdrbd1 -f mkdir u01 mount devdrbd1 u01 date> /u01/test ; cat /u01/test
umount /u01
drbdadm secondary drbd1
echo '[ "$(drbdadm role drbd1)" = "Secondary/Secondary" ] && drbdadm primary drbd1 ; sleep 10 ; [ "$(drbdadm role drbd1)" = "Primary/Secondary" ] && mount /dev/drbd1 /u01' >> /etc/rc.local #持久化磁盘挂载
#节点2执行
drbdadm primary drbd1
mkdir /u01 && mount /dev/drbd1 /u01
cat /u01/test
echo '[ "$(drbdadm role drbd1)" = "Primary/Secondary" ] && mount /dev/drbd1 /u01' >> /etc/rc.local #持久化磁盘挂载

#测试结果: 主从同步没问题,主可以挂载,任何修改会同步到从,可以角色切换,将从升为主,挂载

4 ocfs2配置

注意 name 要和机器 hostname 一致

yum -y install ocfs2-tools
yum -y install ocfs2-tools-devel #linux 7 only
[ -d /etc/ocfs2 ] || mkdir -p /etc/ocfs2
cat >/etc/ocfs2/cluster.conf <> /etc/rc.local

测试

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

结论

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

关机, 重启均按照指令执行,没有问题

5 其他 drbd 命令

#查看同步
drbdadm status drbd1
drbdsetup status drbd1 --verbose --statistics
#查看和切换资源角色
drbdadm role drbd1
drbdadm primary drbd1
drbdadm secondary drbd1
#查看资源状态
drbdadm dstate drbd1
drbdadm cstate drbd1
#脑裂
1. 从节点
drbdadm secondary drbd1
drbdadm -- --discard-my-data connect drbd1
2. 主节点
drbdadm connect drbd1

相关推荐

php宝塔搭建部署实战服务类家政钟点工保姆网站源码

大家好啊,我是测评君,欢迎来到web测评。本期给大家带来一套php开发的服务类家政钟点工保姆网站源码,感兴趣的朋友可以自行下载学习。技术架构PHP7.2+nginx+mysql5.7+JS...

360自动收录简介及添加360自动收录功能的详细教程

以前我们都是为博客站点添加百度实时推送功能,现在360已经推出了自动收录功能,个人认为这个功能应该跟百度的实时推送功能差不多,所以我们也应该添加上这个功能,毕竟360在国内的份额还是不少的。360自动...

介绍一个渗透测试中使用的WEB扫描工具:Skipfish

Skipfish简介Skipfish是一款主动的、轻量级的Web应用程序安全侦察工具。它通过执行递归爬取和基于字典的探测来为目标站点准备交互式站点地图。该工具生成的最终报告旨在作为专业Web应用程序安...

好程序员大数据培训分享Apache-Hadoop简介

好程序员大数据培训分享Apache-Hadoop简介  好程序员大数据培训分享Apache-Hadoop简介,一、Hadoop出现的原因:现在的我们,生活在数据大爆炸的年代。国际数据公司已经预测在20...

LPL比赛数据可视化,完成这个项目,用尽了我的所有Python知识

LPL比赛数据可视化效果图完成这个项目,我感觉我已经被掏空了,我几乎用尽了我会的所有知识html+css+javascript+jQuery+python+requests+numpy+mysql+p...

网站被谷歌标记“有垃圾内容”但找不到具体页面?

谷歌的垃圾内容判定机制复杂,有时违规页面藏得深(如用户注册页、旧测试内容),或是因第三方插件漏洞被注入垃圾代码,导致站长反复排查仍毫无头绪。本文提供一套低成本、高执行性的解决方案。你将学会如何利用谷歌...

黑客必学知识点--如何轻松绕过CDN,找到真实的IP地址

信息收集(二)1、cms识别基础为什么要找CMS信息呢?因为有了CMS信息之后,会给我们很多便利,我们可以搜索相应CMS,有没有公开的漏洞利用根据敏感文件的判断:robots.txt文件robots....

Scrapy 爬虫完整案例-提升篇

1Scrapy爬虫完整案例-提升篇1.1Scrapy爬虫进阶案例一Scrapy爬虫案例:东莞阳光热线问政平台。网站地址:http://wz.sun0769.com/index.php/que...

如何写一个疯狂的爬虫!

自己在做张大妈比价(http://hizdm.com)的时候我先后写了两个版本的爬虫(php版本和python版本),虽然我试图将他们伪装的很像人但是由于京东的价格接口是一个对外开放的接口,如果访问频...

程序员简历例句—范例Java、Python、C++模板

个人简介通用简介:有良好的代码风格,通过添加注释提高代码可读性,注重代码质量,研读过XXX,XXX等多个开源项目源码从而学习增强代码的健壮性与扩展性。具备良好的代码编程习惯及文档编写能力,参与多个高...

Python爬虫高级之JS渗透登录新浪微博 | 知了独家研究

小伙伴们看到标题可能会想,我能直接自己登陆把登陆后的cookie复制下来加到自定义的请求头里面不香嘛,为什么非要用python模拟登录的过程?如果我们是长期爬取数据,比如每天早上中午和晚上定时爬取新浪...

使用Selenium实现微博爬虫:预登录、展开全文、翻页

前言想实现爬微博的自由吗?这里可以实现了!本文可以解决微博预登录、识别“展开全文”并爬取完整数据、翻页设置等问题。一、区分动态爬虫和静态爬虫1、静态网页静态网页是纯粹的HTML,没有后台数据库,不含程...

《孤注一掷》关于黑客的彩蛋,你知道多少?

电影总是能引发人们的好奇心,尤其是近日上映的电影《孤注一掷》。这部电影由宁浩监制,申奥编剧执导,是一部反诈骗犯罪片。今天给大家讲解一下影片潘生用的什么语言,以及写了哪些程序。揭秘影片中的SQL注入手法...

python爬虫实战之Headers信息校验-Cookie

一、什么是cookie上期我们了解了User-Agent,这期我们来看下如何利用Cookie进行用户模拟登录从而进行网站数据的爬取。首先让我们来了解下什么是Cookie:Cookie指某些网站为了辨别...

「2022 年」崔庆才 Python3 爬虫教程 - urllib 爬虫初体验

首先我们介绍一个Python库,叫做urllib,利用它我们可以实现HTTP请求的发送,而不用去关心HTTP协议本身甚至更低层的实现。我们只需要指定请求的URL、请求头、请求体等信息即...