Proxmox LXC: TASK ERROR: command 'systemctl start pve-container@103' failed: exit code 1

На днях словил неприятную ошибку, связанную с работой lxc контейнеров в proxmox. После аварийного перезапуска гипервизора, поднялись все виртуалки, а lxc контейнер нет. Он просто не стартовал, выдавая целый ворох всевозможных ошибок. Расскажу обо всем по порядку.

Онлайн-курс по устройству компьютерных сетей

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Для начала как эта ошибка выглядела в web интерфейсе:

TASK ERROR: command 'systemctl start pve-container@103' failed: exit code 1

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)

lxc-start: segfault at 50 ip error 4 in liblxc.so.1.6.0

Какие то совсем неприятные ошибки. В этот момент я пошел проверять бэкап. Убедился, что он на месте и продолжил спокойно разбираться.

Проверяю статус службы в systemctl:

# systemctl start pve-container@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 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.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

6 комментариев

  1. Оо, у меня такая же проблема уже больше года.
    Правда после запуска гипервизора контейнер все-таки запускается из веб-интерфейса. Из консоли не проверял, надо будет попробовать.

    Смутила ошибка:
    lxc-start: 201: lxccontainer.c: wait_on_daemonized_start: 865 No such file or directory - Failed to receive the container state
    По ощущениям будто бы гипервизор пытается запустить контейнер, не смонтировав предварительно файловую систему. Как заметил еще, эта проблема встречается в большинстве случаев, если контейнер размещен на ZFS-томе.

    Попробую обновить ОС.
    Спасибо!

  2. В догонку.

    Перед установкой гипер-а всегда обновляю БИОС.
    Позволяет избежать гуглежа в дальнейшем и экономит время.

  3. 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 сек. Написал я его не для того, чтобы потешить свое ЧСВ.

    • О боже мой. Филологи и психологи подъехали.

      "Написал я его не для того, чтобы потешить свое ЧСВ."

      Люди, которых не волнует ЧСВ, не пишут об этом в комментариях :)

      Вы предлагаете для теста обновления, весь гипервизор с виртуалками запихнуть в виртуалку этого гипервизора? Отличный подход.

  4. Александр

    Спасибо, нужная вещь взял на заметку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar