DRBD分布式存储实验
DRBD
DRBD的全称为:Distributed Replicated Block Device (DRBD) 分布式块设备复制 与心跳连接结合使用,构建高可用性(HA)的集群。
实现方式是通过网络来镜像(mirror)整个设备。它允许用户在远程机器上建立一个本地块设备的实时镜像。DRBD负责接收数据,把数据写到本地磁盘,然后发送给另一个主机。另一个主机再将数据存到自己的磁盘中。
DRBD分为主用节点和备用节点,在设置了DRBD设备之后,DRBD会接管磁盘,通过tcp通过网卡连接另外节点的DRBD设备,最后虚拟出一个逻辑磁盘-DRBD磁盘,DRBD会根据DRBD磁盘数据的变化,将数据写入底下的磁盘
参考文档
DRBD - LINBIT
环境
centos8-stream
centos8-DRBD1 192.168.8.157/24 主节点
centos8-DRBD2 192.168.8.158/24 备节点
——8G内存,4core
——nat网络
——系统盘100G
——20G SCSI磁盘 - 用以被DRBD接管
——最小化安装
拓扑

DRBD安装
#设置软件源
rm -rf /etc/yum.repos.d/*
cat > /etc/yum.repos.d/iso.repo <<END
[AppStream]
name=AppStream
baseurl=http://mirrors.163.com/centos/8-stream/AppStream/x86_64/os/
enabled=1
gpgcheck=0
[BaseOS]
name=BaseOS
baseurl=http://mirrors.163.com/centos/8-stream/BaseOS/x86_64/os/
enabled=1
gpgcheck=0
[epel]
name=epel
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/8/Everything/x86_64/
gpgcheck=0
END
yum clean all
yum makecache#设置主机名
hostnamectl set-hostname DRBD01 && bash
hostnamectl set-hostname DRBD02 && bash#安全相关
sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
setenforce 0
systemctl disable firewalld --now#设置host文件
echo "
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.8.157 DRBD01
192.168.8.158 DRBD02
" > /etc/hosts#安装编译软件和依赖
yum -y group install "Development Tools" && yum -y install wget vim net-tools lvm2
yum -y install drbd #如果使用默认源可能没有这个包
#从官网下载安装包,编译安装
wget https://pkg.linbit.com//downloads/drbd/9/drbd-9.1.11.tar.gz
tar zxvf drbd-9.1.11.tar.gz
cd drbd-9.1.11
make && make install
DRBD配置
#把drbd模块暂时加载到内核中
modprobe drbd
lsmod | grep -i drbd#把drbd模块持久化加载到内核中
echo drbd > /etc/modules-load.d/drbd.conf#drbd配置文件
drbd配置文件/etc/drbd.d/global_common.conf
#[global]全局参数
#[common]通用参数- handlers -startup - options -disk -net
drbd主配置文件/etc/drbd.conf#创建卷
pvcreate /dev/sdb
vgcreate drbd /dev/sdb #卷组名drbd
lvcreate -n drbd -l 100%free drbd #逻辑卷drbd,所有空间都分配,也可以直接指定20G#修改配置文件,添加文件
echo "
#指定资源名为ws-drbd
resource ws-drbd {
#指定元数据
meta-disk internal;
#指定逻辑磁盘
device /dev/drbd1;
net {
verify-alg sha256;
}
#指定节点,与对应的逻辑卷
on DRBD01 {
address 192.168.8.157:7788;
disk /dev/drbd/drbd;
}
on DRBD02 {
address 192.168.8.158:7788;
disk /dev/drbd/drbd;
}
} " > /etc/drbd.d/ws-drdb.res#创建drbd资源
drbdadm create-md ws-drbd
drbdadm up ws-drbd#此时已经设置完成,两台节点都显示如下
drbdadm status
#ws-drbd role:Secondary
# disk:Inconsistent 非一致性状态
# DRBD01 role:Secondary
# peer-disk:Inconsistent#在主节点上设置主节点
drbdadm primary ws-drbd --force
验证与测试
drbdadm status #同步中
#ws-drbd role:Primary
# disk:UpToDate
# DRBD02 role:Secondary
# replication:SyncSource peer-disk:Inconsistent done:16.60lsblk #能看到多了一个drbd1磁盘
#NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
#sda 8:0 0 100G 0 disk
#├─sda1 8:1 0 1G 0 part /boot
#└─sda2 8:2 0 99G 0 part
# ├─cs-root 253:0 0 65.2G 0 lvm /
# ├─cs-swap 253:1 0 2G 0 lvm [SWAP]
# └─cs-home 253:2 0 31.8G 0 lvm /home
#sdb 8:16 0 20G 0 disk
#└─drbd-drbd 253:3 0 20G 0 lvm
# └─drbd1 147:1 0 20G 0 disk
#sr0 11:0 1 12.3G 0 romdrbdadm status #同步完成
#ws-drbd role:Primary
# disk:UpToDate
# DRBD02 role:Secondary
# peer-disk:UpToDate#测试是否能够同步
#在主节点上操作
mkfs.ext4 /dev/drbd1
mount /dev/drbd1 /mnt/
echo 1 > /mnt/test
poweroff#在备节点上操作
#能看到test已经被同步到备节点的drbd1中
mount /dev/drbd1 /mnt/
ls /mnt/
#lost+found test
相关文章:
DRBD分布式存储实验
DRBD DRBD的全称为:Distributed Replicated Block Device (DRBD) 分布式块设备复制 与心跳连接结合使用,构建高可用性(HA)的集群。 实现方式是通过网络来镜像(mirror)整个设备。它允许用户在远程机器上建立一个本地块设备的实时镜像。DRBD负责接收数据…...
go的结构体作为返回值
结构体有两种方式作为返回值 结构体结构体指针 代码 package mainimport ("fmt" )type SS struct {Name stringAge int }func getInfo() (*SS) {var ac SS{}ac.Age 1return &ac }func getInfo1() (aa *SS) {aa.Age 1return }func getInfo2() (SS) {var ac…...
uniapp的subnvue苹果适配(ios)谷歌地图问题
谷歌地图,google地图,调整宽度。这个适配花了点时间,苹果IOS宽度一直无效失灵,赶紧记录分享,很坑。可能所有的ios的subnvue适配都这样。看了网上很多方法无效,最终找到试出答案。 pages.json的配置宽度无效…...
项目实战之RabbitMQ重试机制进行消息补偿通知
🧑💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 文章目录 🌟架构图&#x…...
MySQL之数据库的创建指令
创建数据库 #创建数据库指令: CREATE DATABASE hsp_db1 #创建名字为关键字的数据库,为规避关键字,可以使用反引号 CREATE DATABASE CREATE#删除数据库指令: DROP DATABASE hsp_db1 DROP DATABASE CREATE如果不指定在这里插入代码片…...
[网络安全]批处理(脚本)编写
Windows DOS命令Linux 一.作用: 自上而下成批次处理每一条命令,直到执行到最后一条 二.如何创建批处理: 扩展名:.bat创建办法:新建一个记事本,把扩展名改为 .bat 三.编辑方法: 右击 -编辑 1).一行一个命令 四.批处理命令: pause 暂停 (及时后面有命令,也不执行)echo …...
事件驱动架构 vs. RESTful架构:通信模式对比与选择
1. 通信风格 事件驱动架构(EDA) 是一种异步通信风格,组件之间通过产生和消费事件进行通信。 事件是表示系统中重大变化或事件的消息,并分发给感兴趣的组件。这种通信模型允许系统的不同部分之间进行解耦和动态交互。 组件充当事件…...
代码随想录算法训练营第五十二天| 300 最长递增子序列 674 最长连续递增子序列 718 最长重复子数组
目录 300 最长递增子序列 674 最长连续递增子序列 718 最长重复子数组 300 最长递增子序列 class Solution { public:int lengthOfLIS(vector<int>& nums) {vector<int>dp(nums.size(),1);//以i结尾的最长递增子序列的长度for(int i 0;i < nums.size()…...
leetcode 101.对称二叉树
学习这部分还是要多画图,多思考 101.对称二叉树 题目 给你一个二叉树的根节点 root , 检查它是否轴对称。 题目链接 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 文字 和 画图 分析 明确结束条件和继续递归条件 判断是否对称…...
【本人新书】《OpenCV应用开发:入门、进阶与工程化实践》
写作初心 OpenCV作为开源的计算机视觉框架已经有超过20年的发展历程,OpenCV4是OpenCV目前为止最重要的里程碑版本。OpenCV4不仅包含了传统图像处理、图像分析、特征提取等模块的各种主流算法算子,还包含了深度学习模型部署与加速支持模块,兼…...
【Linux系统编程】进度条的编写
目录 一,进度条的必备知识 1,缓冲区的粗略介绍 2,回车与换行 二,进度条的初步制作 1,进度条的初步矿建 2,进度条的版本一 3,进度条的版本二 一,进度条的必备知识 1ÿ…...
互斥锁的原理
互斥锁(Mutex,全称Mutual Exclusion)是一种同步机制,用于确保在任意时刻,只有一个线程可以访问共享资源,从而防止数据竞争和不一致性。互斥锁的基本思想是在进入临界区之前,先获取锁;…...
Win10的SVN Adapter V1.0 中黄色感叹号 -- 解决
大部分都问题都可以通过: 关闭 SVN Adapter V1.0 在下载最新的 SVNDrv.sys替换 C:\Windows\System32\drivers 中的同名文件启动 SVN Adapter V1.0 就能成功 但是部分人的电脑 SVN Adapter V1.0 是有感叹号的,说明注册表有问题 先用 CCleaner 修复注册表…...
ubuntu20 安装docker
一.官网安装文档 (基本按官方文档安装) Install Docker Engine on Ubuntu | Docker Docs 二.安装步骤 1.docker 需要64位操作系统、linux内核要在3.1以上 #uname -r 2.卸载可能存在的旧版本 #sudo apt-get remove docker docker-engine docker-ce …...
HarmonyOS开发工具DevEco Studio的下载和安装
一、DevEco Studio概述 一、下载安装鸿蒙应用开发工具DevEco Studio 开发鸿蒙应用可以从鸿蒙系统上运行第一个程序Hello World开始。 为了得到这个Hello World,你需要得到这个Hello World的源代码,源代码是用人比较容易看得懂的计算机编程语言规范写的…...
SHELL21 格式化输出
awk BEGIN{FS""}{for(i1;i<NF;i){if((NF-i)%30&&i!NF) printf $i",";else printf $i};printf "\n"} nowcoder.txt这个 AWK 命令的目的是对文本文件 nowcoder.txt 中的每一行进行处理,将每三个字符插入一个逗号,…...
披荆斩棘的「矿区无人驾驶」,能否真正打开千亿级市场?
随着2022年备受瞩目的台泥句容矿无人驾驶运输项目硬核落地,以及相关科技公司开放该矿24小时无人矿卡生产运营直播以证明其项目并非在演示,2023年全国开启了大规模矿区无人驾驶商业化落地,堪称矿区无人驾驶元年。虽然我国矿区无人驾驶市场渗透…...
智能优化算法应用:基于灰狼算法3D无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于灰狼算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于灰狼算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.灰狼算法4.实验参数设定5.算法结果6.参考文献7.MA…...
论文阅读三——端到端的帧到凝视估计
论文阅读三——端到端的帧到凝视估计 主要内容研究问题文章的解题思路文章的主要结构 论文实验关于端到端凝视估计的数据集3种基线模型与EFE模型的对比在三个数据集中与SOTA进行比较 问题分析重要架构U-Net 基础知识 主要内容 文章从端到端的方法出发,提出了根据he…...
mysql 快捷登陆
要将 MySQL 的登录命令添加到环境变量中并为其创建别名,可以按照以下步骤进行操作: 1. 打开终端并编辑 /etc/profile 文件(使用所有用户的全局设置) vim /etc/profile 2. 在文件的末尾添加以下行来设置环境变量和别名 # 将 &q…...
量子计算中数据驱动的哈密顿修正方法研究
1. 量子门控中的哈密顿修正挑战在量子计算领域,超导transmon比特因其相对较长的相干时间和可扩展性,成为当前最有前景的量子处理器实现方案之一。然而,实际硬件中存在的器件间差异和串扰效应,使得基于理论模型的脉冲设计与真实硬件…...
AI行业的“伦理困境”:隐私保护、算法偏见与失业问题
在人工智能技术飞速发展的今天,软件测试行业正经历着前所未有的变革。AI测试工具的广泛应用,极大提升了测试效率,改变了传统测试流程。然而,技术进步的同时,一系列伦理困境也随之而来,隐私保护、算法偏见与…...
大语言模型推理引擎优化:架构挑战与关键技术解析
1. 大语言模型推理引擎的架构挑战与优化方向1.1 Transformer架构的固有瓶颈Transformer架构的自注意力机制存在两大核心瓶颈:计算复杂度和内存占用。对于序列长度N,自注意力层的计算复杂度为O(N),这使得长文本处理成为性能黑洞。以2048 token…...
死信队列与补偿作业
Skeyevss FAQ:死信队列与补偿作业 试用安装包下载 | SMS | 在线演示 项目地址:https://github.com/openskeye/go-vss 1. 什么是死信(DLQ) 消息在 最大重试次数 后仍失败,进入 死信队列 或 失败表,避免无…...
GNA稀疏注意力机制:视觉Transformer计算优化实践
1. GNA稀疏注意力机制解析在视觉Transformer领域,计算效率一直是制约模型规模和应用场景的关键瓶颈。传统自注意力机制需要计算所有查询(Query)和键(Key)之间的交互,导致计算复杂度随序列长度呈平方级增长&…...
基于MYC-Y6ULX-V2核心板的工业运动控制系统实践
1. 项目概述:当工业运动控制遇上嵌入式核心板在工业自动化领域,运动控制系统是驱动设备精确执行动作的“大脑”和“神经中枢”。从数控机床的精密加工,到机器人的流畅轨迹,再到包装产线的快速分拣,其核心都依赖于一个稳…...
边缘金融大语言模型的高效部署与实时推理优化
1. 边缘金融大语言模型的技术背景与挑战金融行业每天产生海量非结构化数据,包括客户咨询记录、财报文本、新闻舆情等。传统NLP模型在处理这类数据时面临两个核心痛点:一是无法理解金融专业术语背后的复杂语义(如"可转债"在不同上下…...
c++11的初见
列表初始化 c11以后支持{ }的列表初始可以使用{ }括住数据来进行初始化,使用{ }初始化时可以省略号{ }中的数据要匹配构造;使用{ }可以统一初始化方式。#include<iostream> #include<vector> using namespace std; int main(){vector<pai…...
Hermes Agent框架对接Taotoken自定义供应商的配置指南
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Hermes Agent框架对接Taotoken自定义供应商的配置指南 对于使用Hermes Agent框架的开发者而言,能够灵活接入不同的模型…...
别再凭感觉布线了!用ADS仿真手把手教你搞定PCB信号完整性的5种端接方案
高速PCB设计实战:5种端接方案在ADS中的精准仿真与选型指南 当你在深夜盯着示波器上扭曲的方波和顽固的振铃时,是否曾怀疑过自己的PCB设计生涯?信号完整性不是玄学,而是一门可以通过仿真精确控制的工程艺术。本文将用Keysight ADS&…...
