linux DRBD编译安装与配置方法
DRBD介绍
DRBD是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。 DRBD Logo数据镜像:实时、透明、同步(所有服务器都成功后返回)、异步(本地服务器成功后返回)。DBRD的核心功能通过Linux的内核实现,最接近系统的IO栈,但它不能神奇地添加上层的功能比如检测到EXT3文件系统的崩溃。DBRD的位置处于文件系统以下,比文件系统更加靠近操作系统内核及IO栈。
DRBD编译安装
安装所需依赖:
yum -y install gcc kernel-devel kernel-headers flex
开始安装drbd,下载地址:http://oss.linbit.com/drbd/
安装用户空间工具:
cd /tmp wget http://oss.linbit.com/drbd/8.4/drbd-8.4.1.tar.gz tar xzf drbd-8.4.1.tar.gz cd drbd-8.4.1 ./configure --prefix=/usr/local/drbd --with-km make KDIR=/usr/src/kernels/2.6.18-274.18.1.el5-i686/ make install mkdir -p /usr/local/drbd/var/run/drbd cp /usr/local/drbd/etc/rc.d/init.d/drbd /etc/rc.d/init.d chkconfig --add drbd chkconfig drbd on
安装drbd模块:
cd drbd make clean make KDIR=/usr/src/kernels/2.6.18-274.18.1.el5-i686/ cp drbd.ko /lib/modules/`uname -r`/kernel/lib/ depmod
注:usr/src/kernels/2.6.18-274.18.1.el5-i686/这个内核源码树路径需要根据自己的系统修改。
DRBD配置
建立分区
假如现在有第二块硬盘hdb,两个node都要分区。
#fdisk /dev/hdb //准备为 hdb 建立分区 The number of cylinders for this disk is set to 20805. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): n //键入 n 表示要建立分区 Command action e extended p primary partition (1-4) p //键入 p 表示建立主要分区 Partition number (1-4): 1 //键入 1 为此主要分区代号 First cylinder (1-20805, default 1): //开始磁柱值,按下 enter 即可 Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-20805, default 20805): //结束磁柱值,按下 enter 即可 Using default value 20805 Command (m for help): w //键入 w 表示确定执行刚才设定 The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@node1 yum.repos.d]# partprobe //使刚才的 partition table 变更生效
建立分区完成后使用指令 fdisk -l 确定 partition talbe 状态
#fdisk -l Disk /dev/hda: 21.4 GB, 21474754560 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 13 104391 83 Linux /dev/hda2 14 2610 20860402+ 8e Linux LVM Disk /dev/hdb: 10.7 GB, 10737377280 bytes 16 heads, 63 sectors/track, 20805 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Device Boot Start End Blocks Id System /dev/hdb1 1 20805 10485688+ 83 Linux
建立分区完成后请建立 /db 目录。 (Node1 及 Node2 都必须建立)
#mkdir /db
建立Drbd配置文件
主要定义两块global和resource。
vi /usr/local/drbd/etc/drbd.conf
写入: include "drbd.d/global_common.conf"; include "drbd.d/*.res"; vi /usr/local/drbd/etc/drbd.d/global_common.conf 写入 global { usage-count yes; } common { net { protocol C; } } vi /usr/local/drbd/etc/drbd.d/r0.res 写入 resource r0 { on node1 { device /dev/drbd1; disk /dev/hdb1; address 192.168.1.101:7789; meta-disk internal; } on node2 { device /dev/drbd1; disk /dev/hdb1; address 192.168.1.103:7789; meta-disk internal; }
设置Hostname
根据上面的resource配置文件,需要对192.168.1.101和192.168.1.103分别设置hostname为node1和node2,设置方法如下:
vi /etc/sysconfig/network 修改HOSTNAME为node1
vi /etc/hosts 写入 192.168.1.101 node1 192.168.1.103 node2
使node1 hostnmae临时生效
hostname node1
node2机器设置类似。
设置Resource
以下操作需要在node1和node2操作。
#modprobe drbd //载入 drbd 模块 #lsmod|grep drbd //确认 drbd 模块是否载入 drbd 228528 0 #dd if=/dev/zero of=/dev/hdb1 bs=1M count=100 //把一些资料塞到 hdb 內 (否则 create-md 时有可能会出现错误) #drbdadm create-md r0 //建立 drbd resource #drbdadm up r0 //启动 resource r0
查看node1和node2的状态应该类似下面的:
cat /proc/drbd version: 8.4.1 (api:1/proto:86-100) GIT-hash: 91b4c048c1a0e06777b5f65d312b38d47abaea80 build by root@localhost.localdomain, 2012-02-12 06:05:36 m:res cs ro ds p mounted fstype 0:r0 Connected Secondary/Secondary Inconsistent/Inconsistent C
表明现在已经启动服务,但还没有设置同步(即需要设置Primary Node)
设置Primary Node
以下操作仅在node1执行。
设置node1为primary node:
drbdadm primary --force r0
drbdadm primary --force r0
再次查看node1的状态:
#cat /proc/drbd version: 8.4.1 (api:1/proto:86-100) GIT-hash: 91b4c048c1a0e06777b5f65d312b38d47abaea80 build by root@localhost.localdomain, 2012-02-12 06:47:37 1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----- ns:52892 nr:0 dw:0 dr:52892 al:0 bm:10 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
我们看到状态已经变成Primary/Secondary,即设置primary node成功。
创建DRBD文件系统
以下操作仅在node1执行。
上面已经完成了/dev/drbd1的初始化,现在来把/dev/drbd1格式化成ext3格式的文件系统。
#mkfs.ext3 /dev/drbd1
然后将/dev/drbd1挂载到之前创建的/db目录。
#mount /dev/drbd1 /db
现在你只要把数据写入/db目录,drbd即会立刻把数据同步到备机192.168.1.103的/dev/hdb1分区上。
Drbd同步测试
当在备机node2启动drbd时,它是无法挂载/dev/hdb1分区的,我们可以尝试写些数据到node1的目录/db上,然后停止node2的drbd。
drbdadm down r0
之后就可以把node2的/dev/hdb1挂载到目录/db
mount -t ext3 /dev/hdb1 /db
我们就可以查看node2的/db目录是否有node1的数据。
手动切换主备机
我们可以把node1改变为备机,而node2改变为主机。
在node1上操作:
umount /dev/drbd1 drbdadm secondary r0
在node2上操作:
drbdadm primary r0
此时应该已经切换成功。
相关文章
- 然 Ubuntu 提供了优秀的图形化软件管理工具,我们绝大多数时间并不需要使用命令行来管理 Snap 软件包,但命令行拥有更强的功能和灵活性,学会如何使用可以帮你更好地掌控系2024-10-18
Flatpak和Snapcraft怎么选? Linux软件包管理系统优缺点对比
Linux 软件的打包和分发方式在过去几年中也取得了长足地进展,本文将探讨 Flatpak 和 Snapcraft 之间的关键差异,它们各自的优/缺点,以期望帮助用户找到更适合自己的一款2024-10-18linux服务器重启命令哪个好用? Linux服务器重启命令汇总
在 Linux 系统中,最严谨的重启命令是 shutdown -r now,该命令直接将系统重启,而不进行任何清理或准备工作,确保系统彻底重启,但也有很多其他命令,详细如下文介绍2024-10-17教你如何在Linux中使用apt命令? Linux APT命令实战教程
apt是一个软件包管理工具,apt命令相当强大,要是在Ubuntu和Debian系统中使用,可以用来对软件进行安装等操作,需要超级管理员(root)权限进行操作2024-09-29apt 和 apt-get有什么区别? Linux包管理解密
为什么 Debian 系 Linux 发行版同时拥有apt和apt-get这两个雷同的命令?他们之间有什么区别?详细请看下文介绍2024-09-29- Linux圈曝出严重远程代码执行RCE漏洞,已存在10多年,几乎影响所有GNU/Linux发行版,目前尚未有修复补丁,不过可以缓解,解决方案如下2024-09-27
- 在Linux系统中,分区管理是非常重要的一项工作,在使用Linux系统的过程中,有时候我们需要删除某个分区来释放存储空间或重新规划硬盘空间,那么,如何在Linux系统上删除分2024-09-14
深度操作系统deepin 25开发计划公布: 2025 年 01 月发布
deepin 25 计划发布时间为 2025 年01 月,此版本的主要目标是修复 deepin 23 中的遗留问题,提升系统稳定性2024-09-14- FDISK是一个用于硬盘分区的工具,特别是在较早的操作系统版本中,如Windows 98和早期的Linux系统中,FDISK是进行硬盘分区的主要工具,这里就为大家分享一下linux系统中使用2024-08-29
黑神话悟空怎么下载安装? 深度操作系统deepin23黑神话悟空安装教程
deepin23系统想要体验《黑神话:悟空》游戏,该怎么下载安装呢?下面我们就来看看详细的图文教程2024-08-22
最新评论