На так давно одна компания была переведена на VMWARE vSphere5. Как следствие стали высвобождаться старые сервера с другой стороны понадобилось пространство на хранилище. (Так же описываемое решение было протестировано с Citrix XenServer 6)
К хранилищу были составлены требования:
Для одного из решений появившейся задачи удачно подходит связка: FreeBSD 9.0 + ZFS + NFS.
Установка FreeBSD 9.0 на ZFS раздел подробно описана в этой статье поэтому остановимя только на настройках ZFS, NFS и скрипте создания и backup snapshots.
Разворачиваем FreeBSD на двух серверах. Первый будет NFS второй будет backup-server. Не забудьте настроить ntpd на обоих серверах.
Создание пул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 рассказано в этой статье
/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-ов необходимо:
файл /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. Результаты тестов
Profile автора