| Summary: | Контейнеры на базе ALT Linux неработоспособны | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Sisyphus | Reporter: | Вадим Илларионов <gbIMoBou> | ||||
| Component: | pve-lxc | Assignee: | Alexey Shabalin <shaba> | ||||
| Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||
| Severity: | normal | ||||||
| Priority: | P3 | CC: | aen, andy, cavetroll, dans, dd, gbIMoBou, ildar, imz, mike, shaba, shrek, viy | ||||
| Version: | unstable | ||||||
| Hardware: | all | ||||||
| OS: | Linux | ||||||
| Attachments: |
|
||||||
начинать надо с 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"; Ещё поправка: 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'
|
На альтовом проксмоксе не работает ни один из шаблонов или распакованных контейнеров (что 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") { Каковая в отсутствие основного блюда ни на что не пригодна.