OpenVZ7: различия между версиями
Cheusov (обсуждение | вклад) |
|||
(не показано 8 промежуточных версий 1 участника) | |||
Строка 1: | Строка 1: | ||
{{Stub}} | {{Stub}} | ||
{{Attention|В разработке! Статья не закончена! Инструкции неполные!}} | {{Attention|В разработке! Статья не закончена! Инструкции неполные!}} | ||
__TOC__ | |||
=== Установка (только ветки p9, Sisyphus) === | === Установка (только ветки p9, Sisyphus) === | ||
Строка 9: | Строка 10: | ||
# apt-get install update-kernel vzctl vztt vzstat | # apt-get install update-kernel vzctl vztt vzstat | ||
# update-kernel -t ovz-el7 | # update-kernel -t ovz-el7 | ||
# systemctl enable vz.service | |||
# systemctl enable vzevent.service | |||
</syntaxhighlight> | </syntaxhighlight> | ||
При этом установятся ядро с поддержкой vz7 и необходимые утилиты; далее необходимо перегрузить систему и при загрузке выбрать ядро <tt>-ovz-el7</tt>. В ветке p9 используется стабильное ядро, основанное на RHEL 7.6 (3.10.0-957), в Sisyphus устанавливается активно изменяемое ядро из RHEL 7. | При этом установятся ядро с поддержкой vz7 и необходимые утилиты и службы; далее необходимо перегрузить систему и при загрузке выбрать ядро <tt>-ovz-el7</tt>. В ветке p9 используется стабильное ядро, основанное на RHEL 7.6 (3.10.0-957), в Sisyphus устанавливается активно изменяемое ядро из RHEL 7.8 (3.10.0-1127). Утилита <code>vzstat</code> - это аналог <code>top</code> для наблюдения за активностью контейнеров. В пакет <code>vztt</code> входят утилиты для работы с шаблонами контейнеров (специально преобразованные rootfs образы операционных систем, которые будут запускаться в контейнерах). Пакет <code>vzctl</code> содержит основные команды для управления контейнерами: <code>vzctl</code> и <code>vzlist</code>, а также необходимые для работы контейнеров скрипты, службы и библиотеки. | ||
=== Создание шаблонов контейнеров === | === Создание шаблонов контейнеров === | ||
Шаблоны контейнеров создаются на основе архива, содержащего файлы корневой файловой системы (rootfs). Разработчики | |||
AltLinux предоставляет такие архивы для своих операционных систем в составе | |||
[[Starterkits#Шаблон для OpenVZ|стартеркитов]]. Архивы для других дистрибутивов Linux, | |||
подготовленные разработчиками OpenVZ, можно найти | |||
[http://download.openvz.org/template/precreated/precreated/ здесь]. Также доступны архивы, | |||
[http://download.openvz.org/template/precreated/contrib/ созданные пользователями] OpenVZ. | |||
Формат имени архива для конвертирования | Полученный архив необходимо преобразовать в шаблон контейнера с помощью утилиты | ||
где DISTRIBUTION - имя дистрибутива (в | <tt>/usr/libexec/ovz-template-converter</tt>. Пример показан ниже. | ||
Формат имени архива для конвертирования имеет следующий вид: <tt>DISTRIBUTION-VERSION-ARCH[-NAME].tar.gz</tt>, | |||
где DISTRIBUTION - имя дистрибутива (в случае AltLinux - alt); VERSION - версия, ветка; ARCH - архитектура (поддерживается только x86_64 и x86); NAME - дополнительное имя, позволяющее иметь несколько различных шаблонов для данного набора дистрибутив-ветка-архитектура. | |||
<syntaxhighlight> | |||
# mv alt-p9-ovz-generic-20200312-i586.tar.xz alt-p9-x86.tar.gz | |||
# mkdir -p /var/lib/vz/tmp | |||
# TMPDIR=/var/lib/vz/tmp /usr/libexec/ovz-template-converter alt-p9-x86.tar.gz | |||
# | |||
</syntaxhighlight> | |||
Теперь в каталоге <tt>/var/lib/vz/template/cache/</tt> появился архив <tt>alt-9-x86.plain.ploopv2.tar.lz4</tt>, из которого будут разворачиваться новые контейнеры. Также, появился каталог <code>/var/lib/vz/template/alt</code>. | |||
Список готовых к использованию шалонов контейнеров можно посмотреть с помощью команды <tt>vzpkg</tt>. | |||
<syntaxhighlight> | <syntaxhighlight> | ||
# vzpkg list | # vzpkg list | ||
alt-p9- | alt-p9-x86 2020-03-12 16:13:50 | ||
# | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Обратите внимание, что с архиве rootfs для AltLinux в качестве архитектуры указано <tt>i586</tt>, которую мы переименовали в <tt>x86</tt>, поскольку в качестве имени архитектуры поддерживаются только <tt>x86</tt> и <tt>x86_64</tt>. Также, обратите внимание на то, что исходный архив был упакован с помощью утилиты xz(1), мы не стали его | |||
пережимать в формат gzip(1), а просто сменили расширение архива с .xz на .gz. Утилита <tt>/usr/libexec/ovz-template-converter</tt> справилась со своей задачей. Однако, не забывайте, что расширение сжатого архива обязано быть именно <tt>.tar.gz</tt>. | |||
=== Создание контейнера === | === Создание контейнера === | ||
Строка 36: | Строка 59: | ||
Создаём из шаблона <tt>alt-p9-x86_64-sysv</tt> с образцом конфига из <tt>/etc/vz/conf/vswap.1024MB.conf-sample</tt> контейнер под именем <tt>test-sysv-etcnet</tt>, назначаем IP адрес <tt>192.168.1.10</tt>, устанавливаем размер диска в <tt>20ГБ</tt>, ограничиваем ресурсы (CPU - 2 ядра, память - 1ГБ) и настраиваем DNS (будут использованы публичные сервера Google). Обязательно указываем в команде <code>vzctl set</code> аргумент <code>--save</code>, чтобы сохранить все изменения в конфигурационном файле. | Создаём из шаблона <tt>alt-p9-x86_64-sysv</tt> с образцом конфига из <tt>/etc/vz/conf/vswap.1024MB.conf-sample</tt> контейнер под именем <tt>test-sysv-etcnet</tt>, назначаем IP адрес <tt>192.168.1.10</tt>, устанавливаем размер диска в <tt>20ГБ</tt>, ограничиваем ресурсы (CPU - 2 ядра, память - 1ГБ) и настраиваем DNS (будут использованы публичные сервера Google). Обязательно указываем в команде <code>vzctl set</code> аргумент <code>--save</code>, чтобы сохранить все изменения в конфигурационном файле. | ||
{{note|Внимание! В каталоге <tt>/etc/vz/conf/</tt> содержатся символические ссылки на конфигурационные файлы контейнеров, сами файлы находятся в <tt>/var/lib/vz/private/XXX/ve.conf</tt>, где XXX - идентификатор контейнера. При ручном редактировании этих файлов не удалите случайно ссылки!}} | |||
=== Запуск контейнера === | === Запуск контейнера === | ||
Строка 46: | Строка 71: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Использование NFS внутри контейнера === | |||
Чтобы добавить возможность монтировать NFS внутри контейнера, необходимо включить нужную FEATURES: | |||
<syntaxhighlight> | |||
# vzctl set 10110 --features "nfs:on" --save [--setmode restart] | |||
</syntaxhighlight> | |||
после чего перезапустить контейнер (<code>vzctl restart</code> или <code>--setmode restart</code>). | |||
Внутри контейнера устанавливаем необходимые пакеты и монтируем NFS: | |||
<syntaxhighlight> | |||
# vzctl enter 10110 | |||
CT-10110 /# apt-get install nfs-clients | |||
CT-10110 /# mkdir /NFS | |||
CT-10110 /# echo '192.168.1.1:/nfs/export /NFS nfs \ | |||
noauto,ro,noexec,nosuid,nodev,nolock,x-systemd.automount,_netdev,soft,intr,nfsvers=3' >>/etc/fstab | |||
CT-10110 /# mount /NFS | |||
</syntaxhighlight> | |||
[[Category:Виртуализация]] | [[Category:Виртуализация]] |
Версия от 19:57, 26 мая 2020
Установка (только ветки p9, Sisyphus)
# apt-get update
# apt-get install update-kernel vzctl vztt vzstat
# update-kernel -t ovz-el7
# systemctl enable vz.service
# systemctl enable vzevent.service
При этом установятся ядро с поддержкой vz7 и необходимые утилиты и службы; далее необходимо перегрузить систему и при загрузке выбрать ядро -ovz-el7. В ветке p9 используется стабильное ядро, основанное на RHEL 7.6 (3.10.0-957), в Sisyphus устанавливается активно изменяемое ядро из RHEL 7.8 (3.10.0-1127). Утилита vzstat
- это аналог top
для наблюдения за активностью контейнеров. В пакет vztt
входят утилиты для работы с шаблонами контейнеров (специально преобразованные rootfs образы операционных систем, которые будут запускаться в контейнерах). Пакет vzctl
содержит основные команды для управления контейнерами: vzctl
и vzlist
, а также необходимые для работы контейнеров скрипты, службы и библиотеки.
Создание шаблонов контейнеров
Шаблоны контейнеров создаются на основе архива, содержащего файлы корневой файловой системы (rootfs). Разработчики AltLinux предоставляет такие архивы для своих операционных систем в составе стартеркитов. Архивы для других дистрибутивов Linux, подготовленные разработчиками OpenVZ, можно найти здесь. Также доступны архивы, созданные пользователями OpenVZ.
Полученный архив необходимо преобразовать в шаблон контейнера с помощью утилиты /usr/libexec/ovz-template-converter. Пример показан ниже. Формат имени архива для конвертирования имеет следующий вид: DISTRIBUTION-VERSION-ARCH[-NAME].tar.gz, где DISTRIBUTION - имя дистрибутива (в случае AltLinux - alt); VERSION - версия, ветка; ARCH - архитектура (поддерживается только x86_64 и x86); NAME - дополнительное имя, позволяющее иметь несколько различных шаблонов для данного набора дистрибутив-ветка-архитектура.
# mv alt-p9-ovz-generic-20200312-i586.tar.xz alt-p9-x86.tar.gz
# mkdir -p /var/lib/vz/tmp
# TMPDIR=/var/lib/vz/tmp /usr/libexec/ovz-template-converter alt-p9-x86.tar.gz
#
Теперь в каталоге /var/lib/vz/template/cache/ появился архив alt-9-x86.plain.ploopv2.tar.lz4, из которого будут разворачиваться новые контейнеры. Также, появился каталог /var/lib/vz/template/alt
.
Список готовых к использованию шалонов контейнеров можно посмотреть с помощью команды vzpkg.
# vzpkg list
alt-p9-x86 2020-03-12 16:13:50
#
Обратите внимание, что с архиве rootfs для AltLinux в качестве архитектуры указано i586, которую мы переименовали в x86, поскольку в качестве имени архитектуры поддерживаются только x86 и x86_64. Также, обратите внимание на то, что исходный архив был упакован с помощью утилиты xz(1), мы не стали его пережимать в формат gzip(1), а просто сменили расширение архива с .xz на .gz. Утилита /usr/libexec/ovz-template-converter справилась со своей задачей. Однако, не забывайте, что расширение сжатого архива обязано быть именно .tar.gz.
Создание контейнера
# vzctl create 10110 --ostemplate alt-p9-x86_64-sysv --config vswap.1024MB \
--ipadd 192.168.1.10 --name test-sysv-etcnet
# vzctl set 10110 --diskspace 20G --nameserver 8.8.8.8 --nameserver 8.8.4.4 --cpus 2 --ram 1G --save
Создаём из шаблона alt-p9-x86_64-sysv с образцом конфига из /etc/vz/conf/vswap.1024MB.conf-sample контейнер под именем test-sysv-etcnet, назначаем IP адрес 192.168.1.10, устанавливаем размер диска в 20ГБ, ограничиваем ресурсы (CPU - 2 ядра, память - 1ГБ) и настраиваем DNS (будут использованы публичные сервера Google). Обязательно указываем в команде vzctl set
аргумент --save
, чтобы сохранить все изменения в конфигурационном файле.
Запуск контейнера
# vzctl start 10110
# vzlist -o ctid,numproc,status,ip,name,hostname,onboot
CTID NPROC STATUS IP_ADDR NAME HOSTNAME ONBOOT
10110 10 running 192.168.1.10 test-sysv-etcnet - yes
Использование NFS внутри контейнера
Чтобы добавить возможность монтировать NFS внутри контейнера, необходимо включить нужную FEATURES:
# vzctl set 10110 --features "nfs:on" --save [--setmode restart]
после чего перезапустить контейнер (vzctl restart
или --setmode restart
).
Внутри контейнера устанавливаем необходимые пакеты и монтируем NFS:
# vzctl enter 10110
CT-10110 /# apt-get install nfs-clients
CT-10110 /# mkdir /NFS
CT-10110 /# echo '192.168.1.1:/nfs/export /NFS nfs \
noauto,ro,noexec,nosuid,nodev,nolock,x-systemd.automount,_netdev,soft,intr,nfsvers=3' >>/etc/fstab
CT-10110 /# mount /NFS