Смонтируйте изображение qcow2 с помощью qemu-nbd в контейнере

Я пытаюсь добраться, Новинка OpenStack вычисляют узел, работающий в контейнере для начальной загрузки сервера во вложенном контейнере.

Все хорошо работает, пока я не прошу, чтобы Nova в контроллере загрузила сервер. Во время процесса начальной загрузки сервера в вычислить контейнере libvirt использует qemu-nbd для экспорта qcow2 образа диска, загруженного со Взгляда OpenStack как предыдущий шаг к запуску вложенного контейнера. Со значением по умолчанию lxc конфигурация qemu-nbd сбои.

Я разработал lxc.conf файл, чтобы позволить использовать qemu-nbd из контейнера, но я должен пропускать что-то, потому что, даже если контейнер активирует узел/dev/nbd0, я не вижу, что/dev/nbd0p1 запись соответствует разделу в qcow2 образе диска.

Вот lxc.conf файл для моего контейнера Nova:

# Template used to create this container: /usr/share/lxc/templates/lxc-download
# Parameters passed to the template: -d ubuntu -r trusty -a i386
# For additional config options, please look at lxc.container.conf(5)

# Distribution configuration
lxc.include = /usr/share/lxc/config/ubuntu.common.conf
lxc.arch = x86

# Container specific configuration
lxc.rootfs = /var/lib/lxc/compute/rootfs
lxc.utsname = compute

# Network configuration
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = lxcbr0
lxc.network.hwaddr = 00:16:3e:90:16:e0

lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0.1000
lxc.network.hwaddr = 00:16:3e:90:16:e1

# This is the public interface
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0.2000
lxc.network.hwaddr = 00:16:3e:90:16:e2

# Added so certain functions (iptables, nova-compute, ...) work
lxc.mount.entry = /lib/modules/3.13.0-43-generic     /var/lib/lxc/compute/rootfs/lib/modules/3.13.0-43-generic none ro,bind 0 0

# Added so the compute node can run LXC VMs
lxc.mount.auto = cgroup
lxc.aa_profile = lxc-container-default-with-nesting

# Allow the container to mknod (needed by qemu-nbd...)
lxc.cgroup.devices.allow = c *:* m
lxc.cgroup.devices.allow = b *:* m

# Allow the container to use the host's nbd devices
lxc.cgroup.devices.allow = b 43:* rwm # Every nbd device in the host

Это может быть проверено легко на командной строке. Принятие у нас есть qcow образ диска в /root/cirros-0.3.3-i386-disk.img:

root@compute:~# qemu-nbd -c /dev/nbd0 cirros-0.3.3-i386-disk.img -f qcow2
root@compute:~# ls -d /sys/class/block/nbd0p1
/sys/class/block/nbd0  /sys/class/block/ndb0p1
root@compute:~# ls /dev/nbd0*
/dev/nbd0

Кажется, что блочное устройство существует в ядре, но/dev/nbd0p1 узел устройства не был создан. Кто-либо знает то, что я пропускаю в своей контейнерной конфигурации?

P.S. Я знаю OpenStack, Nova по умолчанию не работает с контейнерным VMs, существуют некоторые изменения, которые я должен сделать в коде Nova; но я должен преодолеть это препятствие сначала

1
задан 29 December 2014 в 14:08

1 ответ

Кажется, работает на меня (загружающийся экземпляр LXC с помощью изображения cirros qcow2 в хосте LXC в госте KVM сверху хоста KVM; выпуск Ледника).

Действительно должен был вручную создать несколько nbd узлов:

stack@ctl-template:~/devstack$ ls -l /dev/nbd*
brw-r--r-- 1 root root 43,  0 Apr 13 14:31 /dev/nbd0
brw-r--r-- 1 root root 43, 16 Apr 13 14:33 /dev/nbd1
brw-r--r-- 1 root root 43, 32 Apr 13 14:33 /dev/nbd2
brw-r--r-- 1 root root 43, 48 Apr 13 14:33 /dev/nbd3
brw-r--r-- 1 root root 43, 64 Apr 13 14:34 /dev/nbd4

nbd1 используется экземпляром:

stack@ctl-template:~/devstack$ dmesg | tail | grep nbd
[94516.110986] EXT4-fs (nbd1): mounting ext3 file system using the ext4 subsystem
[94516.205551] EXT4-fs (nbd1): mounted filesystem with ordered data mode. Opts: 

никакие дополнительные устройства, созданные для раздела (разделов) в изображении:

stack@ctl-template:~/devstack$ ls /sys/class/block/
loop0  loop4  nbd0   nbd12  nbd2  nbd6  ram0   ram12  ram2  ram6  sr0   vda5
loop1  loop5  nbd1   nbd13  nbd3  nbd7  ram1   ram13  ram3  ram7  vda
loop2  loop6  nbd10  nbd14  nbd4  nbd8  ram10  ram14  ram4  ram8  vda1
loop3  loop7  nbd11  nbd15  nbd5  nbd9  ram11  ram15  ram5  ram9  vda2
0
ответ дан 3 August 2019 в 21:17

Другие вопросы по тегам:

Похожие вопросы: