原始磁盘块设备上的 DRBD

原始磁盘块设备上的 DRBD

/dev/sdb我尝试在没有分区表、也没有 LVM 堆栈 PV/VG/LV 的原始磁盘设备上设置 DRBD

由于此磁盘是虚拟的,并且我使用的虚拟机管理程序允许即时磁盘扩展,因此在扩展 DRBD 文件系统时,我不想再进行 LVM 操作或重新分区

我的资源定义再简单不过了

resource data {
  device  /dev/drbd1;
  meta-disk internal;
  disk    /dev/sdb;
  on node1 {
    address 10.10.10.16:7789;
  }
  on node2 {
    address 10.10.10.17:7789;
  }
}

创建元数据作品

# drbdadm create-md data
initializing activity log
NOT initializing bitmap
Writing meta data...
New drbd meta data block successfully created.

但附加操作失败

 # drbdadm attach data
 1: Failure: (127) Device minor not allocated
 additional info from kernel:
 unknown minor
 Command 'drbdsetup-84 attach 1 /dev/sdb /dev/sdb internal' terminated with exit code 10

错误消息听起来确实像命令期望分区表索引作为设备次代码。

我应该如何将原始设备附加到 DRBD 资源?

答案1

drbdadm attach data并不是您在创建元数据后想要使用的唯一命令。

以下步骤之一应该可以启动您的设备:

drbdadm create-md data
drbdadm up data

- 或者 -

drbdadm create-md data
drbdsetup-84 new-resource data
drbdsetup-84 new-minor data 1 0 
drbdmeta 1 v08 /dev/sdb internal apply-al 
drbdsetup-84 attach 1 /dev/sdb /dev/sdb internal
drbdsetup-84 connect data ipv4:10.10.10.16:7789 ipv4:10.10.10.17:7789 --protocol=C

完成后,您将拥有一个连接状态为“已连接”且磁盘状态为“不一致/不一致”的设备;只有在两个节点上创建全新的元数据后,才会出现这种情况。

从那里,只需选择一个节点提升为主节点,这将导致 DRBD 从主 => 次要

# drbdadm primary data --force 

--force从现在开始,在正常情况下您永远不需要使用它来推广您的 DRBD 设备。

不过你也说过:

由于此磁盘是虚拟的,并且我使用的虚拟机管理程序允许即时磁盘扩展,因此在扩展 DRBD 文件系统时,我不想再进行 LVM 操作或重新分区

这可能不适用于 DRBD。DRBD 将其元数据放在块设备的末尾,并在该元数据中跟踪块的数量(和其他内容)。动态扩展支持块设备可能会给您带来问题。

答案2

在 Debian DRBD 包的极特殊情况下,无需操作“附加数据”。

以下是在 Debian 中启动和运行 DRBD 的最小顺序:

  • 在两个节点上创建资源文件/etc/drbd.d/data.res,通常用于定义/dev/drbd1(记住此卷号1以便清除位图操作!)
  • drbdadm create-md data在两个节点上调用
  • 在两个节点上启动服务,它们应该等待彼此准备就绪:systemctl start drbd.service
  • 用确认Connected状态drbdadm cstate data如果没有,就不要再继续直到任何服务启动或网络连接问题得到解决。
  • 仅在primary节点上,清除位图以防止无用的初始同步:(drbdadm -- --clear-bitmap new-current-uuid data/1注意最后一个参数resourceName/volumeNumber:)
  • 仅在primary节点上,将节点提升为primarydrbdadm primary data

从那时起,在primary节点上,/dev/drbd1设备可用于任何常规块操作,如blockdevmkfs

小心触发清除位图操作,它会使辅助节点上的任何数据都无法恢复。顺便说一句,它对于初始设置来说非常方便,因为它可以防止您的辅助节点存储在几个小时内被完全写入,从而强制您的虚拟化层在存储上分配块,这对于精简配置来说很烦人。

相关内容