Виртуализация и работа с сетевыми хранилищами данных стали неотъемлемой частью нашего времени. TrueNAS — это мощная и гибкая платформа для управления сетевыми хранилищами (NAS), которая позволяет организовать доступ к данным между различными системами. В этой статье мы рассмотрим, как настроить общую папку между TrueNAS и гостевой виртуальной машиной. Это позволит вам легко обмениваться данными между хост-системой и виртуальной машиной, создавая удобную и безопасную среду для совместной работы с файлами.
В качестве хост-машины используется TrueNAS Core 13.0-U6.2. В качестве гостевой операционной системы в виртуальной машине установлен Rocky Linux 9. Эта статья будет применима для Red Hat, CentOS, AlmaLinux OS.
Настройка TrueNAS
В TrueNAS перейдите в раздел Хранилище — Пулы. Выберите требуемый пул и создайте в нём набор данных (каталог, который будет общим):
Задайте необходимые параметры доступа (разрешения) для созданного набора данных. Для начала можно дать полный доступ на чтение и запись для тестирования, а потом изменить:
Переходим в раздел Общий доступ — Ресурсы Unix (NFS). Здесь создаём новый ресурс:
Указываем:
- Путь к созданному вами набору данных.
- Авторизованных хост — 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-ресурс монтировался автоматически при каждой загрузке системы, тогда добавим следующую строку в файл /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-службы включите настройку:
TrueNAS: перезапустите NFS-службу.
Гостевая машина: перемонтируйте каталог или перезагрузите машину.
Производительность
Производительность в данном случае низкая, так как основной ограничивающий фактор — сеть. Если требуется высокая скорость работы, следует использовать другой подход, например подключение Zvol.
Подключение Zvol (кратко)
- Остановить виртуальную машину (ВМ).
- Создать Zvol и подключить как диск в настройках виртуальной машины.
- Запустить ВМ.
- Внутри ВМ. Проверить, что диск распознан: lsblk. Новое устройство будет отображено как, например, /dev/vdc.
- Внутри ВМ. Создать файловую систему: sudo mkfs.ext4 /dev/vdc
- Внутри ВМ. Создать директорию для монтирования: sudo mkdir -p /mnt/data_connect
- Внутри ВМ. Смонтировать диск в созданную директорию: sudo mount /dev/vdc /mnt/data_connect
- Внутри ВМ. Проверить, что диск смонтирован: df -h
- Внутри ВМ. Настроить автоподключение (автомонтирование) добавив в файл /etc/fstab строку /dev/vdc /mnt/data_connect ext4 defaults 0 0
- Команда sudo mount -a смонтирует все устройства, прописанные в /etc/fstab. Если ошибок нет, всё настроено верно.
В этом случае из TrueNAS не удастся без дополнительных телодвижений получить доступ к содержимому Zvol. Если нужно чтобы виртуальная машина писала данные в Zvol, а вы к ним через TrueNAS в любой момент получали доступ, то Zvol не ваш вариант.