3edf1fd6fc
Расширен список подходящих моделей по платформам Dell, xFusion, Broadcom; уточнён список не рекомендуемых. Co-authored-by: Cursor <cursoragent@cursor.com>
1392 lines
52 KiB
Markdown
1392 lines
52 KiB
Markdown
# Развёртывание и настройка Proxmox VE
|
||
|
||
## Консолидация СКАДА, ЛЭРС, лифты, «Меркурий»
|
||
|
||
| Параметр | Значение |
|
||
|----------|----------|
|
||
| Версия | 1.4 |
|
||
| Дата | 09.07.2026 |
|
||
| Связанный документ | [Техническое задание](TZ-proxmox-konsolidaciya.md) |
|
||
|
||
---
|
||
|
||
## Содержание
|
||
|
||
1. [Предварительные требования](#1-предварительные-требования)
|
||
2. [Фаза 0 — Подготовка](#2-фаза-0--подготовка)
|
||
3. [Фаза 1 — Установка Proxmox VE](#3-фаза-1--установка-proxmox-ve)
|
||
- [3.1. Настройка MegaRAID (BIOS контроллера)](#31-настройка-megaraid-bios-контроллера)
|
||
- [3.2. Выбор схемы разбивки дисков](#32-выбор-схемы-разбивки-дисков)
|
||
- [3.3. Схема «A» — RAID1 + RAID10 (раздельно)](#33-схема-a--raid1--raid10-раздельно)
|
||
- [3.4. Схема «B» — один RAID10 на всё (рекомендуется)](#34-схема-b--один-raid10-на-всё-рекомендуется)
|
||
- [3.5. Установка Proxmox VE](#35-установка-proxmox-ve)
|
||
- [3.6. Мониторинг RAID](#36-мониторинг-raid)
|
||
4. [Фаза 2 — Настройка IOMMU и VFIO (Вариант А)](#4-фаза-2--настройка-iommu-и-vfio-вариант-а)
|
||
5. [Фаза 3 — Создание виртуальных машин](#5-фаза-3--создание-виртуальных-машин)
|
||
6. [Фаза 4 — Установка Windows 10](#6-фаза-4--установка-windows-10)
|
||
7. [Фаза 5 — GPU и USB Passthrough (Вариант А)](#7-фаза-5--gpu-и-usb-passthrough-вариант-а)
|
||
8. [Фаза 6 — Настройка RDP (Вариант Б)](#8-фаза-6--настройка-rdp-вариант-б)
|
||
9. [Фаза 7 — Миграция программ](#9-фаза-7--миграция-программ)
|
||
- [9.2. Восстановление из Veeam Agent](#92-восстановление-из-veeam-agent)
|
||
10. [Фаза 8 — Резервное копирование](#10-фаза-8--резервное-копирование)
|
||
11. [Фаза 9 — Тестирование и ввод в эксплуатацию](#11-фаза-9--тестирование-и-ввод-в-эксплуатацию)
|
||
12. [Устранение неполадок](#12-устранение-неполадок)
|
||
13. [Справочник конфигураций ВМ](#13-справочник-конфигураций-вм)
|
||
|
||
---
|
||
|
||
## 1. Предварительные требования
|
||
|
||
### 1.1. Состав виртуальных машин
|
||
|
||
| VM ID | Имя | Назначение | IP (пример) | vCPU | RAM | Диск |
|
||
|-------|-----|-----------|-------------|------|-----|------|
|
||
| 101 | vm-scada | СКАДА + «Меркурий» | 192.168.10.11 | 6 | 20 ГБ | 200 ГБ |
|
||
| 102 | vm-lers | ЛЭРС Учёт | 192.168.10.12 | 4 | 16 ГБ | 120 ГБ |
|
||
| 103 | vm-lifts | Управление лифтами | 192.168.10.13 | 4 | 16 ГБ | 120 ГБ |
|
||
|
||
### 1.2. Необходимые образы и файлы
|
||
|
||
- ISO Proxmox VE 8.x — [proxmox.com/downloads](https://www.proxmox.com/en/downloads)
|
||
- ISO Windows 10
|
||
- VirtIO drivers — [fedoraproject.org/wiki/Windows_Virtio_Drivers](https://fedoraproject.org/wiki/Windows_Virtio_Drivers)
|
||
- Полные бэкапы текущих ПК (образы + БД + конфигурации)
|
||
|
||
### 1.3. Сетевая схема (пример)
|
||
|
||
| Узел | IP | VLAN | Назначение |
|
||
|------|-----|------|-----------|
|
||
| Proxmox host | 192.168.10.10 | 10 | Управление |
|
||
| VM-101 | 192.168.10.11 | 10 | СКАДА + «Меркурий» |
|
||
| VM-102 | 192.168.10.12 | 10 | ЛЭРС |
|
||
| VM-103 | 192.168.10.13 | 10 | Лифты |
|
||
| MOXA (до замены) | 192.168.10.20 | 10 | Конвертер RS-485 |
|
||
| RDP-клиент | 192.168.10.50 | 10 | Рабочее место (Вариант Б) |
|
||
|
||
---
|
||
|
||
## 2. Фаза 0 — Подготовка
|
||
|
||
### 2.1. Инвентаризация
|
||
|
||
Зафиксировать для каждого текущего ПК:
|
||
|
||
- [ ] Версия Windows 10 (build)
|
||
- [ ] Версии СКАДА, ЛЭРС, лифтов, «Меркурия»
|
||
- [ ] Размеры баз данных
|
||
- [ ] IP-адреса, маски, шлюзы, DNS
|
||
- [ ] COM-порты и скорости (если используются)
|
||
- [ ] Подключение MOXA (IP, порт, виртуальный COM)
|
||
- [ ] Vendor:Product ID USB-ключа «Меркурия»
|
||
|
||
Узнать ID USB-ключа на Linux-хосте (после установки Proxmox):
|
||
|
||
```bash
|
||
lsusb
|
||
# Пример вывода: Bus 001 Device 005: ID 0529:0001 Aladdin HASP HL 3.25
|
||
```
|
||
|
||
### 2.2. Резервное копирование исходных систем
|
||
|
||
На каждом из трёх ПК:
|
||
|
||
1. Создать образ диска (Macrium Reflect / Clonezilla).
|
||
2. Экспортировать базы данных СКАДА и ЛЭРС штатными средствами ПО.
|
||
3. Сохранить конфигурации лифтовой программы и «Меркурия».
|
||
4. Скопировать бэкапы на внешний носитель и NAS.
|
||
|
||
### 2.3. Проверка IOMMU (только Вариант А, после сборки железа)
|
||
|
||
В BIOS включить VT-d/IOMMU, установить Proxmox, выполнить:
|
||
|
||
```bash
|
||
dmesg | grep -e DMAR -e IOMMU -e AMD-Vi
|
||
```
|
||
|
||
Скрипт проверки IOMMU groups:
|
||
|
||
```bash
|
||
#!/bin/bash
|
||
# save as: /root/check-iommu.sh
|
||
for g in /sys/kernel/iommu_groups/*; do
|
||
echo "Group $(basename $g):"
|
||
for d in $g/devices/*; do
|
||
echo -e "\t$(lspci -nns ${d##*/})"
|
||
done
|
||
done
|
||
```
|
||
|
||
```bash
|
||
chmod +x /root/check-iommu.sh
|
||
/root/check-iommu.sh | tee /root/iommu-groups.txt
|
||
```
|
||
|
||
**Критерий готовности:** каждая GPU находится в отдельной IOMMU group (допустимо только с HDMI-audio той же карты).
|
||
|
||
---
|
||
|
||
## 3. Фаза 1 — Установка Proxmox VE
|
||
|
||
> Рекомендуемый путь — **аппаратный 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. Выбор схемы разбивки дисков
|
||
|
||
Перед созданием массивов в MegaRAID выберите одну из двух схем.
|
||
|
||
#### Сравнение схем
|
||
|
||
| Критерий | **Схема A:** RAID1 + RAID10 | **Схема B:** один RAID10 на всё |
|
||
|----------|----------------------------|----------------------------------|
|
||
| Сложность | Выше (2 VD, 2 хранилища Proxmox, 2 диска на ВМ) | **Ниже** (1 VD, `local-lvm`, один диск на ВМ) |
|
||
| Минимум дисков | 6 (2+4) + spare | **6** (4+2 spare) |
|
||
| IOPS для БД | Максимум (отдельный RAID10) | Хороший (общий RAID10) |
|
||
| Изоляция нагрузки | БД не конкурируют с ОС/ВМ за диски | Общая очередь I/O |
|
||
| Ёмкость при 8×960 ГБ | ~0,9 + ~1,9 = **~2,8 ТБ** | **~1,9 ТБ** (4 диска в массиве) |
|
||
| Hot Spare при 8 дисках | 2 spare | **4 spare** (избыточно, но допустимо) |
|
||
| Когда выбирать | Тяжёлые БД, доказанная высокая запись | **По умолчанию** для данного проекта |
|
||
|
||
#### Рекомендация для СКАДА / ЛЭРС / «Меркурия»
|
||
|
||
> **Схема B (4 диска RAID10 + Hot Spare)** — рекомендуемый вариант по умолчанию.
|
||
|
||
Текущая нагрузка (3 ПК на i5-7400 / 8 ГБ) умеренная. Один RAID10 из 4 SSD с write-back кэшем MegaRAID **достаточен** для Proxmox, дисков Windows и баз данных одновременно. Схема проще в установке, миграции и сопровождении.
|
||
|
||
**Схему A** выбирайте, если:
|
||
- базы СКАДА/ЛЭРС уже сейчас активно упираются в диск;
|
||
- планируется сильный рост архивов;
|
||
- нужна жёсткая изоляция: сбой/нагрузка на БД не должны затрагивать загрузку Windows.
|
||
|
||
#### Сводная таблица по количеству дисков
|
||
|
||
| Всего дисков | Схема B (рекомендуется) | Схема A (раздельно) |
|
||
|-------------|------------------------|---------------------|
|
||
| **6** | 4 → RAID10 (всё) + 2 Hot Spare | 2 → RAID1 + 4 → RAID10, spare нет* |
|
||
| **8** | 4 → RAID10 (всё) + 4 Hot Spare | 2 → RAID1 + 4 → RAID10 + 2 Hot Spare |
|
||
| **4** | 4 → RAID10 (всё), без spare | — |
|
||
| **2** | — | 2 → RAID1 (всё), без spare |
|
||
|
||
\*При 6 дисках и схеме A spare не остаётся — допустимо для бюджетной конфигурации, но лучше 8 дисков.
|
||
|
||
---
|
||
|
||
### 3.3. Схема «A» — RAID1 + RAID10 (раздельно)
|
||
|
||
Proxmox и системные диски ВМ — на **RAID1**. Базы данных и рабочие файлы — на **отдельном RAID10**.
|
||
|
||
```
|
||
Диски 1, 2 → RAID 1 → VD0 → Proxmox + диски Windows (система)
|
||
Диски 3–6 → RAID 10 → VD1 → Базы СКАДА, ЛЭРС, «Меркурий», рабочие файлы
|
||
Диски 7, 8 → Global Hot Spare
|
||
```
|
||
|
||
| VD | RAID | Диски | Назначение в Proxmox | Примерный объём* |
|
||
|----|------|-------|---------------------|-----------------|
|
||
| VD0 | RAID1 | 1, 2 | Установка Proxmox, `local-lvm` — `scsi0` ВМ (Windows) | ~960 ГБ |
|
||
| VD1 | RAID10 | 3–6 | Хранилище `data-db` — `scsi1` ВМ (БД и данные) | ~1,9 ТБ |
|
||
| — | Hot Spare | 7, 8 | Автозамена | — |
|
||
|
||
#### Создание в MegaRAID BIOS
|
||
|
||
1. **VD0:** диски 1, 2 → RAID **1** → политики из п. 3.1.
|
||
2. **VD1:** диски 3, 4, 5, 6 → RAID **10** → политики из п. 3.1.
|
||
3. **Hot Spare:** диски 7, 8 → **Make Global Hot Spare**.
|
||
|
||
#### StorCLI
|
||
|
||
```bash
|
||
storcli64 /c0 add vd r1 drives=0:0,0:1 writepolicy=wb readpolicy=ra
|
||
storcli64 /c0 add vd r10 drives=0:2,0:3,0:4,0:5 writepolicy=wb readpolicy=ra
|
||
storcli64 /c0/e0/s6 add spares
|
||
storcli64 /c0/e0/s7 add spares
|
||
```
|
||
|
||
#### Установка Proxmox (схема A)
|
||
|
||
1. Установить Proxmox на **VD0 (RAID1)** → ext4 → LVM-thin (`local-lvm`).
|
||
2. **VD1 не форматировать** при установке.
|
||
3. После установки — подключить VD1 как хранилище `data-db` (п. 3.5, шаг «Схема A»).
|
||
|
||
#### Размещение дисков ВМ (схема A)
|
||
|
||
| ВМ | scsi0 (`local-lvm`, RAID1) | scsi1 (`data-db`, RAID10) |
|
||
|----|---------------------------|--------------------------|
|
||
| VM-101 | Windows 10 + программы, 80–100 ГБ | БД СКАДА + «Меркурий», 100+ ГБ |
|
||
| VM-102 | Windows 10 + ЛЭРС, 60–80 ГБ | БД ЛЭРС, 60+ ГБ |
|
||
| VM-103 | Windows 10 + лифты, 60–80 ГБ | БД (если есть), по необходимости |
|
||
|
||
```bash
|
||
# Пример VM-101
|
||
qm set 101 --scsi0 local-lvm:100,iothread=1,discard=on,ssd=1
|
||
qm set 101 --scsi1 data-db:100,iothread=1,discard=on,ssd=1
|
||
```
|
||
|
||
В Windows: перенести каталоги баз данных на диск D: (`scsi1`).
|
||
|
||
---
|
||
|
||
### 3.4. Схема «B» — один RAID10 на всё (рекомендуется)
|
||
|
||
Все данные — Proxmox, диски ВМ, базы, рабочие файлы — на **одном RAID10**. Оставшиеся диски — **Global Hot Spare**.
|
||
|
||
```
|
||
Диски 1–4 → RAID 10 → VD0 → Proxmox + все диски ВМ + все БД
|
||
Диски 5–8 → Global Hot Spare (при 8 дисках; при 6 — диски 5–6)
|
||
```
|
||
|
||
| Всего дисков | RAID10 | Hot Spare | Полезный объём* |
|
||
|-------------|--------|-----------|----------------|
|
||
| 6 | 4 диска | 2 | ~1,9 ТБ |
|
||
| 8 | 4 диска | 4 | ~1,9 ТБ |
|
||
|
||
\*При 4× 960 ГБ SSD. Для 4× 1,92 ТБ → ~3,8 ТБ.
|
||
|
||
> **Почему не все 8 дисков в RAID10?** RAID10 из 8 дисков дал бы ~3,8 ТБ, но для данного проекта избыточен. 4 диска в RAID10 + 4 spare дают **быструю автозамену** при отказе (два spare на один массив) без усложнения. Если нужен объём, а не spare — можно 6 или 8 дисков в RAID10 (см. ниже).
|
||
|
||
#### Создание в MegaRAID BIOS (6 дисков)
|
||
|
||
1. **VD0:** диски 1, 2, 3, 4 → RAID **10** → политики из п. 3.1.
|
||
2. **Hot Spare:** диски 5, 6 → **Make Global Hot Spare**.
|
||
|
||
#### Создание в MegaRAID BIOS (8 дисков)
|
||
|
||
1. **VD0:** диски 1, 2, 3, 4 → RAID **10**.
|
||
2. **Hot Spare:** диски 5, 6, 7, 8 → **Make Global Hot Spare**.
|
||
|
||
#### StorCLI
|
||
|
||
```bash
|
||
# RAID10 — 4 диска
|
||
storcli64 /c0 add vd r10 drives=0:0,0:1,0:2,0:3 writepolicy=wb readpolicy=ra
|
||
|
||
# Hot Spare (6 дисков: 2 spare; 8 дисков: 4 spare)
|
||
storcli64 /c0/e0/s4 add spares
|
||
storcli64 /c0/e0/s5 add spares
|
||
# при 8 дисках дополнительно:
|
||
storcli64 /c0/e0/s6 add spares
|
||
storcli64 /c0/e0/s7 add spares
|
||
```
|
||
|
||
#### Установка Proxmox (схема B)
|
||
|
||
1. Установить Proxmox на **VD0 (RAID10)** → **ext4** → LVM-thin (`local-lvm`).
|
||
2. Все диски ВМ создавать на `local-lvm` — **один диск на ВМ**, без разделения.
|
||
3. Базы данных хранить на том же диске Windows (или вынести в отдельный каталог на `C:` / `D:` внутри одного виртуального диска).
|
||
|
||
```bash
|
||
# Пример VM-101 — один диск на всё
|
||
qm set 101 --scsi0 local-lvm:200,iothread=1,discard=on,ssd=1
|
||
```
|
||
|
||
#### Вариант: 6–8 дисков целиком в RAID10 (максимум объёма, без spare)
|
||
|
||
Если hot spare не нужен, а важен объём:
|
||
|
||
| Дисков | RAID10 | Полезный объём (4×960 база) |
|
||
|--------|--------|------------------------------|
|
||
| 6 | 6 дисков (3 пары) | ~2,8 ТБ |
|
||
| 8 | 8 дисков (4 пары) | ~3,8 ТБ |
|
||
|
||
```bash
|
||
# 8 дисков в одном RAID10 (без spare)
|
||
storcli64 /c0 add vd r10 drives=0:0,0:1,0:2,0:3,0:4,0:5,0:6,0:7 writepolicy=wb readpolicy=ra
|
||
```
|
||
|
||
> Без hot spare при отказе диска массив уходит в **Degraded** до ручной замены. Для диспетчерской рекомендуется хотя бы **2 Global Hot Spare**.
|
||
|
||
---
|
||
|
||
### 3.5. Установка Proxmox VE
|
||
|
||
#### Предварительно: создание VD в MegaRAID
|
||
|
||
Перед установкой Proxmox создайте виртуальный диск (VD) в BIOS/UEFI контроллера MegaRAID или PERC (см. §3.2–3.4). Политики Write Back и Read Ahead — в §3.1.
|
||
|
||
#### Установка на аппаратный RAID (профиль Server Room, Вариант Б)
|
||
|
||
1. Загрузиться с ISO Proxmox VE 8.x.
|
||
2. В инсталляторе выбрать созданный **VD** (MegaRAID/PERC).
|
||
3. **Filesystem:** **ext4** (или **xfs** — допустимая альтернатива).
|
||
4. **Storage:** **LVM-thin** — Proxmox автоматически создаст `local-lvm` для дисков ВМ.
|
||
5. **Не выбирать ZFS** при аппаратном RAID.
|
||
6. Задать hostname `pve-scada`, IP `192.168.10.10/24`, gateway, DNS.
|
||
7. Завершить установку, перезагрузить.
|
||
|
||
#### Установка на ZFS mirror (профиль Dispatch Tower, Вариант А)
|
||
|
||
Если tower-сборка **без MegaRAID** (2× NVMe в AHCI):
|
||
|
||
1. Загрузиться с ISO Proxmox VE 8.x.
|
||
2. Target disk: **ZFS (RAID1)** — выбрать 2 NVMe.
|
||
3. Задать hostname, IP, gateway, DNS.
|
||
4. Завершить установку.
|
||
|
||
> ZFS — только для tower без аппаратного RAID. На Dell PERC / MegaRAID — **ext4 + LVM-thin**.
|
||
|
||
#### Дополнительно для схемы разбивки A: подключение VD1 (RAID10) под БД
|
||
|
||
Выполнить **после** установки Proxmox, если выбрана схема A:
|
||
|
||
```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
|
||
|
||
pvesm add dir data-db --path /mnt/pve/data-db --content images,backup --maxfiles 0
|
||
```
|
||
|
||
Для схемы B этот шаг **не выполняется**.
|
||
|
||
#### Первичная настройка хоста
|
||
|
||
```bash
|
||
# Обновление системы
|
||
apt update && apt full-upgrade -y
|
||
|
||
# Часовой пояс (пример: Москва)
|
||
timedatectl set-timezone Europe/Moscow
|
||
|
||
# Проверка версии
|
||
pveversion -v
|
||
|
||
# Проверка RAID
|
||
storcli64 /c0/vall show
|
||
storcli64 /c0/eall/sall show
|
||
```
|
||
|
||
#### Загрузка ISO в хранилище
|
||
|
||
Через веб-интерфейс: **Datacenter → pve-scada → local → ISO Images → Upload**
|
||
|
||
Загрузить:
|
||
|
||
- `Win10_22H2_ru.iso`
|
||
- `virtio-win-0.1.xxxx.iso`
|
||
|
||
#### Настройка хранилища для бэкапов (NAS)
|
||
|
||
**Datacenter → Storage → Add → NFS/CIFS** — указать путь к NAS для vzdump.
|
||
|
||
#### Проверка I/O (опционально)
|
||
|
||
```bash
|
||
# Схема B — тест на local-lvm
|
||
fio --name=pve-test --directory=/var/lib/vz --rw=randwrite --bs=4k \
|
||
--numjobs=4 --iodepth=32 --size=1G --runtime=30 --time_based
|
||
|
||
# Схема A — сравнить RAID1 и RAID10
|
||
fio --name=db-test --directory=/mnt/pve/data-db --rw=randwrite --bs=4k \
|
||
--numjobs=4 --iodepth=32 --size=1G --runtime=30 --time_based
|
||
```
|
||
|
||
---
|
||
|
||
### 3.6. Мониторинг RAID
|
||
|
||
> Применимо для **аппаратного RAID** (MegaRAID / PERC). Для ZFS mirror на tower — `zpool status`, `zpool scrub`.
|
||
|
||
#### Установка утилит управления
|
||
|
||
**Broadcom / LSI MegaRAID (Supermicro, большинство сборок):**
|
||
|
||
```bash
|
||
# StorCLI — скачать с сайта Broadcom, установить .deb
|
||
# https://www.broadcom.com/support/download-search
|
||
dpkg -i storcli_*.deb
|
||
|
||
# Проверка
|
||
storcli64 show
|
||
```
|
||
|
||
**Dell PERC (H755, H730p, H750):**
|
||
|
||
```bash
|
||
# perccli — скачать с dell.com/support
|
||
perccli64 /c0 show
|
||
perccli64 /c0/vall show
|
||
perccli64 /c0/cv show
|
||
```
|
||
|
||
**Broadcom MegaRAID / xFusion (9460, 9560):**
|
||
|
||
```bash
|
||
# StorCLI — Broadcom и rebadged xFusion
|
||
dpkg -i storcli_*.deb
|
||
storcli64 /c0 show
|
||
storcli64 /c0/cv show
|
||
```
|
||
|
||
**Устаревшие контроллеры:**
|
||
|
||
```bash
|
||
apt install megaclisas-status # MegaCLI, LSI 9271 и старше
|
||
```
|
||
|
||
#### Ежедневная проверка состояния
|
||
|
||
```bash
|
||
# Общий статус контроллера
|
||
storcli64 /c0 show
|
||
|
||
# Виртуальные диски (массивы)
|
||
storcli64 /c0/vall show
|
||
|
||
# Физические диски
|
||
storcli64 /c0/eall/sall show
|
||
|
||
# CacheVault / BBU
|
||
storcli64 /c0/cv show
|
||
storcli64 /c0/bbu show
|
||
```
|
||
|
||
**Ожидаемые значения:**
|
||
|
||
| Параметр | Норма |
|
||
|----------|-------|
|
||
| Controller Status | Optimal |
|
||
| VD State | Optimal |
|
||
| PD State | Online |
|
||
| CacheVault / BBU | Optimal, Charged |
|
||
| Write Policy | WriteBack (WB) |
|
||
|
||
#### События, требующие реакции
|
||
|
||
| Событие | Действие |
|
||
|---------|----------|
|
||
| **Degraded** | Проверить hot spare / rebuild; не выключать сервер |
|
||
| **Rebuild in progress** | Снизить нагрузку; дождаться завершения |
|
||
| **Predictive Failure** | Заменить диск; hot spare подхватит автоматически |
|
||
| **CacheVault Failed / BBU Failed** | **Срочно:** Write Policy → Write Through; заменить CVPM/BBU |
|
||
| **Foreign Config** | Импортировать или очистить конфигурацию в MegaRAID BIOS |
|
||
|
||
#### Оповещения (рекомендуется настроить)
|
||
|
||
- degraded array;
|
||
- predictive failure диска;
|
||
- CacheVault / BBU charge low или failed;
|
||
- rebuild completed / failed.
|
||
|
||
**Варианты реализации:**
|
||
|
||
1. **Cron + email** — скрипт проверки `storcli64 /c0 show` и парсинг статуса.
|
||
2. **Zabbix / Prometheus** — SNMP или script check для MegaRAID.
|
||
3. **iDRAC / iLO** (Dell/HPE) — встроенные алерты по дискам и RAID.
|
||
|
||
Пример cron-скрипта (`/etc/cron.daily/raid-check`):
|
||
|
||
```bash
|
||
#!/bin/bash
|
||
STATUS=$(storcli64 /c0 show | grep -i "Status")
|
||
if echo "$STATUS" | grep -ivq "Optimal"; then
|
||
echo "RAID ALERT on $(hostname): $STATUS" | mail -s "RAID degraded" admin@example.com
|
||
fi
|
||
```
|
||
|
||
#### Dell PERC — эквивалентные команды
|
||
|
||
```bash
|
||
perccli64 /c0 show
|
||
perccli64 /c0/vall show
|
||
perccli64 /c0/eall/sall show
|
||
perccli64 /c0/cv show
|
||
```
|
||
|
||
---
|
||
|
||
## 4. Фаза 2 — Настройка IOMMU и VFIO (Вариант А)
|
||
|
||
> Для **Варианта Б (RDP)** этот раздел можно пропустить, достаточно базовой установки Proxmox.
|
||
|
||
### 4.1. BIOS
|
||
|
||
| Параметр | Значение |
|
||
|----------|----------|
|
||
| Intel VT-x / AMD SVM | ON |
|
||
| Intel VT-d / AMD IOMMU | ON |
|
||
| Boot Mode | UEFI |
|
||
| CSM / Legacy | OFF |
|
||
| Above 4G Decoding | ON |
|
||
| Resizable BAR | OFF (NVIDIA) |
|
||
| Primary Display | iGPU |
|
||
|
||
### 4.2. GRUB
|
||
|
||
```bash
|
||
nano /etc/default/grub
|
||
```
|
||
|
||
Для Intel:
|
||
|
||
```
|
||
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
|
||
```
|
||
|
||
Для AMD:
|
||
|
||
```
|
||
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"
|
||
```
|
||
|
||
Применить:
|
||
|
||
```bash
|
||
update-grub
|
||
```
|
||
|
||
### 4.3. Модули ядра
|
||
|
||
```bash
|
||
cat >> /etc/modules << 'EOF'
|
||
vfio
|
||
vfio_iommu_type1
|
||
vfio_pci
|
||
EOF
|
||
```
|
||
|
||
### 4.4. Blacklist GPU-драйверов на хосте
|
||
|
||
```bash
|
||
cat > /etc/modprobe.d/blacklist-gpu.conf << 'EOF'
|
||
blacklist nouveau
|
||
blacklist nvidia
|
||
blacklist nvidiafb
|
||
blacklist radeon
|
||
blacklist amdgpu
|
||
EOF
|
||
```
|
||
|
||
### 4.5. Привязка GPU к vfio-pci
|
||
|
||
Узнать PCI ID видеокарт:
|
||
|
||
```bash
|
||
lspci -nn | grep -i vga
|
||
# Пример AMD RX 550: 1002:699f
|
||
# Пример NVIDIA GT 1030: 10de:1d01
|
||
```
|
||
|
||
```bash
|
||
nano /etc/modprobe.d/vfio.conf
|
||
```
|
||
|
||
```
|
||
options vfio-pci ids=1002:699f,1002:699f,1002:699f
|
||
softdep radeon pre: vfio-pci
|
||
softdep amdgpu pre: vfio-pci
|
||
softdep nouveau pre: vfio-pci
|
||
softdep nvidia pre: vfio-pci
|
||
options vfio-pci disable_vga=1
|
||
```
|
||
|
||
> Замените `ids=` на реальные ID ваших трёх GPU.
|
||
|
||
```bash
|
||
update-initramfs -u -k all
|
||
reboot
|
||
```
|
||
|
||
### 4.6. Проверка после перезагрузки
|
||
|
||
```bash
|
||
dmesg | grep -i vfio
|
||
lspci -k | grep -A3 -i vga
|
||
# Должно быть: Kernel driver in use: vfio-pci
|
||
```
|
||
|
||
### 4.7. AMD reset-bug (при необходимости)
|
||
|
||
Если GPU не перезапускается после shutdown ВМ:
|
||
|
||
```bash
|
||
apt install git dkms build-essential -y
|
||
git clone https://github.com/gnif/vendor-reset.git
|
||
cd vendor-reset
|
||
echo "vendor-reset" >> /etc/modules
|
||
dkms install .
|
||
modprobe vendor-reset
|
||
```
|
||
|
||
---
|
||
|
||
## 5. Фаза 3 — Создание виртуальных машин
|
||
|
||
> При схеме **A** (RAID1+RAID10): `scsi0` — система на `local-lvm`, `scsi1` — БД на `data-db`.
|
||
> При схеме **B** (один RAID10): только `scsi0` на `local-lvm` — один диск на всё.
|
||
|
||
### 5.1. Создание через CLI (пример VM-101)
|
||
|
||
```bash
|
||
# Создание VM
|
||
qm create 101 --name vm-scada --memory 20480 --cores 6 --sockets 1 \
|
||
--cpu host --machine q35 --bios ovmf --ostype win10 \
|
||
--scsihw virtio-scsi-single --agent enabled=1 \
|
||
--net0 virtio,bridge=vmbr0,firewall=1
|
||
|
||
# EFI disk
|
||
qm set 101 --efidisk0 local-lvm:1,efitype=4m,pre-enrolled-keys=0
|
||
|
||
# Системный диск (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
|
||
|
||
# VirtIO drivers (второй CD)
|
||
qm set 101 --ide0 local:iso/virtio-win-0.1.xxxx.iso,media=cdrom
|
||
|
||
# USB 3.0 controller
|
||
qm set 101 --usb0 xhci=1
|
||
|
||
# Autostart
|
||
qm set 101 --onboot 1
|
||
|
||
# Boot order
|
||
qm set 101 --boot order=ide2\;scsi0
|
||
```
|
||
|
||
Аналогично для VM-102 и VM-103:
|
||
|
||
```bash
|
||
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-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
|
||
qm set 102 --boot order=ide2\;scsi0
|
||
|
||
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-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**):
|
||
|
||
| Вкладка | Параметр | Значение |
|
||
|---------|----------|----------|
|
||
| General | VM ID | 101 / 102 / 103 |
|
||
| General | Name | vm-scada / vm-lers / vm-lifts |
|
||
| OS | ISO | Windows 10 |
|
||
| System | Machine | q35 |
|
||
| System | BIOS | OVMF (UEFI) |
|
||
| System | Qemu Agent | ✓ |
|
||
| Disks | scsi0 | `local-lvm`, VirtIO SCSI, SSD, Discard — система Windows |
|
||
| Disks | scsi1 | `data-db`, VirtIO SCSI, SSD — базы данных (если настроен RAID10) |
|
||
| CPU | Type | host |
|
||
| CPU | Cores | по таблице |
|
||
| Memory | Memory | по таблице |
|
||
| Network | Model | VirtIO |
|
||
| Network | Bridge | vmbr0 |
|
||
| Confirm | Start after created | ✗ |
|
||
|
||
---
|
||
|
||
## 6. Фаза 4 — Установка Windows 10
|
||
|
||
### 6.1. Установка ОС
|
||
|
||
1. Запустить ВМ, открыть Console.
|
||
2. При установке Windows на экране выбора диска нажать **Load driver**.
|
||
3. Указать драйвер VirtIO SCSI с CD `virtio-win` (папка `vioscsi/w10/amd64`).
|
||
4. Установить Windows 10.
|
||
5. После первой загрузки установить с CD `virtio-win`:
|
||
- `viofs` (опционально)
|
||
- `vioserial`
|
||
- `Balloon`
|
||
- `qxldod` (если используется виртуальный дисплей)
|
||
- `NetKVM` (сеть VirtIO)
|
||
|
||
### 6.2. Установка QEMU Guest Agent
|
||
|
||
С CD `virtio-win`, папка `guest-agent`, запустить `qemu-ga-x86_64.msi`.
|
||
|
||
Проверка на хосте Proxmox:
|
||
|
||
```bash
|
||
qm agent 101 ping
|
||
# Expected: no error
|
||
```
|
||
|
||
### 6.3. Базовая настройка Windows
|
||
|
||
На каждой ВМ:
|
||
|
||
```powershell
|
||
# Имя компьютера (пример для VM-101)
|
||
Rename-Computer -NewName "VM-SCADA" -Restart
|
||
|
||
# Статический IP (пример)
|
||
New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress 192.168.10.11 -PrefixLength 24 -DefaultGateway 192.168.10.1
|
||
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses 192.168.10.1
|
||
|
||
# Отключить спящий режим
|
||
powercfg /change standby-timeout-ac 0
|
||
powercfg /change hibernate-timeout-ac 0
|
||
|
||
# Отложить автоматические перезагрузки (через gpedit.msc или настройки Update)
|
||
```
|
||
|
||
### 6.4. Windows Update
|
||
|
||
Рекомендуется:
|
||
|
||
- активные часы: 08:00–20:00;
|
||
- отложить feature updates на 365 дней;
|
||
- отложить quality updates на 30 дней;
|
||
- запретить автоматическую перезагрузку в рабочее время.
|
||
|
||
---
|
||
|
||
## 7. Фаза 5 — GPU и USB Passthrough (Вариант А)
|
||
|
||
### 7.1. Определение PCI-адресов GPU
|
||
|
||
```bash
|
||
lspci | grep -i vga
|
||
# Пример:
|
||
# 01:00.0 VGA compatible controller: AMD Radeon RX 550
|
||
# 03:00.0 VGA compatible controller: AMD Radeon RX 550
|
||
# 04:00.0 VGA compatible controller: AMD Radeon RX 550
|
||
```
|
||
|
||
### 7.2. Проброс GPU
|
||
|
||
**Через CLI:**
|
||
|
||
```bash
|
||
# VM-101 — GPU на 01:00
|
||
qm set 101 --hostpci0 01:00,pcie=1,x-vga=1,rombar=1
|
||
|
||
# VM-102 — GPU на 03:00
|
||
qm set 102 --hostpci0 03:00,pcie=1,x-vga=1,rombar=1
|
||
|
||
# VM-103 — GPU на 04:00
|
||
qm set 103 --hostpci0 04:00,pcie=1,x-vga=1,rombar=1
|
||
```
|
||
|
||
**Через веб-интерфейс (Hardware → Add → PCI Device):**
|
||
|
||
| Параметр | Значение |
|
||
|----------|----------|
|
||
| Device | Выбрать GPU |
|
||
| All Functions | ✓ |
|
||
| ROM-Bar | ✓ |
|
||
| PCI-Express | ✓ |
|
||
| Primary GPU | ✓ |
|
||
| Display | none (убрать виртуальный VGA) |
|
||
|
||
Для NVIDIA добавить флаг CPU:
|
||
|
||
```bash
|
||
qm set 101 --cpu host,hidden=1,flags=+pcid
|
||
```
|
||
|
||
### 7.3. Проброс USB-ключа «Меркурия» (VM-101)
|
||
|
||
**По Vendor/Device ID (рекомендуется):**
|
||
|
||
```bash
|
||
# Узнать ID
|
||
lsusb | grep -i hasp
|
||
# Пример: 0529:0001
|
||
|
||
qm set 101 --usb1 host=0529:0001,usb3=1
|
||
```
|
||
|
||
**Passthrough USB-контроллера (если ключ нестабилен):**
|
||
|
||
```bash
|
||
# Найти USB controller в IOMMU group
|
||
lspci | grep -i usb
|
||
|
||
# Пробросить контроллер целиком
|
||
qm set 101 --hostpci1 00:14.0,pcie=1
|
||
```
|
||
|
||
> Не подключать USB-ключ через некачественный USB-hub.
|
||
|
||
### 7.4. Проброс клавиатуры и мыши
|
||
|
||
**Вариант 1 — отдельные USB-устройства (простой):**
|
||
|
||
Через GUI: **Hardware → Add → USB Device → Use USB Vendor/Device ID**.
|
||
|
||
**Вариант 2 — passthrough USB-контроллера (надёжный):**
|
||
|
||
К каждой ВМ привязать отдельный физический USB-контроллер (встроенный или PCIe):
|
||
|
||
```bash
|
||
# VM-101 — USB controller at 00:14.0
|
||
qm set 101 --hostpci2 0b:00.0,pcie=1
|
||
|
||
# VM-102 — USB controller at 0c:00.0 (PCIe USB card)
|
||
qm set 102 --hostpci1 0c:00.0,pcie=1
|
||
|
||
# VM-103 — USB controller at 0d:00.0 (PCIe USB card)
|
||
qm set 103 --hostpci1 0d:00.0,pcie=1
|
||
```
|
||
|
||
### 7.5. Установка драйверов GPU в Windows
|
||
|
||
1. Запустить VM-101 с passthrough GPU.
|
||
2. Изображение установки/рабочего стола должно появиться на **физическом мониторе**, подключённом к GPU-1.
|
||
3. Установить драйвер AMD/NVIDIA.
|
||
4. Повторить для VM-102 и VM-103.
|
||
|
||
### 7.6. NVIDIA Code 43 — устранение
|
||
|
||
Если в диспетчере устройств **Code 43**:
|
||
|
||
1. Убедиться: `ostype win10`, `cpu host,hidden=1`, `machine q35`, `bios ovmf`.
|
||
2. Дамп VBIOS:
|
||
|
||
```bash
|
||
# На хосте, когда GPU не занят VM
|
||
echo 1 > /sys/bus/pci/devices/0000:01:00.0/reset
|
||
cat /sys/bus/pci/devices/0000:01:00.0/rom > /tmp/gt1030.rom
|
||
```
|
||
|
||
3. Пропатчить ROM ([nvidia-kvm-patcher](https://github.com/sk1080/nvidia-kvm-patcher)).
|
||
4. Указать ROM в конфиге:
|
||
|
||
```bash
|
||
qm set 101 --hostpci0 01:00,pcie=1,x-vga=1,rombar=1,romfile=local:snippets/gt1030.rom
|
||
```
|
||
|
||
### 7.7. Проверка passthrough
|
||
|
||
```bash
|
||
# Перезагрузка хоста
|
||
reboot
|
||
|
||
# После загрузки — все ВМ должны стартовать автоматически
|
||
qm list
|
||
|
||
# Проверить USB
|
||
qm config 101 | grep usb
|
||
qm config 101 | grep hostpci
|
||
```
|
||
|
||
**Чек-лист:**
|
||
|
||
- [ ] VM-101: картинка на мониторе 1, ключ «Меркурия» виден в Windows
|
||
- [ ] VM-102: картинка на мониторе 2
|
||
- [ ] VM-103: картинка на мониторе 3
|
||
- [ ] Каждая КМ управляет только своей ВМ
|
||
- [ ] Reboot хоста → все ВМ поднимаются, passthrough сохраняется
|
||
|
||
---
|
||
|
||
## 8. Фаза 6 — Настройка RDP (Вариант Б)
|
||
|
||
### 8.1. Настройка Windows на каждой ВМ
|
||
|
||
```powershell
|
||
# Включить Remote Desktop
|
||
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server" -Name "fDenyTSConnections" -Value 0
|
||
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
|
||
|
||
# Разрешить NLA (рекомендуется)
|
||
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "UserAuthentication" -Value 1
|
||
```
|
||
|
||
Или: **Параметры → Система → Удалённый рабочий стол → Включить**.
|
||
|
||
### 8.2. Создание учётных записей
|
||
|
||
| ВМ | Пользователь | Назначение |
|
||
|----|-------------|-----------|
|
||
| VM-101 | operator_scada | СКАДА + «Меркурий» |
|
||
| VM-102 | operator_lers | ЛЭРС |
|
||
| VM-103 | operator_lifts | Лифты |
|
||
|
||
Добавить пользователей в группу **Remote Desktop Users**.
|
||
|
||
### 8.3. USB-ключ на сервере (VM-101)
|
||
|
||
```bash
|
||
qm set 101 --usb1 host=0529:0001,usb3=1
|
||
```
|
||
|
||
MOXA подключается по сети — настроить виртуальный COM в Windows VM-101 (IP MOXA: `192.168.10.20`).
|
||
|
||
### 8.4. Настройка клиентского ПК
|
||
|
||
На ПК в комнате диспетчеров создать три `.rdp`-файла:
|
||
|
||
**scada.rdp:**
|
||
|
||
```
|
||
full address:s:192.168.10.11
|
||
username:s:operator_scada
|
||
screen mode id:i:2
|
||
use multimon:i:1
|
||
desktopwidth:i:1920
|
||
desktopheight:i:1080
|
||
session bpp:i:32
|
||
compression:i:1
|
||
networkautodetect:i:1
|
||
```
|
||
|
||
**lers.rdp** — `192.168.10.12`, **lifts.rdp** — `192.168.10.13`.
|
||
|
||
Запуск:
|
||
|
||
```powershell
|
||
# Монитор 1
|
||
mstsc.exe "C:\RDP\scada.rdp" /f
|
||
|
||
# Монитор 2 и 3 — запустить аналогично, перетащить окна на нужные мониторы
|
||
```
|
||
|
||
### 8.5. Автозапуск RDP-сессий (опционально)
|
||
|
||
```powershell
|
||
# Поместить ярлыки в shell:startup
|
||
Copy-Item "C:\RDP\*.rdp" "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\"
|
||
```
|
||
|
||
### 8.6. Проверка сети
|
||
|
||
```powershell
|
||
# С клиентского ПК
|
||
Test-NetConnection 192.168.10.11 -Port 3389
|
||
Test-NetConnection 192.168.10.12 -Port 3389
|
||
Test-NetConnection 192.168.10.13 -Port 3389
|
||
|
||
# Задержка
|
||
ping 192.168.10.11
|
||
# Должно быть < 5 ms
|
||
```
|
||
|
||
---
|
||
|
||
## 9. Фаза 7 — Миграция программ
|
||
|
||
### 9.1. Метод P2V (перенос образа)
|
||
|
||
```bash
|
||
# На исходном ПК — Clonezilla → файл образа → скопировать на Proxmox
|
||
|
||
# Конвертация и импорт (пример)
|
||
qm importdisk 101 /path/to/scada-disk.img local-zfs --format qcow2
|
||
qm set 101 --scsi0 local-zfs:vm-101-disk-0
|
||
```
|
||
|
||
### 9.2. Восстановление из Veeam Agent
|
||
|
||
> **Veeam Agent** создаёт бэкап **физической** Windows. Готового диска для импорта в Proxmox нет — восстановление выполняется через **Veeam Recovery Media** в новую ВМ.
|
||
|
||
#### Когда использовать
|
||
|
||
| Подход | Когда |
|
||
|--------|-------|
|
||
| **Veeam Agent → bare metal restore в ВМ** | Нужно быстро поднять «как было», есть рабочие `.vbk` |
|
||
| **Чистая установка + restore БД** (§9.3) | **Предпочтительно** для стабильной работы на VirtIO |
|
||
|
||
Перед миграцией всех систем — **обязательно** протестировать restore **одной** ВМ (например, ЛЭРС).
|
||
|
||
#### Что понадобится
|
||
|
||
- Рабочие цепочки бэкапов Veeam Agent (`.vbk` / `.vib`) на NAS или внешнем носителе.
|
||
- ISO **Veeam Recovery Media** (создаётся в консоли Veeam Agent на исходном ПК или отдельной машине).
|
||
- Доступ Proxmox к репозиторию бэкапов по **сети** (SMB/NFS) или копия на `local` ISO/storage.
|
||
- Лицензия с **Recovery to dissimilar hardware** / **Universal Restore** (если есть) — упрощает первую загрузку.
|
||
|
||
#### Подготовка ВМ в Proxmox
|
||
|
||
Создать пустую ВМ под восстанавливаемую систему (пример — VM-102, ЛЭРС):
|
||
|
||
| Параметр | Значение | Зачем |
|
||
|----------|----------|-------|
|
||
| Machine | q35 | Совместимость с Win10 |
|
||
| BIOS | **OVMF (UEFI)** | Если исходный Win10 установлен в UEFI (обычно) |
|
||
| Disk | SATA или SCSI, **≥ размера исходного диска** | Место под restore |
|
||
| Disk bus (первая попытка) | **SATA** | Меньше проблем с драйверами при restore |
|
||
| Network | VirtIO или E1000 | E1000 — если сеть нужна уже в Recovery Media |
|
||
| CD-ROM | Veeam Recovery Media ISO | Загрузка для restore |
|
||
|
||
```bash
|
||
# Пример: подготовка VM-102 под restore (диск 120 ГБ, SATA)
|
||
qm set 102 --scsi0 local-lvm:120,cache=writeback,discard=on,ssd=1
|
||
qm set 102 --scsihw virtio-scsi-single
|
||
# При BSOD после restore — временно переключить на SATA:
|
||
# qm set 102 --scsi0 none
|
||
# qm set 102 --sata0 local-lvm:120,ssd=1
|
||
```
|
||
|
||
#### Пошаговое восстановление
|
||
|
||
1. Загрузить ISO **Veeam Recovery Media** в CD-ROM ВМ, boot order: CD → disk.
|
||
2. Запустить ВМ, войти в мастер восстановления Veeam.
|
||
3. Указать расположение бэкапа (путь к `.vbk` на NAS/SMB).
|
||
4. Выбрать **Entire computer restore** / восстановление всего компьютера.
|
||
5. Целевой диск — виртуальный диск ВМ (единственный).
|
||
6. Включить **Recovery to dissimilar hardware** / **Universal Restore** (если доступно).
|
||
7. Дождаться завершения restore, отключить ISO Recovery Media.
|
||
8. Boot order: disk first → перезагрузить ВМ.
|
||
|
||
#### После первой загрузки Windows
|
||
|
||
1. Если загрузка успешна — установить **QEMU Guest Agent** и **VirtIO drivers** с `virtio-win.iso`:
|
||
- NetKVM (сеть)
|
||
- vioscsi (если переключите диск на VirtIO SCSI)
|
||
2. При необходимости сменить контроллер диска на **VirtIO SCSI** (после установки `vioscsi`).
|
||
3. Задать статический IP (если сбился после restore).
|
||
4. **Windows Update** — отложить автоперезагрузку (см. §6.3).
|
||
5. Проверить службы СКАДА / ЛЭРС / лифтов / «Меркурия».
|
||
|
||
#### Специфика для VM-101 (СКАДА + «Меркурий»)
|
||
|
||
После restore дополнительно:
|
||
|
||
```bash
|
||
# USB-ключ «Меркурия» — passthrough в Proxmox
|
||
lsusb | grep -i "0529\|guardant\|hasp\|rutoken"
|
||
qm set 101 --usb1 host=XXXX:YYYY,usb3=1
|
||
```
|
||
|
||
- Проверить, что «Меркурий» видит ключ и COM/MOXA.
|
||
- **Вариант А:** настроить GPU/USB passthrough (§7).
|
||
- **Вариант Б:** включить RDP (§8).
|
||
|
||
#### Типичные проблемы и решения
|
||
|
||
| Симптом | Причина | Решение |
|
||
|---------|---------|---------|
|
||
| **No bootable device** | Legacy vs UEFI | ВМ → **OVMF**; или SeaBIOS, если исходник был MBR/Legacy |
|
||
| **INACCESSIBLE_BOOT_DEVICE** (BSOD) | Нет драйвера VirtIO/SATA | Restore на **SATA**; Universal Restore; или загрузка с Recovery Media → repair |
|
||
| Сеть не работает | Другой NIC | E1000 в ВМ для restore; после загрузки — VirtIO NetKVM |
|
||
| Windows просит активацию | Смена «железа» | Повторная активация (Retail/Volume) |
|
||
| «Меркурий» не видит ключ | USB не проброшен | `qm set` USB passthrough; не использовать hub |
|
||
| MOXA не отвечает | IP/COM сбились | Проверить IP ВМ и настройки NPort (§9.5) |
|
||
| Очень долгий restore | Бэkaп по сети | Restore с локальной копии `.vbk` на Proxmox/NAS рядом |
|
||
|
||
#### Чек-лист после restore
|
||
|
||
- [ ] Windows загружается без BSOD
|
||
- [ ] Сеть, IP, доступ к контроллерам
|
||
- [ ] Приложение (СКАДА/ЛЭРС/лифты) запускается
|
||
- [ ] База данных на месте, отчёты/архивы работают
|
||
- [ ] USB-ключ «Меркурия» (VM-101) — если применимо
|
||
- [ ] Guest Agent установлен, `qm agent NNN ping` — OK
|
||
- [ ] Старый физический ПК **не отключать** до окончания параллельных тестов (§11)
|
||
|
||
#### Сравнение с другими методами
|
||
|
||
| Метод | Скорость | Стабильность на Proxmox |
|
||
|-------|----------|-------------------------|
|
||
| Veeam Agent restore | Быстро | Средняя (зависит от драйверов) |
|
||
| Clonezilla P2V (§9.1) | Средне | Средняя |
|
||
| Чистая установка + БД (§9.3) | Дольше | **Высокая** |
|
||
|
||
---
|
||
|
||
### 9.3. Метод чистой установки + restore (рекомендуется)
|
||
|
||
1. Установить Windows 10 на ВМ.
|
||
2. Установить СКАДА / ЛЭРС / лифты / «Меркурий» с дистрибутивов.
|
||
3. Восстановить базы данных из бэкапов.
|
||
4. Перенести конфигурационные файлы проектов.
|
||
|
||
### 9.4. Порядок миграции
|
||
|
||
| Шаг | Система | VM | Проверка |
|
||
|-----|---------|-----|----------|
|
||
| 1 | «Меркурий» + USB-ключ | 101 | Ключ определяется, опрос через MOXA |
|
||
| 2 | СКАДА | 101 | Архив, тренды, алармы |
|
||
| 3 | ЛЭРС | 102 | Отчёты, база данных |
|
||
| 4 | Лифты | 103 | Связь с контроллерами, команды |
|
||
|
||
### 9.5. Настройка MOXA (до замены)
|
||
|
||
На VM-101:
|
||
|
||
1. Установить драйвер виртуального COM MOXA NPort.
|
||
2. Настроить подключение к IP `192.168.10.20`, порт по документации MOXA.
|
||
3. В «Меркурии» указать виртуальный COM-порт.
|
||
4. Проверить опрос счётчиков.
|
||
|
||
---
|
||
|
||
## 10. Фаза 8 — Reservное копирование
|
||
|
||
### 10.1. vzdump через веб-интерфейс
|
||
|
||
**Datacenter → Backup → Add:**
|
||
|
||
| Параметр | Значение |
|
||
|----------|----------|
|
||
| Node | pve-scada |
|
||
| Storage | NAS / local (с достаточным объёмом) |
|
||
| Schedule | Daily 02:00 |
|
||
| Selection mode | Include selected VMs |
|
||
| VMs | 101, 102, 103 |
|
||
| Mode | Snapshot |
|
||
| Compression | zstd |
|
||
| Retention | Keep last 7 |
|
||
|
||
### 10.2. vzdump через CLI
|
||
|
||
```bash
|
||
# Ручной бэкап
|
||
vzdump 101 102 103 --mode snapshot --compress zstd --storage nas-backup
|
||
|
||
# Проверка
|
||
ls -lh /mnt/pve/nas-backup/dump/
|
||
```
|
||
|
||
### 10.3. Restore из бэкапа
|
||
|
||
```bash
|
||
# Список бэкапов
|
||
pvesm list nas-backup
|
||
|
||
# Восстановление (пример)
|
||
qmrestore /mnt/pve/nas-backup/dump/vzdump-qemu-101-*.zst 101 --force
|
||
```
|
||
|
||
### 10.4. Бэкапы баз данных
|
||
|
||
Дополнительно к vzdump — штатные средства резервного копирования СКАДА и ЛЭРС по расписанию на NAS.
|
||
|
||
---
|
||
|
||
## 11. Фаза 9 — Тестирование и ввод в эксплуатацию
|
||
|
||
### 11.1. Тестовый чек-лист
|
||
|
||
| № | Тест | Ожидаемый результат | ✓ |
|
||
|---|------|----------------------|---|
|
||
| 1 | СКАДА: сбор архива 24 ч | Данные поступают | |
|
||
| 2 | СКАДА: открытие трендов | Без ошибок | |
|
||
| 3 | «Меркурий»: опрос счётчиков | Все точки отвечают | |
|
||
| 4 | ЛЭРС: формирование отчёта | Корректные данные | |
|
||
| 5 | Лифты: команда / статус | Контроллер отвечает | |
|
||
| 6 | Reboot VM-102 | VM-101 и VM-103 работают | |
|
||
| 7 | Reboot хоста Proxmox | Все 3 VM autostart ≤10 мин | |
|
||
| 8 | Restore VM-101 из vzdump | Система работоспособна | |
|
||
| 9 | Отключение UPS (тест) | Корректное shutdown | |
|
||
|
||
### 11.2. Параллельная эксплуатация
|
||
|
||
- Срок: **7–14 дней**.
|
||
- Старые ПК остаются включёнными, но не используются оператором.
|
||
- При проблемах — откат на старые машины.
|
||
|
||
### 11.3. Ввод в эксплуатацию
|
||
|
||
1. Отключить старые ПК (хранить 2 недели).
|
||
2. Передать документацию оператору и администратору.
|
||
3. Зафиксировать дату ввода в журнале.
|
||
|
||
---
|
||
|
||
## 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
|
||
# Проверить лог
|
||
qm start 101 2>&1 | tee /tmp/vm101-start.log
|
||
journalctl -u pve-guest@101 --no-pager -n 50
|
||
```
|
||
|
||
Возможные причины:
|
||
|
||
- GPU занята хостом → проверить `lspci -k`, должен быть `vfio-pci`.
|
||
- IOMMU group содержит лишние устройства → ACS override (крайний случай).
|
||
- Нет UEFI ROM → использовать SeaBIOS или пропатченный ROM.
|
||
|
||
### 12.2. NVIDIA Code 43
|
||
|
||
- `cpu: host,hidden=1`
|
||
- `ostype: win10`
|
||
- Пропатченный VBIOS ROM
|
||
- `x-vga=1`, Display = none
|
||
|
||
### 12.3. USB-ключ не определяется
|
||
|
||
```bash
|
||
# На хосте — виден ли ключ
|
||
lsusb | grep -i "0529\|guardant\|hasp\|rutoken"
|
||
|
||
# Проверить конфиг VM
|
||
qm config 101 | grep usb
|
||
|
||
# Попробовать passthrough USB-контроллера вместо устройства
|
||
```
|
||
|
||
### 12.4. HASP — высокая нагрузка CPU
|
||
|
||
При USB 2.0 passthrough с HASP dongle:
|
||
|
||
- Обновить VirtIO net driver до последней версии.
|
||
- Passthrough USB-контроллера целиком.
|
||
- Альтернатива: VirtualHere (USB over IP).
|
||
|
||
### 12.5. RDP — чёрный экран / обрыв
|
||
|
||
- Проверить firewall на VM и между VLAN.
|
||
- Отключить Bitmap Cache в RDP-клиенте.
|
||
- Проверить `qm agent NNN ping`.
|
||
|
||
### 12.6. AMD GPU reset-bug
|
||
|
||
После shutdown VM GPU не отдаётся:
|
||
|
||
```bash
|
||
modprobe vendor-reset
|
||
# или reboot хоста
|
||
```
|
||
|
||
---
|
||
|
||
## 13. Справочник конфигураций ВМ
|
||
|
||
### 13.1. Пример `/etc/pve/qemu-server/101.conf` (Вариант А)
|
||
|
||
```
|
||
agent: 1
|
||
bios: ovmf
|
||
boot: order=scsi0
|
||
cores: 6
|
||
cpu: host
|
||
efidisk0: local-zfs:vm-101-disk-0,efitype=4m,pre-enrolled-keys=0,size=1M
|
||
hostpci0: 01:00,pcie=1,x-vga=1,rombar=1
|
||
machine: q35
|
||
memory: 20480
|
||
name: vm-scada
|
||
net0: virtio=XX:XX:XX:XX:XX:XX,bridge=vmbr0,firewall=1
|
||
onboot: 1
|
||
ostype: win10
|
||
scsi0: local-zfs:vm-101-disk-1,iothread=1,size=200G,ssd=1
|
||
scsihw: virtio-scsi-single
|
||
smbios1: uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
||
usb0: xhci=1
|
||
usb1: host=0529:0001,usb3=1
|
||
vga: none
|
||
```
|
||
|
||
### 13.2. Таблица passthrough (заполнить при внедрении)
|
||
|
||
| Ресурс | PCI / USB ID | VM | Монитор / назначение |
|
||
|--------|-------------|-----|---------------------|
|
||
| GPU-1 | 01:00.0 | 101 | Монитор 1 |
|
||
| GPU-2 | 03:00.0 | 102 | Монитор 2 |
|
||
| GPU-3 | 04:00.0 | 103 | Монитор 3 |
|
||
| USB-ключ «Меркурия» | 0529:0001 | 101 | Лицензия |
|
||
| USB-контроллер КМ-1 | 0b:00.0 | 101 | Клавиатура/мышь 1 |
|
||
| USB-контроллер КМ-2 | 0c:00.0 | 102 | Клавиатура/мышь 2 |
|
||
| USB-контроллер КМ-3 | 0d:00.0 | 103 | Клавиатура/мышь 3 |
|
||
|
||
### 13.3. Полезные команды
|
||
|
||
```bash
|
||
# Статус всех VM
|
||
qm list
|
||
|
||
# Конфиг VM
|
||
qm config 101
|
||
|
||
# Консоль VM (VNC, если нет GPU passthrough)
|
||
qm terminal 101
|
||
|
||
# Перезапуск VM
|
||
qm reboot 101
|
||
|
||
# Shutdown VM
|
||
qm shutdown 101 --timeout 120
|
||
|
||
# Guest agent: IP адрес VM
|
||
qm guest cmd 101 network-get-interfaces
|
||
|
||
# Snapshot перед изменениями
|
||
qm snapshot 101 before-passthrough
|
||
|
||
# Откат snapshot
|
||
qm rollback 101 before-passthrough
|
||
```
|
||
|
||
---
|
||
|
||
## Связанные документы
|
||
|
||
- [Техническое задание](TZ-proxmox-konsolidaciya.md)
|
||
- [Proxmox PCI Passthrough Wiki](https://pve.proxmox.com/wiki/PCI_Passthrough)
|
||
- [Proxmox USB Passthrough](https://pve.proxmox.com/wiki/USB_Physical_Port_Mapping)
|
||
- [IOMMU Groups Database](https://iommu.info/)
|