Резервное копирование VMware ESX на USB HDD
Пролог
Я более года пользовался Microsft Hyper-V на своём домашнем сервере, и в принципе всем он меня удовлетворял, работал надёжно и без сбоев. Но всё же в предверии выхода Windows Server 2008 R2, перед апгрейдом решил попробовать VMware vSphere 4, всё-таки лидер рынка виртуализации. С первого раза вставать на мой домашний компьютер (ASUS P5E-VM HDMI\8GB RAM\Intel Q6600\3WARE 3650SE — RAID 10), VMware ESX отказался, не нашёл ни жёстких дисков, ни сетевых карт. Слава богу компания 3WARE сама написала драйверы для VMware http://www.3ware.com/kb/article.aspx?id=15548. Но вот сетевушки пришлось купить: Intel PRO/1000 PT Gigabit Adapter. В общем, в итоге ESX сервер установился и заработал.
Теперь собвственно встала задача развернуть виртуальные машины. Все образы операционных систем и куча всякого другого софта у меня была только на внешнем USB жестком диске. И тут возникла проблема: VMware не предоставляет никаких средств доступа к USB накопителям! Через vSphere Client можно подмонтировать .iso образы с рабочей станции или размещённые на vmfs-хранилище, а также использовать физический CD-ROM сервера или рабочей станции, с которой запущен vSphere клиент.

Но для меня ни один из этих вариантов не являлся приемлемым. Я конечно мог подключить USB HDD к своему ноутбуку и подмонтировать .iso-шники к нему, но во-первых производить установку по Wi-Fi очень долго, во-вторых это ограничивает возможность удалённой работы, т.к., например ставить Windows Server 2008 r2 c DVD, через Интернет вообще не реально!
В общем всем известно, что VMware ESX 4 основан на Linux RedHat (что бы там не говорили про тонкий гипервизор и отсутсвие ОС), который, кстати, съедает памяти не меньше Windows Server 2008. Такчто задача заключалсь в том, чтобы подружить Linux и USB жесткий диск с файловой системой NTFS, а затем предоставить доступ к нему для VMware.
Сразу скажу, что я не являюсь специалистотм по Linux/Unix системам, и практически никогда с ними не работал, так что не надо меня сильно ругать! Ну не люблю я чёрные «готичные» текстовые экраны, где надо помнить кучи команд, где нет интуитивно понятного интерфейса и нет Vista Aero)
Открываем SSH
Сидеть за сервером неудобно, поидее у него вообще нет ни клавиатуры, ни мыши, ни монитора, поэтому первым делом открываем SSH, чтобы получить удалённый доступ к консоли. Для этого в главном окне vSphere Client переходим на вкладку Configuration, нажимаем слева внизу Security Profile, а затем справа вверху Properties. Там нужно будет отметить галку SSH Server.

Теперь к консоли VMware можно будет подключаться при помощи PuTTY по SSH. Казалось бы всё хорошо, но оказывается по умолчанию пользователю root запрещён вход по SSH. Чтобы разрешить пользователю root входить по SSH, нужно переконфигурировать демон SSH:
Логинимся на сервер VMware локально и редактируем файл /etc/ssh/sshd_config. В Linux есть страшный и ужасный редактор под названием VIM, который, для большей очевидности, запускаеся командой vi, в общем, чтобы отредактировать файл пишем:
vi /etc/ssh/sshd_config

В редакторе один раз нажимаем PageDown и находим строчку:
PermitRootLogin no
Нажимаем кнопку Ins, редактор переходит в режим редактирования, стираем no, пишем yes. Затем нажимаем ESC, нажимаем <Shift>+<:>, и пишем wq (это значит записать и выйти).
Теперь нужно либо перезагрузить сервер, либо перезапустить службу sshd:
[root@VMwareESX4 ~]# service sshd restart
Теперь вы можете подключаться к VMware через PuTTY, под учетной записью root.
Включаем поддержку NTFS
Включаем поддержку NTFS в VMware ESX 4, а точнее в Linux. По умолчанию Linux c NTFS не работает. Но немного погуглив, я нашёл драйверы, которые позволяют использовтаь NTFS в Linux. Например fuse-ntfs-3g. Для него требуется скачать 2 пакета:
fuse-2.6.3-1.el5.rf.x86_64.rpm
fuse-ntfs-3g-1.2310-1.el5.rf.x86_64.rpm
Все указанные в этой статье пакеты можно найти на www.rpmfind.net, ну или в www.google.ru)
Ещё у вас может возникнуть вопрос, каким образом эти пакеты запихнуть в VMware. Делается это так: Скачиваете пакеты и копируете их в какую-нибудь папку, например distr, затем в консоли vSphere Client переходите на вкладку Configuration, слева нажимаете Storage, справа выбираете VMFS раздел, нажимаете по нему правой кнопкой и выбираете Browse Datastore.

В Datastore Browser нажимаете кнопку Upload, выбираете Upload Folder, и закачиваете папку distr с пакетами на сервер.

Затем подключаетесь при помощи PuTTY к серверу VMware по SSH и устанавливаете пакеты:
Папку которую вы заливали при помощи Datastore Browser можно найти в консоли тут: /vmfs/volumes/VMFSpartition/distr, переходите в эту папку и ставите пакеты:
cd /vmfs/volumes/VMFSpartition/distr
rpm -i fuse-2.6.3-1.el5.rf.x86_64.rpm
rpm -i fuse-ntfs-3g-1.2310-1.el5.rf.x86_64.rpm
Монтируем USB HDD
Теперь монтируем наш USB жёсткий диск с файловой системой NTFS. Создаём папку монтирования:
mkdir /vmimages/usbhdd
И монтируем в неё наш жесткий диск:
mount -t ntfs-3g /dev/sda1 /vmimages/usbhdd
mount — команда монтирования; -t ntfs-3g задаёт тип файловой системы NTFS (драйвер которой мы поставили выше); /dev/sda — это устройство, которое мы монтируем, в моём случае жесткий диск висел именно на нём, в вашем случае может быть по другому, например sdb, sdc и т.д., возможно придется поискать; цифра 1 задаёт номер раздела на диске (1,2,3,4 — основные, 5,6,… — в Extended Partition).
Почему монтировали именно в папку /vmimages/usbhdd? Потомучто из консоли vSphere Client при загрузке образа в CD-ROM, выбрать .iso-шники можно токлько из папки /vmimages.
Монтируем .iso-шник в виртуальную машину через vSphere Client

Выбираете Connect to ISO image on a datastore…

Заходим в папку vmimages и видим там созданную нами папку usbhdd:

Входим в папку usbhdd и «вуаля», видим содержимое нашего USB-жесткого диска:

Выполняем резервное копирование виртуальных машин
Кроме того, что мы получили возможность монтировать .iso образы с USB HDD, теперь мы можем копировать виртуальные машины, причем как из VMware на USB жесткий диск, так и наоборот. Естественно виртуальные машины предварительно нужно остановить.
Устанавливаем Midnight Commander
Кстати, не знаю как вам, а мне не удобно строчить кучу команд в консоле, поэтому я решил установить файловый менеджер Midnight Commander:
Скачиваете пакет mc-4.6.2-3.pre1.fc9.x86_64.rpm, брать тамже на www.rpmfind.net, закачиваете его в VMware ESX, описанным выше способом, и устанавливаете:
rpm -i mc-4.6.2-3.pre1.fc9.x86_64.rpm
Теперь в консоле SSH будет работать веселее, набираем команду mc и наслаждаемся:

Кстати, для нормального отображения Midnight Commander в консоли PuTTY, нужно выбрать кодировку UTF-8. Нажимаем правой кнопкой по заголовку окна PuTTY, выбираем Change Settings, раскрываем раздел Window, переходим в Translation и справа выбираем UTF-8.
Устанавливаем SAMBA
Осталось только одно неудобство, которого не было в Hyper-V. Да я теперь могу с лёгкостью монтировать .iso-шники и ставить ОС, Office и т.д., но как быть с кучей софта, который распространяется не в .iso? Как этому софту в любой удобный для меня момент попадать с USB HDD внутрь виртуальной машины? В Hyper-V я мог просто расшарить папку с диском, а потом с виртуалок заходить на сервер \\hyper-v\usbhdd и получать доступ к софту.
Чтобы реализовать тоже самое на VMware пришлось установить сервер SAMBA. Но это оказалось сделать не так уж и просто. VMware использует очень обрезанную версию Linux RedHat, и кроме того все пакеты которые там стоят имеют очень старую версию. И почему ещё я не люблю Linux, так это из-за этой зависимости пакетов. Пытаешься установить один .rpm, который для своей установки требует 5 других, каждый из которых требует 5 ещё каких-то пакетов и т.д., какая-то цепная реакция), некторые из пакетов вообще требуют одновременной установки. В общем даю список пакетов, которые мне пришлось поставить, чтобы установить сервер SAMBA:
rpm -i —nodeps —force cups-libs-1.2.4-11.8.el5.x86_64.rpm
rpm -i —nodeps —force popt-1.13-4.fc10.x86_64.rpm
rpm -i —nodeps —force samba-common-3.0.33-0.fc8.x86_64.rpm
rpm -i —nodeps —force samba-3.0.33-0.fc8.x86_64.rpm
В общем-то сборник какой-то мути получился и наверняка можно было сделать всё иначе, но честно-говоря мне надоело разбираться с пакетами. И я стал использовать ключи —force и —nodeps (что наверное в общем-то не очень рекомендуется). Но тем не менее сервер samba установился и заработал.
Настройка:
Теперь у нас есть midnight commander и всё стало проще, запускаем mc, переходим в папку \etc\samba\, находим там файл smb.conf, нажимаем F4 и редактируем:
[Global]
security = user
passdb backend = tdbsam
encrypt password = yes
smb passwd file = /etc/samba/smbpasswd
domain master = no
domain logons = no
[share]
comment = root
path = /
browseable = yes
writable = yes
В 3-х словах: в этом файле мы указали путь к файлу паролей пользователей сервера samba — smbpasswd, создали общую папку «share», которая ссылается на корень раздела VMware. Т.е. по сути открыли доступ ко всем системным файлам!!, а аткже подмонтированным разделам, напр. нашему USB диску - /vmimages/usbhdd, а также разделу с виртуальными машинами - /vmfs/volumes/VMFSPartition.
Теперь нужно создать файл с паролями samba, его можно проимпортировать из системы, выполнив:
cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd
Теперь нужно задать пароль для пользователей samba, мне нужен был доступ только для root, поэтому выполнил команду:
smbpasswd -a root
Как я думал, что всё готово. Но нет. Оказывается протокол SMB (порт TCP-139), был закрыт на файерволле VMware ESX. Открываем его следующей командой:
esxcfg-firewall —openPort 139,tcp,in,Samba
Если SAMBA сервер не запуститься автоматически, то запустить его можно выполнив команду: smbd
Ну в общем-то всё, открываем, заходим и используем:

Конечно можно сделать автоматическое монтирование внешнего HDD, подредактировав файл fstab, как наверное можно настроить автозапуск smbd, но мне это было не нужно (или лень возиться). Т.к. я всегда могу запустить нужные мне команды через SSH.
Вродебы всё!
PS: Я делал все эксперементы на тестовой машине, которую не жалко; Не повторяйте это в продуктивной среде!
Здравствуйте, Сергей, меня тоже зовут Сергей! Интересная статья, но есть вопросы:
Вопрос прежде всего связан с безопасностью. В частности я не уверен, openSSH в Red Hat обновлен до версии 4,3. В результате никакого практического применения, статья не имеет? Лучше ничего не трогать, через WiFi
Сергей, вопрос безопасности в данной статье не рассматривался вообще. Я правда не уверен, что вопрос безопасности связан с версией SSH. Я бы больше обратил внимание на то, что были установлены дополнительные сервисы и пакеты. Ввиду чего, вы будете лишены поддержки от VMware. Я уже не говорю про безопасность самих сервисов, и что в SAMBA был расшарен корневой каталог для root-а.
Я повторюсь, что не советую этого делать в рабочей среде!
sergekom, специально для вас сообщаю, что в комплекте с VMware идет версия OpenSSH 4.3p2.