#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** - [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 через 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** (альтернатива): ```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) При подключении NFS через UI - отдельно точку монтирования создавать не нужно Создаём точку монтирования на **хосте 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 контейнер #nfs-to-lxc Редактировать конфиг контейнера `/etc/pve/lxc/.conf`: ```bash # Синтаксис: mp0: /путь/на/хосте,mp=/путь/в/LXC mp0: /mnt/nfs-omv-backup,mp=/mnt/backup ``` **Через CLI**: ```bash pct set -mp0 /mnt/nfs-omv-backup,mp=/mnt/backup ``` **В веб-интерфейсе PVE**: выбрать контейнер → Resources → Add → Mount Point. **Проверка внутри LXC**: ```bash pct enter 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 df -h | grep /mnt/backup # Должна быть видна шара touch /mnt/backup/test && rm /mnt/backup/test # root должен писать ``` ### 4.4. Бэкап через PBS ```bash # В PVE сделать пробный бэкап на PBS storage vzdump --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-шар