На этой странице
Если установленная система перестала загружаться или пускать вас, режим восстановления даст рабочее окружение Linux с полным доступом к дискам. Из него можно починить установленную систему или скопировать данные перед переустановкой.
Что такое режим восстановления
Система восстановления — это live-система Linux, которую сервер загружает по сети и которая целиком работает в оперативной памяти. Ваши диски остаются нетронутыми: ничего не монтируется, не форматируется и не изменяется, пока вы сами этого не решите. Вы входите по SSH как root и получаете обычную оболочку для работы с дисками, RAID-массивами и файловыми системами. Режим восстановления бесплатен, и пользоваться им можно сколько угодно.
Если доступ потерян из-за настроек сети или файрвола, часто быстрее воспользоваться консолью IPMI: через нее вы входите прямо в установленную систему.
Загрузите систему восстановления
Включите режим восстановления. В личном кабинете откройте сервер и выберите «Режим восстановления». Запишите выданный вам временный пароль root.
Перезагрузите сервер из личного кабинета или командой
reboot, если он еще отвечает. Вместо установленной системы запустится система восстановления.Войдите по SSH с временным паролем. У системы восстановления свой ключ хоста; отдельный файл известных хостов не дает ему смешаться с настоящим ключом вашего сервера:
ssh -o UserKnownHostsFile=~/.ssh/known_hosts_rescue root@203.0.113.10
Определите диски и соберите RAID
lsblk -o NAME,SIZE,TYPE,FSTYPE,LABEL,MOUNTPOINTРазделы с типом linux_raid_member входят в программный RAID-массив — стандартную схему на серверах с двумя дисками. Соберите массивы, если /proc/mdstat их еще не показывает, и проверьте их состояние:
mdadm --assemble --scan
cat /proc/mdstatМассивы могут получить не те имена, что в установленной системе, например md127 вместо md0, — это не страшно. Если одного из компонентов нет ([U_]), с массивом все равно можно работать, но проверьте и сами диски: см. Состояние дисков. Если lsblk показывает LVM2_member, активируйте группы томов:
vgchange -ay
lvsСмонтируйте систему и выполните chroot
Корневая файловая система — та, на которой есть /etc/fstab; обычно это самый большой массив. Смонтируйте ее и прочитайте fstab, чтобы узнать, какие еще файловые системы к ней относятся:
mount /dev/md1 /mnt
cat /mnt/etc/fstabЕсли система аварийно завершила работу или консоль показывала ошибки файловой системы, сначала размонтируйте ее и запустите проверку: fsck -f /dev/md1 для ext4, xfs_repair /dev/md1 для XFS (тип подскажет столбец FSTYPE в выводе lsblk). Никогда не проверяйте смонтированную файловую систему.
Смонтируйте отдельные /boot и /boot/efi, если они указаны в fstab (blkid сопоставляет UUID с устройствами), затем примонтируйте виртуальные файловые системы через bind и переключитесь в установленную систему:
mount /dev/md0 /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot/efi
mount --rbind /dev /mnt/dev
mount --rbind /proc /mnt/proc
mount --rbind /sys /mnt/sys
mount --rbind /run /mnt/run
chroot /mnt /bin/bashИмена устройств приведены для примера; если отдельных /boot или /boot/efi нет, пропустите первые две строки. Внутри chroot такие команды, как passwd и systemctl enable, а также менеджер пакетов работают с установленной системой, а не с системой восстановления.
Нужны только данные? Обойдитесь без chroot и скопируйте их прямо из /mnt, например с помощью rsync -a /mnt/var/www/ backup@203.0.113.50:rescue-copy/.
Типичные исправления
Аварийный режим при загрузке: исправьте /etc/fstab
Неверный UUID или уже несуществующий диск в /etc/fstab приводит к тому, что systemd останавливается в аварийном режиме. Сверьте записи с выводом blkid, исправьте или закомментируйте ошибочную строку с помощью vi /etc/fstab (или nano), затем проверьте файл:
findmnt --verifyДля дисков, которые не нужны системе для загрузки, добавьте nofail в параметры монтирования, чтобы отсутствующий диск больше не блокировал запуск.
Нет загрузчика: переустановите GRUB на оба диска
В RAID 1 загрузчик должен быть на обоих дисках, чтобы сервер мог загрузиться с любого из них. Сначала проверьте, как загружается сервер:
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOSЗагрузка через BIOS. Ubuntu и Debian:
grub-install /dev/nvme0n1
grub-install /dev/nvme1n1
update-grubAlmaLinux и Rocky Linux:
grub2-install /dev/nvme0n1
grub2-install /dev/nvme1n1
grub2-mkconfig -o /boot/grub2/grub.cfgВ Ubuntu и Debian также выполните dpkg-reconfigure grub-pc и выберите оба диска, чтобы будущие обновления GRUB записывались на оба.
Загрузка через UEFI. GRUB находится на системном разделе EFI, смонтированном в /boot/efi. Ubuntu и Debian:
grub-install --target=x86_64-efi --efi-directory=/boot/efi
update-grubAlmaLinux и Rocky Linux, где grub2-install на системах с UEFI не используется:
dnf reinstall -y grub2-efi-x64 shim-x64
grub2-mkconfig -o /boot/grub2/grub.cfgЕсли на втором диске есть свой системный раздел EFI (небольшой раздел vfat в lsblk), установите загрузчик и на него. Смонтируйте его:
mkdir -p /boot/efi2
mount /dev/nvme1n1p1 /boot/efi2Затем в Ubuntu и Debian выполните grub-install --target=x86_64-efi --efi-directory=/boot/efi2 --removable — команда установит GRUB по резервному пути, который прошивка находит и без загрузочной записи. В AlmaLinux и Rocky Linux скопируйте файлы с помощью cp -r /boot/efi/EFI /boot/efi2/. В завершение выполните umount /boot/efi2.
Сбросьте утерянный пароль root
passwd rootВ AlmaLinux и Rocky Linux у нового файла паролей еще нет метки SELinux, и пока она не появится, вход может не работать: не пропускайте шаг повторной маркировки (relabel) при выходе из режима восстановления.
Нет доступа из-за настроек SSH или файрвола
Переместите в другое место drop-in-файл SSH, из-за которого вы потеряли доступ, и убедитесь, что ваш ключ на месте:
ls /etc/ssh/sshd_config.d/
mv /etc/ssh/sshd_config.d/00-keys-only.conf /root/
cat /root/.ssh/authorized_keysЧтобы система запустилась без файрвола, отключите его на следующую загрузку строкой, которая соответствует вашему файрволу:
systemctl disable ufw
systemctl disable firewalld
systemctl disable nftablesКогда сервер снова станет доступен, исправьте правила и снова включите файрвол командой systemctl enable --now, указав то же имя.
Выйдите из режима восстановления
В AlmaLinux и Rocky Linux, если вы меняли какие-либо файлы внутри chroot, перед выходом из него выполните touch /.autorelabel. Тогда при следующей загрузке SELinux заново промаркирует файловую систему: это займет несколько минут, после чего сервер сам перезагрузится еще раз. Затем выйдите из chroot и размонтируйте все:
exit
sync
umount -R /mntЕсли umount сообщает, что точка монтирования занята (target is busy), можно продолжать: при перезагрузке все будет размонтировано. Отключите режим восстановления в личном кабинете, если он еще включен, затем перезагрузите сервер. Следите за первой загрузкой в консоли IPMI: если она снова остановится, на экране будет видно, где именно.
Все еще не получается?
Если система восстановления не запускается, диск не определяется или /proc/mdstat показывает отказавший компонент, создайте тикет в разделе Поддержка. Оборудование — наша зона ответственности: неисправный компонент заменяется в течение 4 часов после диагностики (см. SLA), а как затем перестраивается зеркало, описано в руководстве Программный RAID. Программное обеспечение на сервере администрируете вы, но расскажите нам, что уже пробовали, и наши инженеры подскажут верное направление.