Table of Contents

Настройка общего NFS хранилища для VMWARE/Citrix используя FreeBSD с ФС ZFS

Введение.

На так давно одна компания была переведена на VMWARE vSphere5. Как следствие стали высвобождаться старые сервера с другой стороны понадобилось пространство на хранилище. (Так же описываемое решение было протестировано с Citrix XenServer 6)
К хранилищу были составлены требования:

Для одного из решений появившейся задачи удачно подходит связка: FreeBSD 9.0 + ZFS + NFS.

Конфигурация

Установка FreeBSD 9.0 на ZFS раздел подробно описана в этой статье поэтому остановимя только на настройках 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 рассказано в этой статье

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-ов необходимо:

файл /etc/ssh/sshd_config

 PermitRootLogin yes
 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. На виртуалку установили Performance Test

3. Результаты тестов

700

Об авторе

Profile автора