219 lines
5.4 KiB
Markdown
219 lines
5.4 KiB
Markdown
# Восстановление Proxmox после неудачного обновления (Hetzner, RAID, Rescue)
|
||
|
||
Ниже приведён детальный гайд по восстановлению сервера Proxmox, аналогичный процессу, который мы выполнили вручную. Полностью подходит для серверов Hetzner, использующих software RAID (mdadm) и загрузку через `grub-pc`.
|
||
|
||
## 📌 Ситуация
|
||
|
||
После обновления Proxmox сервер перестал загружаться. Доступ — только через Hetzner Rescue. Проблема была в повреждённом `grub-pc`, неинициализированном mdadm в initramfs и невозможности загрузки root‑файловой системы.
|
||
|
||
## ✔️ Цель
|
||
|
||
Полностью восстановить загрузчик, initramfs, конфигурацию RAID и вернуть сервер в рабочее состояние.
|
||
|
||
---
|
||
|
||
# 🛠 Шаг 1. Загрузка в Rescue
|
||
|
||
В панели Hetzner выбрать **Rescue → Enable & Reboot**.
|
||
После загрузки зайти по SSH:
|
||
|
||
```bash
|
||
ssh root@SERVER_IP
|
||
```
|
||
|
||
---
|
||
|
||
# 🛠 Шаг 2. Определить RAID и убедиться, что массивы активны
|
||
|
||
```bash
|
||
cat /proc/mdstat
|
||
```
|
||
|
||
Если всё корректно, должны быть массивы `md0`, `md1`, `md2`, `md3`.
|
||
|
||
---
|
||
|
||
# 🛠 Шаг 3. Смонтировать систему Proxmox
|
||
|
||
```bash
|
||
mkdir -p /mnt/root
|
||
mount /dev/md2 /mnt/root # root
|
||
mkdir -p /mnt/root/boot
|
||
mount /dev/md1 /mnt/root/boot # /boot
|
||
```
|
||
|
||
Проверить содержимое:
|
||
|
||
```bash
|
||
ls /mnt/root
|
||
ls /mnt/root/boot
|
||
```
|
||
|
||
---
|
||
|
||
# 🛠 Шаг 4. Подготовить chroot-окружение
|
||
|
||
```bash
|
||
mount --bind /dev /mnt/root/dev
|
||
mount --bind /dev/pts /mnt/root/dev/pts
|
||
mount --bind /proc /mnt/root/proc
|
||
mount --bind /sys /mnt/root/sys
|
||
mount --bind /run /mnt/root/run
|
||
```
|
||
|
||
Проверка:
|
||
|
||
```bash
|
||
mount | grep /mnt/root
|
||
```
|
||
|
||
---
|
||
|
||
# 🛠 Шаг 5. Войти в chroot
|
||
|
||
```bash
|
||
chroot /mnt/root /bin/bash
|
||
```
|
||
|
||
---
|
||
|
||
# 🛠 Шаг 6. Исправление mdadm конфигурации
|
||
|
||
Проверить `/etc/mdadm/mdadm.conf`:
|
||
|
||
```bash
|
||
grep ARRAY /etc/mdadm/mdadm.conf
|
||
```
|
||
|
||
Если пусто, восстановить:
|
||
|
||
```bash
|
||
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
|
||
```
|
||
|
||
---
|
||
|
||
# 🛠 Шаг 7. Переустановка загрузчика GRUB
|
||
|
||
Удаление UEFI‑версии (если была):
|
||
|
||
```bash
|
||
apt remove grub-efi-amd64 -y
|
||
```
|
||
|
||
Переустановка grub-pc:
|
||
|
||
```bash
|
||
apt install --reinstall grub-pc grub-common
|
||
```
|
||
|
||
Если видите ошибки «is /dev mounted?» — значит chroot был сделан без bind‑монтирования.
|
||
|
||
После установки выполнить:
|
||
|
||
```bash
|
||
dpkg --configure -a
|
||
```
|
||
|
||
GRUB автоматически установится на все NVMe‑диски:
|
||
|
||
```
|
||
grub-install /dev/nvme0n1
|
||
...
|
||
grub-install /dev/nvme6n1
|
||
```
|
||
|
||
Сгенерировать меню загрузки:
|
||
|
||
```bash
|
||
update-grub
|
||
```
|
||
|
||
---
|
||
|
||
# 🛠 Шаг 8. Пересборка initramfs
|
||
|
||
(чтобы убедиться, что mdadm попал в initrd)
|
||
|
||
```bash
|
||
update-initramfs -u -k all
|
||
```
|
||
|
||
Сообщения **No /etc/kernel/proxmox-boot-uuids found** — нормальны для BIOS‑загрузки.
|
||
|
||
---
|
||
|
||
# 🛠 Шаг 9. Проверить сетевой интерфейс
|
||
|
||
Hetzner использует нестандартные имена (`enp195s0`). Проверка:
|
||
|
||
```bash
|
||
ip a
|
||
```
|
||
|
||
Проверить конфигурацию:
|
||
|
||
```bash
|
||
cat /etc/network/interfaces
|
||
```
|
||
|
||
Если интерфейс после загрузки исчезнет — нужно обновить netplan/udev правила.
|
||
(В нашем случае интерфейс сохранился и заработал.)
|
||
|
||
---
|
||
|
||
# 🛠 Шаг 10. Выйти из chroot и перезагрузить сервер
|
||
|
||
```bash
|
||
exit
|
||
reboot
|
||
```
|
||
|
||
Загрузка Proxmox прошла успешно — оболочка Proxmox VE запустилась.
|
||
|
||
---
|
||
|
||
# 🧹 Шаг 11. После восстановления (опциональная очистка)
|
||
|
||
Старые ядра Debian (НЕ Proxmox):
|
||
|
||
```bash
|
||
apt autoremove --purge
|
||
```
|
||
|
||
Но: если система работает стабильно — **лучше ядра не трогать**.
|
||
|
||
Broken‑packages (если были):
|
||
|
||
```bash
|
||
apt -f install
|
||
```
|
||
|
||
Проверка RAID:
|
||
|
||
```bash
|
||
cat /proc/mdstat
|
||
```
|
||
|
||
---
|
||
|
||
# 🎉 Результат
|
||
|
||
✔ Система полностью восстановлена
|
||
✔ Загрузка GRUB исправлена
|
||
✔ mdadm работает корректно
|
||
✔ Сеть поднялась
|
||
✔ Proxmox полностью функционирует
|
||
|
||
---
|
||
|
||
# 📝 Рекомендации на будущее
|
||
|
||
* Перед обновлением Proxmox всегда делать `pve-kernel` update вручную
|
||
* Избегать смешивания UEFI/BIOS boot режимов
|
||
* Держать отдельный текстовый гайд под рукой
|
||
|
||
---
|
||
|
||
Если нужно — могу подготовить **PDF**, **дополнительный раздел с типичными ошибками** или **автоматический recovery‑скрипт**.
|