четверг, 28 апреля 2016 г.

Настройка NFS-сервера на ZFS с включённой дедубликацией и сжатием



Все команды выполнялись от прав пользователя root.

1. Ставлю Debian 8.0 Jessie (важно!!! чтобы версия была x64).
2. Устанавливаю ZFS:

wget http://zfsonlinux.org/4D5843EA.asc -O - | apt-key add -
wget http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux/zfsonlinux_6_all.deb
dpkg -i zfsonlinux_6_all.deb
apt-get update

apt-get install lsb-release
apt-get install debian-zfs
reboot

3. Создаю пул:

Проверяю что установилось.
dpkg -l | grep zfs
ii  debian-zfs                     7~jessie                    amd64        Nati           ve ZFS filesystem metapackage for Debian.
ii  libzfs2                        0.6.5.6-7                   amd64        Nati           ve ZFS filesystem library for Linux
ii  zfs-dkms                       0.6.5.6-7                   all          Nati           ve ZFS filesystem kernel modules for Linux
ii  zfsonlinux                     6                           all          arch           ive.zfsonlinux.org trust package
ii  zfsutils                       0.6.5.6-7                   amd64        comm           and-line tools to manage ZFS filesystems

Проверяю какие диски есть
ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda5  /dev/sdb  /dev/sdc

Проверяю есть ли пул )))
zpool list
no pools available

Создаю RAID-1
zpool create -f pool mirror /dev/sdb /dev/sdc

Проверяю:
zpool list
NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
pool  9,94G   187K  9,94G         -     7%     0%  1.00x  ONLINE  -


Проверяю статуса пулов:
zpool status
  pool: pool
 state: ONLINE
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        pool        ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            sdb     ONLINE       0     0     0
            sdc     ONLINE       0     0     0

errors: No known data errors

Проверяю его наличии в системе
df -hT
Файловая система Тип      Размер Использовано  Дост Использовано% Cмонтировано в
/dev/root        ext4       1,9G         1,3G  424M           76% /
udev             devtmpfs    10M            0   10M            0% /dev
tmpfs            tmpfs      200M         4,6M  196M            3% /run
tmpfs            tmpfs      500M            0  500M            0% /dev/shm
tmpfs            tmpfs      5,0M            0  5,0M            0% /run/lock
tmpfs            tmpfs      500M            0  500M            0% /sys/fs/cgroup
pool             zfs        9,7G         128K  9,7G            1% /pool


4. Тюнингую ZFS:
Включаю сжатие данных
zfs set compression=on pool
zfs get compression pool
NAME  PROPERTY     VALUE     SOURCE
pool  compression  on        local
 

Включаю дедупликацию
zfs set dedup=on pool
zfs get dedup
NAME  PROPERTY  VALUE          SOURCE
pool  dedup     on             local

5. Устанавливаю NFS-сервер:
apt-get install nfs-kernel-server nfs-common

Назначаю права на ZFS-пул
chown nobody:nogroup /pool
chmod 777 /pool

Правлю конфиг сервера (добавив строчку)
nano /etc/exports
/pool   192.168.0.0/24 (rw,async,no_subtree_check)

Перезагружаю NFS-сервер
/etc/init.d/nfs-kernel-server restart

6. Проверка подключения на базе Linux клиента:
Устанавливаю сам клиент
apt-get install nfs-common

Создаю папку куда буду монтировать
mkdir -p /mnt/nfs

Собственно монтирую
mount 192.168.0.10:/pool /mnt/nfs

Проверяю
df -hT
Файловая система     Тип      Размер Использовано  Дост Использовано% Cмонтировано в
/dev/root            ext4       176G         985M  166G            1% /
udev                 devtmpfs    10M            0   10M            0% /dev
tmpfs                tmpfs      200M         4,5M  196M            3% /run
tmpfs                tmpfs      500M            0  500M            0% /dev/shm
tmpfs                tmpfs      5,0M            0  5,0M            0% /run/lock
tmpfs                tmpfs      500M            0  500M            0% /sys/fs/cgroup
192.168.0.10:/pool       nfs4       9,7G         128K  9,7G            1% /mnt/nfs

Размонтирование делается обычно
umount /pool

7. Проверка подключения на базе Windows:
Проверять буду программой NekoDrive.


Таким образом создается диск Е куда все и монтируется. Unicode нужно для корректного отображения кириллицы.

Пример работы сжатия ZFS пула:
Залил на NFS виртуальную машину изначальный размер согласно свойствам Windows - 6,72 ГБ (7 219 906 743 байт).
Проверяю пул (показывает 4,2 Гб)
 df -hT
Файловая система Тип      Размер Использовано  Дост Использовано% Cмонтировано в
/dev/root        ext4       1,9G         1,3G  423M           76% /
udev             devtmpfs    10M            0   10M            0% /dev
tmpfs            tmpfs      200M         4,6M  196M            3% /run
tmpfs            tmpfs      500M            0  500M            0% /dev/shm
tmpfs            tmpfs      5,0M            0  5,0M            0% /run/lock
tmpfs            tmpfs      500M            0  500M            0% /sys/fs/cgroup
pool             zfs             9,7G         4,2G  5,5G           43% /pool