На днях словил неприятную ошибку, связанную с работой lxc контейнеров в proxmox. После аварийного перезапуска гипервизора, поднялись все виртуалки, а lxc контейнер нет. Он просто не стартовал, выдавая целый ворох всевозможных ошибок. Расскажу обо всем по порядку.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Для начала как эта ошибка выглядела в web интерфейсе:
Job for pve-container@103.service failed because the control process exited with error code. See "systemctl status pve-container@103.service" and "journalctl -xe" for details. TASK ERROR: command 'systemctl start pve-container@103' failed: exit code 1
Пошел в консоль сервера, смотрю системный лог. Вижу там вот это:
lxc-start[9695]: segfault at 50 ip 00007f3c7b7d1f8b sp 00007ffd2eefad40 error 4 in liblxc.so.1.6.0[7f3c7b778000+8a000] Code: 9b c0 ff ff 4d 85 ff 0f 85 82 02 00 00 66 90 48 8b 73 50 48 8b bb f8 00 00 00 e8 80 78 fa ff 4c 8b 74 24 10 48 89 de 4c 89 f7 <41> ff 56 50 4c 89 f7 48 89 de 41 ff 56 58 48 8b 83 f8 00 00 00 8b EXT4-fs (loop0): mounted filesystem with ordered data mode. Opts: (null)
Какие то совсем неприятные ошибки. В этот момент я пошел проверять бэкап. Убедился, что он на месте и продолжил спокойно разбираться.
Проверяю статус службы в systemctl:
# systemctl start pve-container@103
Mar 02 19:35:39 bitrix-prox systemd[1]: Starting PVE LXC Container: 103... Mar 02 19:35:39 bitrix-prox lxc-start[16099]: lxc-start: 103: lxccontainer.c: wait_on_daemonized_start: 865 No such file or directory - Failed to receive the container state Mar 02 19:35:39 bitrix-prox lxc-start[16099]: lxc-start: 103: tools/lxc_start.c: main: 329 The container failed to start Mar 02 19:35:39 bitrix-prox lxc-start[16099]: lxc-start: 103: tools/lxc_start.c: main: 332 To get more details, run the container in foreground mode Mar 02 19:35:39 bitrix-prox lxc-start[16099]: lxc-start: 103: tools/lxc_start.c: main: 335 Additional information can be obtained by setting the --logfile and --logpriority Mar 02 19:35:39 bitrix-prox systemd[1]: pve-container@103.service: Control process exited, code=exited, status=1/FAILURE Mar 02 19:35:39 bitrix-prox systemd[1]: pve-container@103.service: Failed with result 'exit-code'. Mar 02 19:35:39 bitrix-prox systemd[1]: Failed to start PVE LXC Container: 103.
Пытаюсь запустить контейнер напрямую сам:
# lxc-start -n 103 -F lxc-start: 103: conf.c: run_buffer: 352 Script exited with status 25 lxc-start: 103: start.c: lxc_init: 897 Failed to run lxc.hook.pre-start for container "103" lxc-start: 103: start.c: __lxc_start: 2032 Failed to initialize container "103" Segmentation fault
Ничего не помогает. Вообще приуныл. Текст ошибок совершенно не информативный. Не понятно, в чем конкретно проблема. Пошел гуглить, но там куча всевозможных причин, по которым может появляться эта ошибка. При этом, если примонтировать диск контейнера, то с ним все в порядке:
# pct mount 103 mounted CT 103 in '/var/lib/lxc/103/rootfs'
Все файлы на месте. Я уже думал, надо пересоздать просто контейнер, подсунув ему этот диск. Но что-то подсказывало, что не поможет. В итоге после гугления нашел такую гипотезу. Если система в контейнере обновлялась позже, чем сам гипервизор, может возникать проблема с запуском контейнера.
У меня в контейнере жила Centos 8 и она реально недавно обновлялась. А гипервизор значительно раньше. В итоге я просто обновил гипервизор штатно, через веб интерфейс. Не понадобилась даже его перезагрузка. После обновления Proxmox, контейнер lxc благополучно запустился.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.
Оо, у меня такая же проблема уже больше года.
Правда после запуска гипервизора контейнер все-таки запускается из веб-интерфейса. Из консоли не проверял, надо будет попробовать.
Смутила ошибка:
lxc-start: 201: lxccontainer.c: wait_on_daemonized_start: 865 No such file or directory - Failed to receive the container state
По ощущениям будто бы гипервизор пытается запустить контейнер, не смонтировав предварительно файловую систему. Как заметил еще, эта проблема встречается в большинстве случаев, если контейнер размещен на ZFS-томе.
Попробую обновить ОС.
Спасибо!
https://securityboulevard.com/2019/09/proxmox-container-with-debian-10-does-not-work-after-upgrade/
В догонку.
Перед установкой гипер-а всегда обновляю БИОС.
Позволяет избежать гуглежа в дальнейшем и экономит время.
1. ПОЙМАЛ, аФФтор, ПОЙМАЛ - не СЛОВИЛ. "Колхоз" какой-то. Не в первый раз у вас замечаю (
2. Периодическое обновление гипервизора ОБЯЗАТЕЛЬНО. Хотя бы раз в месяц. Берите пример с MS (они точно не дураки) - каждый второй
вторник месяца обновляйте.
Включите nested virt на PVE, разверните в ВМ тестовый proxmox, обновляйте и тестируйте перед обновлением "реального".
Обновления безопасности устанавливайте еще чаще.
Кусок кода из своего скрипта по допиливанию PVE под себя после установки:
...
# Install and activate the unattended-upgrades package (it’s not activated by default after installation)
# https://wiki.debian.org/UnattendedUpgrades https://help.ubuntu.com/community/AutoWeeklyUpdateHowTo
echo
read -r -p "Install security updates automatically? [y/N]: " YN
if [[ "${YN}" =~ ^[yY]$ ]]; then
apt-get install -y unattended-upgrades
dpkg-reconfigure -f noninteractive unattended-upgrades
[ -f /etc/apt/apt.conf.d/50unattended-upgrades.orig ] || cp -fv /etc/apt/apt.conf.d/50unattended-upgrades{,.orig}
cat >/etc/apt/apt.conf.d/50unattended-upgrades < /etc/apt/apt.conf.d/02periodic < /etc/apt/apt.conf.d/local << 'EOF'
Dpkg::Options {
"--force-confdef";
"--force-confold";
}
EOF
fi
...
Зы. А ведь это я когда-то порекомендовал вам proxmox в кач-ве гипер-а ) И оказался прав как оказалось.
Зы2. И прежде ,чем критиковать мой коммент (вы это любите, я знаю) - подумайте 10 сек. Написал я его не для того, чтобы потешить свое ЧСВ.
О боже мой. Филологи и психологи подъехали.
"Написал я его не для того, чтобы потешить свое ЧСВ."
Люди, которых не волнует ЧСВ, не пишут об этом в комментариях :)
Вы предлагаете для теста обновления, весь гипервизор с виртуалками запихнуть в виртуалку этого гипервизора? Отличный подход.
Спасибо, нужная вещь взял на заметку.