防止 LVM 访问 DRBD 的“低级”设备

防止 LVM 访问 DRBD 的“低级”设备

语境:

主动/被动 DRBD 设置。LVM 卷上的 KVM VM。LVM 用于/dev/drbd0物理卷和卷组。

在设置测试期间我进行了以下操作:

  1. 关闭辅助节点。
  2. 重新启动主节点。

但是,主磁盘重新启动后自动启动的虚拟机以某种方式访问​​了底层磁盘(/dev/sda4/dev/drbd0

WARNING: Device mismatch detected for vgr0/r0_wphp which is accessing /dev/sda4 instead of /dev/drbd0.

/dev/sda4是一种用于以下目的的设备/dev/drbd0

resource r0 {
        protocol C;
        startup {
                wfc-timeout  15;
                degr-wfc-timeout 60;
        }
        disk {
                on-io-error     detach;
                c-fill-target   10M;
                c-max-rate      700M;
                c-plan-ahead    7;
                c-min-rate      4M;
        }
        net {
                # max-epoch-size  20000;
                max-buffers       36k;
                sndbuf-size       1024k;
                rcvbuf-size       2048k;
                after-sb-0pri    discard-zero-changes;
                after-sb-1pri    discard-secondary;
                after-sb-2pri    disconnect;
                rr-conflict      disconnect;                
        }
        syncer {
                rate                    400M;
                al-extents              6433;
        }
        on NormallySecondary {
                device /dev/drbd0;
                disk /dev/sdc;
                address 10.0.0.1:7788;
                meta-disk internal;
        }
        on NormallyPrimary {
                device /dev/drbd0;
                disk /dev/sda4;
                address 10.0.0.2:7788;
                meta-disk internal;
        }
}

VM意外启动后r0_wphp,出现以下情况:

% lsblk
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                  8:0    0  3.7T  0 disk 
├─sda1               8:1    0 46.6G  0 part /
├─sda2               8:2    0 46.6G  0 part [SWAP]
├─sda3               8:3    0  1.7T  0 part 
...
└─sda4               8:4    0  1.8T  0 part 
  └─vgr0-r0_wphp   254:0    0   40G  0 lvm

vgr0-r0_wphp(VM 使用的 LVM 卷r0_wphp)应使用作为物理卷vgr0的卷组,/dev/drbd0不是/dev/sda4直接

思考r0这就是 DRBD 现在拒绝在我的NormallyPrimary节点上启动的原因:

% drbdadm create-md r0
open(/dev/sda4) failed: Device or resource busy

Exclusive open failed. Do it anyways?
[need to type 'yes' to confirm]

确实lsof /dev/sda4没有显示任何东西。

drbd服务是不是在启动节点上自动启动NormallyPrimary

奇怪的是,在考试之前我配置 LVM 忽略/dev/sda4

 % egrep '^\s*filter =' /etc/lvm/lvm.conf 
    filter = [ "r|/dev/sda4|" ]

定义此 LVM 过滤器后,drbdadm创建的r0资源没有任何问题,DRBD 设置正在运行。

问题:

  1. 如何停止使用有问题的虚拟机/dev/sda4?我需要重新连接我的 DRBD 资源(r0)。

  2. 我怎么能够防止/dev/drbd*任何 LVM 支持的虚拟机即使是无意启动的也会尝试访问底层设备吗?

操作系统和 DRBD:

% lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 9.6 (stretch)
Release:    9.6
Codename:   stretch

% dpkg -l | grep drbd
ii  drbd-utils                                    8.9.10-2                                    amd64        RAID 1 over TCP/IP for Linux (user utilities)

相关内容