Настройка Samba и ZFS/NFS для домашних директорий
Важное (кратко)
- Права доступа Samba зависят от UNIX-пермиссий: для шаринга /export/home/newuser нужно подключаться как newuser.
- Опции ZFS (dedup, compression) сильно влияют на использование CPU и RAM — протестируйте на нагрузке перед массовым включением.
- UID/GID клиента и сервера должны совпадать для корректной работы NFS.
5 Samba: сервисы и ZFS
Запустите сервис Samba (smb/service):
root@server1:/# svcadm enable -r smb/serverЕсли появится такое предупреждение, можно его игнорировать:
svcadm: svc:/milestone/network depends on svc:/network/physical, which has multiple instancesЗадайте имя рабочей группы (workgroup):
root@server1:/# smbadm join -w SHARINGПример вывода после присоединения:
After joining SHARING the smb service will be restarted automatically.
Would you like to continue? [no]: yes
Successfully joined SHARINGПосле этого можно включать шаринги для пользователей. В этой схеме права доступа к шарам определяются unix-пермиссиями файловой системы: если шарите /export/home/newuser, подключаться нужно как newuser (владелец каталога newuser:newuser).
Если вы шарите весь домашний каталог пользователя и в нём уже есть файлы, временно переместите их в промежуточный каталог, чтобы точка монтирования была пустой:
root@server1:/# mkdir /opt/tmp/
root@server1:/# mv /export/home/newuser/* /opt/tmp/; mv /export/home/newuser/.* /opt/tmp/Проверьте, что файлы переместились:
root@server1:/# ls -lha /export/home/newuser/; ls -lha /opt/tmp/Пример вывода:
total 3.0K
drwxr-xr-x 2 newuser newuser 2 Apr 22 15:51 .
drwxr-xr-x 4 root root 4 Apr 22 15:16 ..
total 9.5K
drwxr-xr-x 2 root root 8 Apr 22 15:51 .
drwxr-xr-x 3 root sys 3 Apr 22 15:50 ..
-rw-r--r-- 1 newuser newuser 220 Apr 22 15:16 .bash_logout
-rw-r--r-- 1 newuser newuser 2.9K Apr 22 15:16 .bashrc
-rw-r--r-- 1 newuser newuser 964 Apr 22 15:16 .profile
-rw-r--r-- 1 newuser newuser 1.1K Apr 22 15:16 local.cshrc
-rw-r--r-- 1 newuser newuser 988 Apr 22 15:16 local.login
-rw-r--r-- 1 newuser newuser 1002 Apr 22 15:16 local.profileСоздайте ZFS-файловую систему и включите шаринг SMB:
root@server1:/# zfs create -o compression=gzip-9 -o dedup=on -o quota=100g -o casesensitivity=mixed -o nbmand=on -o sharesmb=on pool1/newuserКраткое описание ключевых опций:
- dedup=on — включение дедупликации; экономит место, но потребляет много RAM и CPU.
- compression=gzip-9 — максимальная степень сжатия gzip; улучшает хранение, но снижает скорость записи и повышает нагрузку на CPU.
- quota=100g — ограничение размера файловой системы до 100 ГБ.
- nbmand=on — включение поддержки NFS клент-блокировок (NFSv4 related POSIX locks).
- sharesmb=on — автоматически выставить шаринг SMB для этой файловой системы.
Важно: включайте dedup и gzip-9 только если у вас достаточный запас RAM и CPU; на слабых серверах это приведёт к ухудшению производительности при интенсивных записях.
Верните файлы обратно в домашний каталог:
mv /opt/tmp/* /export/home/newuser/; mv /opt/tmp/.* /export/home/newuser/Альтернатива (без риска попытки переместить ‘.’ и ‘..’):
cd /export/home/newuser && find . -mindepth 1 -maxdepth 1 -exec mv -t /opt/tmp/ -- {} +Проверьте пул ZFS:
root@server1:/# zpool listNAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
pool1 3.97T 239K 3.97T 0% 1.00x ONLINE -
syspool 127G 1.31G 126G 1% 1.00x ONLINE -Проверьте файловые системы ZFS:
root@server1:/# zfs listNAME USED AVAIL REFER MOUNTPOINT
pool1 136K 3.91T 31K /export/home
pool1/newuser 21K 3.91T 21K /export/home/newuser
syspool 2.34G 123G 26K none
syspool/rootfs-nmu-000 1.31G 123G 1007M legacy
syspool/swap 1.03G 124G 16K -Проверьте, что шаринг SMB выставлен:
root@server1:/# sharemgr show -vpdefault nfs=()
zfs
zfs/pool1/newuser smb=()
/export/home/newuser
pool1_newuser=/export/home/newuser smb=(abe="false" guestok="false")Теперь подключиться к шару можно с другого компьютера (не забудьте авторизоваться под тем же именем пользователя):
smb://(ip address or host name)/export/home/newuserПовторите процесс для каждого пользователя/шара по необходимости.
Полезные практики и эвристики
- Тестируйте дедупликацию и сжатие на тестовом пуле со схожими данными перед включением в проде.
- Для рабочих станций с большим количеством мелких файлов gzip-9 может давать небольшую выгоду при большой нагрузке CPU.
- Если у вас мало оперативной памяти, лучше не включать dedup; вместо этого используйте компрессию средней степени (gzip-1..gzip-3).
6 NFS: настройка
Чтобы расшарить все домашние директории по NFS:
root@server1:~# zfs set sharenfs=on pool1Чтобы расшарить только созданный пул для пользователя:
root@server1:~# zfs set sharenfs=on pool1/newuserПроверьте шаринг NFS:
root@server1:/# sharemgr show -vpdefault nfs=()
zfs
zfs/pool1 nfs=()
/export/homeВажно: UID и GID на клиенте и сервере должны совпадать — иначе вы не сможете корректно читать/записывать файлы. Если у вас централизованная система учёта учётных записей (LDAP/NIS/AD), убедитесь, что клиенты используют ту же базу учётных записей.
Прямое подключение с клиента будет выглядеть как обычный NFS-монтаж:
mount -t nfs server:/export/home/newuser /mnt/newuserТрублшутинг (быстрый набор)
- Ошибка доступа при SMB: проверьте владельца и права каталога (ls -la /export/home/newuser). Подключайтесь как соответствующий пользователь.
- Долгая запись после включения сжатия/дедупликации: мониторьте CPU/RAM, отключите dedup или снизьте степень сжатия.
- NFS: “permission denied” — проверьте export и соответствие UID/GID между машинами.
- sharemgr не показывает SMB/NFS: перезапустите службы smb и nfs, затем повторите sharemgr show -vp.
Роли и чек-листы
Администратор сервера:
- Включить smb: svcadm enable -r smb/server
- Join workgroup: smbadm join -w SHARING
- Создать zfs: zfs create … pool1/newuser
- Установить sharenfs или sharesmb
- Проверить zpool list, zfs list, sharemgr show -vp
Пользователь рабочего места:
- Подключаться под именем пользователя, совпадающим с владельцем каталога на сервере.
- Убедиться, что монтирование по SMB или NFS использует правильные учётные данные.
Критерии приёмки
- zpool list показывает pool1 ONLINE.
- zfs list показывает pool1/newuser с правильным MOUNTPOINT и QUOTA.
- sharemgr show -vp показывает запись для zfs/pool1/newuser smb и/или nfs.
- Клиент может смонтировать и прочитать/записать файлы под соответствующим пользователем.
Короткий глоссарий (1 строка)
- ZFS: продвинутая файловая система с пулом томов, поддержкой снапшотов, дедупликации и сжатия.
- Samba (SMB): протокол файлового обмена для совместного доступа между Unix и Windows-подобными машинами.
- NFS: сетевой файловый протокол для Unix-подобных систем.
Альтернативные подходы
- Использовать отдельный dataset на ZFS для каждого пользователя вместо единого /export/home — даёт гибкую настройку квот и политик.
- Управление учётными записями через LDAP/AD для синхронизации UID/GID между клиентами и сервером.
Ресурсы
- Nexenta: http://www.nexenta.org/
- ZFS Best Practices Guide: http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide
Итог
Samba + ZFS и NFS позволяют масштабируемо управлять домашними директориями пользователей с квотами, сжатием и дедупликацией. Внимательно относитесь к нагрузке на CPU/RAM при включении dedup/compression и проверяйте соответствие UID/GID при работе с NFS.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента