Идея возникла на основе обсуждения в Proxmox 9.1.5. Проблемы с bind сетевых nfs шар в LXC
Какие у нас есть варианты монтирования удаленных ФС (в PVE)
| Способ | Пюсы | Минусы |
|---|---|---|
| /etc/pve/storage.cfg | Автоматически синхронизируется в кластере Настройка через GUI |
Отображается в дереве ноды Только базовые опции |
| /etc/fstab | Коробочный функционал | Нет синхронизации, монтирование по-требованию спицифичное |
| /etc/autofs.conf | Крутая логика автомонтирование по требованию |
Нет синхронизации, требуется настройка |
У меня 17 точек монтирования и руками на 5 PVE нод это не вариант раскатывать, поэтому, предлагаю настроить autofs
- Для начала надо поставить пакет autofs
apt install autofs
- Далее создаем КОРНЕВУЮ точку монтирования, у меня это /mnt/truenas
mkdir /mnt/truenas
- Добавляем конфиг autofs
/etc/auto.master.d/truenas-nfs.autofs
/mnt/truenas /etc/auto.truenas.nfs --timeout=300
Вот тут мы указываем, что внутри /mnt/truenas/ должны создаваться точки монтирования, описанные в /etc/auto.truenas.nfs - в даном случае это NFS, но может быть и SMB
- Ну и создаем конфиг непосредственно точками монтирования
/etc/auto.truenas.nfs
Тут имя произвольное, я назвал его auto.truenas.nfs т.к. монтируется все c truenas по NFS протоколу
# Generated by Ansible. DO NOT EDIT.
audiobooks -fstype=nfs,vers=4.1,tcp,rw,bg,hard,noatime,nolock,rsize=1048576,wsize=1048576,async truenas.srv.lan:/mnt/media/audiobooks
books -fstype=nfs,vers=4.1,tcp,rw,bg,hard,noatime,nolock,rsize=1048576,wsize=1048576,async truenas.srv.lan:/mnt/data/docs/Library
cloudreve -fstype=nfs,vers=4.1,tcp,rw,bg,hard,noatime,nolock,rsize=1048576,wsize=1048576,async truenas.srv.lan:/mnt/data/cloudreve
Тут мы видим, что указываются
- точки монтирования относительно
/mnt/truenas - тип файловой системы и опции монтирования
- удаленный сервер
У меня настройка производится при помощи ansible, поэтому, в репозитории есть файл с таким содержимым
---
# Глобальные NFS настройки по умолчанию
default_nfs_opts: "vers=4.1,tcp,rw,bg,hard,noatime,nolock,rsize=1048576,wsize=1048576,async"
default_nfs_host: "truenas.srv.lan"
# Список NFS монтирований
nfs_mounts:
- src: "/mnt/media/video"
dest: "video"
- src: "/mnt/media/music"
dest: "music"
- src: "/mnt/backups/borg"
dest: "borg"
- src: "/mnt/backups/pbs"
dest: "pbs"
...
- Перезагружаем сервис
autofs
systemctl restart autofs
systemctl status autofs
Смотрим, чтобы сервис был активирован и запущен, а также не выдавал ошибок
● autofs.service - Automounts filesystems on demand
Loaded: loaded (/usr/lib/systemd/system/autofs.service; enabled; preset: enabled)
Active: active (running) since Mon 2026-02-09 20:57:52 MSK; 14ms ago
Invocation: d723fe9e4dc14af68bc06e1ae6f4c03c
Docs: man:autofs(8)
Process: 3461362 ExecStart=/usr/sbin/automount $OPTIONS --pid-file /var/run/autofs.pid (code=exited, status=0/SUCCESS)
Main PID: 3461363 (automount)
Tasks: 5 (limit: 38044)
Memory: 1.7M (peak: 2.8M)
CPU: 16ms
CGroup: /system.slice/autofs.service
└─3461363 /usr/sbin/automount --pid-file /var/run/autofs.pid
фев 09 20:57:52 pve-03 systemd[1]: Starting autofs.service - Automounts filesystems on demand...
фев 09 20:57:52 pve-03 (utomount)[3461362]: autofs.service: Referenced but unset environment variable evaluates to an empty string: OPTIONS
фев 09 20:57:52 pve-03 systemd[1]: Started autofs.service - Automounts filesystems on demand.
Предупреждение это не мое, но оно работает и так, надо будет поправить
- Приступаем к тестированию
root@pve-03:/mnt/truenas# cd /mnt/truenas/
root@pve-03:/mnt/truenas# ls
root@pve-03:/mnt/truenas# ls pbs
ns
root@pve-03:/mnt/truenas# ls audiobooks
Books FairyTales Podcasts
root@pve-03:/mnt/truenas# ls
audiobooks pbs video
Видим, что в отличие от /etc/fstab
- Нет необходимости добавлять
x-systemd.automount - Не надо создавать еще и каталоги для точек монтирования
После внесения изменений в конфиг можно применить изменения без перезагрузки
systemctl reload autofs.service
Но autofs может быть еще умнее
- Создаем файл
/etc/auto.master.d/net.autofs
/net /etc/auto.net
- Создаем корень для точек монтирования
mkdir /net
- Выполняем автомонтирование
ls /net/truenas/mnt/media/audiobooks
Books FairyTales Podcasts
Т.е. в этом случае нас не надо даже прописывать все точки монтирования autofs на основе пути файла понимает, что надо подмонтировать /mnt/media/audiobooks с сервера truenas
Аналогичным образом работает и монтирвание SMB ресурсов при помощи /etc/auto.smb
/etc/auto.net и /etc/auto.smb это Bash скрипты, которые запускаются autofs. принимают локальный путь и выдают параметры монтирвания для того, чтобы подключить к нему удаленный ресурс
/etc/auto.misc содержит пример монтирования компакт-дисков, FTP, честких дисков