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
+8 -2
View File
@@ -2,9 +2,15 @@ Each script helps you to install compiler
Examples to install
Обновить ssh
Обновить ssh Proxmox
```bash
sudo sed -i '/^AllowUsers/c\AllowUsers root@158.69.30.149 root@167.114.172.204 root@158.69.6.146 root@213.239.194.132 root@92.255.251.110 root@158.69.30.144 root@65.109.116.119 sem' /etc/ssh/sshd_config
sudo sed -i '/^AllowUsers/c\AllowUsers root@91.99.38.107 root@23.88.7.159 root@94.130.16.219 root@67.220.73.190 root@51.79.228.143 root@15.235.180.149 roo@162.55.133.173 root@148.251.68.179 root@142.132.148.174 root@136.243.190.88 root@91.99.38.107 root@167.235.180.96 root@176.9.52.254 root@158.69.30.149 root@158.69.6.146 root@92.255.251.110 root@158.69.30.144 sem' /etc/ssh/sshd_config
sudo sed -i 's/#Port 22/#Port 22\n\nAllowUsers root@91.99.38.107 root@158.69.30.149 root@167.114.172.204 root@158.69.6.146 root@213.239.194.132 root@92.255.251.110 root@158.69.30.144 root@65.109.116.119 sem\n/' /etc/ssh/sshd_config
sudo service ssh restart
```
Обновить ssh LXC
```bash
sudo sed -i '/^AllowUsers/c\AllowUsers root@91.99.38.107 root@158.69.30.149 root@167.114.172.204 root@158.69.6.146 root@213.239.194.132 root@92.255.251.110 root@158.69.30.144 root@65.109.116.119 sem' /etc/ssh/sshd_config
sudo service ssh restart
```
+1 -1
View File
@@ -17,7 +17,7 @@ echo -e "${C_LGn}Installation of necessary components ...${RES}"
sudo apt install openssh-server mc htop tmux curl lsb-release wget git jq lz4 build-essential -y
sudo sed -i 's/#Port 22/#Port 22\n\nAllowUsers root@158.69.30.149 root@167.114.172.204 root@158.69.6.146 root@213.239.194.132 root@92.255.251.110 root@158.69.30.144 root@65.109.116.119 sem\n/' /etc/ssh/sshd_config
sudo sed -i 's/#Port 22/#Port 22\n\nAllowUsers root@91.99.38.107 root@158.69.30.149 root@167.114.172.204 root@158.69.6.146 root@213.239.194.132 root@92.255.251.110 root@158.69.30.144 root@65.109.116.119 sem\n/' /etc/ssh/sshd_config
sudo sed -i -e '/^AllowUsers/ { /root@144\.217\.201\.167/! { s/$/ root@144.217.201.167/; h; } }' /etc/ssh/sshd_config
sudo sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes\n/' /etc/ssh/sshd_config
+1 -1
View File
@@ -9,7 +9,7 @@ echo -e "${C_LGn}Installation of necessary components ...${RES}"
sudo apt install nginx openssh-server mc htop tmux curl lsb-release wget git jq lz4 build-essential certbot python3-certbot-nginx iptables-persistent -y
sudo sed -i 's/#Port 22/#Port 22\n\nAllowUsers root@158.69.30.149 root@158.69.30.149 root@167.114.172.204 root@158.69.6.146 root@213.239.194.132 root@92.255.251.110 root@158.69.30.144 root@65.109.116.119 sem\n/' /etc/ssh/sshd_config
sudo sed -i 's/#Port 22/#Port 22\n\nAllowUsers root@91.99.38.107 root@158.69.30.149 root@167.114.172.204 root@158.69.6.146 root@213.239.194.132 root@92.255.251.110 root@158.69.30.144 root@65.109.116.119 sem\n/' /etc/ssh/sshd_config
sudo sed -i -e '/^AllowUsers/ { /root@144\.217\.201\.167/! { s/$/ root@144.217.201.167/; h; } }' /etc/ssh/sshd_config
. /etc/os-release
+5 -1
View File
@@ -46,10 +46,14 @@ xfs_info /dev/md3 | egrep 'sunit|swidth|sectsz'
mkdir -p /var/lib/vz
UUID=$(blkid -s UUID -o value /dev/md3)
echo "UUID=$UUID /var/lib/vz xfs defaults,noatime,inode64,logbufs=8,logbsize=256k 0 2" >> /etc/fstab
```
```bash
nano /etc/fstab
```
```bash
mount -a
```
### 6. Перезапусти службы Proxmox
```bash
systemctl start pve-cluster pvedaemon pve-storage pveproxy
+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-скрипт.