2012年(21)
分类: LINUX
2012-11-08 08:44:55
如果有一块设备,使用LVM创建一个逻辑卷,让DRBD同步此逻辑卷,也可以直接使用块设备。建议使用逻辑卷。
1) 安装LVM
apt-get install lvm2
2) 加载模块
手动加载模块
modprobe dm_mod
modprobe dm_mirror
modprobe dm_snapshot
启动时自动加载模块
>> /etc/modules <
dm_mod
dm_mirror
dm_snapshot
EOF
创建逻辑卷1) 创建物理卷
pvcreate /dev/sda3
#Physical volume "/dev/sda3" successfully created
2) 创建卷组
vgcreate tangdisk /dev/sda3
#Volume group "tangdisk" successfully created
3) 激活卷组
-a y tangdisk
#0 logical volume(s) in volume group "tangdisk" now active
4) 创建逻辑卷
lvcreate -L4048 -ndrbd tangdisk
#Logical volume "drbd" created
/dev/sda3 为一个空闲的块设备
部署LVM验证lvdisplay /dev/tangdisk/drbd
如果有类似以下信息表示LVM逻辑卷创建成功
--- Logical volume ---
LV Name /dev/sharedisk/drbd
VG Name sharedisk
LV UUID ri123H-o7lx-CiK2-0fqR-qDm2-4vrI-3rxSql
LV Write Access read/write
LV Status available
# open 2
LV Size 2.00 GB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:0
安装DRBDapt-get install drbd0.7-module-source drbd8-utils
配置DRBD1) 配置drbd.conf
cat > /etc/drbd.conf <
global { usage-count no; }
common { syncer { rate 10M; } }
resource r0 {
protocol C;
startup {
wfc-timeout 600;
degr-wfc-timeout 120;
}
disk {
on-io-error detach;
}
net {
timeout 30;
connect-int 4;
ping-int 4;
max-buffers 2048;
max-epoch-size 2048;
ko-count 0;
#on-disconnect reconnect;
cram-hmac-alg sha1;
shared-secret "FooFunFactory";
after-sb-0pri discard-zero-changes;
after-sb-1pri discard-secondary;
after-sb-2pri disconnect;
}
syncer {
rate 10M;
}
on server1 {
device /dev/drbd0;
disk /dev/sharedisk/drbd;
address 1.1.1.30:7898;
meta-disk internal;
}
on server2 {
device /dev/drbd0;
disk /dev/sharedisk/drbd;
address 1.1.1.31:7898;
meta-disk internal;
}
}
EOF
on server1 此参数是配置DRBD同步的主机名,此处主机名要和系统的主机名一致。DRBD一般都是有2台服务器形成HA环境,因此需要配置两个“on 主机名”配置段。
device /dev/drbd0; 定义伪块设备的名称,本手册使用/dev/drbd0,伪块的主要作用是和真实块做映射,文件系统的读写和mount都是对伪块来操作的,drbd不允许用户直接对真实块的任何操作。
disk /dev/tangdisk/drbd 定义真实块设备的名称,对伪块设备的操作将自动映射到此块设备上。
address 1.1.1.30:7898; DRBD同步主机的IP地址和端口号,因为有2台服务器,因此需要在每个“on 主机名”配置段内添加其主机对应的IP地址和端口号,端口号不需要修改,使用默认7898。
此配置文件(drbd.conf)在2台服务器上都是一样的。
2) drbd.conf 文件说明
global { usage-count no; }
#向drbd组织发送使用统计信息
common { syncer { rate 10M; } }
#同步速度,单位byte
resource r0 {
#drbd资源
protocol C;
# A 数据一旦写入磁盘并发送到网络中就认为完成了写入操作。
# B 收到接收确认就认为完成了写入操作。
# C 收到写入确认就认为完成了写入操作
startup {
wfc-timeout 600;
#连接超时,当启动drbd或者运行drbd时,会等待对端的drbd发送响应
120;
#连接超时,当drbd当机或者重启时,等待的时间
}
disk {
on-io-error detach;
#当磁盘发现io错误时执行的动作,本手册为卸载磁盘和drbd的链接。
}
net {
30;
#如果3秒里没有响应,则认为dead。必须小于connect-int and
ping-int
connect-int 4;
# 连接到远程的drbd设备所需要的时间,10s
ping-int 4;
如果一对drbd的idle的时间超过10s,drbd将检查对方是否还活着
max-buffers 2048;
#drbd分配的最大请求数,单位是pagesize.
max-epoch-size 2048;
#最大写数据快
ko-count 0;
#如果此节点在count * timeout的时间内没能完成写任务,
#将被揣出该cluster.默认为0,禁止该属性
#on-disconnect reconnect;
sha1;
shared-secret "FooFunFactory";
#主备之间通信使用的加密算法
after-sb-0pri discard-zero-changes;
after-sb-1pri discard-secondary;
after-sb-2pri disconnect;
#自动修复脑裂的配置
}
syncer {
rate 10M;
}
on testC12035 {
#主机名
device /dev/drbd0;
#伪块设备的名称,文件系统和mount时都是使用此块设备
disk /dev/sharedisk/drbd;
#真实的块设备,数据的读写均在此块设备上。
address 1.1.1.30:7898;
#主机的IP地址
meta-disk internal;
#drbd使用的meta数据存放的地点,internal为存放在上面disk配置的块
#设备内
}
on testC12068 {
device /dev/drbd0;
disk /dev/sharedisk/drbd;
address 1.1.1.31:7898;
meta-disk internal;
}
}
3) 初始化meta data storage
create-md r0
当逻辑卷或者块设备中已经有数据时会出现以下提示
v08 Magic number not found
v07 Magic number not found
v07 Magic number not found
v08 Magic number not found
Writing meta data...
initialising activity log
NOT initialized bitmap
New drbd meta data block sucessfully created
如果drbd.conf配置文件中global { usage-count yes; } 的话,回显的提示信息会不一样,因为需要连接互联网,报告drbd的使用情况:
--== Thank you for participating in the global usage survey ==--
The server's response is:
In the future drbdadm will only contact usage.drbd.org when you update
DRBD or when you use 'drbdadm create-md'. Of course it will continue
to ask you for confirmation as long as 'usage-count' is at its default
value of 'ask'.
Just press [enter] to continue:
v08 Magic number not found
md_offset 2147479552
al_offset 2147446784
bm_offset 2147381248
Found some data
==> This might destroy existing data! <==
Do you want to proceed?
[need to type 'yes' to confirm]
输入yes ß输入yes时清除逻辑卷或块设备中的数据
v07 Magic number not found
v07 Magic number not found
v08 Magic number not found
Writing meta data...
initialising activity log
NOT initialized bitmap
New drbd meta data block sucessfully created.
4) 启动drbd
此命令需要在两台机上连续执行。当在启动中一台机器上执行此命令后,此台机器会发出心跳找寻另一台drbd服务器,直到600秒超时过后才启动。
/etc/init.d/drbd start
5) 提升到primary状态
配置其中一台机器为primary状态(只能有一台机器的状态为primary),只能在一台机器上执行此命令。只有在primary状态的服务器才能向磁盘写入数据。才能被mount到当前系统。
drbdsetup /dev/drbd0 primary -o
如果无法提升为primary状态,检查两台机器之间是否能互通,是否逻辑卷或块设备数据不一致。如果出现Diskless/Inconsistent,表是两台机器的数据不一致,关停drbd再重新执行初始化meta data storage命令(drbdadm create-md r0)。
执行cat /proc/drbd命令会出现类似下面的输出信息,在红字的位置如果出现Primary的话,表示当前主机的状态为Primary。如果为Secondary,就表示当前状态为secondary,下面的输出的详细解释3.2.3.8节:部署验证
version: 8.0.11 (api:86/proto:86)
GIT-hash: b3fe2bdfd3b9f7c2f923186883eb9e2a0d3a5b1b build by phil@mescal, 2008-02-12 11:56:43
0: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r---
ns:4194140 nr:0 dw:0 dr:4194140 al:0 bm:256 lo:0 pe:0 ua:0 ap:0
resync: used:0/31 hits:261878 misses:256 starving:0 dirty:0 changed:256
act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0
格式化drbd虚拟块设备此命令只能在primary状态的主机上执行。在Secondary状态主机上不需要执行
/dev/drbd0
挂在drbd设备在Primary状态的主机上执行:
mkdir -p /data/drbd/
mount /dev/drbd0 /data/drbd/
在Secondary状态的主机上执行:
mkdir -p /data/drbd/
开机激活LVM磁盘在primary和secondary的主机上,
在/etc/init.d/drbd 脚本的第二行后面添加如下的配置,然后保存
#action LVM blck
/sbin/vgchange -a y
/* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman","serif";}