Обновление VMware ESXi 4.0

Вчера полночи посвятил обновлению хоста VMware ESXi.

Давно надо было это сделать, но все никак руки не доходили.

В общем дело было ночью, т.к. ночью пользователи спят, и виртуалки можно спокойно выключить, а хост обновить и перезагрузить, без простоев рабочего процесса.

Т.к. сервер установлен в датацентре и физического доступа, или IP KVM у меня не было, всю процедуру надо было проводить удаленно.

В таком случае обновление с помощью ISO образа мне не подходит, поэтому, я скачал .zip архив с сайта VMware, предназначенный для обновления хоста с версии 4.0 до версии 4.1 Update 1, который называется соответственно — ESXi 4.1 Update 1 (upgrade ZIP from ESXi 4.0) и начал обновлять.

Сначала пытался это сделать с помощью vSphere Host Update Utility 4.0. Потушил виртуалки, перевел хост в режим обслуживания, подключился утилиткой, подсунул ей архивчик и вот он — первый косяк:

Тырнет не открыл мне тайну решения этой болячки, поэтому пришлось искать другой способ. Их оказалось несколько, а точнее 2:

— закачать архив на датастор ESX-а и применить обновление из консоли сервера

— обновить с помощью vihostupdate vCLI

1-й вариант мне не подходит, т.к. физического доступа к консоли сервера у меня нету, и ssh у ESXi по умолчанию отсутствует, а вот 2-й вариант оказался самым приемлемым. Рассмотрим его поближе.

Следует отметить, что по этому поводу у VMware есть официальная документация, которая мне очень помогла. Итак, vihostupdate — это одна из набора консольных утилит vSphere CLI (vSphere Command-Line Interface), которые предназначены для удаленного администрирования  VMware vSphere. Скачать этот набор можно бесплатно с официального сайта VMware, либо отсюда — vSphere CLI (for Linux x64), vSphere CLI (for Windows x32).

Сам по себе vSphere CLI, является набором перловых скриптов, поэтому требует интерпретатора Perl (для винды это ActivePerl, в линуксе он по-умолчанию есть).

Качаем vSphere CLI, устанавливаем, и пытаемся обновить наш хост с помощью утилиты vihostupdate.

Еще раз обращаю внимание на то, что для обновления хоста, нужно выключить все виртуальные машины, которые на нем запущены, и перевести ESX в Maintenance Mode.

Синтаксис примерно такой:

vihostupdate --install --server <имя сервера или IP> --bundle <путь к .zip архиву обновления>

для Linux пример команды будет выглядеть так:

$ sudo ./vihostupdate --install --server 22.33.44.55 --bundle /tmp/update/upgrade-from-ESXi4.0-to-4.1.0-0.0.260247-release.zip

для Windows:

vihostupdate.pl --install --server 22.33.44.55 --bundle С:\upgrade-from-ESXi4.0-to-4.1.0-0.0.260247-release.zip

после этого программа спросит логин и пароль для доступа к ESXi хосту и при успешной аутентификации приступит к обновлению. При успешном завершении выдаст что-то типа:

The update completed successfully, but the system needs to be rebooted for the changes to be effective.

Обновление может занять длительное время, в зависимости от скорости интернета у клиента и у сервера.

У vihostupdate есть множество дополнительных опций и параметров, как говорится, —help вам в помощь ;)

Ну и как всегда не обошлось без ошибок:

Делал я все это чудо с линуксовой машинки (с другого сервера) под управлением Debian Lenny. Не захотел, в общем, запускаться vihostupdate. Выдавал какую-то гадость:

/usr/bin/perl: symbol lookup error: /usr/local/lib/perl/5.10.0/auto/XML/LibXML/LibXML.so: undefined symbol: Perl_Tstack_sp_ptr

очевидно модуль просит, лечится так:

$ sudo apt-get install libxml2-dev
$ sudo cpan force install XML::LibXML::Common
$ sudo cpan force install XML::LibXML

еще один:

/usr/bin/perl: symbol lookup error: /usr/local/lib/perl/5.10.0/auto/Class/MethodMaker/MethodMaker.so: undefined symbol: Perl_Tstack_sp_ptr

лечим:

$ sudo cpan install Class::MethodMaker

потом скрипт попросил логин и пароль, но опять начал капризничать:

Hiding the command line arguments: symbol lookup error: /usr/local/lib/perl/5.10.0/auto/Crypt/SSLeay/SSLeay.so: undefined symbol: Perl_Tstack_sp_ptr

ну ничего, и для этого есть пилюля:

$ sudo cpan force install Crypt::SSLeay

ну и, собсна, не захотел устанавливаться у меня патч upgrade-from-esxi4.0-to-4.1-update01-348481.zip поэтому, установил upgrade-from-ESXi4.0-to-4.1.0-0.0.260247-release.zip а потом пытался применить последние патчи с помощью vSphere Host Update Utility, но эта злосчастная утилита и здесь облажалась, все время зависает, или выдает ошибки какие-то.

К тому времени на улице уже становилось светло, поэтому, я включил сервачки и побрел спать.

Казалось бы банальная и простая процедура — обновление гипервизора, а столько мороки. За убогую, пусть и бесплатную, vSphere Host Update Utility, на вмварю я однозначно злой :(

Всем спасибо за внимание, надеюсь кому-то пригодится ;)

Update (15.11.11): Во время написания статьи я, к сожалению, не знал как включить SSH на ESXi-хосте, что значительно упростило бы задачу обновления. Оказалось, что включить SSH доступ к хосту секундное дело, вот заметка о том, как это делается.