Монтирование NAS при помощи autofs

Идея возникла на основе обсуждения в Proxmox 9.1.5. Проблемы с bind сетевых nfs шар в LXC

Какие у нас есть варианты монтирования удаленных ФС (в PVE)

Способ Пюсы Минусы
/etc/pve/storage.cfg Автоматически синхронизируется в кластере
Настройка через GUI
Отображается в дереве ноды
Только базовые опции
/etc/fstab Коробочный функционал Нет синхронизации, монтирование по-требованию спицифичное
/etc/autofs.conf Крутая логика
автомонтирование по требованию
Нет синхронизации, требуется настройка

У меня 17 точек монтирования и руками на 5 PVE нод это не вариант раскатывать, поэтому, предлагаю настроить autofs

  1. Для начала надо поставить пакет autofs
apt install autofs
  1. Далее создаем КОРНЕВУЮ точку монтирования, у меня это /mnt/truenas
mkdir /mnt/truenas
  1. Добавляем конфиг autofs /etc/auto.master.d/truenas-nfs.autofs
/mnt/truenas /etc/auto.truenas.nfs --timeout=300

Вот тут мы указываем, что внутри /mnt/truenas/ должны создаваться точки монтирования, описанные в /etc/auto.truenas.nfs - в даном случае это NFS, но может быть и SMB

  1. Ну и создаем конфиг непосредственно точками монтирования /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

Тут мы видим, что указываются

  1. точки монтирования относительно /mnt/truenas
  2. тип файловой системы и опции монтирования
  3. удаленный сервер

У меня настройка производится при помощи 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"
...
  1. Перезагружаем сервис 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.

Предупреждение это не мое, но оно работает и так, надо будет поправить

  1. Приступаем к тестированию
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

  1. Нет необходимости добавлять x-systemd.automount
  2. Не надо создавать еще и каталоги для точек монтирования

После внесения изменений в конфиг можно применить изменения без перезагрузки

systemctl reload autofs.service 

Но autofs может быть еще умнее

  1. Создаем файл /etc/auto.master.d/net.autofs
/net  /etc/auto.net
  1. Создаем корень для точек монтирования
mkdir /net
  1. Выполняем автомонтирование
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, честких дисков

4 лайка

2 сообщения были перемещены в эту тему: Запускаем PDM в виде docker образа

Возможно тут (в нескольких местах) Вы имели ввиду /mnt/truenas?

да, точно, поправил, спасибо за исправление