OpenVZ. Все статьи цикла
Теперь, когда у нас есть шаблон нужного нам дистрибутива, можно приступить к его развертыванию.
# vzctl create 101 —ostemplate ubuntu-13.10-x86_64
Здесь, 101 — это обязательный, уникальный идентификатор контейнера который может быть произвольным числом.
Новый экземпляр ОС будет создан в течении считанных секунд. Фактически, это время будет потрачено на распаковку архива и помещение его содержимого в каталог /vz/private/<id-контейнера>.
Далее, по логике следует настройка основных параметров экземпляра;
# vzctl set 101 —hostname u101 —save
# vzctl set 101 —ipadd 10.200.77.45 —save
# vzctl set 101 —nameserver 10.200.77.10 —save
Ключ —save означает, что указанные значения должны быть записаны в конфигурационный файл контейнера /etc/vz/conf/101.conf, на постоянной основе и устанавливаться при каждом запуске экземпляра. Если его опустить, то указанные настройки применяются к контейнеру до его перезагрузки(в случае если он запущен).
Так как, большинство настроек ОС Linux хранится в простых текстовых файлах, их легко можно перенести на множество контейнеров. Например, скопировать список репозиториев и серверов DNS;
# cp /etc/apt/sources.list /vz/private/101/etc/apt/sources.listcp /etc/resolv.conf /vz/private/101/etc/resolv.conf
Если оперировать идентификатором контейнера не удобно, то ему можно присвоить понятное человеку имя;
# vzctl set 101 —name ubuntu101 —save
Таких имен можно задать множество и использовать их для выполнения всех операций, например для запуска контейнера;
# vzctl start ubuntu101
Кроме командыstartесть еще stop — завершение работы, restart — остановка и запуск, а так же destroy — удаление остановленного контейнера с диска.
При развертывании нового экземпляра из шаблона, совершенно не понятно какие использовать учетные данные для входа в ОС. Но, это не проблема. Задать пароль любому пользователю экземпляра, в том числе root, можно прямо из хост-системы:
# vzctl set 101 —userpasswd root:123456
Если указанной учетной записи в системе не окажется, она будет создана. Разобравшись с пользователями, можно подключаться к контейнеру, классическим способом с помощью SSH.
# ssh -l ubuntu 10.200.77.45
Если у контейнера нет IP-адресса или отсутствует сервис SSH, то можно войти как root на прямую без всяких паролей;
# vzctl enter 101
Для просмотра списка существующих контейнеров используется следующая команда;
# vzlist
CTID NPROC STATUS IP_ADDR HOSTNAME
101 18 running 10.200.77.45 u101
Без параметров,vzlist выводит список только запущенных экземпляров. Добавив ключ —all будут показаны все зарегистрированные в системе контейнеры.
Администратор может все
Ключ vzctl enter — не единственная иллюстрация безграничных возможностей администратора хост-системы. Есть еще vzctl exec, которая позволяет выполнять практически любую команду в контейнере от имени супрепользователя и возвращать результат выполнения в консоль хоста.
Например, вывести список DNS-серверов:
# vzctl exec 101 cat /etc/resolv.conf
nameserver 10.200.119.11
nameserver 10.200.119.12
Или, отключить сетевой интерфейс:
# vzctl exec 101 ifdown venet0
Снимки состояния (snapshots)
Тут стоит начать с такой, довольно известной технологии как Loopback Device (loop) — это механизм ядра Linux позволяющий эмулировать обычные файлы как блочные устройства. Подключаются такие файлы через специальный виртуальный контроллер позволяющий традиционными способами создавать разделы и файловые системы внутри этих файлов. OpenVZ использует более продвинутую реализацию этого механизма под названием ploop. Это дает возможность создавать диски растущие в объеме по мере заполнения(тонкие диски) изменять их размер на лету, создавать мгновенные снимки(snapshots). Если, эти возможности вам необходимы, то новые контейнеры должны создаваться следующим образом:
# vzctl create 101 —ostemplate ubuntu-13.10-x86_64 —layout ploop —diskspace 4G
Ключь —layout ploop отвечают за создание контейнера в файле-диске /vz/private/101/root.hdd максимальный размер которого задается ключем diskspace 4G. По факту диск является тонким и будет увеличиваться в объеме по мере заполнения данными.
Созданные ранее контейнеры обычного типа, можно легко привести к этому виду задав сначала желаемый размер диска:
# vzctl set 101 —diskspace 10G —save
А затем выполнив конвертацию:
# vzctl convert 101 —layout ploop
Теперь, можно создавать снимки:
# vzctl snapshot 101 —name SNAP01 —description pred install
Созданные снимки помещаются в каталог /vz/private/101/dump/ В отличии от LXC, создавать снимки можно прямо во время работы контейнера. Что бы просмотреть доступные снапшеты, необходимо выполнить:
# vzctl snapshot-list 101
К сожалению, будет выведен только уникальный идентификатор снимка, его имя и время создания. Описание заданное при создании показано не будет. Его можно посмотреть самостоятельно в файле/vz/private/101/Snapshots.xml
При необходимости, можно переключиться на любой снимок:
# vzctl snapshot-switch 101 —id 89e469a8-47b7-41a5-bbd3-5bf3312521d8
Ключ —id позволяет задать идентификатор снимка. К сожалению, оперировать именами тут нельзя. Удалить снимок можно заменив snapshot-switch на snapshot-delete.
Помогла ли вам статья?