Вчера полночи посвятил обновлению хоста 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 доступ к хосту секундное дело, вот заметка о том, как это делается.