Виртуализация и работа с сетевыми хранилищами данных стали неотъемлемой частью нашего времени. TrueNAS — это мощная и гибкая платформа для управления сетевыми хранилищами (NAS), которая позволяет организовать доступ к данным между различными системами. В этой статье мы рассмотрим, как настроить общую папку между TrueNAS и гостевой виртуальной машиной. Это позволит вам легко обмениваться данными между хост-системой и виртуальной машиной, создавая удобную и безопасную среду для совместной работы с файлами.

В качестве хост-машины используется TrueNAS Core 13.0-U6.2. В качестве гостевой операционной системы в виртуальной машине установлен Rocky Linux 9. Эта статья будет применима для Red Hat, CentOS, AlmaLinux OS.

Настройка TrueNAS

В TrueNAS перейдите в раздел ХранилищеПулы. Выберите требуемый пул и создайте в нём набор данных (каталог, который будет общим):

Создание набора данных в TrueNAS

Задайте необходимые параметры доступа (разрешения) для созданного набора данных. Для начала можно дать полный доступ на чтение и запись для тестирования, а потом изменить:

Изменение разрешений набора данных в TrueNAS

Переходим в раздел Общий доступРесурсы Unix (NFS). Здесь создаём новый ресурс:

Создание NFS в TrueNAS

Указываем:

  • Путь к созданному вами набору данных.
  • Авторизованных хост — IP-адрес виртуальной машины, которая будет работать с общим каталогом. В моём случае 192.168.7.62.

Остальные настройки правьте на своё усмотрение.

При создании NFS-ресурса TrueNAS должен предложить запустить NFS-службу, если она не была запущена. Проверьте, что служба запущена перейдя в раздел Службы. Дополнительно я внёс изменения в настройки службы:

  • Изменил количество создаваемых серверов указав их на 2 меньше чем у меня процессоров. Привожу рекомендации TrueNAS: Укажите, сколько серверов создать. Увеличьте, если ответы клиента NFS медленные. Оставьте это число меньше или равным количеству процессоров, которое сообщает sysctl -n kern.smp.cpus, чтобы ограничить переключение контекста процессора.
  • Включил NFS версии 4.

Настройка гостевой виртуальной машины

Заходим по SSH в гостевую виртуальную машину или через VNC панели управления TrueNAS.

Установим необходимые пакеты для работы с NFS:

sudo dnf install nfs-utils

Создадим каталог, в который будем монтировать каталог TrueNAS:

sudo mkdir /mnt/truenas_share

Монтируем NFS-ресурс (каталог TrueNAS) в созданный каталог:

sudo mount -t nfs <IP-адрес TrueNAS>:/mnt/<Пул TrueNAS>/nabor-dannih /mnt/truenas_share

Пример:

sudo mount -t nfs 192.168.7.60:/mnt/POOL-SSD/data_nextcloud /mnt/truenas_share

Проверяем, что NFS-ресурс успешно подключен:

df -h

В консоли увидим примерно следующее:

Подключение NFS-ресурса

Если мы хотим, чтобы NFS-ресурс монтировался автоматически при каждой загрузке системы, тогда добавим следующую строку в файл /etc/fstab:

<IP-адрес TrueNAS>:/mnt/<Пул TrueNAS>/nabor-dannih /mnt/truenas_share nfs defaults,_netdev,retry=5,hard,intr 0 0
  • _netdev указывает, что файловая система требует сетевого подключения, и монтирование будет отложено до тех пор, пока сеть не станет доступной.
  • hard указывает, что при потере соединения система будет пытаться переподключиться к серверу, что важно для систем.
  • retry=5 — количество попыток переподключения.
  • intr используется для того, чтобы разрешить прерывание операций ввода-вывода при доступе к NFS-серверу. Это полезно, если нужно, чтобы операция могла быть остановлена в случае необходимости, например, если сервер NFS недоступен или завис.
  • 0 0 — первый «0» отключает команду dump, которая создаёт резервные копии разделов (этот параметр устарел и редко используется), а второй «0» означает, что файловая система не будет проверяться утилитой fsck при загрузке (если нужна проверка, это число можно изменить на 1 или 2).

Пример:

192.168.7.60:/mnt/POOL-SSD/data_nextcloud /mnt/data_nextcloud nfs defaults,_netdev,retry=5,hard,intr 0 0

После монтирования проверьте права доступа создав, удалив или изменив файлы на смонтированном NFS-ресурсе. Возможно, вам потребуется настроить права доступа к директории в TrueNAS, чтобы избежать проблем с доступом.

Теперь гостевая операционная система может писать данные в общий каталог TrueNAS и эти данные будут доступны с самого TrueNAS.

Важное замечание

Если вы хотите в будущем в гостевой машине менять владельцев каталогов и права доступа у каталогов и файлов, которые будут создаваться в смонтированном каталоге, то вам необходимо дополнительно настроить TrueNAS. В противном случае TrueNAS не позволит этого делать. Дополнительно необходимо у NAS-ресурса указать пользователя и группу:

NFS. Изменение владельца и прав доступа.

Если это не помогло, то дополнительно у NFS-службы включите настройку:

NFS. Изменение владельца и прав доступа.

TrueNAS: перезапустите NFS-службу.

Гостевая машина: перемонтируйте каталог или перезагрузите машину.

Производительность

Производительность в данном случае низкая, так как основной ограничивающий фактор — сеть. Если требуется высокая скорость работы, следует использовать другой подход, например подключение Zvol.

Подключение Zvol (кратко)

  1. Остановить виртуальную машину (ВМ).
  2. Создать Zvol и подключить как диск в настройках виртуальной машины.
  3. Запустить ВМ.
  4. Внутри ВМ. Проверить, что диск распознан: lsblk. Новое устройство будет отображено как, например, /dev/vdc.
  5. Внутри ВМ. Создать файловую систему: sudo mkfs.ext4 /dev/vdc
  6. Внутри ВМ. Создать директорию для монтирования: sudo mkdir -p /mnt/data_connect
  7. Внутри ВМ. Смонтировать диск в созданную директорию: sudo mount /dev/vdc /mnt/data_connect
  8. Внутри ВМ. Проверить, что диск смонтирован: df -h
  9. Внутри ВМ. Настроить автоподключение (автомонтирование) добавив в файл /etc/fstab строку /dev/vdc /mnt/data_connect ext4 defaults 0 0
  10. Команда sudo mount -a смонтирует все устройства, прописанные в /etc/fstab. Если ошибок нет, всё настроено верно.

В этом случае из TrueNAS не удастся без дополнительных телодвижений получить доступ к содержимому Zvol. Если нужно чтобы виртуальная машина писала данные в Zvol, а вы к ним через TrueNAS в любой момент получали доступ, то Zvol не ваш вариант.