OpenVZ7: различия между версиями

Материал из ALT Linux Wiki
(не показано 5 промежуточных версий 2 участников)
Строка 14: Строка 14:
</syntaxhighlight>
</syntaxhighlight>


При этом установятся ядро с поддержкой vz7 и необходимые утилиты и службы; далее необходимо перегрузить систему и при загрузке выбрать ядро <tt>-ovz-el7</tt>. В ветке p9 используется стабильное ядро, основанное на RHEL 7.6 (3.10.0-957), в Sisyphus устанавливается активно изменяемое ядро из RHEL 7.9 (3.10.0-1160). Утилита <code>vzstat</code> - это аналог <code>top</code> для наблюдения за активностью контейнеров. В пакет <code>vztt</code> входят утилиты для работы с шаблонами контейнеров (специально преобразованные rootfs образы операционных систем, которые будут запускаться в контейнерах). Пакет <code>vzctl</code> содержит основные команды для управления контейнерами: <code>vzctl</code> и <code>vzlist</code>, а также необходимые для работы контейнеров скрипты, службы и библиотеки.
При этом установятся ядро с поддержкой vz7 и необходимые утилиты и службы; далее необходимо перегрузить систему и при загрузке выбрать ядро <code>-ovz-el7</code>. В ветке p9 используется стабильное ядро, основанное на RHEL 7.6 (3.10.0-957), в Sisyphus устанавливается активно изменяемое ядро из RHEL 7.9 (3.10.0-1160). Утилита <code>vzstat</code> - это аналог <code>top</code> для наблюдения за активностью контейнеров. В пакет <code>vztt</code> входят утилиты для работы с шаблонами контейнеров (специально преобразованные rootfs образы операционных систем, которые будут запускаться в контейнерах). Пакет <code>vzctl</code> содержит основные команды для управления контейнерами: <code>vzctl</code> и <code>vzlist</code>, а также необходимые для работы контейнеров скрипты, службы и библиотеки.
 
{{Attention|Проблемы при создании файловой системы со свойством <code>metadata_csum</code>
и её монтировании с опцией <code>lazytime</code>}}
 
Т.к. в ALT используются современные утилиты для работы с файловой системой, то последняя создаётся с включённым
свойством <code>metadata_csum</code> (см. <code>/etc/mke2fs.conf</code>, секция <code>[fs_types]</code>, раздел про <code>ext4</code>).
Однако, в RHEL 7 нет полноценной поддержки этого свойства (см. [https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/7.7_release_notes/known_issues known problems in Red Hat Enterprise Linux]).
Поэтому при создании файловой системы с <code>metadata_csum</code> внутри ploop-устройства,
могут быть проблемы при интенсивном использовании этой файловой системы. Особенно при монтировании
с опцией <code>lazytime</code> (включена по умолчанию, начиная с ядра rh7-3.10.0-1160.15.2.vz7.173.4).
Поэтому в ядре ALT OpenVZ 7 эта опция отключена, а с версии <code>ploop</code> 7.0.255 файловая система внутри ploop-устройства
создаётся без <code>metadata_csum</code> (все имеющиеся шаблоны контейнеров необходимо пересоздать).
Возможно, при создании <code>/var/lib/vz</code> имеет смысл отключать это свойство
(<code>mkfs.ext4 -O ^metadata_csum</code>).


=== Создание шаблонов контейнеров ===
=== Создание шаблонов контейнеров ===


Шаблоны контейнеров создаются на основе архива, содержащего файлы корневой файловой системы (rootfs). Разработчики
Шаблоны контейнеров создаются на основе архива, содержащего файлы корневой файловой системы (rootfs). Разработчики
ALT Linux предоставляет такие архивы в [http://ftp.altlinux.ru/pub/distributions/ALTLinux/p9/images/cloud/ разделе для облачных платформ] (32-битный образ для i586 см. в составе
ALT Linux предоставляет такие архивы в [http://ftp.altlinux.ru/pub/distributions/ALTLinux/p9/images/cloud/ разделе для облачных платформ]. Архивы для других дистрибутивов Linux,
[[Starterkits#Шаблон для OpenVZ|стартеркитов]]). Архивы для других дистрибутивов Linux,
подготовленные разработчиками OpenVZ, можно найти
подготовленные разработчиками OpenVZ, можно найти
[http://download.openvz.org/template/precreated/precreated/ здесь]. Также доступны архивы,
[http://download.openvz.org/template/precreated/ здесь]. Также доступны архивы,
[http://download.openvz.org/template/precreated/contrib/ созданные пользователями] OpenVZ.
[http://download.openvz.org/template/precreated/contrib/ созданные пользователями] OpenVZ.


Строка 31: Строка 44:


<syntaxhighlight>
<syntaxhighlight>
# mv alt-p9-ovz-generic-20200312-i586.tar.xz alt-p9-x86.tar.gz
# mv alt-p9-rootfs-sysvinit-i586.tar.xz alt-p9-x86-sysvinit.tar.gz
# mkdir -p /var/lib/vz/tmp
# mkdir -p /var/lib/vz/tmp
# TMPDIR=/var/lib/vz/tmp /usr/libexec/ovz-template-converter alt-p9-x86.tar.gz
# TMPDIR=/var/lib/vz/tmp /usr/libexec/ovz-template-converter alt-p9-x86-sysvinit.tar.gz
#
#
</syntaxhighlight>
</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>/var/lib/vz/template/cache/</tt> появился архив <tt>alt-9-x86-sysvinit.plain.ploopv2.tar.lz4</tt>, из которого будут разворачиваться новые контейнеры. Также, появился каталог <code>/var/lib/vz/template/alt</code>.


Список готовых к использованию шалонов контейнеров можно посмотреть с помощью команды <tt>vzpkg</tt>.
Список готовых к использованию шалонов контейнеров можно посмотреть с помощью команды <tt>vzpkg</tt>.
Строка 43: Строка 56:
<syntaxhighlight>
<syntaxhighlight>
# vzpkg list
# vzpkg list
alt-p9-x86                 2020-03-12 16:13:50
alt-p9-x86-sysvinit          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), мы не стали его
Обратите внимание, что в архиве rootfs для ALT Linux в качестве архитектуры указано <tt>i586</tt>, которую мы переименовали в <tt>x86</tt>, поскольку в качестве имени архитектуры в OpenVZ поддерживаются только <tt>x86</tt> и <tt>x86_64</tt>. Также, обратите внимание на то, что исходный архив был упакован с помощью утилиты xz(1), мы не стали его
пережимать в формат gzip(1), а просто сменили расширение архива с .xz на .gz. Утилита <tt>/usr/libexec/ovz-template-converter</tt> справилась со своей задачей. Однако, не забывайте, что расширение сжатого архива обязано быть именно <tt>.tar.gz</tt>.
пережимать в формат gzip(1), а просто сменили расширение архива с .xz на .gz. Утилита <tt>/usr/libexec/ovz-template-converter</tt> справилась со своей задачей. Однако, не забывайте, что расширение сжатого архива обязано быть именно <tt>.tar.gz</tt>.


Строка 92: Строка 105:
</syntaxhighlight>
</syntaxhighlight>


При использовании nfsd внутри контейнера (<code>FEATURES="nfsd:on"</code>) необходимо иметь в виду, что, начиная с ядра rh7-3.10.0-1160.6.1.vz7.171.1, внутри контейнера не видны ядерные треды, т.е. процессы nfsd можно наблюдать только снаружи контейнера. (См. [https://bugs.openvz.org/browse/OVZ-7245 OVZ-7245]).
При использовании nfsd внутри контейнера (<code>FEATURES="nfsd:on"</code>) необходимо иметь в виду, что, начиная с ядра rh7-3.10.0-1160.6.1.vz7.171.1, внутри контейнера не видны ядерные треды, т.е. процессы nfsd можно наблюдать только снаружи контейнера. (См. [https://bugs.openvz.org/browse/OVZ-7245 OVZ-7245]). Update: исправлено в rh7-3.10.0-1160.11.1.vz7.172.10.





Версия от 21:50, 24 апреля 2021

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.
Внимание! В разработке! Статья не закончена! Инструкции неполные!


Установка (только ветки 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.9 (3.10.0-1160). Утилита vzstat - это аналог top для наблюдения за активностью контейнеров. В пакет vztt входят утилиты для работы с шаблонами контейнеров (специально преобразованные rootfs образы операционных систем, которые будут запускаться в контейнерах). Пакет vzctl содержит основные команды для управления контейнерами: vzctl и vzlist, а также необходимые для работы контейнеров скрипты, службы и библиотеки.

Внимание! Проблемы при создании файловой системы со свойством metadata_csum и её монтировании с опцией lazytime


Т.к. в ALT используются современные утилиты для работы с файловой системой, то последняя создаётся с включённым свойством metadata_csum (см. /etc/mke2fs.conf, секция [fs_types], раздел про ext4). Однако, в RHEL 7 нет полноценной поддержки этого свойства (см. known problems in Red Hat Enterprise Linux). Поэтому при создании файловой системы с metadata_csum внутри ploop-устройства, могут быть проблемы при интенсивном использовании этой файловой системы. Особенно при монтировании с опцией lazytime (включена по умолчанию, начиная с ядра rh7-3.10.0-1160.15.2.vz7.173.4). Поэтому в ядре ALT OpenVZ 7 эта опция отключена, а с версии ploop 7.0.255 файловая система внутри ploop-устройства создаётся без metadata_csum (все имеющиеся шаблоны контейнеров необходимо пересоздать). Возможно, при создании /var/lib/vz имеет смысл отключать это свойство (mkfs.ext4 -O ^metadata_csum).

Создание шаблонов контейнеров

Шаблоны контейнеров создаются на основе архива, содержащего файлы корневой файловой системы (rootfs). Разработчики ALT Linux предоставляет такие архивы в разделе для облачных платформ. Архивы для других дистрибутивов 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-rootfs-sysvinit-i586.tar.xz alt-p9-x86-sysvinit.tar.gz
# mkdir -p /var/lib/vz/tmp
# TMPDIR=/var/lib/vz/tmp /usr/libexec/ovz-template-converter alt-p9-x86-sysvinit.tar.gz
#

Теперь в каталоге /var/lib/vz/template/cache/ появился архив alt-9-x86-sysvinit.plain.ploopv2.tar.lz4, из которого будут разворачиваться новые контейнеры. Также, появился каталог /var/lib/vz/template/alt.

Список готовых к использованию шалонов контейнеров можно посмотреть с помощью команды vzpkg.

# vzpkg list
alt-p9-x86-sysvinit          2020-03-12 16:13:50
#

Обратите внимание, что в архиве rootfs для ALT Linux в качестве архитектуры указано i586, которую мы переименовали в x86, поскольку в качестве имени архитектуры в OpenVZ поддерживаются только 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, чтобы сохранить все изменения в конфигурационном файле.

Примечание: Внимание! В каталоге /etc/vz/conf/ содержатся символические ссылки на конфигурационные файлы контейнеров, сами файлы находятся в /var/lib/vz/private/XXX/ve.conf, где XXX - идентификатор контейнера. При ручном редактировании этих файлов не удалите случайно ссылки!


Запуск контейнера

# 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

При использовании nfsd внутри контейнера (FEATURES="nfsd:on") необходимо иметь в виду, что, начиная с ядра rh7-3.10.0-1160.6.1.vz7.171.1, внутри контейнера не видны ядерные треды, т.е. процессы nfsd можно наблюдать только снаружи контейнера. (См. OVZ-7245). Update: исправлено в rh7-3.10.0-1160.11.1.vz7.172.10.