From 50616e6aa854a722e4ab75ea9d080c9bf585e1cd Mon Sep 17 00:00:00 2001 From: PTah Date: Thu, 9 Jul 2026 11:02:06 +1000 Subject: [PATCH] =?UTF-8?q?docs:=20=D1=81=D1=80=D0=B0=D0=B2=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=81=D1=85=D0=B5=D0=BC=20RAID1+RAID10=20?= =?UTF-8?q?vs=20=D0=B5=D0=B4=D0=B8=D0=BD=D1=8B=D0=B9=20RAID10?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Схема B (4 диска RAID10 + Hot Spare) рекомендована по умолчанию. Схема A — раздельно для тяжёлых БД. Co-authored-by: Cursor --- README.md | 7 +- docs/TZ-proxmox-konsolidaciya.md | 36 ++-- docs/razvertyvanie-proxmox.md | 297 +++++++++++++++++++------------ 3 files changed, 218 insertions(+), 122 deletions(-) diff --git a/README.md b/README.md index 3c75211..cf5efaa 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,12 @@ ## Хранилище -Рекомендуется **Broadcom/LSI MegaRAID** с BBU/CacheVault, **RAID10** (или RAID1), поверх — **LVM-thin / ext4**. Подробности — раздел 3.1 в ТЗ. +Рекомендуется **Broadcom/LSI MegaRAID** с BBU/CacheVault, **ext4 + LVM-thin**. + +**По умолчанию:** 4 диска **RAID10** (Proxmox + ВМ + БД) + **Hot Spare** на остальных дисках. +**Альтернатива:** RAID1 (система) + RAID10 (только БД) — при тяжёлой нагрузке на базы. + +Подробности — [ТЗ §3.1](docs/TZ-proxmox-konsolidaciya.md), [инструкция §3.2](docs/razvertyvanie-proxmox.md#32-выбор-схемы-разбивки-дисков). ## Состав виртуальных машин diff --git a/docs/TZ-proxmox-konsolidaciya.md b/docs/TZ-proxmox-konsolidaciya.md index 9325322..56d01f7 100644 --- a/docs/TZ-proxmox-konsolidaciya.md +++ b/docs/TZ-proxmox-konsolidaciya.md @@ -4,7 +4,7 @@ | Параметр | Значение | |----------|----------| -| Версия | 1.1 | +| Версия | 1.2 | | Дата | 09.07.2026 | | Статус | Проектная документация | | Связанный документ | [Развёртывание и настройка](razvertyvanie-proxmox.md) | @@ -143,19 +143,35 @@ Proxmox VE: ext4 + LVM-thin (local-lvm) — диски ВМ | HBA 9400-8i (IT mode) | Нет аппаратного RAID — только для ZFS | | MegaRAID без BBU/CacheVault | Риск потери данных в кэше при сбое питания | -### Рекомендуемые конфигурации массивов +### Схемы разбивки дисков -#### Конфигурация «оптимум» (рекомендуется) +Подробная инструкция — в [Развёртывание, раздел 3.2](razvertyvanie-proxmox.md#32-выбор-схемы-разбивки-дисков). + +| Схема | Разбивка | Когда | +|-------|----------|-------| +| **B (рекомендуется)** | 4 диска RAID10 (всё) + 2–4 Hot Spare | По умолчанию; проще; достаточно для текущей нагрузки | +| **A (раздельно)** | 2 RAID1 (Proxmox/ВМ) + 4 RAID10 (БД) + Hot Spare | Тяжёлые БД, нужна изоляция I/O | + +#### Конфигурация «оптимум» — схема B (рекомендуется) + +| Параметр | 6 дисков | 8 дисков | +|----------|----------|----------| +| Контроллер | MegaRAID 9460-8i + CVPM05 | то же | +| RAID10 | 4× SSD | 4× SSD | +| Hot Spare | 2 | 4 | +| Полезный объём | ~1,9 – 3,8 ТБ* | ~1,9 – 3,8 ТБ* | +| Proxmox + ВМ + БД | Один VD → `local-lvm` | то же | + +\*Зависит от ёмкости одного SSD (960 ГБ → ~1,9 ТБ; 1,92 ТБ → ~3,8 ТБ). + +#### Конфигурация «раздельно» — схема A | Параметр | Значение | |----------|----------| -| Контроллер | MegaRAID 9560-8i или 9460-8i + CVPM05 | -| Диски | 4× SAS/SATA SSD 960 ГБ – 1,92 ТБ | -| RAID | **RAID10** | -| Полезный объём | ~1,9 – 3,8 ТБ | -| VD | 1 виртуальный диск → весь объём в LVM-thin | -| Политика кэша | Write-Back (Enabled with BBU/CacheVault) | -| Инициализация | Fast Init + фоновый Patrol Read | +| VD0 RAID1 (2 диска) | Proxmox, системные диски Windows (`local-lvm`) | +| VD1 RAID10 (4 диска) | Базы СКАДА, ЛЭРС, «Меркурий» (`data-db`) | +| Hot Spare (2 диска) | Global Hot Spare (при 8 дисках) | +| Полезный объём | ~0,9 + ~1,9 ТБ (при 960 ГБ SSD) | #### Конфигурация «минимум» (бюджет) diff --git a/docs/razvertyvanie-proxmox.md b/docs/razvertyvanie-proxmox.md index ec31d42..d85dd52 100644 --- a/docs/razvertyvanie-proxmox.md +++ b/docs/razvertyvanie-proxmox.md @@ -4,7 +4,7 @@ | Параметр | Значение | |----------|----------| -| Версия | 1.1 | +| Версия | 1.2 | | Дата | 09.07.2026 | | Связанный документ | [Техническое задание](TZ-proxmox-konsolidaciya.md) | @@ -16,9 +16,10 @@ 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-под-базы-данных) + - [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) 4. [Фаза 2 — Настройка IOMMU и VFIO (Вариант А)](#4-фаза-2--настройка-iommu-и-vfio-вариант-а) 5. [Фаза 3 — Создание виртуальных машин](#5-фаза-3--создание-виртуальных-машин) 6. [Фаза 4 — Установка Windows 10](#6-фаза-4--установка-windows-10) @@ -159,72 +160,205 @@ storcli64 /c0/cv show --- -### 3.2. Разбивка дисков (8 дисков) +### 3.2. Выбор схемы разбивки дисков -Рекомендуемая схема для серверной конфигурации с 8 физическими SSD/SAS-дисками: +Перед созданием массивов в 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 VE (ext4) + системные диски ВМ (Windows 10) -Диски 3–6 → RAID 10 → VD1 → Только базы данных (СКАДА, ЛЭРС, «Меркурий») -Диски 7, 8 → Global Hot Spare → Автозамена при отказе любого из дисков 1–6 +Диски 1, 2 → RAID 1 → VD0 → Proxmox + диски Windows (система) +Диски 3–6 → RAID 10 → VD1 → Базы СКАДА, ЛЭРС, «Меркурий», рабочие файлы +Диски 7, 8 → Global Hot Spare ``` -| 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 | — | +| 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 | Автозамена | — | -\*При дисках 960 ГБ. Для 1,92 ТБ — пропорционально. +#### Создание в MegaRAID BIOS -#### Создание массивов в 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**. -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) +#### StorCLI ```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) +#### Установка Proxmox (схема A) -| Дисков | Схема | -|--------|-------| -| 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 — бюджетная альтернатива | +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.3. Установка Proxmox VE +### 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 + +#### Общие шаги (обе схемы) 1. Загрузиться с ISO Proxmox VE 8.x. -2. На экране выбора диска выбрать **VD0 (RAID1)** — первый виртуальный диск MegaRAID. -3. **Тип файловой системы:** **ext4** (или **xfs** — допустимая альтернатива). +2. На экране выбора диска выбрать **VD0** (единственный или первый виртуальный диск 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 — по сети заказчика +5. Proxmox автоматически создаст **LVM-thin** (`local-lvm`) для дисков виртуальных машин. +6. Задать hostname `pve-scada`, IP `192.168.10.10/24`, gateway, DNS. 7. Завершить установку, перезагрузить. -> **VD1 (RAID10)** на этом этапе **не трогаем** — он будет подключён после установки (п. 3.4). +#### Дополнительно для схемы 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 этот шаг **не выполняется**. #### Первичная настройка хоста @@ -256,78 +390,18 @@ storcli64 /c0/eall/sall show **Datacenter → Storage → Add → NFS/CIFS** — указать путь к NAS для vzdump. ---- - -### 3.4. Подключение RAID10 под базы данных - -VD1 (RAID10) предназначен **только для активно пишущихся баз данных** СКАДА, ЛЭРС и «Меркурия». Системные диски Windows остаются на VD0 (`local-lvm`). - -#### Шаг 1. Разметка VD1 на хосте +#### Проверка I/O (опционально) ```bash -# Убедиться, что VD1 виден (обычно /dev/sdb) -lsblk -storcli64 /c0/vall show +# Схема 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 -# Создать раздел и файловую систему -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 +# Схема 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 ``` -Ожидаемый результат: существенно выше random write IOPS на `/mnt/pve/data-db`, чем на `local-lvm` (RAID1). - --- ## 4. Фаза 2 — Настройка IOMMU и VFIO (Вариант А) @@ -447,7 +521,8 @@ modprobe vendor-reset ## 5. Фаза 3 — Создание виртуальных машин -> При схеме **8 дисков** (раздел 3.2): `scsi0` — системный диск на `local-lvm` (RAID1), `scsi1` — диск БД на `data-db` (RAID10). +> При схеме **A** (RAID1+RAID10): `scsi0` — система на `local-lvm`, `scsi1` — БД на `data-db`. +> При схеме **B** (один RAID10): только `scsi0` на `local-lvm` — один диск на всё. ### 5.1. Создание через CLI (пример VM-101)