Test NVMe

This commit is contained in:
Sergey Mazein
2025-12-04 10:51:36 +03:00
parent 6ac6fc508f
commit 20387fe60b
6 changed files with 494 additions and 5 deletions
+218
View File
@@ -0,0 +1,218 @@
# Восстановление 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
```
Но: если система работает стабильно — **лучше ядра не трогать**.
Brokenpackages (если были):
```bash
apt -f install
```
Проверка RAID:
```bash
cat /proc/mdstat
```
---
# 🎉 Результат
✔ Система полностью восстановлена
✔ Загрузка GRUB исправлена
✔ mdadm работает корректно
✔ Сеть поднялась
✔ Proxmox полностью функционирует
---
# 📝 Рекомендации на будущее
* Перед обновлением Proxmox всегда делать `pve-kernel` update вручную
* Избегать смешивания UEFI/BIOS boot режимов
* Держать отдельный текстовый гайд под рукой
---
Если нужно — могу подготовить **PDF**, **дополнительный раздел с типичными ошибками** или **автоматический recovery‑скрипт**.
+261
View File
@@ -0,0 +1,261 @@
# Полный гайд восстановления Proxmox после повреждения загрузки (Hetzner, RAID, Rescue)
Этот гайд полностью основан на **реальных шагах**, которые мы выполнили при восстановлении вашего сервера. Каждый этап отражает фактические команды, ошибки и решения, использованные в процессе.
---
# 📌 Проблема
После обновления Proxmox **сервер перестал загружаться**. Доступ был возможен только через **Hetzner Rescue**, а vKVM/VNC не работал. Причины:
* загрузчик GRUB повреждён после обновления,
* `grub-efi` был установлен вместо `grub-pc` (сервер использует BIOS, а не UEFI),
* initramfs не содержал правильной конфигурации mdadm,
* root-файловая система не монтировалась при загрузке,
* сеть тоже не поднималась на ранних этапах.
---
# 🛠 Шаг 1. Загрузка в Hetzner Rescue и вход по SSH
В панели Hetzner выбираем:
* Rescue → Activate → Reboot
Подключаемся:
```bash
ssh root@SERVER_IP
```
---
# 🛠 Шаг 2. Проверка RAID-массивов
```bash
cat /proc/mdstat
```
Ожидаемые массивы:
* **md0** — RAID0 (bootloader area)
* **md1** — RAID1 (/boot)
* **md2** — RAID0 (/)
* **md3** — RAID0 (/var/lib/vz)
Все массивы были в состоянии **clean**.
---
# 🛠 Шаг 3. Монтирование всех разделов Proxmox
```bash
mkdir -p /mnt/root
mount /dev/md2 /mnt/root
mkdir -p /mnt/root/boot
mount /dev/md1 /mnt/root/boot
```
Проверка:
```bash
ls /mnt/root
ls /mnt/root/boot
```
Все системные файлы были на месте.
---
# 🛠 Шаг 4. Подготовка корректного chroot
(важно — иначе grub не сможет видеть /dev)
```bash
mount --bind /dev /mnt/root/dev
mkdir -p /mnt/root/dev/pts
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.conf
Убедились, что массивы записаны:
```bash
grep ARRAY /etc/mdadm/mdadm.conf
```
Если пусто (у нас было заполнено), можно восстановить:
```bash
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
```
---
# 🛠 Шаг 7. Исправление GRUB (ключевой этап восстановления)
Мы обнаружили:
* был установлен `grub-efi-amd64` (UEFI), но сервер грузится в BIOS,
* после обновления grub не мог найти root.
Удаление UEFI-версии:
```bash
apt remove grub-efi-amd64 -y
```
Переустановка BIOS-версии:
```bash
apt install --reinstall grub-pc grub-common
```
Если во время установки появились ошибки — ЗАПУСКАЛИ:
```bash
dpkg --configure -a
```
Установка GRUB на **все 7 NVMe дисков**:
(это делало postinst grub-pc автоматически)
```
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 — skipping ESP sync
```
**нормально**, потому что сервер НЕ использует UEFI.
---
# 🛠 Шаг 9. Проверка сетевой конфигурации
В rescue определялся интерфейс:
```
eth0 (altname enp195s0)
```
Конфигурация Proxmox:
```bash
cat /etc/network/interfaces
```
Сетевой интерфейс `enp195s0` был корректным — изменений НЕ потребовалось.
---
# 🛠 Шаг 10. Выход из chroot и перезагрузка
```bash
exit
reboot
```
После этого система **успешно загрузилась**, оболочка Proxmox стала доступна.
---
# 🛠 Шаг 11. Финальная проверка после загрузки
На работающем Proxmox проверяли:
### RAID
```bash
cat /proc/mdstat
```
Все массивы — `clean`.
### dpkg состояние
```bash
dpkg --configure -a
apt -f install
```
Система чистая.
### Список ядер
```bash
dpkg -l | grep -E "pve-kernel|linux-image"
```
Установлены Debian-ядра, но **не pve-kernel**.
Proxmox работал стабильно, поэтому ядра **не трогали**.
---
# 🧹 Что можно очистить (но не обязательно)
```bash
apt autoremove --purge
```
Удалит старые Debian ядра, но так как система стабильна — **лучше ничего не трогать**.
---
# 🎉 Итог
✔ GRUB полностью восстановлен
✔ mdadm исправно инициализируется
✔ initramfs пересобран
✔ сеть работает
✔ Proxmox загружается корректно
✔ RAID из 7× NVMe стабилен
---
Если хочешь — могу подготовить:
* PDF-версию гайда,
* облегчённую версию для техподдержки,
* автоматизированный recovery-скрипт.