=======Настройка общего NFS хранилища для VMWARE/Citrix используя FreeBSD с ФС ZFS ======= ==== Введение. ==== На так давно одна компания была переведена на VMWARE vSphere5. Как следствие стали высвобождаться старые сервера с другой стороны понадобилось пространство на хранилище. (Так же описываемое решение было протестировано с Citrix %%XenServer 6%%)\\ К хранилищу были составлены требования: * возможность экспорта по NFS over TCP (VMware и Сitrix к сожалению работают только по TCP) * наличие snapshot. * возможность backup snapshots на другой сервер.\\ Для одного из решений появившейся задачи удачно подходит связка: %%FreeBSD%% 9.0 + ZFS + NFS. ==== Конфигурация ==== Установка %%FreeBSD%% 9.0 на ZFS раздел подробно описана в этой [[http://wiki.freebsd.org/RootOnZFS/GPTZFSBoot/9.0-RELEASE|статье]] поэтому остановимя только на настройках ZFS, NFS и скрипте создания и backup snapshots.\\ Разворачиваем %%FreeBSD%% на двух серверах. Первый будет NFS второй будет backup-server. **Не забудьте настроить ntpd на обоих серверах.** ==== ZFS ==== Создание пулa rpool RAID5 zpool create rpool raidz1 /dev/ada2 /dev/ada3 /dev/ada4 Проверка zpool status pool: rpool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 ada2 ONLINE 0 0 0 ada3 ONLINE 0 0 0 ada4 ONLINE 0 0 0 errors: No known data errors Создание раздела для VMWARE\\ zfs create rpool/vm-store **И самое главное.** Для обеспечения высокой скорости необходимо сделать следующую настройку. zfs set sync disabled rpool/vm-store более подробно о zfs tuning рассказано в этой [[http://wiki.freebsd.org/ZFSTuningGuide|статье]] ==== NFS === **/etc/exports**\\ /rpool/vm-store -maproot=root IP1_VMWARE IP2_VMWARE IP3_VMWARE **Для Citrix:\\ /rpool/vm-store -alldirs -maproot=root IP1_VMWARE IP2_VMWARE IP3_VMWARE** Необходимо добавить следующие строчки в **/etc/rc.conf** nfs_server_enable="YES" rpcbind_enable="YES" mountd_enable="YES" rpc_statd_enable="YES" rpc_lockd_enable="YES" nfs_server_flags="-t -n 10 Для запуска nfs:\\ /etc/rc.d/nfsd start Теперь можно смонтировать раздел в VMWARE или Citrix ==== Создание snapshot ==== Для обеспечения возможности создания snapshot-ов необходимо: * на backup-server-e, разрешить доступ по ssh для root файл /etc/ssh/sshd_config PermitRootLogin yes * на NFS сервере, обеспечить возможность доступа на backup-server без пароля () ssh-keygen -t rsa ssh-copy-id root@backup-server На серере NFS необходимо создать первый snapshot вручную и отправляем его на backup-server zfs snapshot rpool/vm-store@`/bin/date "+%Y%m%d"` zfs send rpool/vm-store@`/bin/date "+%Y%m%d"` | ssh park-nfs-node-backup zfs recv -Fuv rpool/vm-store@`/bin/date "+%Y%m%d"` Ниже простой скрипт, который раз в сутки создает snapshot, отправляет инкрементно на backup-server. На NFS-серере snapshot хранятся 3 дня на backup-server 30 дней. Требуется, чтобы скрипт запускался на следующий день после создания первого snapshot вручную. Так-же скрипт не предусматривает перерывов в работе более суток. **createandsend.sh** #!/bin/sh num=`/bin/date "+%Y%m%d"` numm=`/bin/date -v-1d "+%Y%m%d"` days=`/bin/date -v-30d "+%Y%m%d"` onlinedays=`/bin/date -v-3d "+%Y%m%d"` #creating snapshot /sbin/zfs snapshot rpool/vm-store@$num /bin/sleep 20 /sbin/zfs send -i $numm rpool/vm-store@$num | /usr/bin/ssh backup-server zfs recv -Fuv rpool/vm-store@$num #destroying snapshot /sbin/zfs destroy rpool/vm-store@$onlinedays /usr/bin/ssh backup-server zfs destroy rpool/vm-store@$days Скрипт **createandsend.sh** прописывается в cron на запуск раз в сутки\\ ==== Тестирование ==== 1. Монтируется партиция к узлам %%VmWare%%. IP адрес для монтирования: 10.255.254.30 2. Создание тестовой VM Мы развернули win7 x86 на thick disk размером 40GB. На виртуалку установили [[http://www.passmark.com/products/pt.htm|Performance Test]] 3. Результаты тестов {{:ru:jobs:perfresnfszfs.jpg?700|700}} ==== Об авторе ==== [[https://www.linkedin.com/pub/alexey-vyrodov/59/976/16b|Profile]] автора