0. Update Proxmox7.2 end start old LXC !
Данный опус является частью единого цикла заметок o CLI. Для его написания использовалось множество различных источников (скилы крутых специалистов, статьи с тематических сайтов, техническая документация, комментарии с форумов и социальных сетей и т. д и т. п.). К сожалению, указать все источники точно не представляется возможным! По этому, в конце заметки, будет указана ссылка только на основной источник. Материалы, использованные для написания заметки, изменялись автором под конкретную задачу! Вам, скорее всего, тоже придется поступить аналогичным образом для получения желаемого результата)
Сgroup — это механизм ядра, используемый для иерархической организации процессов и распределения системных ресурсов. Основные ресурсы, контролируемые через контрольные группы , — это процессорное время, лимиты памяти и подкачки, а также доступ к узлам устройств. cgroups также используются для «замораживания» контейнера перед созданием моментальных снимков.
Начиная с Proxmox VE 7.0, по умолчанию используется чистая среда cgroupv2 . Раньше использовалась «гибридная» установка, при которой управление ресурсами в основном осуществлялось в cgroupv1 с дополнительным контроллером cgroupv2 , который мог управлять некоторыми подсистемами через параметр командной строки ядра cgroup_no_v1 . (Подробности см. в документации по параметрам ядра .)
Таким образом, после обновления гипервизора до версии выше Proxmox 7 - однозачно возникнут проблемы с запуском сервисов, развернутых с использованием старых LXC контейнеров, например Сentos7, Ubuntu16 и более еще более древних.
#pveversion -v
#dpkg-query -W | grep lxc
#journalctl --since "2022-10-11 00:00:00" --until "2021-10-25 02:15:00"
#journalctl -xef
CentOS 7 и Ubuntu 16.10 — это два известных выпуска дистрибутивов Linux, которые имеют версию systemd , слишком старую для запуска в среде cgroupv2 , вы можете либо. Замечания по совместимости версий CGroup указаны в документации PVE тут.
-
Обновите версию systemd контейнеров. Если дистрибутив предоставляет репозиторий бэкпортов, это может быть простой и быстрой временной мерой.
-
Переместите контейнер или его службы на виртуальную машину. Виртуальные машины гораздо меньше взаимодействуют с хостом, поэтому на них можно без проблем установить старые версии ОС.
-
Вернитесь к устаревшему контроллеру cgroup . Обратите внимание, что, хотя это может быть допустимым решением, оно не является постоянным. Существует высокая вероятность того, что будущий основной выпуск Proxmox VE, например 8.0, больше не сможет поддерживать устаревший контроллер.
Изменение версии CGroup
Если квоты файловой системы не требуются и все контейнеры поддерживают cgroupv2 , рекомендуется придерживаться нового значения по умолчанию. |
Чтобы вернуться к предыдущей версии, можно использовать следующий параметр командной строки ядра:
systemd.unified_cgroup_hierarchy=0
См. этот раздел о редактировании командной строки загрузки ядра, чтобы узнать, куда добавить параметр.тключение пользователя:
Другими словами, чтобы вернуться к предыдущей версии, нужно внести изменения в файл /etc/default/grub :
nano /etc/default/grub
Меняем в файле загрущика строчку:
#GRUB_CMDLINE_LINUX_DEFAULT="quiet"
На строчку:
#ADD for support LXC Centos7 #systemd.unified_cgroup_hierarchy=0
GRUB_CMDLINE_LINUX_DEFAULT="systemd.unified_cgroup_hierarchy=0 quiet"
После обновляем загрущик и подгружаем для про верки запуска какой-нибудь древний LXC:
update-grub
pveam available
pveam download local centos-7-default_20190926_amd64.tar.xz
ls /var/lib/vz/template/cache/centos-7-default_20190926_amd64.tar.xz
Создайте контейнер на основе шаблона Debian (при условии, что вы уже скачали шаблон через веб-интерфейс)
# pct create 100 /var/lib/vz/template/cache/centos-7-default_20190926_amd64.tar.xz
Start container 100
# pct start 100
Start a login session via getty
# pct console 100
Enter the LXC namespace and run a shell as root user
# pct enter 100
Display the configuration
# pct config 100
Добавьте сетевой интерфейс с именем eth0 , подключенный к хост-мосту vmbr0 , установите адрес и шлюз, пока он работает.
# pct set 100 -net0 name=eth0,bridge=vmbr0,ip=192.168.15.147/24,gw=192.168.15.1
Уменьшите память контейнера до 512 МБ.
# pct set 100 -memory 512
Уничтожение контейнера всегда удаляет его из списков контроля доступа и всегда удаляет конфигурацию брандмауэра контейнера. Вы должны активировать --purge , если хотите дополнительно удалить контейнер из заданий репликации, заданий резервного копирования и конфигураций ресурсов высокой доступности.
# pct destroy 100 --purge
Переместите том точки подключения в другое хранилище.
# pct move-volume 100 mp0 other-storage
Переназначьте том другому LXC. Это удалит том mp0 из исходного CT0 и прикрепит его как mp1 к целевому CT1. В фоновом режиме том переименовывается, чтобы имя соответствовало новому владельцу.
# pct move-volume 100 mp0 --target-vmid 200 --target-volume mp1
Получение журналов отладки
В случае , если запуск pct не может запустить определенный контейнер, может быть полезно собрать выходные данные отладки, передав флаг --debug (замените CTID на CTID контейнера):
# pct start CTID --debug
В качестве альтернативы вы можете использовать следующую команду lxc-start , которая сохранит журнал отладки в файл, указанный параметром вывода -o :
# lxc-start -n CTID -F -l DEBUG -o /tmp/lxc-CTID.log
log_bin=mysql-bin
log_error=mysql-bin.err
binlog-ignore-db=information_schema,mysql,test
Linux SED
Заметка:
Смотрим количество свободной оперативки:
# free -h
Cпасибо автору!
Источник: