На альтовом проксмоксе не работает ни один из шаблонов или распакованных контейнеров (что LXC, что OpenVZ) с одинаковой руганью: # lxc-start -n 101 -F lxc-start: cgroups/cgmanager.c: cgm_setup_limits: 1519 call to cgmanager_set_value_sync failed: invalid request lxc-start: cgroups/cgmanager.c: cgm_setup_limits: 1522 Error setting cgroup memory:lxc/101 limit type memory.memsw.limit_in_bytes lxc-start: start.c: lxc_spawn: 1181 failed to setup the cgroup limits for '101' lxc-start: start.c: __lxc_start: 1354 failed to spawn '101' lxc-start: tools/lxc_start.c: main: 344 The container failed to start. lxc-start: tools/lxc_start.c: main: 348 Additional information can be obtained by setting the --logfile and --logpriority options. Контейнеры на базе дебиана и кентоси в оригинальным проксмоксе работают, а на базе альта (восстановленные из OpenVZ) - ни там, ни там: TASK ERROR: unsupported fedora release 'ALT Linux <Release Name> (<Niсkname>)' Последнее - из-за отсутствия альтовой обвязки /usr/share/perl5/PVE/LXC/Setup/AltLinux.pm, долженствующей, в частности, прописывать параметры etcnet. Однако я не мастак в приготовлении перловки - моих познаний для написания этого модуля недостаточно и хватает лишь на добавление приправы: # diff -u /usr/share/perl5/PVE/LXC/Setup-orig.pm Setup-my.pm --- /usr/share/perl5/PVE/LXC/Setup-orig.pm 2016-08-29 01:32:53.349807739 +0800 +++ Setup-my.pm 2016-08-29 01:25:50.807177979 +0800 @@ -10,6 +10,7 @@ use PVE::LXC::Setup::CentOS; use PVE::LXC::Setup::Fedora; use PVE::LXC::Setup::SUSE; +use PVE::LXC::Setup::AltLinux; use PVE::LXC::Setup::ArchLinux; use PVE::LXC::Setup::Alpine; use PVE::LXC::Setup::Gentoo; @@ -20,6 +21,7 @@ centos => 'PVE::LXC::Setup::CentOS', fedora => 'PVE::LXC::Setup::Fedora', opensuse => 'PVE::LXC::Setup::SUSE', + altlinux => 'PVE::LXC::Setup::AltLinux', archlinux => 'PVE::LXC::Setup::ArchLinux', alpine => 'PVE::LXC::Setup::Alpine', gentoo => 'PVE::LXC::Setup::Gentoo', @@ -40,6 +42,8 @@ return "debian"; } elsif (-f "$rootdir/etc/SuSE-brand" || -f "$rootdir/etc/SuSE-release") { return "opensuse"; + } elsif (-f "$rootdir/etc/altlinux-release") { + return "altlinux"; } elsif (-f "$rootdir/etc/fedora-release") { return "fedora"; } elsif (-f "$rootdir/etc/centos-release" || -f "$rootdir/etc/redhat-release") { Каковая в отсутствие основного блюда ни на что не пригодна.
начинать надо с memory.memsw.limit_in_bytes - #32314
Я прокомментировал #32314, но чтоб не прыгать между багами, дублирую сюда. http://cateee.net/lkddb/web-lkddb/MEMCG_SWAP_ENABLED.html Здесь сказано: General purpose distribution kernels which want to enable the feature but keep it disabled by default and let the user enable it by swapaccount=1 boot command line parameter should have this option unselected. То есть, pve можно грузить с опцией ядра swapaccount=1 без его пересборки. Проверил, работает - контейнеры (кроме альтовых) запускаются. Дело за малым: написать перловый модуль для альтов. А вот тут и первые грабли. Часть выпусков идёт с номерами, как, например: ALT Linux 7.0.5 Centaurus (Pholus) ALT Linux 8.0.0 KDesktop (Centaurea Montana) Часть - без: ALT Linux Sisyphus (unstable) ALT Linux starter kit (Hypericum) И как прикажете их сортировать, если даже на сайте альта толком нет информации по соответствию наименований/ников/номеров? Разве что руками в переносимом с OpenVZ контейнере править /etc/altlinux-release как-то так: ALT Linux 9.0.0 Sisyphus (unstable) ALT Linux 8.0.1 starter kit (Hypericum) А при создании шаблона как быть? Ведь номер потребен следующей проверке в перловом модуле: my distro = altlinux; my $release = PVE::Tools::file_read_firstline("$rootdir/etc/$distro-release"); die "unable to read version info\n" if !defined($release); my $version; if ($release =~ m/release\s+(\d+\.\d+)(\.\d+)?/){ if ($1 >= 5 && $1 < 10){ # и ещё вопрос: какой диапазон версий поддерживать? $version = $1; } } die "unsupported $distro release '$release'\n" if !$version; Или вовсе забить на проверку и сосредоточиться на функции формирования файлов настройки етснет?
Жаль, нельзя редактировать собственные реплики, так что поправлюсь здесь. Проверка, полагаю, должна выглядеть примерно так (предыдущий вариант - бездумная калька с проверки на кентось): if ($release =~ m/Alt\s+Linux\s+(\d+\.\d+\.\d+)/){ if ($2 >= 5 && $2 < 10){ # какой диапазон версий поддерживать? $version = $2; } }
# pct enter 100 Insecure $ENV{ENV} while running with -T switch at /usr/share/perl5/PVE/CLI/pct.pm line 162. И так с любым контейнером. Выручает лишь возможность входа через консоль из веб-интерфейса.
Ещё поправка: my $distro = "altlinux";
Insecure $ENV{ENV} while running with -T switch устраняется отключением ENV=$HOME/.bashrc из ~/.bashrc После этого вход в контейнеры работает.
Created attachment 6812 [details] Поддержка контейнеров на базе альта. Вот, состряпал в меру разумения из кусков других модулей. По крайней мере, под альтовым проксмоксом контейнеры работают, сетевые интерфейсы с маршрутом и шлюзом создаются, а под оригинальным в будни буду попробовать. 1. Не реализована поддержка ipv6 - просто доселе не пользовался и не знаю, куда что прописывать, а догадки отметаю: пусть знающие добавят. 2. Как ни крутил правку модулем /usr/share/perl5/PVE/LXC/Setup/Base.pm рутового пароля в контейнере по маршруту не /etc/shadow, а /etc/tcb/$user/shadow, буде таковой наличествует - без толку. Оставил без изменений - может, кто другой запилит.
На оригинальном проксмоксе со следующими версиями пакетов патч тоже отработал: # dpkg -l pve-* | awk '/^i/{print $2"\t"$3}' pve-cluster 4.0-44 pve-container 1.0-73 pve-docs 4.2-8 pve-firewall 2.0-29 pve-firmware 1.1-9 pve-ha-manager 1.0-33 pve-kernel-4.4.16-1-pve 4.4.16-64 pve-libspice-server1 0.12.8-1 pve-manager 4.2-18 pve-qemu-kvm 2.6.1-2 Альтовые контейнеры работают.
Патч запускать из каталога с ним следующим образом: # patch=$(pwd)/pve-4.patch; cd /; patch -p1 <$patch Важно, чтоб в альтовском шаблоне или дампе были удалены симлинки /etc/{fedora,redhat}-release, иначе проксмокс воспримет их как шаблон/дамп федоры или кентоси неизвестной ему версии.
(В ответ на комментарий №10) > Важно, чтоб в альтовском шаблоне или дампе были удалены симлинки > /etc/{fedora,redhat}-release, иначе проксмокс воспримет их как шаблон/дамп > федоры или кентоси неизвестной ему версии. Как вариант, можно их убрать из стартеркитного брендинга.
поддержка altlinux контейнеров добавлена в pve-manager 4.2.23-alt3 шаблон ftp://ftp.altlinux.ru/pub/people/shrek/altlinux-p8-x86_64.tar.xz
А в мейнстрим предложено?
(В ответ на комментарий №12) > поддержка altlinux контейнеров добавлена в pve-manager 4.2.23-alt3 > шаблон ftp://ftp.altlinux.ru/pub/people/shrek/altlinux-p8-x86_64.tar.xz Валер, а из чего делал? Давай в стартеркиты добавим, если там не как для ovz: http://nightly.altlinux.org/p8/permalink/alt-p8-ovz-generic-latest-x86_64.tar.xz
(In reply to Вадим Илларионов from comment #13) > А в мейнстрим предложено? присоединяюсь к вопросу, т.к. в свежем Proxmox поддержки Альта нет.
+ andy@ , как текущий мэйнтэйнер
Подтверждаю по поводу мейнстрима - в Proxmox 8.3.0 создание контейнера заканчивается так: >extracting archive '/var/lib/vz/template/cache/alt-p11-rootfs-systemd-x86_64.tar.xz' >Total bytes read: 467056640 (446MiB, 37MiB/s) >unknown ID 'altlinux' in /etc/os-release file, trying fallback detection >TASK ERROR: unable to create CT 200 - unsupported Fedora release '11'