DomU не видит дискового устройства на DRBD

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

DomU не видит дискового устройства на DRBD

Konstantin Astafjev
Приветствую, уважаемые!

Быть может у присутствующих здесь есть опыт использования XEN на drbd устройствах?

На Dom0 ядре (3.8.13-gentoo, app-emulation/xen-4.2.2) поднял drbd (sys-cluster/drbd-8.4.2) устройство, скопировал на него необходимые файлы для запуска новой виртуальной машины, создал новый конфигугационный файл с указанием на новый drbd ресурс (disk = ['drbd:res0,xvda1,w']) и попробовал запустить с DomU (3.8.13-gentoo) ядром. При запуске гостевой машины, ядро не смогло обнаружить root устройство:
--------------------------------------------------------------------------------------
...
[    1.335264] registered taskstats version 1
[    6.340038] XENBUS: Waiting for devices to initialise: 25s...20s...15s...10s...5s...0s...235s...230s...225s...220s...215s...210s...205s...200s...195s...190s...185s...180s...175s...170s...165s...160s...155s...150s...145s...140s...135s...130s...125s...120s...115s...110s...105s...100s...95s...90s...85s...80s...75s...70s...65s...60s...55s...50s...45s...40s...35s...30s...25s...20s...15s...10s...5s...0s...
[  271.478211] XENBUS: Timeout connecting to device: device/vbd/51713 (local state 3, remote state 2)
[  271.478361] console [netcon0] enabled
[  271.478375] netconsole: network logging started
[  271.478572] VFS: Cannot open root device "xvda1" or unknown-block(0,0): error -6
[  271.478581] Please append a correct "root=" boot option; here are the available partitions:
[  271.478588] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[  271.478598] Pid: 1, comm: swapper/0 Not tainted 3.8.13-gentoo-a1 #1
[  271.478603] Call Trace:
[  271.478614]  [<ffffffff81671c9d>] panic+0xbc/0x1c8
[  271.478621]  [<ffffffff81cb7047>] mount_block_root+0x180/0x21f
[  271.478628]  [<ffffffff81cb71ca>] mount_root+0xe4/0x10f
[  271.478635]  [<ffffffff81cb732d>] prepare_namespace+0x138/0x171
[  271.478642]  [<ffffffff81cb6d8e>] kernel_init_freeable+0x1b8/0x1c3
[  271.478650]  [<ffffffff81cb660e>] ? do_early_param+0x86/0x86
[  271.478657]  [<ffffffff81661cc0>] ? rest_init+0x70/0x70
[  271.478664]  [<ffffffff81661cc9>] kernel_init+0x9/0xf0
[  271.478671]  [<ffffffff81682bbc>] ret_from_fork+0x7c/0xb0
[  271.478677]  [<ffffffff81661cc0>] ? rest_init+0x70/0x70
--------------------------------------------------------------------------------------

Само по себе drbd устройство в Dom0 монтируется без проблем и выглядит на мой взгляд нормально:
# cat /proc/drbd
version: 8.4.2 (api:1/proto:86-101)
srcversion: D4E87CE96AA95060B684559

 2: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:12688 nr:0 dw:12688 dr:1096 al:12 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

Другие виртуальные машины напрямую с логических LVM разделов запускаются без проблем.
# cat /etc/xen/vm0 | grep disk
disk   = ['phy:/dev/vg01/vm0,xvda1,w']

Попробовал изменять строку описания диска в файле настройки виртуальной машины с
disk   = ['drbd:res0,xvda1,w']
на
disk   = ['phy:/dev/drbd2,xvda1,w']
и машина запустилась.

Но так как моей целью явлется domain live migration, мне хотелось бы понять, как правильно использовать скрипт /etc/xen/scripts/block-drbd? В чем на самом деле отличие phy: от drbd:? И почему у меня не получается запустить DomU с drbd:res0? Такое ощущение, что название ресурса, я могу вписать любое и результат будет одинаковый. Как можно продебагить процесс запуска?

Вот конфигурационный файл drbd:

# cat /etc/drbd.d/test.res
resource res0 {
        net {
                protocol C;
                cram-hmac-alg sha1;
                allow-two-primaries yes;
        }

        disk {
                resync-rate 10M;
        }

        on xen1 {
                volume 0 {
                        device minor 2;
                        disk /dev/vg01/drbd01;
                        meta-disk internal;
                }
                address 10.6.6.1:7789;
        }

        on xen2 {
                volume 0 {
                        device minor 2;
                        disk /dev/vg01/drbd01;
                        meta-disk internal;
                }
                address 10.6.6.2:7789;
        }
}

Буду признателен за любые советы. Спасибо.

BR,
Konstantin








Reply | Threaded
Open this post in threaded view
|

RE: DomU не видит дискового устройства на DRBD

Konstantin Astafjev
И сам себе и отвечу спустя год. Для истории. :)

Необходимо было изменить block-drbd скрипт.

diff -uN block-drbd /etc/xen/scripts/block-drbd
--- block-drbd  2014-07-30 17:19:59.000000000 -0700
+++ /etc/xen/scripts/block-drbd 2014-07-31 09:54:56.000000000 -0700
@@ -248,7 +248,7 @@
     fi

     case $t in
-      drbd)
+      drbd|phy)
         drbd_resource=$p
         drbd_role="$(/sbin/drbdadm role $drbd_resource)"
         drbd_lrole="${drbd_role%%/*}"
@@ -276,7 +276,7 @@

   remove)
     case $t in
-      drbd)
+      drbd|phy)
         p=$(xenstore_read "$XENBUS_PATH/params")
         drbd_resource=$p
         drbd_role="$(/sbin/drbdadm role $drbd_resource)"

________________________________________
From: Konstantin Astafjev [[hidden email]]
Sent: Thursday, June 20, 2013 05:28
To: [hidden email]
Subject: [gentoo-user-ru] DomU не видит дискового устройства на DRBD

Приветствую, уважаемые!

Быть может у присутствующих здесь есть опыт использования XEN на drbd устройствах?

На Dom0 ядре (3.8.13-gentoo, app-emulation/xen-4.2.2) поднял drbd (sys-cluster/drbd-8.4.2) устройство, скопировал на него необходимые файлы для запуска новой виртуальной машины, создал новый конфигугационный файл с указанием на новый drbd ресурс (disk = ['drbd:res0,xvda1,w']) и попробовал запустить с DomU (3.8.13-gentoo) ядром. При запуске гостевой машины, ядро не смогло обнаружить root устройство:
--------------------------------------------------------------------------------------
...
[    1.335264] registered taskstats version 1
[    6.340038] XENBUS: Waiting for devices to initialise: 25s...20s...15s...10s...5s...0s...235s...230s...225s...220s...215s...210s...205s...200s...195s...190s...185s...180s...175s...170s...165s...160s...155s...150s...145s...140s...135s...130s...125s...120s...115s...110s...105s...100s...95s...90s...85s...80s...75s...70s...65s...60s...55s...50s...45s...40s...35s...30s...25s...20s...15s...10s...5s...0s...
[  271.478211] XENBUS: Timeout connecting to device: device/vbd/51713 (local state 3, remote state 2)
[  271.478361] console [netcon0] enabled
[  271.478375] netconsole: network logging started
[  271.478572] VFS: Cannot open root device "xvda1" or unknown-block(0,0): error -6
[  271.478581] Please append a correct "root=" boot option; here are the available partitions:
[  271.478588] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[  271.478598] Pid: 1, comm: swapper/0 Not tainted 3.8.13-gentoo-a1 #1
[  271.478603] Call Trace:
[  271.478614]  [<ffffffff81671c9d>] panic+0xbc/0x1c8
[  271.478621]  [<ffffffff81cb7047>] mount_block_root+0x180/0x21f
[  271.478628]  [<ffffffff81cb71ca>] mount_root+0xe4/0x10f
[  271.478635]  [<ffffffff81cb732d>] prepare_namespace+0x138/0x171
[  271.478642]  [<ffffffff81cb6d8e>] kernel_init_freeable+0x1b8/0x1c3
[  271.478650]  [<ffffffff81cb660e>] ? do_early_param+0x86/0x86
[  271.478657]  [<ffffffff81661cc0>] ? rest_init+0x70/0x70
[  271.478664]  [<ffffffff81661cc9>] kernel_init+0x9/0xf0
[  271.478671]  [<ffffffff81682bbc>] ret_from_fork+0x7c/0xb0
[  271.478677]  [<ffffffff81661cc0>] ? rest_init+0x70/0x70
--------------------------------------------------------------------------------------

Само по себе drbd устройство в Dom0 монтируется без проблем и выглядит на мой взгляд нормально:
# cat /proc/drbd
version: 8.4.2 (api:1/proto:86-101)
srcversion: D4E87CE96AA95060B684559

 2: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:12688 nr:0 dw:12688 dr:1096 al:12 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

Другие виртуальные машины напрямую с логических LVM разделов запускаются без проблем.
# cat /etc/xen/vm0 | grep disk
disk   = ['phy:/dev/vg01/vm0,xvda1,w']

Попробовал изменять строку описания диска в файле настройки виртуальной машины с
disk   = ['drbd:res0,xvda1,w']
на
disk   = ['phy:/dev/drbd2,xvda1,w']
и машина запустилась.

Но так как моей целью явлется domain live migration, мне хотелось бы понять, как правильно использовать скрипт /etc/xen/scripts/block-drbd? В чем на самом деле отличие phy: от drbd:? И почему у меня не получается запустить DomU с drbd:res0? Такое ощущение, что название ресурса, я могу вписать любое и результат будет одинаковый. Как можно продебагить процесс запуска?

Вот конфигурационный файл drbd:

# cat /etc/drbd.d/test.res
resource res0 {
        net {
                protocol C;
                cram-hmac-alg sha1;
                allow-two-primaries yes;
        }

        disk {
                resync-rate 10M;
        }

        on xen1 {
                volume 0 {
                        device minor 2;
                        disk /dev/vg01/drbd01;
                        meta-disk internal;
                }
                address 10.6.6.1:7789;
        }

        on xen2 {
                volume 0 {
                        device minor 2;
                        disk /dev/vg01/drbd01;
                        meta-disk internal;
                }
                address 10.6.6.2:7789;
        }
}

Буду признателен за любые советы. Спасибо.

BR,
Konstantin