clo*_*oud 2 partition drbd fdisk centos7
节点:
使用这种方式在两个节点上安装 DRBD:
rpm -ivh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org
yum -y install drbd84-utils kmod-drbd84
Run Code Online (Sandbox Code Playgroud)
添加了新硬盘并在两个节点上进行分区:
fdisk /dev/sdb
Run Code Online (Sandbox Code Playgroud)
然后格式化分区:
mkfs.ext4 /dev/sdb
Run Code Online (Sandbox Code Playgroud)
(在 node2 上失败,因此将其删除并添加了一个新磁盘/dev/sdc
。将其格式化。)
按照官方指南在两个节点上配置基本资源:
http://docs.linbit.com/docs/users-guide-8.4/p-build-install-configure/#ch-configure
/etc/drbd.d/r0.res
在两个节点上创建:
resource r0 {
protocol C;
on node1 {
device /dev/drbd0;
disk /dev/sdb;
address 192.168.0.1:7789;
meta-disk internal;
}
on node2 {
device /dev/drbd0;
disk /dev/sdc;
address 192.168.0.2:7789;
meta-disk internal;
}
}
Run Code Online (Sandbox Code Playgroud)
在两个节点上编辑 iptables:
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 7788 -j ACCEPT
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 7799 -j ACCEPT
service iptables save
Run Code Online (Sandbox Code Playgroud)
在两个节点上初始化数据:
drbdadm create-md r0
Run Code Online (Sandbox Code Playgroud)
一切都好。
将资源放在两个节点上: drbdadm up r0
节点 1:
Device '0' is configured!
Command 'drbdmeta 0 v08 /dev/sdb internal apply-al' terminated with exit code 20
Run Code Online (Sandbox Code Playgroud)
节点2:
??: Failure: (162) Invalid configuration request
additional info from kernel:
minor exists in different resource
Command 'drbdsetup-84 new-minor r0 0 0' terminated with exit code 10
Run Code Online (Sandbox Code Playgroud)
他们俩都发生了问题。
cat /proc/drbd
在两个节点上运行:
节点 1:
version: 8.4.9-1 (api:1/proto:86-101)
GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by akemi@Build64R7, 2016-12-04 01:08:48
0: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r----s
ns:0 nr:0 dw:0 dr:912 al:8 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:2097052
Run Code Online (Sandbox Code Playgroud)
节点2:
version: 8.4.9-1 (api:1/proto:86-101)
GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by akemi@Build64R7, 2016-12-04 01:08:48
0: cs:WFConnection ro:Secondary/Unknown ds:Diskless/DUnknown C r----s
ns:0 nr:0 dw:0 dr:0 al:8 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
Run Code Online (Sandbox Code Playgroud)
Primary
和Secondary
未知。
drbdadm connect all
在节点 1 上运行:
r0: Failure: (125) Device has a net-config (use disconnect first)
Command 'drbdsetup-84 connect r0 ipv4:192.168.0.1:7789 ipv4:192.168.0.2:7789 --protocol=C' terminated with exit code 10
Run Code Online (Sandbox Code Playgroud)
drbdadm -- --discard-my-data connect all
在 node2 上运行:
r0: Failure: (102) Local address(port) already in use.
Command 'drbdsetup-84 connect r0 ipv4:192.168.0.1:7789 ipv4:192.168.0.2:7789 --protocol=C --discard-my-data' terminated with exit code 10
Run Code Online (Sandbox Code Playgroud)
使用它有什么问题?
在dd if=/dev/zero of=/dev/sdb(sdc) bs=1M oflag=direct status=progress
两个节点上运行后,它们也无法drbdadm up r0
成功运行:
No valid meta data found
Command 'drbdmeta 0 v08 /dev/sdb internal apply-al' terminated with exit code 255
Run Code Online (Sandbox Code Playgroud)
??: Failure: (162) Invalid configuration request
additional info from kernel:
minor exists in different resource
Command 'drbdsetup-84 new-minor r0 0 0' terminated with exit code 10
Run Code Online (Sandbox Code Playgroud)
这时候,跑systemctl start brdb
在两个节点上,都挂了。等了半天没有结果。
lsblk -a
现在跑:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 10G 0 disk
??sda1 8:1 0 1G 0 part /boot
??sda2 8:2 0 9G 0 part
??cl-root 253:0 0 8G 0 lvm /
??cl-swap 253:1 0 1G 0 lvm [SWAP]
sdb 8:32 0 16G 0 disk
sr0 11:0 1 1024M 0 rom
drbd0 147:0 0 2G 0 disk
Run Code Online (Sandbox Code Playgroud)
您不想在 DRBD(sdb
和sdc
)的支持磁盘上创建文件系统;您想先创建 DRBD,然后使用您的文件系统格式化生成的 DRBD 设备。它可以做其他的方式,但随后你需要成长的支持分区,或减少文件系统的大小,以腾出空间DRBD的元数据(内部使用元数据时,这在块设备的生活到底)。
这个过程应该是这样的:
- 像上面一样安装所有软件。
- 将两个节点上的分区清零(可选,但要这样做):
# dd if=/dev/zero of=/dev/sdb bs=1M oflag=direct status=progress
# dd if=/dev/zero of=/dev/sdc bs=1M oflag=direct status=progress
Run Code Online (Sandbox Code Playgroud)
- 像上面所做的那样,为您的 DRBD 资源创建配置文件。
- 像上面一样添加防火墙规则(除非你真的不需要端口 7799,因为它没有在你的配置中使用)。
- 在后备块设备上创建 DRBD 的元数据,并r0
在两个节点上启动:
# drbdadm create-md r0
# drbdadm up r0
# cat /proc/drbd
Run Code Online (Sandbox Code Playgroud)
-检查的输出cat /proc/drbd
,你应该看到您的设备Connected
,Secondary/Secondary
和Inconsistent/Inconsistent
。如果这些事情中有任何不正确,请停止,有些事情是不对的。
- 然后,选择任一节点(不是两个),强制将其设为主节点(DRBD 不会让您在具有Inconsistent
数据的节点上成为主节点)并创建 FS:
# drbdadm primary r0 --force
# mkfs.ext4 /dev/drbd0
Run Code Online (Sandbox Code Playgroud)
然后你会/dev/drbd0
像使用/dev/sda
or一样使用/dev/sdc
;除非您对自己正在做的事情有信心,否则不要触摸/dev/sdb
或/dev/sdc
再次触摸。接触 DRBD 的后备磁盘可能会引入 DRBD 不会意识到的不一致(直到您运行 averify
或以其他方式覆盖该块)。
继续阅读 LINBIT 的文档。DRBD 显然是一个很棒的工具,一旦您了解了基础知识就很容易使用,但是您正在处理存储问题,因此有很大的空间以永久的方式将事情搞砸。
归档时间: |
|
查看次数: |
13401 次 |
最近记录: |