Дешевое разделяемое хранилище для ESX
Для полноценной работы почти всего функционала ESX, кроме непосредственного запуска виртуальных машин, требуется shared storage, разделяемое хранилище. Для HA и VMotion, и того, что с ними связано — DRS, Fault Tolerance.
Но что делать если нет денег на HP EVA, NetApp и даже на Starwind iSCSI? Спасут старые добрые пингвины и старенький, уже слабый, но все еще исправно работающий сервер.
Итак, берем сервер, очень желательно с аппаратным RAID и обязательно с гигабитной сетью, и набиваем его дисками. Программная часть: CentOS, iSCSI Enterprise Target и/или стандартный NFS сервер, идущий в комплекте с CentOS. Я взял дистрибутив, бывший под рукой, CentOS 5.3 32bit.
Я рекомендую сделать два отдельных LUN’а для системы и для данных, или даже использовать для этого отдельные физические диски. В моем примере это будут /dev/sda для системы и /dev/sdb для данных.
Ставим CentOS с установками по умолчанию, примерно 20-25 минут. Настройку сети, DNS и прочего опустим.
Итак, начнем с конфигурации iSCSI. Для этого берем последнюю версию IET здесь.
Перед установкой IET необходимо установить еще несколько пакетов:
[root@iscsi-tgt ~]# cd /media/CentOS_5.3_Final/CentOS/
[root@iscsi-tgt CentOS]# rpm -i gcc-4.1.2-44.el5.i386.rpm glibc-devel-2.5-34.i386.rpm libgomp-4.3.2-7.el5.i386.rpm glibc-headers-2.5-34.i386.rpm kernel-headers-2.6.18-128.el5.i386.rpm kernel-devel-2.6.18-128.el5.i686.rpm
А теперь сам IET:
[root@iscsi-tgt CentOS]# cd ~
[root@iscsi-tgt ~]# tar -zxf iscsitarget-1.4.20.1.tar.gz
[root@iscsi-tgt ~]# cd iscsitarget-1.4.20.1
[root@iscsi-tgt iscsitarget-1.4.20.1]# make && make install
Добавим в /etc/iet/ietd.conf конфигурацию таргета:
Target iqn.2001-04.com.example:storage.disk1.sys1.xyz
Lun 0 Path=/dev/sdb,Type=blockio,ScsiId=xyz,ScsiSN=xyz
В файле /etc/iet/initiators.allow прописываем разрешения для ESX по доступу к созданному нами таргету и комментируем «разрешить всем все».
iqn.2001-04.com.example:storage.disk1.sys1.xyz iqn\.1998-01\.com\.vmware:esx2-0b63920f — пример моего ESX
#ALL ALL
Настал момент истины:
[root@iscsi-tgt ~]# service iscsi-target restart
Добавляем iSCSI таргет на ESX:
Делаем Rescan для iSCSI HBA и должен появиться наш диск:
Дальше создаем VMFS Datastore обычным способом
И не забываем добавить IET в автостарт:
[root@iscsi-tgt ~]# chkconfig —add iscsi-target
[root@iscsi-tgt ~]# chkconfig —level 3 iscsi-target on
***
Но если мы хотим не VMFS, а NFS по какой-то причине? Еще проще, даже ничего не надо ставить дополнительно. Для примера я использую тот же самый диск /dev/sdb.
Разметим диск:
Создадим на нем файловую систему и смонтируем:
[root@iscsi-tgt /]# mkfs.ext3 /dev/sdb1
[root@iscsi-tgt etc]# mkdir -p /datastores/datastore1
[root@iscsi-tgt etc]# mount /dev/sdb1 /datastores/datastore1/
Добавим новую файловую систему в /etc/fstab:
/dev/sdb1 /datastore/datastore1 ext3 defaults 0 0
И откроем к ней доступ по NFS в файле /etc/exports:
/datastores/datastore1 esx1 (rw) esx2 (rw) esx3 (rw)
Осталось лишь запустить NFS сервер.
[root@iscsi-tgt etc]# service nfs start
[root@iscsi-tgt etc]# exportfs -a
Добавим новый Datastore на ESX:
Поскольку NFS идет в комплекте CentOS, в автостарт сервис можно добавить при помощи утилиты:
[root@iscsi-tgt ~]# setup
Выбираем «System services»: