Rescue-режим: восстановление незагружающегося сервера
Rescue-режим — это загрузка сервера в минимальную Linux-систему из сети или с образа, минуя диски. Ваши данные при этом не трогаются: вы монтируете корневой раздел вручную, входите в него через chroot и чините то, что мешает нормальной загрузке. Это штатный способ поправить fstab, GRUB, initramfs или пароль root без переустановки.
- Rescue не форматирует диски и не трогает разделы: всё, что будет сделано, делаете вы сами и вручную.
- Программный массив нужно собрать командой
mdadm --assemble --scan, сам он не поднимается. - LVM-тома видны только после
vgchange -ay. - Половина случаев незагрузки — опечатка в
/etc/fstabили UUID, изменившийся после замены диска. - Если rescue не помог, причина обычно в железе: смотрите SMART и журнал SEL, а не переустанавливайте систему.
Когда rescue решает задачу, а когда нет
| Симптом | Вероятная причина | Что делать в rescue |
|---|---|---|
| Консоль висит на строке GRUB | слетел загрузчик или разметка | chroot и переустановка GRUB на оба диска |
| Kernel panic, no init found | битый initramfs, неверный root= | пересобрать initramfs, поправить конфиг GRUB |
| Загрузка встала в emergency mode | ошибка в /etc/fstab | проверить UUID, убрать лишнюю строку |
| Массив в состоянии inactive | выпал диск, сбитые суперблоки | собрать массив вручную, запустить ресинк |
| Диск не определяется вообще | отказ носителя или бэкплейна | rescue не поможет, нужна диагностика железа |
Как попасть в rescue
Путей два. Первый — сетевая загрузка минимальной системы, которую запускает провайдер по запросу: сервер стартует с PXE-образа и пускает по SSH с временным паролем. Второй — самостоятельно, через консоль: подключите ISO живой системы как виртуальный привод, см. статью про IPMI и KVM-over-IP. Опция KVM/IPMI на ZevsHost стоит $5 в месяц и входит в тариф Dedicated Enterprise US.
Найти и смонтировать корневой раздел
Не монтируйте первый попавшийся раздел. Сначала посмотрите, что вообще есть на дисках:
# какие диски, разделы и файловые системы видит система
lsblk -f
blkid
# состояние программных массивов
cat /proc/mdstat
mdadm --assemble --scan
mdadm --detail /dev/md0
# LVM: тома по умолчанию неактивны
pvs && vgs && lvs
vgchange -ay
Дальше монтируем корень и служебные файловые системы. Порядок важен: сначала корень, потом всё, что внутри него.
mount /dev/md1 /mnt
mount /dev/md0 /mnt/boot
# для UEFI не забудьте раздел ESP
mount /dev/nvme0n1p1 /mnt/boot/efi
for d in dev proc sys run; do mount --rbind /$d /mnt/$d; done
chroot /mnt /bin/bash
Если chroot ругается на отсутствие интерпретатора, вы смонтировали не тот раздел: проверьте через ls /mnt, что в корне есть etc, usr и var.
Типичные ремонты
Ошибка в fstab
# показать все строки fstab, которые не резолвятся
findmnt --verify --verbose
# сравнить UUID из fstab с реальными
blkid | sort > /tmp/real-uuid.txt
grep -v '^#' /etc/fstab | grep UUID
После замены диска UUID меняется, и старая строка останавливает загрузку. Впишите новый UUID или добавьте опцию nofail, чтобы отсутствие тома не блокировало старт. Сама процедура замены разобрана в статье про замену диска в RAID-массиве.
Загрузчик и initramfs
# Debian/Ubuntu, внутри chroot
grub-install /dev/sda && grub-install /dev/sdb
update-grub
update-initramfs -u -k all
# RHEL, AlmaLinux, Rocky
grub2-install /dev/sda && grub2-install /dev/sdb
grub2-mkconfig -o /boot/grub2/grub.cfg
dracut -f --regenerate-all
Ставьте загрузчик на оба диска зеркала: машина, где GRUB живёт только на первом носителе, после его отказа не поднимется.
Пароль root и журналы
# сброс пароля внутри chroot
passwd root
passwd -S root
# ошибки прошлой загрузки, уже вне chroot
journalctl --directory=/mnt/var/log/journal -b -1 -p err
Не создавайте массив заново вместо сборки. Команда mdadm --create на существующих дисках перезаписывает суперблоки и может уничтожить данные; для восстановления нужна mdadm --assemble. Так же опасна любая mkfs: имена устройств в rescue часто отличаются от привычных. Перед каждой записывающей командой выполните lsblk -f. Перед выходом проверьте себя: findmnt --verify без ошибок, cat /proc/mdstat показывает [UU], а ls /mnt/boot содержит ядро и initrd нужной версии. Восстанавливать из резервной копии дешевле, чем после неверной команды.
Перед выходом из rescue
- Выйдите из chroot и отмонтируйте всё в обратном порядке:
umount -R /mnt. - Остановите массив корректно, если меняли его состав:
mdadm --stop /dev/md0. - Снимите режим сетевой загрузки, иначе сервер снова стартует в rescue.
- После первой успешной загрузки проверьте диски по методике из статьи про SMART-диагностику дисков.
Если незагрузка повторяется, причина почти всегда в железе. Тогда имеет смысл запросить замену носителя или перенос на другую конфигурацию из линейки выделенных серверов.
Коротко
- Rescue загружает отдельную систему в память и не трогает ваши диски.
- Массив собирается через
mdadm --assemble --scan, LVM активируется черезvgchange -ay. - Большинство поломок лечится в chroot: fstab, GRUB, initramfs, пароль root.
- Загрузчик всегда ставится на оба диска зеркала.
mdadm --createиmkfsв rescue — команды, после которых восстанавливают уже из бэкапа.