我尝试在/dev/sdb
没有分区表的原始磁盘设备上设置 DRBD,也没有 LVM 堆栈 PV/VG/LV
由于这个磁盘是虚拟的,并且我使用的管理程序允许动态磁盘扩展,我不想在扩展我的 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 资源?
drbdadm attach data
不是您在创建元数据后要使用的唯一命令。以下过程之一应该可以让您的设备启动:
- 或者 -
完成此操作后,您将拥有一个连接状态为“已连接”且磁盘状态为“不一致/不一致”的设备;这将始终/仅在您在两个节点上创建全新的元数据后才会出现。
从那里,只需选择一个节点来提升到 Primary,这将导致 DRBD 从Primary => Secondary同步:
在一般情况下你永远不应该使用
--force
从这里开始推广你的 DRBD 设备。但是,您也说过:
这可能不适用于 DRBD。DRBD 将它的元数据放在块设备的末尾,并且在该元数据中跟踪块(和其他事物)的数量。动态扩展后备块设备可能会给您带来问题。
在 Debian DRBD 包的非常特殊的情况下,不需要操作“附加数据”。
这是让 DRBD 启动并在 Debian 上运行的最小顺序:
/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
节点上,将节点提升为primary
:drbdadm primary data
从那时起,在
primary
节点上,/dev/drbd1
设备可用于任何常规块操作,例如blockdev
ormkfs
。小心触发清除位图操作,它使辅助节点上的任何数据都无法恢复。顺便说一句,初始设置非常方便,因为它可以防止您的辅助节点存储在数小时内完全写入,强制您的虚拟化层在存储上分配块,这对于精简配置来说很烦人。