Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
serverguide-precise-ru.pdf
Скачиваний:
77
Добавлен:
03.05.2015
Размер:
1.86 Mб
Скачать

Виртуализация

с /dev/console и /dev/ttyN. Это позволит обновлениям пакетов удачно устанавливаться, из-за риска последующего получения сбоя при выполнении gettys на этих консолях до следующей перезагрузки. Эта проблема идеально решается с помощью пространств имён устройств.

5.5. Обновления в контейнерах Ubuntu

Из-за некоторых ограничений, присутствующих в контейнерах, обновления пакетов временами могут завершаться с ошибкой. Например, установка или обновление пакета может закончиться неудачей, если не позволено создавать или открывать блочные устройства. Это часто блокирует все дальнейшие обновления, пока не разрешится данная проблема. В

некоторых случаях вы можете обойти проблему, используя chroot внутри контейнера, чтобы обойти ограничения и завершить обновления внутри chroot.

Некоторые известные специфические вещи, которые могут время от времени препятствовать обновлению пакетов, включают:

Изменения в контейнере, выполненные при создании контейнера с помощью опции --trim.

Действия, выполненные lxcguest. Например, если /lib/init/fstab смонтирован связыванием с другим файлом, обновления mountall, которые настаивают на замене этого файла, могут завершиться неудачей.

Перемонтированные консольные устройства с pty из основной системы могут иметь проблемы с обновлениями udev.

Политики Apparmor и ограничения cgroup для устройств могут мешать обновлениям при выполнении определенных действий.

Разрешения, сброшенные с помощью lxc.cap.drop, могут аналогично остановить обновления пакетов при выполнении определенных действий.

5.6. Libvirt LXC

Libvirt является мощным решением по управлению гипервизорами (программами управления операционными системами), с помощью которой можно администрировать виртуальные машины под Qemu, Xen и LXC, как локально так и удаленно. Драйвер libvirt LXC — это отдельная реализация того, что мы обычно называем LXC. Вот некоторые отличия:

Конфигурация сохраняется в формате XML

Нет инструментов, облегчающих создание контейнера

По умолчанию отсутствует консоль /dev/console

415

Виртуализация

Не поддерживается (пока) перезагрузка или полная остановка контейнеров

5.6.1. Преобразование контейнера LXC в libvirt-lxc

В разделе Раздел 5.3.1, «Создание контейнеров» [401] показано, как создавать LXC контейнеры. Если вы создали рабочий LXC контейнер таким способом, то вы можете управлять им при помощи libvirt. Загрузите xml файл в качестве примера:

wget http://people.canonical.com/~serge/o1.xml

Отредактируйте этот файл, заменив название контейнера и расположение корневой файловой системы. Затем вы можете зарегистрировать контейнер командой:

virsh -c lxc:/// define o1.xml

5.6.2. Создание контейнера из облачного образа

Если вы предпочитаете создавать новые оригинальные контейнеры только под LXC, вы можете загрузить образ для облака ubuntu, извлечь его и указать его расположение в xml файле libvirt LXC. Например, найдем адрес образа последней ежедневной корневой сборки Ubuntu 12.04 LTS следующим образом:

url1=`ubuntu-cloudimg-query precise daily $arch --format "%{url}\n"` url=`echo $url1 | sed -e 's/.t

Распакуйте загруженный образ, например, так:

mkdir $HOME/c1 cd $HOME/c1 sudo tar zxf $filename

Загрузите шаблон xml:

wget http://people.canonical.com/~serge/o1.xml

В шаблоне замените o1 на c1 и каталог расположения /var/lib/lxc/o1/rootfs на $HOME/c1. Затем зарегистрируйте контейнер с помощью:

virsh define o1.xml

5.6.3. Взаимодействие с контейнерами libvirt

Как мы видели, вы можете создавать libvirt-lxc контейнеры с помощью:

416

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]