OpenVZ7: различия между версиями
(Полезные команды) |
м (→Создание шаблонов контейнеров: p9->p10) |
||
Строка 35: | Строка 35: | ||
Шаблоны контейнеров создаются на основе архива, содержащего файлы корневой файловой системы (rootfs). Разработчики | Шаблоны контейнеров создаются на основе архива, содержащего файлы корневой файловой системы (rootfs). Разработчики | ||
ALT Linux предоставляет такие архивы в [http://ftp.altlinux.ru/pub/distributions/ALTLinux/ | ALT Linux предоставляет такие архивы в [http://ftp.altlinux.ru/pub/distributions/ALTLinux/p10/images/cloud/ разделе для облачных платформ]. Архивы для других дистрибутивов Linux, | ||
подготовленные разработчиками OpenVZ, можно найти | подготовленные разработчиками OpenVZ, можно найти | ||
[http://download.openvz.org/template/precreated/ здесь]. Также доступны архивы, | [http://download.openvz.org/template/precreated/ здесь]. Также доступны архивы, | ||
Строка 46: | Строка 46: | ||
<syntaxhighlight> | <syntaxhighlight> | ||
# mv alt- | # mv alt-p10-rootfs-sysvinit-i586.tar.xz alt-p10-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- | # TMPDIR=/var/lib/vz/tmp /usr/libexec/ovz-template-converter alt-p10-x86-sysvinit.tar.gz | ||
# | # | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 58: | Строка 58: | ||
<syntaxhighlight> | <syntaxhighlight> | ||
# vzpkg list | # vzpkg list | ||
alt- | alt-p10-x86-sysvinit 2020-03-12 16:13:50 | ||
# | # | ||
</syntaxhighlight> | </syntaxhighlight> |
Версия от 18:26, 18 января 2022
Установка (только ветки 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
при создании или tune2fs -O ^metadata_csum
для существующей ФС).
UPDATE: В ядре ALT 3.10.0-alt4.1160.21.1.vz7.174.14 ошибка исправлена (возможно).
Создание шаблонов контейнеров
Шаблоны контейнеров создаются на основе архива, содержащего файлы корневой файловой системы (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-p10-rootfs-sysvinit-i586.tar.xz alt-p10-x86-sysvinit.tar.gz
# mkdir -p /var/lib/vz/tmp
# TMPDIR=/var/lib/vz/tmp /usr/libexec/ovz-template-converter alt-p10-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-p10-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
, чтобы сохранить все изменения в конфигурационном файле.
Запуск контейнера
# 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 (ядро ALT 3.10.0-alt4.1160.11.1.vz7.172.10).
Полезные команды
Чтобы посмотреть сетевые соединения из хостовой системы (т.к. там netstat -n их теперь не показывает!), используйте
ip -all netns exec netstat -n