diff --git a/docs/razvertyvanie-proxmox.md b/docs/razvertyvanie-proxmox.md index 155b03a..ec31d42 100644 --- a/docs/razvertyvanie-proxmox.md +++ b/docs/razvertyvanie-proxmox.md @@ -4,7 +4,7 @@ | Параметр | Значение | |----------|----------| -| Версия | 1.0 | +| Версия | 1.1 | | Дата | 09.07.2026 | | Связанный документ | [Техническое задание](TZ-proxmox-konsolidaciya.md) | @@ -15,6 +15,10 @@ 1. [Предварительные требования](#1-предварительные-требования) 2. [Фаза 0 — Подготовка](#2-фаза-0--подготовка) 3. [Фаза 1 — Установка Proxmox VE](#3-фаза-1--установка-proxmox-ve) + - [3.1. Настройка MegaRAID (BIOS контроллера)](#31-настройка-megaraid-bios-контроллера) + - [3.2. Разбивка дисков (8 дисков)](#32-разбивка-дисков-8-дисков) + - [3.3. Установка Proxmox VE](#33-установка-proxmox-ve) + - [3.4. Подключение RAID10 под базы данных](#34-подключение-raid10-под-базы-данных) 4. [Фаза 2 — Настройка IOMMU и VFIO (Вариант А)](#4-фаза-2--настройка-iommu-и-vfio-вариант-а) 5. [Фаза 3 — Создание виртуальных машин](#5-фаза-3--создание-виртуальных-машин) 6. [Фаза 4 — Установка Windows 10](#6-фаза-4--установка-windows-10) @@ -120,17 +124,109 @@ chmod +x /root/check-iommu.sh ## 3. Фаза 1 — Установка Proxmox VE -### 3.1. Установка +> Рекомендуемый путь — **аппаратный RAID** на Broadcom/LSI MegaRAID с BBU/CacheVault, **ext4 + LVM-thin**. Подробности по выбору контроллера — в [ТЗ, раздел 3.1](TZ-proxmox-konsolidaciya.md#31-подсистема-хранения-общая-для-обоих-вариантов). + +### 3.1. Настройка MegaRAID (BIOS контроллера) + +Перед установкой Proxmox войдите в утилиту конфигурирования контроллера (**Ctrl+R** при загрузке, или **UEFI MegaRAID Configuration Utility**). + +#### Обязательные параметры Virtual Drive (VD) + +Для **каждого** созданного виртуального диска (RAID1 и RAID10) выставьте: + +| Параметр | Значение | Зачем | +|----------|----------|-------| +| **Write Policy** | **Write Back with BBU** (или **Write Back**, если CacheVault исправен) | Write Through снижает скорость записи в десятки раз — критично для БД СКАДА/ЛЭРС | +| **Read Policy** | **Adaptive Read Ahead** | Контроллер предугадывает чтение логов и баз данных | +| **Disk Cache Policy** | **Enabled** (или по рекомендации вендора SSD) | | +| **I/O Policy** | Direct (по умолчанию) | | +| **Access Policy** | Read/Write | | + +> **Важно.** Write Back **допустим только** при исправном **BBU** или **CacheVault (CVPM02/CVPM05)**. Проверьте статус: `Optimal`, заряд кэша — `OK`. Без защиты кэша используйте Write Through (но производительность будет низкой). + +#### Проверка CacheVault / BBU + +В утилите MegaRAID или после установки ОС: + +```bash +# После установки Proxmox (пакет storcli) +apt install storcli +storcli64 /c0 show | grep -i "cache\|bbu\|vault" +storcli64 /c0/cv show +``` + +Ожидаемый статус CacheVault: **Optimal**. + +--- + +### 3.2. Разбивка дисков (8 дисков) + +Рекомендуемая схема для серверной конфигурации с 8 физическими SSD/SAS-дисками: + +``` +Диски 1, 2 → RAID 1 → VD0 → Proxmox VE (ext4) + системные диски ВМ (Windows 10) +Диски 3–6 → RAID 10 → VD1 → Только базы данных (СКАДА, ЛЭРС, «Меркурий») +Диски 7, 8 → Global Hot Spare → Автозамена при отказе любого из дисков 1–6 +``` + +| VD | RAID | Физические диски | Назначение | Примерный объём* | +|----|------|-----------------|------------|-----------------| +| VD0 | RAID1 | 1, 2 | ОС Proxmox, `local-lvm` — системные диски ВМ | ~960 ГБ (из 2× 960 ГБ) | +| VD1 | RAID10 | 3, 4, 5, 6 | Активно пишущиеся БД | ~1,9 ТБ (из 4× 960 ГБ) | +| Hot Spare | — | 7, 8 | Global Hot Spare | — | + +\*При дисках 960 ГБ. Для 1,92 ТБ — пропорционально. + +#### Создание массивов в MegaRAID BIOS + +1. **VD0 (RAID1):** выбрать диски 1 и 2 → RAID Level **1** → применить политики из п. 3.1. +2. **VD1 (RAID10):** выбрать диски 3, 4, 5, 6 → RAID Level **10** → применить политики из п. 3.1. +3. **Hot Spare:** диски 7 и 8 → **Make Global Hot Spare** (на обоих). + +При отказе любого диска из VD0 или VD1 контроллер **автоматически** начнёт rebuild на hot spare без участия оператора. + +#### Создание через StorCLI (альтернатива, после загрузки с Live-USB) + +```bash +# Пример (номера enclosure/slot уточнить: storcli64 /c0/eall/sall show) + +# RAID1 — диски 0:0 и 0:1 +storcli64 /c0 add vd r1 drives=0:0,0:1 writepolicy=wb readpolicy=ra + +# RAID10 — диски 0:2–0:5 +storcli64 /c0 add vd r10 drives=0:2,0:3,0:4,0:5 writepolicy=wb readpolicy=ra + +# Global Hot Spare — диски 0:6 и 0:7 +storcli64 /c0/e0/s6 add spares +storcli64 /c0/e0/s7 add spares +``` + +#### Упрощённые схемы (если дисков меньше 8) + +| Дисков | Схема | +|--------|-------| +| 4 | RAID10 (все 4) → один VD → ext4 + LVM-thin (см. [ТЗ 3.1](TZ-proxmox-konsolidaciya.md#31-подсистема-хранения-общая-для-обоих-вариантов)) | +| 2 | RAID1 → один VD → ext4 + LVM-thin | +| 2× NVMe (tower, без RAID-контроллера) | ZFS mirror при установке Proxmox — бюджетная альтернатива | + +--- + +### 3.3. Установка Proxmox VE 1. Загрузиться с ISO Proxmox VE 8.x. -2. Target disk: ZFS (RAID1) — выбрать 2 NVMe. -3. Задать: +2. На экране выбора диска выбрать **VD0 (RAID1)** — первый виртуальный диск MegaRAID. +3. **Тип файловой системы:** **ext4** (или **xfs** — допустимая альтернатива). +4. **Не выбирать ZFS** при аппаратном RAID. +5. Proxmox автоматически создаст структуру **LVM-thin** (`local-lvm`) для дисков виртуальных машин. +6. Задать: - Hostname: `pve-scada` - IP: `192.168.10.10/24` - Gateway, DNS — по сети заказчика -4. Завершить установку, перезагрузить. +7. Завершить установку, перезагрузить. -### 3.2. Первичная настройка хоста +> **VD1 (RAID10)** на этом этапе **не трогаем** — он будет подключён после установки (п. 3.4). + +#### Первичная настройка хоста ```bash # Обновление системы @@ -141,9 +237,13 @@ timedatectl set-timezone Europe/Moscow # Проверка версии pveversion -v + +# Проверка RAID +storcli64 /c0/vall show +storcli64 /c0/eall/sall show ``` -### 3.3. Загрузка ISO в хранилище +#### Загрузка ISO в хранилище Через веб-интерфейс: **Datacenter → pve-scada → local → ISO Images → Upload** @@ -152,12 +252,84 @@ pveversion -v - `Win10_22H2_ru.iso` - `virtio-win-0.1.xxxx.iso` -### 3.4. Настройка хранилища (если нужен NAS для бэкапов) +#### Настройка хранилища для бэкапов (NAS) **Datacenter → Storage → Add → NFS/CIFS** — указать путь к NAS для vzdump. --- +### 3.4. Подключение RAID10 под базы данных + +VD1 (RAID10) предназначен **только для активно пишущихся баз данных** СКАДА, ЛЭРС и «Меркурия». Системные диски Windows остаются на VD0 (`local-lvm`). + +#### Шаг 1. Разметка VD1 на хосте + +```bash +# Убедиться, что VD1 виден (обычно /dev/sdb) +lsblk +storcli64 /c0/vall show + +# Создать раздел и файловую систему +parted /dev/sdb mklabel gpt +parted /dev/sdb mkpart primary ext4 0% 100% +mkfs.ext4 -L pve-data-db /dev/sdb1 + +# Точка монтирования +mkdir -p /mnt/pve/data-db +echo 'LABEL=pve-data-db /mnt/pve/data-db ext4 defaults,noatime 0 2' >> /etc/fstab +mount -a +``` + +#### Шаг 2. Добавить хранилище в Proxmox + +**Datacenter → Storage → Add → Directory:** + +| Параметр | Значение | +|----------|----------| +| ID | `data-db` | +| Directory | `/mnt/pve/data-db` | +| Content | Disk image, VZDump backup file | +| Shared | No | + +Или через CLI: + +```bash +pvesm add dir data-db --path /mnt/pve/data-db --content images,backup --maxfiles 0 +``` + +#### Шаг 3. Разделение дисков ВМ + +Для каждой ВМ создаются **два диска**: + +| ВМ | Диск 1 (система) | Диск 2 (базы данных) | +|----|-----------------|---------------------| +| VM-101 (СКАДА + «Меркурий») | `local-lvm`, 80–100 ГБ | `data-db`, 100+ ГБ | +| VM-102 (ЛЭРС) | `local-lvm`, 60–80 ГБ | `data-db`, 60+ ГБ | +| VM-103 (Лифты) | `local-lvm`, 60–80 ГБ | `data-db` — только если БД на этом диске | + +Пример добавления диска БД к VM-101: + +```bash +qm set 101 --scsi1 data-db:100,iothread=1,discard=on,ssd=1 +``` + +В Windows: + +- Диск 0 (VirtIO SCSI) — система Windows 10 + программы. +- Диск 1 (VirtIO SCSI) — папки баз данных (перенести каталоги СКАДА/ЛЭРС/«Меркурия» на этот том). + +#### Шаг 4. Проверка I/O + +```bash +# Быстрый тест записи на RAID10 +fio --name=db-test --directory=/mnt/pve/data-db --rw=randwrite --bs=4k \ + --numjobs=4 --iodepth=32 --size=1G --runtime=30 --time_based +``` + +Ожидаемый результат: существенно выше random write IOPS на `/mnt/pve/data-db`, чем на `local-lvm` (RAID1). + +--- + ## 4. Фаза 2 — Настройка IOMMU и VFIO (Вариант А) > Для **Варианта Б (RDP)** этот раздел можно пропустить, достаточно базовой установки Proxmox. @@ -275,6 +447,8 @@ modprobe vendor-reset ## 5. Фаза 3 — Создание виртуальных машин +> При схеме **8 дисков** (раздел 3.2): `scsi0` — системный диск на `local-lvm` (RAID1), `scsi1` — диск БД на `data-db` (RAID10). + ### 5.1. Создание через CLI (пример VM-101) ```bash @@ -285,10 +459,13 @@ qm create 101 --name vm-scada --memory 20480 --cores 6 --sockets 1 \ --net0 virtio,bridge=vmbr0,firewall=1 # EFI disk -qm set 101 --efidisk0 local-zfs:1,efitype=4m,pre-enrolled-keys=0 +qm set 101 --efidisk0 local-lvm:1,efitype=4m,pre-enrolled-keys=0 -# Системный диск -qm set 101 --scsi0 local-zfs:200,iothread=1,discard=on,ssd=1 +# Системный диск (RAID1 / local-lvm) +qm set 101 --scsi0 local-lvm:100,iothread=1,discard=on,ssd=1 + +# Диск баз данных (RAID10 / data-db) — если настроен п. 3.4 +qm set 101 --scsi1 data-db:100,iothread=1,discard=on,ssd=1 # CD-ROM с Windows qm set 101 --ide2 local:iso/Win10_22H2_ru.iso,media=cdrom @@ -313,8 +490,9 @@ qm create 102 --name vm-lers --memory 16384 --cores 4 --sockets 1 \ --cpu host --machine q35 --bios ovmf --ostype win10 \ --scsihw virtio-scsi-single --agent enabled=1 \ --net0 virtio,bridge=vmbr0,firewall=1 -qm set 102 --efidisk0 local-zfs:1,efitype=4m,pre-enrolled-keys=0 -qm set 102 --scsi0 local-zfs:120,iothread=1,discard=on,ssd=1 +qm set 102 --efidisk0 local-lvm:1,efitype=4m,pre-enrolled-keys=0 +qm set 102 --scsi0 local-lvm:80,iothread=1,discard=on,ssd=1 +qm set 102 --scsi1 data-db:60,iothread=1,discard=on,ssd=1 qm set 102 --ide2 local:iso/Win10_22H2_ru.iso,media=cdrom qm set 102 --ide0 local:iso/virtio-win-0.1.xxxx.iso,media=cdrom qm set 102 --usb0 xhci=1 --onboot 1 @@ -324,14 +502,16 @@ qm create 103 --name vm-lifts --memory 16384 --cores 4 --sockets 1 \ --cpu host --machine q35 --bios ovmf --ostype win10 \ --scsihw virtio-scsi-single --agent enabled=1 \ --net0 virtio,bridge=vmbr0,firewall=1 -qm set 103 --efidisk0 local-zfs:1,efitype=4m,pre-enrolled-keys=0 -qm set 103 --scsi0 local-zfs:120,iothread=1,discard=on,ssd=1 +qm set 103 --efidisk0 local-lvm:1,efitype=4m,pre-enrolled-keys=0 +qm set 103 --scsi0 local-lvm:80,iothread=1,discard=on,ssd=1 qm set 103 --ide2 local:iso/Win10_22H2_ru.iso,media=cdrom qm set 103 --ide0 local:iso/virtio-win-0.1.xxxx.iso,media=cdrom qm set 103 --usb0 xhci=1 --onboot 1 qm set 103 --boot order=ide2\;scsi0 ``` +> VM-103: диск `data-db` добавлять только если база данных лифтовой системы хранится локально на диске ВМ. + ### 5.2. Создание через веб-интерфейс Для каждой ВМ (**Create VM**): @@ -344,7 +524,8 @@ qm set 103 --boot order=ide2\;scsi0 | System | Machine | q35 | | System | BIOS | OVMF (UEFI) | | System | Qemu Agent | ✓ | -| Disks | Bus | SCSI, VirtIO, SSD, Discard | +| Disks | scsi0 | `local-lvm`, VirtIO SCSI, SSD, Discard — система Windows | +| Disks | scsi1 | `data-db`, VirtIO SCSI, SSD — базы данных (если настроен RAID10) | | CPU | Type | host | | CPU | Cores | по таблице | | Memory | Memory | по таблице | @@ -748,6 +929,21 @@ qmrestore /mnt/pve/nas-backup/dump/vzdump-qemu-101-*.zst 101 --force ## 12. Устранение неполадок +### 12.0. MegaRAID — degraded / rebuild + +```bash +storcli64 /c0 show +storcli64 /c0/vall show +storcli64 /c0/eall/sall show +``` + +| Состояние | Действие | +|-----------|----------| +| **Degraded** | Проверить, сработал ли Global Hot Spare; дождаться rebuild | +| **Rebuild in progress** | Не выключать сервер; нагрузка на массив будет выше | +| **BBU/CacheVault Failed** | Немедленно переключить Write Policy на Write Through до замены модуля | +| **Predictive Failure** | Заменить диск; hot spare подхватит автоматически | + ### 12.1. GPU passthrough — VM не стартует ```bash