一、什么是
DRBD
?
DRBD
是由内核模块和相关脚本而构成,用以构建高可用性的集群。其实现方式是通过网络来镜像整个设备。您可以把它看作是一种网络
RAID
。
二、
drbd
的应用范围是什么?除此之外,创建高可用性集群还需要什么?
Drbd
负责接收数据,把数据写到本地磁盘,然后发送给另一个主机。另一个主机再将数据存到自己的磁盘中。其他所需的组件有集群成员服务
,如
TurboHA
或
心跳连接,以及一些能在块设备上运行的应用程序。
例如:
--裸
I/O
--文件系统及
fsck
--具有恢复能力的数据库。
三、它是如何工作的?
每个设备(
drbd
提供了不止一个设备)都有一个状态,可能是
‘
主
’
状态或
‘
辅助
’
状态。在带有主要设备的节点上,应用程序应能运行和访问设备(
/dev/nbX
)。每次写入都会发往本地低层设备和带有
‘
辅助
’
状态设备的节点中。次要设备只能简单地把数据写入它的低层块设备上。
读取数据通常在本地进行。
如果主要节点发生故障,心跳将会把辅助设备转换到主状态,并启动其上的应用程序。(如果您将它和无日志
FS
一起
使用
,则需要运行
fsck
)。
如果发生故障的节点恢复工作,它就会成为新的辅助节点,而且必须使自己的内容与主节点的内容保持同步。当然,这些操作不会干扰到后台的服务。
四、
drbd
同现在
的
HA
集群有什么关系?
大部分现行高可用性集群(如:惠普、康柏等等)使用的是共享存储器,因此存储器连接多个节点(用共享的
SCSI
总线或光纤通道就可以做到)。
Drbd
也可以作为一个共享的设备,但是它并不需要任何不常见的硬件。它在
IP
网络中运行,而且在价格上
IP
网络要比专用的存储网络经济的多。
目前,
drbd
每次只允许对一个节点进行读写访问,这对于通常的故障切换高可用性集群来讲已经足够用了。以后的版本将支持
两个节点进行读写存取。
这很有用,比如对
GFS
来讲就是如此。兼容性
Drbd
可以在
ide
、
SCSI
分区和整个驱动器之上运行,但不能在回路模块设备上运行。
(如果您硬要这样做,它就会发生死锁)。
Drbd
也不能在回送网络设备中运行。(因为它同样会发生死锁:所有请求都会被发送设备占用,发送流程也会阻塞在
sock_sendmsg
()中。有时,接收线程正从网络中提取数据块,并试图把它放在高速缓存器中;但系统却要把一些数据块从高速缓存器中取到磁盘中。
这种情况往往会在接收器的环境下发生,因为所有的请求都已经被接收器块占用了。
五、安装
下载软件
最新
的稳定版本为
0.6.11
,您可从
http
:
//www.drbd.org/releases.html
下载它。
您可以从
CVS
中得到最新的源文件。注意,有时代码不能进行编译。您可以通过
cvs
或命令行界面得到它:
[philipp@alf drbd]$
export CVSROOT= :pserver :anonymous@cvs.drbd.org :/var/lib/cvs/drbd
[philipp@alf drbd]$ cvs login
(
Logging in to anonymous@cvs.drbd.org
)
CVS password
:
[Press the return key]
[philipp@alf drbd]$ cvs -z9 checkout drbd
要获取当前的开发分支,可以使用如下命令:
[philipp@alf drbd]$ cvs -z9 checkout -r rel-0_7-branch
六、编译包
直接编译即可。只需如下操作:
$ make
$make install
如果您想为
drbd
编译不同版本的内核,您需要定义
KERNVER
(包括路径)同时您也要定义
drbd
的安装路径。
make KERNVER=2.4.22-7 KDIR=/usr/src/linux-2.4.22-7-include
make KERNVER=2.4.22-7 PREFIX=/local/lib/module/path/ install
测试
加载
drbd
模块
如果这些都已经创建和安装妥当,您就可以测试加载模块了。
$ /sbin/insmod drbd
如果一切正常,您不会看见任何
ERROR
(错误)信息,用
Ismod
程序可以验证模块是否已被加载。
dev2-98
:
~/rpm/SPECS # lsmod
Module Size Used by Tainted
:
PF
drbd 40140 0
(
unused
)
...
$ dmesg
...
drbd
:
initialised.Version
:
0.6.8
(
api
:
63/proto
:
62
)
如果您看到了
drbd
,就表示一切正常。就可以继续执行
rmmod
,并转到举例配置部分。
$ /sbin/rmmod drbd
问题未解决符号
如果在加载模块时,出现了如下信息:
drbd.o
:
unresolved symbol sock_alloc
drbd.o
:
unresolved symbol proc_register
drbd.o
:
unresolved symbol schedule_timeout
...
这就表示您在内核中编译了
CONFIG_MODVERSIONS
,而
DRBD
模块中没有编译
MODVERSIONS
,或者正好相反。这里给出两种解决方案:
用不带
MODVERSIONS
的系统:
更改您的内核配置,
删掉
CONFIG_MODVERSIONS
选项。(参见
~linux/.config
。)重建内核。
使用带
MODVERSIONS
模块的系统:编辑
~drbd/Makefile.vars
,并将
-DMODVERSIONS -DCONFIG_MODVERSIONS
添加到
KERNFLAGS
,最后重建
DRBD
。
七、命令的使用
drbdsetup
drbsetup
是
drbd
程序套件中的底层配置工具。您可以使用该工具把低层模块设备和
drbd
设备联系起来、安装
drbd
设备对,
以便镜像它们的低层模块设备和检查运行
drbd
设备的配置。
使用
drbdsetup
的例子
假设您的两台机器分别命名为节点
1
(
10.0.0.10
)和节点
2
(
10.0.0.20
),您想在这两台机器上使用
/dev/hdc6
作为它们的低层设备。
那么在节点
2
上,您可以发出以下命令:
$ insmod drbd.o
$ drbdsetup /dev/nb0 disk /dev/hdc6
$ drbdsetup /dev/nb0 net 10.0.0.20 10.0.0.10
B
在节点
1
上,您可以发出以下命令:
$ insmod drbd.o
$ drbdsetup /dev/nb0 disk /dev/hdc6
$ drbdsetup /dev/nb0 net 10.0.0.10 10.0.0.20
B
$ drbdsetup /dev/nb0 primary
此时,您就可以像在其他设备一样使用
/dev/nb0
了。
$ mkfs -b 4096 /dev/nb0
$ mount /dev/nb0 /mnt/mountpoint
上例中使用了
“B”
协议。
drbd
允许您选择所需的协议,以控制如何将数据写入辅助设备。
八、
DRBD
协议
协议说明
A
数据一旦写入磁盘并发送到网络中就认为完成了写入操作。
B
收到接收确认就认为完成了写入操作。
C
收到写入确认就认为完成了写入操作。
您还可以选择其它参数来将数据传输给磁盘和网络选项。更多详情,请参见
drbdsetup
手册页。
九、
Config
和脚本的使用
drbd.conf
和脚本
在上面,我们介绍了
drbdsteup
的使用。
drbd
也允许您直接在
drbd.conf
文件中进行设置。通过正确地设置该文件和使用
init.d/drbd
脚本,
您能够轻松让
drbd
在机器启动后正常运行起来。
drbd.conf
设置举例
在本配置中,两台机器分别命名为
thost1
和
thost2
。
thost1
的
IP
地址是
10.1.1.31
,
thost2
的
IP
地址是
10.1.1.32
。
我们要在
thost1
的
/dev/hda7
和
thost2
的
/dev/hda7
之间创建镜像。下面是一个完成该操作的
/etc/drbd.conf
文件范例:
resource drbd0 {
protocol=B
fsck-cmd=fsck.ext2 -p -y
on thost1 {
device=/dev/nb0
disk=/dev/hda7
address=10.1.1.31
port=7789
}
on thost2 {
device=/dev/nb0
disk=/dev/hda7
address=10.1.1.32
port=7789
}
}
脚本的使用
创建了
drbd.conf
文件之后,在
thost1
上运行如下命令:
$ /etc/rc.d/init.d/drbd start
在
thost2
进行同样的操作,
$ /etc/rc.d/init.d/drbd start
此时,两台设备之间就建立起一个镜像,您可以查看
/proc/drbd
进行核实。
$ cat /proc/drbd
现在您可以在设备上创建一个文件系统,然后把它加载到
thost1
上。
$ mkfs /dev/nb0
$ mount /dev/nb0 /mnt/disk
恭喜您,现在您已经使用
drbd
创建了一个镜像。要进一步创建高可用性的故障切换系统,请查看脚本子目录,并可结合使用
linux-ha.org
上提供的心跳软件
分享到:
相关推荐
DRBD(Distributed Replicated Block Device)是一种开源的分布式存储解决方案,主要用在Linux系统上,用于实现数据的高可用性和容错性。DRBD9是其最新的版本,提供了更高效的数据复制和更高的性能。本压缩包“drbd...
DRBD(Distributed Replicated Block Device)是一种用于创建高可用性集群的软件,它通过网络在两台或多台服务器之间实时同步数据,提供磁盘镜像功能,类似于网络RAID。DRBD的主要任务是接收数据,将其写入本地磁盘...
一、DRBD 详解 DRBD,全称 Distributed Replicated Block Device,是一种分布式复制块设备技术,用于在两台或多台服务器之间实时同步数据。它为系统提供了高可用性(HA)解决方案,使得在一台服务器故障时,另一台...
DRBD的全称是Distributed Replicated Block Device,即分布式复制块设备,是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。DRBD是镜像块设备,是按数据位镜像成一样的数据块。简单说...
### DRBD中文指南知识点解析 #### 一、DRBD概览与翻译背景 **DRBD**(Distributed Replicated Block Device)是一种用于实现服务器间数据实时镜像的技术,旨在提高数据的可靠性和可用性。本中文指南是基于官方英文...
DRBD官方指南是一份关于分布式复制块设备(DRBD技术)的详细参考资料,由LINBIT公司赞助并免费提供。DRBD是一种开源的、无共享的、基于软件的复制存储解决方案,它能够在服务器之间实时镜像块设备(如硬盘、分区、...
《DRBD9和LINSTOR用户指南中文版》是一份详尽的文档,旨在帮助用户理解和使用DRBD 9和LINSTOR这两个关键的存储技术。DRBD(Distributed Replicated Block Device)是一种用于实现数据实时、透明和同步或异步复制的...
DRBD (Distributed Replicated Block Device) 是一种用于创建高可用集群的数据复制技术,它可以将一个磁盘设备的更改实时地复制到另一个节点,确保在主节点故障时能快速切换到备份节点,从而保证服务的连续性和数据...
DRBD(Distributed Replicated Block Device)是一种分布式存储解决方案,用于在两台或多台服务器之间实时同步数据,提供高可用性和灾难恢复能力。本指南将详细介绍DRBD的安装与使用,帮助你理解如何构建一个可靠的...
分布式复制块设备(DRBD, Distributed Replicated Block Device)是一种高效、可靠的软件解决方案,用于在两台或多台服务器之间同步块级别的数据。DRBD的主要目标是提供无共享的存储复制,确保数据的安全性和高可用性...
【Heartbeat DRBD MySQL 高可用方案搭建】 在IT领域,构建高可用系统是保障业务连续性和数据安全的重要措施。本方案将详细讲解如何利用Heartbeat、DRBD和MySQL搭建一个高可用环境,确保数据库服务的稳定运行。 **...
DRBD(Distributed Replicated Block Device)是一种分布式存储解决方案,用于在两台或多台服务器之间实时同步数据。它提供了一种高可用性(HA)的架构,确保在一台服务器出现故障时,另一台服务器能够无缝接管,从而...
### DRBD+MySQL+Keepalived 部署详解 #### 一、环境描述 本文档详细介绍了一种基于DRBD(Distributed Replicated Block Device)与Keepalived结合的高可用MySQL集群部署方案。该方案旨在通过DRBD实现数据同步复制...
【Linux下DRBD基础】 DRBD,全称为Distributed Replicated Block Device,是一种软件实现的分布式存储解决方案,它能够在无共享环境下实现服务器间块设备内容的实时、透明、同步或异步复制。DRBD的核心功能集成在...
DRBD (Distributed Replicated Block Device) 是一种用于创建高可用性集群的软件,它能够实现数据的实时复制,确保在一个节点出现故障时,另一个节点能够无缝接管服务,避免数据丢失。在主从模式下,DRBD配置通常...
Introduction to DRBD deals with DRBD’s basic functionality. It gives a short overview of DRBD’s positioning within the Linux I/O stack, and about fundamental DRBD concepts. It also examines DRBD’s ...
DRBD (Distributed Replicated Block Device) 是一种用于Linux系统的数据复制技术,它可以在两台或多台服务器之间创建一个实时、透明的磁盘镜像,从而实现数据的高可用性和故障切换。DRBD的主要功能是将一个物理磁盘...
### 三思笔记DRBD入门与应用 #### 1.1 设置操作系统 在开始DRBD配置之前,确保每台服务器(Primary和Secondary)都有正确的主机名设置至关重要。正确的主机名有助于简化后续步骤,并确保DRBD服务能正确识别各节点...
Heartbeat和DRBD(Distributed Replicated Block Device)则是用于构建高可用性集群的关键组件,它们可以确保在主服务器出现故障时,系统能无缝切换到备用服务器,从而保障服务不间断。 Heartbeat是一个开源的网络...
【什么是DRBD】 DRBD,全称Distributed Replicated Block Device,是一种用于构建高可用性(HA)集群的网络磁盘镜像技术。它通过网络将一个节点的完整块设备镜像到另一个节点,实现数据的实时同步。DRBD可以视为一种...