带有外部元磁盘的 DRBD

带有外部元磁盘的 DRBD

我正在尝试使用 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

相关内容