Подробный гайд по развертыванию файлового сервера на базе ZFS и NFS в Alt Linux

Пошаговая инструкция по развертыванию файлового сервера на базе ZFS и NFS в Alt Linux: установка пакетов, создание пула, экспорт шар и тюнинг.

2026.10.01                  


Подробный гайд по  развертыванию файлового сервера на базе ZFS и NFS в Alt LinuxПодробный гайд по развертыванию файлового сервера на базе ZFS и NFS в Alt Linux Настройка файлового сервера на связке ZFS + NFS в Alt Linux — это отличный выбор, обеспечивающий высокую надежность данных, мгновенные снимки (снапшоты) и производительность. В Alt Linux управление пакетами происходит через apt-get (APT-RPM), а инициатива — systemd.


1. Подготовка системы и установка пакетов

Обновите систему и установите необходимые компоненты. В репозиториях Alt Linux ядро и модули ZFS обычно поставляются в пакетах kernel-modules-zfs-<версия_ядра>, а утилиты — в zfs-utils. Мета-пакет zfs подтянет все нужные зависимости.



1. Обновление и установка:

    su -
    apt-get update
    apt-get install zfs nfs-server

(Опционально: для автоматического мониторинга ошибок дисков и пула можно установить демон ZED: apt-get install zfs-zed).

2. Загрузка модуля ядра:

Проверьте, загрузился ли модуль ZFS, и узнайте версию утилит:

    modprobe zfs
    zfs version

2. Создание пула ZFS (zpool)

Предположим, у нас есть два диска /dev/sdb и /dev/sdc, и мы хотим создать надежное зеркало (mirror).

1. Проверка дисков:

Убедитесь, что диски не содержат важных данных и корректно определяются системой:

    lsblk

2. Создание пула:

Создаем пул с именем tank (название можно выбрать любое):

    zpool create tank mirror /dev/sdb /dev/sdc

3. Создание датасета (тома):

Создадим внутри пула пространство для общего доступа:

    zfs create tank/data

После этой команды том автоматически примонтируется в директорию /tank/data.


3. Настройка службы NFS

Включите службу NFS-сервера и добавьте её в автозагрузку.

systemctl enable --now nfs-server

Примечание:

В Alt Linux служба nfs-server автоматически подтягивает зависимости rpcbind и nfs-mountd, необходимые для работы протокола.


4. Публикация датасета по NFS (sharenfs)

ZFS имеет встроенный механизм публикации шар (NFS и SMB). Это избавляет от необходимости вручную редактировать классический файл /etc/exports.


Вариант А: Открытый доступ (не рекомендуется для безопасности)

zfs set sharenfs=on tank/data

Вариант Б: Доступ только для локальной сети (Рекомендуется)

Разрешим чтение и запись (rw) для подсети 192.168.1.0/24, отключим подмену UID (root_squash) для удобства администрирования и включим синхронную запись:

zfs set sharenfs="rw=@192.168.1.0/24,no_root_squash,sync" tank/data

Вариант В: Только для чтения (ro)

zfs set sharenfs="ro=@192.168.1.0/24" tank/data

Как это работает:

При изменении свойства sharenfs ZFS автоматически генерирует или обновляет файл /etc/zfs/exports и перезагружает конфигурацию NFS-сервера без его остановки.

Проверка:

Убедитесь, что директория экспортируется:

exportfs -v
# или
showmount -e localhost

5. Настройка межсетевого экрана (Firewall)

Если в вашей системе активен firewalld или iptables, необходимо разрешить входящие подключения.

Для firewalld (если используется):

firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --permanent --add-service=mountd
firewall-cmd --reload

Для iptables (базовое правило для NFSv4):

iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 2049 -j ACCEPT
iptables -A INPUT -p udp -s 192.168.1.0/24 --dport 2049 -j ACCEPT

6. Оптимизация и тюнинг ZFS

Для файлового сервера рекомендуется настроить следующие параметры датасета:

1. Сжатие:

Включите алгоритм lz4.

Он практически не нагружает CPU, но экономит место на дисках и ускоряет чтение/запись за счет меньшего объема передаваемых данных:

    zfs set compression=lz4 tank/data

2. Отключение atime:

Отключите обновление времени последнего доступа к файлу.

Это значительно снизит паразитную нагрузку на запись:

    zfs set atime=off tank/data

3. Размер записи (recordsize):

  • Для хранения крупных файлов (видео, образы дисков): zfs set recordsize=1M tank/data
  • Для баз данных или множества мелких файлов лучше оставить по умолчанию (128K) или уменьшить до 64K.

7. Подключение клиента (Linux)

На клиентской машине (например, другой ПК с Alt Linux или Ubuntu):



1. Установка клиента:

В Alt Linux клиентские утилиты находятся в пакете nfs-clients или nfs-utils.

    apt-get install nfs-clients

2. Монтирование:

    mkdir -p /mnt/nfs_share
    mount -t nfs 192.168.1.10:/tank/data /mnt/nfs_share

3. Автомонтирование (fstab):

Добавьте строку в /etc/fstab клиента, чтобы шара подключалась при загрузке:

    192.168.1.10:/tank/data   /mnt/nfs_share   nfs   defaults,_netdev,x-systemd.requires=network-online.target   0 0

Шпаргалка администратора ZFS

Задача Команда
Список всех томов и занятого места zfs list
Статус пула (здоровье дисков) zpool status
Мониторинг скорости I/O zpool iostat -v 2
Создать мгновенный снимок (снапшот) zfs snapshot tank/data@backup_2026_10_02
Откатить изменения до снапшота zfs rollback tank/data@backup_2026_10_02
Посмотреть текущие права NFS zfs get sharenfs tank/data

Важно

  • Шара недоступна после перезагрузки сервера: Убедитесь, что службы zfs-import.target и zfs-mount.service включены. ZFS сам монтирует пул при загрузке, после чего nfs-server подхватывает экспорты.
  • Ошибка "Access denied by server": Проверьте свойство sharenfs командой zfs get sharenfs tank/data. Возможно, IP-адрес клиента изменился и не попадает в разрешенную маску подсети. Также проверьте, не блокирует ли трафик локальный фаервол.

Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.


Статью подготовил: Аверко Денис Сергеевич @Nymexis г. Омск (специалист по ЗИ)

Комментарии

Загрузка...
Если комментарии не загружаются, можете попробовать отключить блокировщик рекламы для этого сайта