GlusterFS имеет встроенный NFS-шлюз, но для лучшей совместимости с macOS мы использовали отдельный NFS-сервер поверх FUSE-монтирования GlusterFS.
# Устанавливаем NFS-сервер
sudo apt install -y nfs-kernel-server
# Монтируем GlusterFS том локально
sudo mkdir -p /mnt/storage
sudo tee -a /etc/fstab > /dev/null << 'EOF'
localhost:/vol-production /mnt/storage glusterfs defaults,_netdev,backup-volfile-servers=stor02:stor03 0 0
EOF
sudo mount /mnt/storage
# Создаём структуру каталогов
sudo mkdir -p /mnt/storage/{projects,archive,incoming,render}
sudo chown -R nobody:nogroup /mnt/storage
# Настраиваем NFS exports
sudo tee /etc/exports > /dev/null << 'EOF'
# Проекты — полный доступ для монтажёров
/mnt/storage/projects 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash,crossmnt)
# Архив — только чтение (кроме архиваторов)
/mnt/storage/archive 192.168.1.0/24(ro,sync,no_subtree_check)
/mnt/storage/archive 192.168.1.100(rw,sync,no_subtree_check,no_root_squash)
# Incoming — загрузка RAW-материалов с камер
/mnt/storage/incoming 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)
# Render — для рендер-фермы
/mnt/storage/render 10.10.10.0/24(rw,sync,no_subtree_check,no_root_squash)
EOF
sudo exportfs -rav
sudo systemctl restart nfs-kernel-server
# /etc/nfs.conf — оптимизация NFS-сервера
[nfsd]
threads = 32 # Увеличиваем с дефолтных 8
udp = n # Только TCP
tcp = y
vers3 = y
vers4 = y
vers4.1 = y
vers4.2 = y
# Оптимизация ядра для NFS
sudo tee /etc/sysctl.d/99-nfs-tuning.conf > /dev/null << 'EOF'
# Увеличиваем размер буферов сокетов
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.rmem_default = 1048576
net.core.wmem_default = 1048576
# TCP window scaling
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 1048576 16777216
net.ipv4.tcp_wmem = 4096 1048576 16777216
# NFS-специфичные параметры
sunrpc.tcp_max_slot_table_entries = 128
sunrpc.tcp_slot_table_entries = 128
# Увеличиваем лимиты для большого количества клиентов
fs.file-max = 2097152
EOF
sudo sysctl --system
# Монтирование на macOS-клиенте
# sudo mount -t nfs -o rw,resvport,rsize=1048576,wsize=1048576,timeo=600,retrans=2,nfsvers=4.1 \
# stor01:/mnt/storage/projects /Volumes/Projects
# /etc/fstab на рабочих станциях Linux
stor01:/mnt/storage/projects /media/projects nfs4 rw,rsize=1048576,wsize=1048576,hard,intr,timeo=600,retrans=2,_netdev 0 0
stor01:/mnt/storage/incoming /media/incoming nfs4 rw,rsize=1048576,wsize=1048576,hard,intr,_netdev 0 0
stor01:/mnt/storage/render /media/render nfs4 rw,rsize=1048576,wsize=1048576,hard,intr,_netdev 0 0
# Или через autofs для автоматического монтирования при обращении
sudo apt install -y autofs
# /etc/auto.master
/media/storage /etc/auto.nfs --timeout=600
# /etc/auto.nfs
projects -rw,rsize=1048576,wsize=1048576,hard,intr stor01:/mnt/storage/projects
incoming -rw,rsize=1048576,wsize=1048576,hard,intr stor01:/mnt/storage/incoming
render -rw,rsize=1048576,wsize=1048576,hard,intr stor01:/mnt/storage/render
sudo systemctl enable --now autofs