Словил сегодня неприятную ошибку на web сервере под CentOS 7. Уже начал потихоньку кирпичи откладывать, но в итоге отделался легким испугом. Поделюсь с вами решением этой неприятной ошибки, когда система просто не загружается.
Научиться настраивать 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.
Выводы
- Очень внимательно относитесь к обновлениям. Не запускайте их в обычном терминале по ssh. Если оборвется связь и обновление ядра не выполнится полностью, можете получить такую же проблему, как я сегодня. Обновляйтесь в screen или tmux.
- Не торопитесь перезагружать сервер в случае проблем. Лучше сразу же сделать бэкап свежих данных, пока сервер еще живой. Так у вас как минимум, будут самые актуальные бэкапы, а не ночные. В принципе, я так всегда и делаю, но тут расслабился, так как сервер не сильно критичный и простой допускает.
- Перед перезагрузкой убедитесь, что у вас есть доступ к терминалу. Я всегда это делаю.
- И самый важный пункт - не занимайтесь обслуживанием сайтов, для которых недопустим простой. Нервы и спокойная жизнь дороже. Пусть это делает кто-то другой :)
Словил Kernel panic not syncing: VFS: Unable to mount root fs, как загрузиться со старого ядра, если по vnc я не могу вводить команды, в vnc только лог отображается
Никак, если по vnc подключению недоступен выбор ядра.
Я сразу не сказал, что VPS У хостера на VMmanager, я зашел в VMmanager и скачал ISO образ системы, затем примонтировал ISO и сделал в первую очередь загрузку ISO, а потом диска, в итоге я попал в Rescue mod, у меня Centos 7 и смог выбрать другое ядро. Проблема решена :)
Почитал коментарии, и понял , что не я один любитель подкинуть себе работы под вечер, что бы потом всю ночь не спать и исправлять, как выразился Владимир "открыл производство кирпичей"
Сейчас такая же ситуация была, только у меня загрузилось с более старого ядра.
От скуки что ли обновился? Так то мы не любители, поэтому ребутаем серваки время от времени. А дальше как повезет.
я работаю в Аутсорсе и у меня очень много серверов, стараюсь не держать "солянку" везде делаю более одинаковые ОС, перевожу на Centos и все по общему принципу, и стараюсь раз в неделю иногда в 2 недели, по выходных вечерами захожу на все сервера и начинаю yum update , и так все подряд , потом отправляю в ребут, но как говорится в семье не без урода, и какой нибудь сервер начинает мозги компостировать.
Есть еще одна шикарная история связанная с HP. Купил я себе под эксперименты DL60 gen9 заказную конфигурацию, тестировать почтовые конфиги (я чисто мейловый админ) ждал 3 недели и наконец дождался. Закинул в стойку, начал обновлять прошивку, все вроде ок, ребут сервера все запускается, но с одним нюансом в сервере пропало ILO, вот прям вообще как будто и не было никогда, BIOS, Intelligent Provisioning, все работает как надо, а ILO нет, танцую с бубном вокруг сервера шью разными прошивками и старыми и новыми, а его нету, вот прям нет такого пакета и нечего обновлять/откатывать. Ок, звоню в ТП (а мы дофига энтерпрайзный клиент) они такие хм хз что такое ща инженер приедет, через пару часов приезжает боец, полдня прыгает вокруг серва, говорит хз что это я его забираю к нам, я говорю ну ок, через пару дней звонят, мы говорят не поняли что это было поэтому сервер под замену, а это еще 3 недели, я говорю нунахер, мне уже горит, ILO не критично все равно сервак в мониторинг не пойдет, обойдусь и так.
Вообще проходит почти год сервер крутит тестовые конфиги, все отлично, и тут под новый год становится спокойно, все работает в норме, тестовых конфигов никаких нету, все как в болоте. Дай думаю в качестве факультатива поковыряю железку, а то скучно. Включаю гугл и через несколько часов поиска нахожу похожую проблему на полузаброшенном форуме бразильских!!! айтишников, там человек победил эту проблему при помощи прошивки с определенной комбинацией переключателей на материнке, в итоге 40 минут делов и ILO снова с нами, хотя и нахрен в принципе не нужно. Вот такой у нас суровый в мире ынтырпрайз.
Ох, помнится подобное было на сервере HP там проприетарный драйвер стоял на встроенный контроллер, и с очередным обновлением ядра Centos, он решил что не будет с ним работать (это выяснилось позже) а нового драйвера HP не подвезли к тому моменту, обновил почтовый сервер после рабочего дня называется, пока понял что случилось уже и домой поздно было ехать...
Могу представить ощущения :)) Сам с таким сталкивался не раз. За это не люблю современное администрирование. Качество ПО хреновое, наличие кучи уязвимостей вынуждает постоянно ставить обновления. Тут к гадалке не ходи, рано или поздно что-то сломается и застраховаться от этого невозможно. Падали железки от обновлений даже у самых крутых брендов с купленной поддержкой. Тупо ошибка прошивки и привет, везите в сервис перепрошивать или ждите замену.
"Если оборвется связь и обновление ядра не выполнится полностью, можете получить такую же проблему, как я сегодня. Обновляйтесь в screen или tmux."
А есть простой способ как настроить это в tmux? А то там какие-то всё сторонние дополнения требует?
есть, Byobu.
По сабжу, странно, что транзакция обновлений не вылетела с ошибкой, после неудачной генерации initramfs, после которой как раз и обновляется запись в grub. Сохранились ли логи?
В каких логах может остаться что-то полезное? В messages и yum.log информации об этой ошибке нет.
Простой способ использовать screen. Там никаких настроек не надо вообще.
Вопрос:
Если это ВМ и сама FS целая, то зачем "мысли" о бекапах когда vhd (или что у тебя там за формат вирт харда) можно примонтировать к новой ВМ на крайняк и ресторить с него, вплоть до chroot?
А что значит , загрузиться на старом ядре ? И я так и не понял как это сделать ?
Загрузчик grub перед загрузкой сервера обычно предлагает выбрать на каком ядре загрузиться. По умолчанию идет самое свежее, но есть возможность выбрать несколько предыдущих. В Centos это явно видно при запуске сервера, не заметить невозможно.
Понял, спасибо большое, как то необращял внимания на эти моменты, эти буду иметь ввиду, спасибо !
"Больше всего испугался, что накрывается жесткий диск сервера, где куча всяких виртуалок и сайтов"
А как же отказоустойчивость? Или у Вас все виртуалки на одном диске, без рейда и т.п?
Да это условно я написал жесткий диск. Конечно же там рейд, причем железный, с мониторингом и т.д. Но всякое бывает, это не панацея. Все зарезервировано, но в любом случае такие аварии это куча внезапной и срочной работы.
Вот поэтому у меня ребут сервера - это либо для загрузки с новым ядром, либо для изменения конфигурации "железа" у виртуалки, либо в качестве жеста отчаяния
Это да. У меня ребут это тоже не просто так, а всегда плановый и с готовностью к тому, что система не встанет. Вот еще пример, как из ребута не вышел - https://serveradmin.ru/booting-from-hard-disk-error-entering-rescue-mode/
у меня такая же ситуация в жизни была на оракле, Kernel panic на Oracle Linux and Unbreakable Enterprise Kernel , решилось переходом на stable ветку
вот за такие моменты я и люблю эту работу )