Kernel panic not syncing: VFS: Unable to mount root fs

Словил сегодня неприятную ошибку на web сервере под CentOS 7. Уже начал потихоньку кирпичи откладывать, но в итоге отделался легким испугом. Поделюсь с вами решением этой неприятной ошибки, когда система просто не загружается.

Углубленный онлайн-курс по MikroTik

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

Утро сисадмина не всегда начинается с кофе. Сегодня утром мне пишет один заказчик, а я как раз кофе наливал, что у него какие-то проблемы с web сервером - не загружаются картинки через админку. Захожу, проверяю, в самом деле. Движок пишет, что не может найти tmp папку. Ладно, думаю, ерунда какая-то, сейчас разберемся.

Захожу на сервер, смотрю логи сайта - ошибок нет. Смотрю системные логи за последнее время, тоже ничего особенного. Проверяю аптайм виртуалки - 370 дней. Думаю, пришло время для ребута. На виртуалке сайты не очень критичные, можно перезагрузить сервак. Думаю, что совмещу приятное с полезным - установлю последние обновления (ставятся регулярно, но без ребута) и перезагружусь.

Обновления не установились. Не запомнил, какая конкретно ошибка, но yum поругался на нехватку памяти. К слову, виртуалка была сильно зажата по памяти, потому что сайты там не сильно критичные жили, им приоритет низкий. Пошел на всякий случай на гипервизор и посмотрел консоль виртуальной машины. Там куча ошибок на нехватку памяти. Приходил OOM Killer и выключал Mysql. Удивился, что не было оповещений от мониторинга о нехватки памяти. Зашел в Zabbix, он показывает, что 200-300 мб памяти всегда были доступны. Надо будет отдельно разбираться, почему OOM Killer так рано прибивал Mysql сервер.

В общем, картинка вроде как в голове сложилась. Серверу не хватало памяти, он из-за этого начал глючить. Надо его перезагрузить и поднастроить, либо памяти добавить. Перезагружаю сервер. Жду... Не поднимается. Смотрю в консоль и начинаю немного мандражировать. Виртуалка не загружается, там ошибка:

Kernel panic not syncing: VFS: Unable to mount root fs

И много еще чего написано. Жаль, скрин сразу не сделал. Делаю ресет системе и снова вижу эту же ошибку. Тут запустилось производство кирпичей. В голове сразу же побежали мысли, что там с бэкапами. Делаться то они делаются, я даже уведомления в почте каждый день смотрю, что все в порядке. Но когда я последний раз вручную разворачивал эти бэкапы? Очень давно.

Еще один рестарт и та же ошибка. Немного запаниковал, встал, прошелся по комнате, подумал, что делать. Оценил обстановку. Больше всего испугался, что накрывается жесткий диск сервера, где куча всяких виртуалок и сайтов. Бэкапы вроде все есть, но все это настраивать, разворачивать, где-то сервак искать и т.д. В общем, думаю, примерно масштаб бедствия вы представляете.

Пошел на гипервизор, там вроде все в порядке, ошибок никаких нет. На других виртуалках тоже. С дисками, по идее, все нормально. А что же тогда тут случилось? В голову приходит мысль загрузиться на старом ядре. Выбираю старое ядро, загружаюсь - все в порядке. ОТЛЕГЛО.

Сразу стало понятно, в чем проблема. На серваке не хватало памяти. Я запустил обновление, оно отработало с ошибкой. Скорее всего не собрался initramfs для нового ядра. Загрузка старого ядра, в данном случае и было решением ошибки:

Kernel panic not syncing: VFS: Unable to mount root fs

Добавил виртуальной машине памяти, обновил ее еще раз. Теперь все прошло нормально. Перезагружаться пока не пробовал, вечером сделаю. Думаю, все в порядке будет.

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

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

Выводы

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!
  1. Очень внимательно относитесь к обновлениям. Не запускайте их в обычном терминале по ssh. Если оборвется связь и обновление ядра не выполнится полностью, можете получить такую же проблему, как я сегодня. Обновляйтесь в screen или tmux.
  2. Не торопитесь перезагружать сервер в случае проблем. Лучше сразу же сделать бэкап свежих данных, пока сервер еще живой. Так у вас как минимум, будут самые актуальные бэкапы, а не ночные. В принципе, я так всегда и делаю, но тут расслабился, так как сервер не сильно критичный и простой допускает.
  3. Перед перезагрузкой убедитесь, что у вас есть доступ к терминалу. Я всегда это делаю.
  4. И самый важный пункт - не занимайтесь обслуживанием сайтов, для которых недопустим простой. Нервы и спокойная жизнь дороже. Пусть это делает кто-то другой :)

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

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

Автор Zerox

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

23 комментария

  1. Словил Kernel panic not syncing: VFS: Unable to mount root fs, как загрузиться со старого ядра, если по vnc я не могу вводить команды, в vnc только лог отображается

    • Никак, если по vnc подключению недоступен выбор ядра.

      • Я сразу не сказал, что VPS У хостера на VMmanager, я зашел в VMmanager и скачал ISO образ системы, затем примонтировал ISO и сделал в первую очередь загрузку ISO, а потом диска, в итоге я попал в Rescue mod, у меня Centos 7 и смог выбрать другое ядро. Проблема решена :)

  2. Почитал коментарии, и понял , что не я один любитель подкинуть себе работы под вечер, что бы потом всю ночь не спать и исправлять, как выразился Владимир "открыл производство кирпичей"
    Сейчас такая же ситуация была, только у меня загрузилось с более старого ядра.

    • От скуки что ли обновился? Так то мы не любители, поэтому ребутаем серваки время от времени. А дальше как повезет.

      • я работаю в Аутсорсе и у меня очень много серверов, стараюсь не держать "солянку" везде делаю более одинаковые ОС, перевожу на Centos и все по общему принципу, и стараюсь раз в неделю иногда в 2 недели, по выходных вечерами захожу на все сервера и начинаю yum update , и так все подряд , потом отправляю в ребут, но как говорится в семье не без урода, и какой нибудь сервер начинает мозги компостировать.

  3. Ярослав

    Есть еще одна шикарная история связанная с HP. Купил я себе под эксперименты DL60 gen9 заказную конфигурацию, тестировать почтовые конфиги (я чисто мейловый админ) ждал 3 недели и наконец дождался. Закинул в стойку, начал обновлять прошивку, все вроде ок, ребут сервера все запускается, но с одним нюансом в сервере пропало ILO, вот прям вообще как будто и не было никогда, BIOS, Intelligent Provisioning, все работает как надо, а ILO нет, танцую с бубном вокруг сервера шью разными прошивками и старыми и новыми, а его нету, вот прям нет такого пакета и нечего обновлять/откатывать. Ок, звоню в ТП (а мы дофига энтерпрайзный клиент) они такие хм хз что такое ща инженер приедет, через пару часов приезжает боец, полдня прыгает вокруг серва, говорит хз что это я его забираю к нам, я говорю ну ок, через пару дней звонят, мы говорят не поняли что это было поэтому сервер под замену, а это еще 3 недели, я говорю нунахер, мне уже горит, ILO не критично все равно сервак в мониторинг не пойдет, обойдусь и так.
    Вообще проходит почти год сервер крутит тестовые конфиги, все отлично, и тут под новый год становится спокойно, все работает в норме, тестовых конфигов никаких нету, все как в болоте. Дай думаю в качестве факультатива поковыряю железку, а то скучно. Включаю гугл и через несколько часов поиска нахожу похожую проблему на полузаброшенном форуме бразильских!!! айтишников, там человек победил эту проблему при помощи прошивки с определенной комбинацией переключателей на материнке, в итоге 40 минут делов и ILO снова с нами, хотя и нахрен в принципе не нужно. Вот такой у нас суровый в мире ынтырпрайз.

  4. Ярослав

    Ох, помнится подобное было на сервере HP там проприетарный драйвер стоял на встроенный контроллер, и с очередным обновлением ядра Centos, он решил что не будет с ним работать (это выяснилось позже) а нового драйвера HP не подвезли к тому моменту, обновил почтовый сервер после рабочего дня называется, пока понял что случилось уже и домой поздно было ехать...

    • Могу представить ощущения :)) Сам с таким сталкивался не раз. За это не люблю современное администрирование. Качество ПО хреновое, наличие кучи уязвимостей вынуждает постоянно ставить обновления. Тут к гадалке не ходи, рано или поздно что-то сломается и застраховаться от этого невозможно. Падали железки от обновлений даже у самых крутых брендов с купленной поддержкой. Тупо ошибка прошивки и привет, везите в сервис перепрошивать или ждите замену.

  5. "Если оборвется связь и обновление ядра не выполнится полностью, можете получить такую же проблему, как я сегодня. Обновляйтесь в screen или tmux."
    А есть простой способ как настроить это в tmux? А то там какие-то всё сторонние дополнения требует?

    • есть, Byobu.
      По сабжу, странно, что транзакция обновлений не вылетела с ошибкой, после неудачной генерации initramfs, после которой как раз и обновляется запись в grub. Сохранились ли логи?

      • В каких логах может остаться что-то полезное? В messages и yum.log информации об этой ошибке нет.

    • Простой способ использовать screen. Там никаких настроек не надо вообще.

  6. Аноним

    Вопрос:
    Если это ВМ и сама FS целая, то зачем "мысли" о бекапах когда vhd (или что у тебя там за формат вирт харда) можно примонтировать к новой ВМ на крайняк и ресторить с него, вплоть до chroot?

  7. Руслан

    А что значит , загрузиться на старом ядре ? И я так и не понял как это сделать ?

    • Загрузчик grub перед загрузкой сервера обычно предлагает выбрать на каком ядре загрузиться. По умолчанию идет самое свежее, но есть возможность выбрать несколько предыдущих. В Centos это явно видно при запуске сервера, не заметить невозможно.

      • Аноним

        Понял, спасибо большое, как то необращял внимания на эти моменты, эти буду иметь ввиду, спасибо !

  8. "Больше всего испугался, что накрывается жесткий диск сервера, где куча всяких виртуалок и сайтов"

    А как же отказоустойчивость? Или у Вас все виртуалки на одном диске, без рейда и т.п?

    • Да это условно я написал жесткий диск. Конечно же там рейд, причем железный, с мониторингом и т.д. Но всякое бывает, это не панацея. Все зарезервировано, но в любом случае такие аварии это куча внезапной и срочной работы.

  9. Евгений

    Вот поэтому у меня ребут сервера - это либо для загрузки с новым ядром, либо для изменения конфигурации "железа" у виртуалки, либо в качестве жеста отчаяния

  10. у меня такая же ситуация в жизни была на оракле, Kernel panic на Oracle Linux and Unbreakable Enterprise Kernel , решилось переходом на stable ветку

  11. вот за такие моменты я и люблю эту работу )

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

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

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