vault backup: 2026-10-09 21:27:26

This commit is contained in:
2026-10-09 21:27:26 +03:00
parent f09b1ef1c6
commit ea9b7bacd0
12 changed files with 820 additions and 29 deletions
+325
View File
@@ -0,0 +1,325 @@
# Гайд: Разшаривание NFS на OMV и подключение к PVE + PBS
> Инфраструктура: OMV 8 (192.168.1.73), Proxmox VE, Proxmox Backup Server (отдельная VM/CT)
---
## 1. Настройка NFS-шары на OMV
### 1.1. Через веб-интерфейс
**Services → NFS → Settings**
- [x] Enable NFS v4
- [x] Enable async (повышает производительность)
- Порт: 2049 (по умолчанию)
- Apply
**Services → NFS → Shares → Add**
| Поле | Значение |
|------|---------|
| Shared folder | `/путь/к/шаре` (создать заранее через Storage → Shared Folders) |
| Client | `192.168.1.0/24` — вся локальная сеть |
| Options | `rw,subtree_check,no_root_squash` |
> **`no_root_squash` критически важен для LXC**: без него клиентский root внутри контейнера будет преобразован в nobody и не сможет писать в шару.
**Применить**: кнопка `Apply` (галочка) вверху.
### 1.2. Через CLI — проверка
```bash
# Убедиться, что NFS запущен
systemctl status nfs-server
# Просмотреть экспорты
showmount -e localhost
# Или файл конфигурации
cat /etc/exports
# Пример содержимого:
# /srv/mergerfs/pool/backup 192.168.1.0/24(rw,subtree_check,no_root_squash,sync)
```
> **Важно**: после каждого Apply в веб-UI OMV переписывает `/etc/exports`. Ручные правки там не переживают следующего Apply.
---
## 2. Подключение NFS к PVE и проброс в LXC
### 2.1. Создание PVE Storage для NFS
**Datacenter → Storage → Add → NFS**
| Поле | Значение |
|------|---------|
| ID | `nfs-omv` (произвольное имя) |
| Server | `192.168.1.73` |
| Export | Путь из `/etc/exports` на OMV (например `/export/backup`) |
| Content | Выбрать, для чего это хранилище: `Container template`, `ISO image`, `VZDump backup file`, `Container`, `Snippets` |
**Через CLI** (альтернатива):
```bash
pvesm add nfs nfs-omv --server 192.168.1.73 --path /mnt/pve/nfs-omv --export /export/backup
```
**Проверка**:
```bash
pvesm status | grep nfs-omv
# Должно показать storage nfs-omv online
```
> **Ограничение**: PVE NFS storage не позволяет пробросить NFS-шару напрямую в LXC как bind mount. Для LXC нужен ручной mount на **хосте** PVE, потом `mp0` проброс.
---
### 2.2. Монтирование NFS на хосте PVE (для LXC)
Создаём точку монтирования на **хосте Proxmox**:
```bash
# Создать директорию
mkdir -p /mnt/nfs-omv-backup
# Монтировать (проверка)
mount -t nfs 192.168.1.73:/export/backup /mnt/nfs-omv-backup -o rw,vers=4,hard,timeo=600,rsize=1048576,wsize=1048576,no_root_squash
# Проверить
ls -la /mnt/nfs-omv-backup
df -h /mnt/nfs-omv-backup
```
> **Варианты опций**:
> - `vers=4` — NFSv4 (безопаснее, быстрее)
> - `vers=3` — NFSv3 (если v4 не работает)
> - `hard` — процессы ждут восстановления соединения (vs `soft` — таймаут с ошибкой)
> - `no_root_squash` — root на LXC может писать как root
> - `rsize,wsize=1048576` — максимальный размер блока (1 МБ) для производительности
Если шару надо использовать как хранилище **CT templates** или **VZDump backup**, лучше сначала смонтировать, потом добавить через `pvesm add dir`:
```bash
pvesm add dir nfs-omv-lxc --path /mnt/nfs-omv-backup --content vztmpl,backup,snippets
```
#### 2.2.1. Автомонтирование (fstab)
Добавить в `/etc/fstab` на **хосте PVE**:
```bash
# OMV NFS share — для проброса в LXC
192.168.1.73:/export/backup /mnt/nfs-omv-backup nfs4 rw,hard,timeo=600,rsize=1048576,wsize=1048576,_netdev 0 0
```
Проверка автомонтирования:
```bash
umount /mnt/nfs-omv-backup
mount -a
df -h | grep nfs
```
> **`_netdev`** — система не пытается монтировать NFS до поднятия сети.
---
### 2.3. Проброс NFS-шары в LXC контейнер
Редактировать конфиг контейнера `/etc/pve/lxc/<CT_ID>.conf`:
```bash
# Синтаксис: mp0: /путь/на/хосте,mp=/путь/в/LXC
mp0: /mnt/nfs-omv-backup,mp=/mnt/backup
```
**Через CLI**:
```bash
pct set <CT_ID> -mp0 /mnt/nfs-omv-backup,mp=/mnt/backup
```
**В веб-интерфейсе PVE**: выбрать контейнер → Resources → Add → Mount Point.
**Проверка внутри LXC**:
```bash
pct enter <CT_ID>
ls -la /mnt/backup
touch /mnt/backup/test-root && rm /mnt/backup/test-root
```
> Если `touch` выдаёт `Permission denied` — на OMV включено `root_squash` (сменить на `no_root_squash`).
---
### 2.4. Полный пример: LXC с backup-шара
```bash
# Хост PVE: монтируем NFS
mkdir -p /mnt/nfs-omv-backup
echo '192.168.1.73:/export/backup /mnt/nfs-omv-backup nfs4 rw,hard,timeo=600,_netdev 0 0' >> /etc/fstab
mount -a
# Пробрасываем в LXC (ID = 200)
pct set 200 -mp0 /mnt/nfs-omv-backup,mp=/mnt/backup
# Внутри LXC: проверяем
pct enter 200
df -h | grep /mnt/backup
```
---
## 3. Подключение NFS к PBS (Proxmox Backup Server)
### 3.1. Вариант A: Через веб-интерфейс PBS
**Server → Storage → Add → NFS**
| Поле | Значение |
|------|---------|
| Server | `192.168.1.73` (OMV) |
| Export | `/export/backup` или путь из OMV |
| Content | `backup` (основное) |
| Node | выбрать текущую ноду PBS |
| Enable | [x] |
**Важно для NFS на PBS:**
- PBS хранит данные в собственной структуре (`.chunk` +datastore). **Не надо** указывать уже существующую директорию с файлами — PBS создаст свою иерархию.
- NFS-шара НЕ может одновременно быть datastore PBS **и** использоваться для чего-то другого (в PBS своя структура хранения).
### 3.2. Вариант B: Через CLI на PBS
```bash
pvesm add nfs pbs-nfs-omv \
--server 192.168.1.73 \
--export /export/pbs-datastore \
--content backup
```
**Проверка:**
```bash
pvesm status | grep pbs-nfs-omv
# Должно показать status: available
```
### 3.3. Настройка бэкапа на NFS datastore
После добавления storage в PBS:
1. **В PVE**: Datacenter → Backup → Add
- Storage: выбрать `pbs-nfs-omv` (имя storage в PBS)
- Schedule: по необходимости
- Selection Mode: Include/Exclude
- Compression: ZSTD (рекомендуется)
- Encryption: по желанию
- Enable: [x]
2. **Или ручной бэкап через CLI на PVE**:
```bash
# Полный бэкап VM 100 в PBS-storage
vzdump 100 --mode snapshot --compress zstd --storage pbs-nfs-omv
# Или с указанием PBS напрямую
proxmox-backup-client backup \
--backup-id "vm-100" \
--backup-type "qemu" \
--repository 192.168.1.73:datastore:pbs-nfs-omv
```
### 3.4. Особенности NFS c PBS
| Аспект | Комментарий |
|--------|------------|
| **Производительность** | NFS добавляет latency — для PBS лучше локальный диск (ZFS/SATA SSD) |
| **Надёжность** | `soft,timeo=600` на PBS клиенте — при временной потере NFS бэкап упадёт с ошибкой, а не зависнет (`hard`) |
| **GC (Garbage Collection)** | PBS периодически чистит expired backup snapshots. Убедиться, что NFS шара смонтирована **с опцией `rw`** |
| **Verification** | PBS verifying jobs будут читать данные бэкапов — NFS latency замедлит. Нормально для периодических verify |
| **Multi-node access** | PBS поддерживает кластер — NFS datastore доступен всем нодам |
**Рекомендуемый fstab на PBS** (с `soft` для бэкапов):
```bash
192.168.1.73:/export/pbs-datastore /mnt/datastore nfs4 soft,timeo=600,retrans=2,rsize=1048576,wsize=1048576,_netdev 0 0
```
---
## 4. Проверка работоспособности
### 4.1. Доступность NFS
```bash
# С любого узла (PVE, PBS, LXC)
showmount -e 192.168.1.73
# Должен показать:
# Export list for 192.168.1.73:
# /export/backup 192.168.1.0/24
```
### 4.2. Монтирование
```bash
# На PVE хосте
mount | grep nfs
df -h | grep nfs
```
### 4.3. Проброс в LXC
```bash
pct enter <CT_ID>
df -h | grep /mnt/backup # Должна быть видна шара
touch /mnt/backup/test && rm /mnt/backup/test # root должен писать
```
### 4.4. Бэкап через PBS
```bash
# В PVE сделать пробный бэкап на PBS storage
vzdump <VM_ID> --mode snapshot --compress zstd --storage pbs-nfs-omv
# Убедиться, что exit code = 0
```
---
## 5. Типовые ошибки и решения
| Проблема | Причина | Решение |
|----------|---------|---------|
| `mount.nfs: access denied by server` | IP клиента не в списке Client NFS шары | Проверить OMV NFS Share → Client |
| `Permission denied` при записи из LXC | `root_squash` на OMV | Включить `no_root_squash` в Options NFS шары |
| LXC не стартует с mp0 | Путь на хосте не смонтирован | `mount -a`, проверить `fstab` |
| PBS: datastore недоступен | NFS шара упала | `systemctl restart proxmox-backup` |
| NFS mount зависает (`hung` | Потеря сети, опция `hard` | `umount -f /mnt/nfs-...` или `soft` опция |
| LXC: mount inside container readonly | LXC не имеет `privileged: 1` | Использовать привилегированный контейнер или настроить device cgroup |
---
## 6. Сводная схема
```
OMV (192.168.1.73)
├── NFS export: /export/backup (no_root_squash, rw)
│
├── PVE host
│ ├── mount /mnt/nfs-omv-backup
│ ├── pvesm dir → templates/snippets
│ └── mp0 проброс → LXC контейнер /mnt/backup
│
├── PBS node
│ ├── mount /mnt/datastore (export: /export/pbs-datastore)
│ ├── pvesm add nfs pbs-nfs-omv
│ └── datastore для backup/verify/GC
│
└── Другие клиенты (RPi5, VM)
└── mount -t nfs 192.168.1.73:/export/backup /mnt/shared
```
## 7. Ограничения и рекомендации
- **NFS → PBS**: для продакшена используйте локальные SSD/NVMe, NFS добавляет latency и риск потери связи во время бэкапа
- **no_root_squash**: безопасно только в доверенной подсети (192.168.1.0/24)
- **Автомонтирование**: `_netdev` обязателен, иначе система может зависнуть при загрузке до поднятия сети
- **PBS datastore**: выделите отдельную NFS-шару для PBS — не смешивайте с общими файлами
- **Бэкап конфига OMV**: `omv-confbackup` сохраняет настройки NFS-шар