Files
wikipedia/HomeLab/OMV - Guide-NFS-Share (PVE-PBS).md
T

12 KiB
Raw Blame History

#omv #settings #nfs-share #pve #pbs #nfs #mount #lxc

Гайд: Разшаривание 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

  • Enable NFS v4
  • 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 — проверка

# Убедиться, что 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 через UI

#nfs-to_pve 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 (альтернатива):

pvesm add nfs nfs-omv --server 192.168.1.73 --path /mnt/pve/nfs-omv --export /export/backup

Проверка:

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)

При подключении NFS через UI - отдельно точку монтирования создавать не нужно Создаём точку монтирования на хосте Proxmox:

# Создать директорию
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:

pvesm add dir nfs-omv-lxc --path /mnt/nfs-omv-backup --content vztmpl,backup,snippets

2.2.1. Автомонтирование (fstab)

Добавить в /etc/fstab на хосте PVE:

# 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

Проверка автомонтирования:

umount /mnt/nfs-omv-backup
mount -a
df -h | grep nfs

_netdev — система не пытается монтировать NFS до поднятия сети.


2.3. Проброс NFS-шары в LXC контейнер

#nfs-to-lxc Редактировать конфиг контейнера /etc/pve/lxc/<CT_ID>.conf:

# Синтаксис: mp0: /путь/на/хосте,mp=/путь/в/LXC
mp0: /mnt/nfs-omv-backup,mp=/mnt/backup

Через CLI:

pct set <CT_ID> -mp0 /mnt/nfs-omv-backup,mp=/mnt/backup

В веб-интерфейсе PVE: выбрать контейнер → Resources → Add → Mount Point.

Проверка внутри LXC:

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-шара

# Хост 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

pvesm add nfs pbs-nfs-omv \
  --server 192.168.1.73 \
  --export /export/pbs-datastore \
  --content backup

Проверка:

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:

# Полный бэкап 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 для бэкапов):

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

# С любого узла (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. Монтирование

# На PVE хосте
mount | grep nfs
df -h | grep nfs

4.3. Проброс в LXC

pct enter <CT_ID>
df -h | grep /mnt/backup  # Должна быть видна шара
touch /mnt/backup/test && rm /mnt/backup/test  # root должен писать

4.4. Бэкап через PBS

# В 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-шар