Создание пула ZFS.
Теперь создаем свой пул ZFS:
#zpool create tank raidz label/disk{1..4}
Это позволит создать RAID-Z или RAID5 массив из 4 дисков под названием «танк». Обратите внимание на {1 .. 4} в конце, это короткий способ для записи:
#zpool create tank raidz label/disk1 label/disk2 label/disk3 label/disk4
Таким образом, эти две команды создают одно и то же; выполните только одну из них.
Теперь проверим статус нашего массива:
#zpool status tank
Точка монтирования и сжатие.
Было бы полезно, переместить некоторые части вашей системы на ZFS массив, чтобы вы могли использовать сжатие. Для примера: /usr/ports/ и /usr/src каталоги являются хорошими примерами для этого, так как в них находится большое количество текстовых файлов, которые сжимаются. Но как переместить /usr/ports и /usr/src на ZFS?
Данный пример показывает, как:
#mv /usr/ports /usr/TEMPports
#mv /usr/src /usr/TEMPsrc
#zfs create tank/usr
#zfs create tank/usr/ports
#zfs create tank/usr/src
#zfs set mountpoint=/usr/ports tank/usr/ports
#zfs set mountpoint=/usr/src tank/usr/src
#zfs set compression=gzip-9 tank/usr
#mv /usr/TEMPports/* /usr/ports/
#mv /usr/TEMPsrc/* /usr/src/
#rmdir /usr/TEMPports /usr/TEMPsrc
Давайте посмотрим, что мы сделали. Сначала мы переименовали существующие директории /usr/src и /usr/ports. Создали новую файловую систему на ZFS массиве, Затем подмонтировали файловую систему ZFS к /usr/src и /usr/ports директориям. Разрешили высокий уровень сжатия на каталог tank/usr, (также влияющим на наши порты и SRC файловых систем), а затем перенесли все данные из файловой системы UFS в файловую систему ZFS. И только потом удалили временные каталоги. Теперь ваши каталоги /usr/src and /usr/ports на ZFS, и вы можете проверить степень сжатия командой:
#zfs get compressratio tank/usr
ZVOLs
ZVOLs файлы в файловой системе ZFS, которые используются как виртуальные жесткие диски. Таким образом, вы можете создать 8GB ZVOL на файловой системе и использовать его в качестве отдельного жесткого диска. Это полезно, если вы хотите использовать ISCSI на ZFS поддерживаемых файловых системах, что позволяет вам делать ISCSI снимки и выполнять другие полезные функции, связанные с ZFS.
Проиллюстрируем это:
#zfs create -V 10g tank/image0
#diskinfo -v /dev/zvol/tank/image0
Мы создали 10GB виртуальный жесткий диск, названный image0, и можем установить его как target для нашего istgt-демона, который обрабатывает ISCSI запросы.
NFS
Для использования NFS, вы должны иметь запись
zfs_enable = «YES»
в файле /etc/rc.conf, пока что модуля ядра под ZFS не существует. Кроме того, необходимы соответствующие записи по настройке NFS в этом же файле, чтобы настроить работу с ZFS.
Настройка обмена через NFS очень проста:
#zfs create tank/public
#zfs sharenfs=»on» tank/public
#zfs create tank/protected
#zfs sharenfs=»-network 10.0.0.0 -mask 255.255.255.0″ tank/protected
#zfs create tank/private
#zfs sharenfs=»-network 10.0.0.67 -mask 255.255.255.255″ tank/private
Этот пример создает три файловые системы и разрешает их использование с помощью NFS. Первая из них называется «public» и доступна каждому в сети, даже интернет.
Вторая называется » protected » и доступна только для вашей локальной сети с IP-адресов 10.0.0.0-10.0.0.255.
Третий и последний пример создает «private» NFS и доступна только с адреса 10.0.0.67 в вашей локальной сети. Обратите внимание, что эти адреса можно подделать. Реальная безопасность может быть обеспечена с помощью брандмауэра, такого как PF.
Samba
Чтобы включить SMB / CIFS доступ к файловой системе ZFS, для того, чтобы Windows клиенты могли получить к ней доступ, необходимо сначала установить Samba:
#usr/ports/net/samba34
#make install clean
После установки убедитесь, что
samba_enable = «YES»
присутствует в /etc/rc.conf.
Далее займемся файлом конфигурации smb.conf:
#ee /usr/local/etc/smb.conf
Я предпочитаю, написать файл с нуля и предоставляю его Вам.
#================= Global Settings ============================
[global]
workgroup = WORKGROUP
server string = Samba Server
security = user
; hosts allow = 192.168.1. 192.168.2. 127.
; interfaces = 192.168.12.2/24 192.168.13.2/24
load printers = no
guest account = nobody
log file = /var/log/samba/log.%m
log level = 2
max log size = 50
hide dot files = yes
; passdb backend = tdbsam
socket options = TCP_NODELAY SO_RCVBUF=131072 SO_SNDBUF=65536
use sendfile = yes
strict locking = no
follow symlinks = yes
wide symlinks = yes
unix extensions = no
# Charset settings
; display charset = koi8-r
; unix charset = koi8-r
; dos charset = cp866
# Use extended attributes to store file modes
; store dos attributes = yes
; map hidden = no
; map system = no
; map archive = no
#============================ Share Definitions============
[samba]
path=/tank
browseable = yes
writable = yes
valid users = nfs
create mask = 0660
directory mask = 0770
Теперь запустите демон Samba (Smbd и nmbd) вручную:
#/usr/local/etc/rc.d/samba start
Проверьте, что он запущен:
#ps auxw | grep smbd | grep -v grep
Разрешения
Последнее, что мы должны сделать – настроить разрешения.
Если вы хотите разрешить доступ как по NFS так и по Samba / CIFS доступ к одной и той же файловой системе, вам лучше позволить им использовать те же самые имена.
NFS ID пользователя определяется на стороне клиента. То есть, если Ubuntu клиент соединяется по NFS с сервером, он будет использовать свое собственное имя пользователя с UID 1000 до доступа и записи файлов. Таким образом, на сервере FreeBSD необходимо создать нового пользователя с UID 1000 назвав его «NFS». Он будет использоваться как для NFS так и Samba доступа.
Идем дальше и создаем пользователя:
#pw useradd nfs
Необходимо отредактировать файл пароля и изменить идентификатор нашего вновь созданного «NFS» пользователя на 1000:
#export EDITOR=ee
#vipw
Отредактируем файл группы и изменим идентификатор группы «NFS» на 1000:
#ee /etc/group
Далее пользователя и группу «nfs» делаем собственниками на /tank:
#chown -R nfs:nfs /tank
Это должно обеспечить надлежащий доступ без всяких ошибок со стороны клиента.
Если Samba работает, добавьте вновь созданного пользователя в конфигурацию Samba, и создайте ему пароль:
# smbpasswd -a nfs
Обратите внимание, что вы можете создать больше пользователей, но пользователь, прописанный в файле smb.conf, должен иметь разрешение на реальные файлы. Просмотрите на журналы, содержащиеся в /var/log/samba34, если возникнут проблемы.