drbd 工作原理
DRBD是一种块设备,可以被用于高可用(HA)之中。它类似于一个网络RAID-1功能。
当你将数据写入本地文件系统时,数据还将会被发送到网络中另一台主机上。以相同的形式记录在一个文件系统中。本地(主节点)与远程主机(备节点)的数据可以保证实时同步。本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用。在高可用(HA)中使用DRBD功能,可以代替使用一个共享盘阵。
因为数据同时存在于本地主机和远程主机上,切换时,远程主机只要使用它上面的那份备份数据。
简而言之,基本功能相当于一个网络raid1,也有很多特殊功能。
本文的目的是入门。
drbd 配置
准备工作
-
两台服务器如下:
192.168.11.128 ubuntu1 192.168.11.129 ubuntu2
-
每台服务器准备一个20G的分区。
因为用到的只是最简单的功能raid1,所以需要每台服务器的磁盘大小相同。 安装drbd
ubuntu系列软件包名为drbd8-utils。
开始配置
-
两台主机分别写hosts
192.168.11.128 ubuntu1 192.168.11.129 ubuntu2
-
drbd运行时所需要的配置文件是
include "drbd.d/global_common.conf"; include "drbd.d/*.res";
其中:
global_common.conf
是全局配置,*.res
是单个的磁盘配置。 -
最简单的
global_common.conf
配置:global { usage-count no; } common { net { protocol C; } }
user-count
指的是给drbd官方使用drbd的用户总数统计。protocol C
指的是复制磁盘时所使用的协议,可以参考使用协议,最常用的是C协议。 -
*.res
配置
一个最简单的示例sdb.res
如下:resource sdb { on ubuntu1 { device /dev/drbd1;#虚拟出的设备 disk /dev/sdb1;#原设备 address 192.168.11.128:7789; meta-disk internal; } on ubuntu2 { device /dev/drbd1; disk /dev/sdb1; address 192.168.11.129:7789; meta-disk internal; } }
功能:节点
ubuntu1
和节点ubuntu2
上都将/dev/sdb1
虚拟为drbd设备,访问设备需要用/dev/drbd1
,而不是用/dev/sdb1
。 -
启动
- 5.1 两台机器使用相同的
global_common.conf
、sdb.res
, - 5.2 分别执行
drbdadm create-md all
。 -
5.3 分别启动
/etc/init.d/drbd start
启动过程中,先启动的那一台会等待后一台的启动。
5.4 查询启动状态:
drbd-overview
- 5.5 将
ubuntu1
的设备设为主设备:ubuntu1上执行drbdadm -- --overwrite-data-of-peer primary all
,多个设备时,将ubuntu1
的设备sdb设为主设备:drbdadm -- --overwrite-data-of-peer primary sdb
。
- 5.1 两台机器使用相同的
-
ubuntu1
上格式化并挂载进行测试:-
6.1
ubuntu1
上执行mkfs.reiserfs /dev/drbd1 #此处并没有格式化ubuntu2。 mkdir /tmp/drbd1 mount /dev/drbd1 /tmp/drbd1 cd /tmp/drbd1 git clone https://github.com/phpsysinfo/phpsysinfo drbdadm secondary sdb#将sdb设备设为从设备,同时只能有一个主设备。
注:同时只能有一个主设备,只有主设备可以进行mount操作等。
-
6.2
ubuntu2
上执行drbdadm primary sdb#将sdb设备设为主设备 mkdir /tmp/drbd1 mount /dev/drbd1 /tmp/drbd1 cd /tmp/drbd1 ls
得到phpsysinfo目录。
-
至此,drbd的基本用法网络raid1完成。
更高级的用法、完全文档可以参考:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。