我正在尝试使用 DRBD 创建故障转移,并且我有两个分区。
分区 1) /dev/sda4 用于我将要创建的 KVM。分区 2) /dev/sda5 用于 DRBD 元数据
我的配置文件如下
resource r0 {
protocol C;
startup {
wfc-timeout 15;
degr-wfc-timeout 60;
}
net {
cram-hmac-alg sha1;
shared-secret "SECRET_KEY";
}
on Server1{
device /dev/drbd0;
disk /dev/sda4;
address IP:7788;
meta-disk /dev/sda5;
}
on Server2{
device /dev/drbd0;
disk /dev/sda4;
address IP:7788;
meta-disk /dev/sda5;
}
}
当我运行 drbdadm create-md r0 时,它成功运行,但它在两个分区上创建 /dev/drbd0。
├─sda4 8:4 0 7.2T 0 part
│ └─drbd0 147:0 0 7.2T 1 disk
└─sda5 8:5 0 399M 0 part
└─drbd0 147:0 0 7.2T 1 disk
据我了解,它应该只在元磁盘 /dev/sda5 上创建它。我设置元磁盘的原因是为了避免对 sda4 进行任何写入。我的推理正确吗?还是我遗漏了什么?
答案1
终于搞清楚了。通过将卷组放在 DRBD0 之上,现在一切都正常了。
我在设备上创建卷组时确实遇到了问题,必须向 lvm.conf 添加过滤器
我收到一条错误消息
Cannot use device /dev/drbd/ with duplicates
我刚刚将其添加到设备部分
filter = [ "r|/dev/sda4|", "r|/dev/disk/|", "r|/dev/block/|", "a/.*/" ]
现在一切正常
答案2
我确认这是lsblk
在 AlmaLinux 8.5 上使用外部元数据和 DRBD 时输出的样子。DRBD 设备只是您设置中两个分区上的单个虚拟块设备。
它按预期工作。如果您使用其他方法/实用程序检查块设备,您会发现只有一个/dev/drbd0
,并且您创建的元数据分区是您预期的大小。
例如,我的配置使用两个 LVM 卷:
resource r0 {
protocol C;
startup {
wfc-timeout 15;
degr-wfc-timeout 60;
}
net {
cram-hmac-alg sha1;
shared-secret "SECRET_KEY";
}
on Server1{
device /dev/drbd0;
disk /dev/drbdpool/data; # 1GiB lvm on /dev/sdb
meta-disk /dev/drbdpool/meta; # 4MiB lvm on /dev/sdb
192.168.1.11:7788;
}
on Server2{
device /dev/drbd0;
disk /dev/drbdpool/data; # 1GiB lvm on /dev/sdb
meta-disk /dev/drbdpool/meta; # 4MiB lvm on /dev/sdb
192.168.1.12:7788;
}
显示了我所期望的内容/proc/partitions
:
# cat /proc/partitions
major minor #blocks name
8 0 20480000 sda
8 1 2048000 sda1
8 2 18430976 sda2
8 16 8388608 sdb
253 0 4096 dm-0
253 1 1048576 dm-1
147 0 1048576 drbd0
blockdev --report
看起来也不错:
# blockdev --report /dev/drbd0
RO RA SSZ BSZ StartSec Size Device
rw 256 512 4096 0 1073741824 /dev/drbd0
# blockdev --report /dev/drbdpool/meta
RO RA SSZ BSZ StartSec Size Device
rw 8192 512 4096 0 4194304 /dev/drbdpool/meta
# blockdev --report /dev/drbdpool/data
RO RA SSZ BSZ StartSec Size Device
rw 8192 512 4096 0 1073741824 /dev/drbdpool/data
这可能就是lsblk
让人感到困惑的地方:
# cat /sys/block/drbd0/size
2097152
# cat /sys/block/dm-0/size
8192
# cat /sys/block/dm-1/size
2097152
# cat /sys/block/dm-0/holders/drbd0/size
2097152
# cat /sys/block/dm-1/holders/drbd0/size
2097152