Linux-сервер

Сервер не загружается? Режим восстановления: монтирование дисков, исправление fstab и GRUB, копирование данных

10 шагов 16 мин чтения 8 просмотров 0
Содержание

На сервере, который не загружается, обычно все данные на месте. Причина часто мелкая: неверная строка в /etc/fstab, обновление ядра, сломавшее загрузчик, заполненный диск, файловая система, требующая проверки, или правило файрвола, отрезавшее вам доступ. Система восстановления загружается по сети, а не с ваших дисков, поэтому можно смонтировать диски, устранить проблему и снова загрузиться в обычном режиме или сначала скопировать данные в безопасное место. В этом руководстве описаны типовые способы восстановления серверов Linux.

На выделенных серверах IMIDC запускайте систему восстановления кнопкой Rescue Mode (режим восстановления) в личном кабинете и работайте в ней через VNC Console (консоль VNC). См. руководство по панели управления выделенным сервером. У других провайдеров действия внутри системы восстановления те же.

Шаг 1. Выясните, почему сервер не загружается

Прежде чем что-либо менять, откройте консоль и посмотрите последние сообщения на экране:

  • "You are in emergency mode" или "Dependency failed for /data": обычно ошибочная запись в fstab или отсутствующий диск. Исправьте fstab (шаг 4).
  • "grub rescue>", "no such partition" или "Reboot and select proper boot device": повреждён загрузчик. Переустановите GRUB (шаг 6).
  • Kernel panic после обновления: загрузите предыдущее ядро из меню GRUB, если оно появляется, иначе пересоберите initramfs в системе восстановления (шаг 6).
  • Система загружается, но подключиться нельзя: сначала проверьте сеть и файрвол из консоли; возможно, режим восстановления вообще не понадобится (шаг 7).

Шаг 2. Определите диски

В системе восстановления выведите список дисков и разделов:

lsblk -f
fdisk -l

Найдите корневой раздел (часто это самый большой раздел ext4 или xfs), а на серверах с UEFI — небольшой раздел vfat (системный раздел EFI). Если видите linux_raid_member или LVM2_member, сначала соберите их:

# Software RAID (mdadm)
mdadm --assemble --scan
cat /proc/mdstat

# LVM
vgscan
vgchange -ay
lvs

Шаг 3. Проверьте файловую систему

Запускайте проверку файловой системы, пока раздел не смонтирован. Замените имена устройств на свои:

# ext4
fsck -f /dev/sda2

# XFS: try a normal mount first, use xfs_repair only if mounting fails
xfs_repair /dev/mapper/vg0-root
Никогда не запускайте fsck или xfs_repair на смонтированной файловой системе. Избегайте xfs_repair -L, если обычное восстановление возможно: эта опция сбрасывает журнал и может привести к потере последних записей. Если данные важны, сначала скопируйте их (шаг 8).

Шаг 4. Смонтируйте систему и исправьте fstab

mkdir -p /mnt/sys
mount /dev/sda2 /mnt/sys          # your root partition or LV
ls /mnt/sys                       # you should see etc, home, var ...
nano /mnt/sys/etc/fstab

Закомментируйте строку диска, которого больше нет, поставив перед ней #, и добавьте nofail для необязательных дисков с данными, чтобы отсутствующий диск больше не мог остановить загрузку:

UUID=1234-abcd  /data  ext4  defaults,nofail  0  2

Используйте UUID из blkid, а не имена вроде /dev/sdb1, которые могут меняться между загрузками. Как правильно монтировать диски, объясняется в статье разметка и монтирование диска для данных.

Диск заполнен

Если корневая файловая система заполнена на 100%, службы падают, а некоторые системы перестают загружаться. Смонтировав диск, найдите и удалите крупные файлы, как правило старые логи или резервные копии:

du -xh /mnt/sys --max-depth=2 2>/dev/null | sort -h | tail -20

Другие способы очистки — в статье освобождение места на диске в Linux.

Шаг 5. Войдите в установленную систему через chroot

Для исправлений, которым нужны собственные инструменты системы (GRUB, менеджер пакетов, passwd), выполните chroot:

mount /dev/sda1 /mnt/sys/boot            # only if /boot is a separate partition
mount /dev/sda15 /mnt/sys/boot/efi       # UEFI only: the vfat EFI partition
for d in dev proc sys run; do mount --bind /$d /mnt/sys/$d; done
chroot /mnt/sys /bin/bash

Теперь вы работаете внутри установленной системы. Чтобы сбросить забытый пароль root, просто выполните passwd root; другие способы описаны в статье сброс пароля root в Linux.

Шаг 6. Переустановите GRUB и пересоберите initramfs

Внутри chroot:

# Debian / Ubuntu, legacy BIOS boot
grub-install /dev/sda
update-grub
update-initramfs -u -k all

# Debian / Ubuntu, UEFI boot
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian
update-grub

# Rocky / AlmaLinux / CentOS
grub2-mkconfig -o /boot/grub2/grub.cfg
dracut -f --regenerate-all

При программном RAID запустите grub-install на каждом диске массива (например, /dev/sda и /dev/sdb), чтобы сервер мог загрузиться с любого из них.

Шаг 7. Снимите блокировку файрвола или SSH

Если сервер загружается, но после изменения настроек файрвола или SSH подключиться не удаётся, исправьте это из chroot (или прямо в консоли VNC, если система ещё загружается):

# Check the SSH configuration for errors
sshd -t

# Temporarily disable the firewall at next boot
systemctl disable ufw 2>/dev/null; systemctl disable firewalld 2>/dev/null

Вернув доступ, снова включите файрвол с открытым нужным портом, как в статье открытие портов в firewalld и ufw.

Шаг 8. Скопируйте данные

Если исправить не удалось или вы планируете переустановку, сначала скопируйте важные данные на другой сервер. Из системы восстановления:

# Copy a directory to a backup server over SSH
rsync -aHAX --info=progress2 /mnt/sys/var/www/ user@backup-server:/backup/www/

# Stream a compressed archive without needing local space
tar -C /mnt/sys -czf - home etc var/lib/mysql | ssh user@backup-server "cat > /backup/server.tar.gz"

Для баз данных копирование исходных файлов с остановленного сервера подходит, если вы восстанавливаете их в ту же версию СУБД. В остальных случаях загрузите систему после ремонта и используйте mysqldump.

Шаг 9. Выйдите из режима восстановления

exit                                     # leave the chroot
for d in run sys proc dev; do umount /mnt/sys/$d; done
umount -R /mnt/sys
sync

Затем выйдите из режима восстановления (в IMIDC: Current Task → Exit Rescue), чтобы сервер загрузился с собственных дисков, и наблюдайте за загрузкой в консоли VNC.

Серверы Windows

Выберите тип восстановления Windows, чтобы запустить среду Windows, в которой можно скопировать файлы с системного диска или выполнить chkdsk C: /f и bcdboot C:\Windows для восстановления загрузочных файлов.

Частые вопросы

lsblk не показывает дисков

Возможно, RAID-контроллеру нужен драйвер, которого нет в системе восстановления, или диск вышел из строя. Создайте тикет, чтобы наши инженеры проверили оборудование.

Может, просто переустановить?

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

Не удалось решить проблему по этим шагам? Создайте тикет в поддержку, и круглосуточная техническая команда IMIDC поможет. Укажите IP сервера, приложите скриншот ошибки загрузки из консоли и вывод lsblk -f, чтобы мы быстрее нашли причину.

Помог ли вам данный ответ?

Похожие руководства