Назад | Перейти на главную страницу

Предотвращение доступа LVM к «низкоуровневым» устройствам DRBD

Контекст:

Настройка активного / пассивного DRBD. Виртуальные машины KVM на томах LVM. 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;
        }
}

После непреднамеренного запуска 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 (Объем LVM, используемый r0_wphp ВМ) следует использовать группу томов vgr0 что использует /dev/drbd0 как физический объем, не /dev/sda4 прямо.

я считать это причина того, что DRBD теперь отказывается запускаться r0 на моем 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. Как я могу предотвращать любые виртуальные машины с поддержкой LVM от попыток доступа к устройствам, лежащим в основе /dev/drbd* устройства даже при непреднамеренном запуске?

ОС и 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)