Хитрости VMWare ESXi (по опыту работы)
В одном известном хостинге арендовал сервер. Для экономии электричества и вычислительной мощности (одним словом, денег), установил на него VMWare ESXi 3.5. И вот спустя полгода работы набрал парочку полезных приемов работы с ESXi, которыми и хочу поделиться.
Доступ к «скрытой» консоли
Это одна из самых распространенных тем в Сети: как попасть в «скрытую» консоль ESXi. Правда редко кто пишет, зачем это нужно. :)
Итак:
- Нажимаем Alt+F1
- Набираем «unsupported» и Enter (текст выводиться не будет)
- В ответ на запрос пароля вводим наш пароль на ESXi
- … voila!
А теперь о том, чем эта консоль может быть полезна.
Включение SSH
Та же консоль может быть доступна по SSH. Для этого достаточно раскоментировать строчку с «ssh» в файле /etc/inetd.conf. Для этого можно воспользоваться наличествующим редактором vi.
На своем сервере я проделал также небольшой грязный хак: заменил порт SSH 22 на другой в файле/etc/services. Это не совсем корректно, но SSH с порта 22 убирает, защищая систему от нагрузки от бестолкового брутфорса.
Предоставление доступа к виртуальной машине ESXi через VNC
К любой из машин можно предоставить доступ через VNC, если добавить в vmx-файл следующие строки:
1 2 3 |
remotedisplay.vnc.port=”5900″ remotedisplay.vnc.enabled=”true” remotedisplay.vnc.password = “your_password” |
Порт и пароль по вкусу. Сами файлы vmx можно найти по пути /vmfs/volumes/.
Тонкая настройка
Первым делом я столкнулся с тем, что часть машин работает очень медленно. Для анализа производительности есть прекрасная утилита, доступная из консоли — esxtop. Чем-то похожа на аналог из «обычных» ОС UNIX/Linux — top.
Подробнейшим образом показатели, отображаемые этой утилитой, описаны в этой статье.
Сообщение «Could not power on VM: Admission check failed for memory resource»
Уверен, что у многих счастливых обладателей 4Гб+ памяти это сообщение никогда не появлялось и не появится. Но я (как писал выше) человек экономный, и сервер обладает всего лишь 2 Гб памяти. Это привело к быстрому появлению сообщения о нехватке оной.
Небольшой анализ привел меня к выводу, что виртуальным машинам выдается на 768 Мб меньше физической памяти, чем есть на самом деле, т.е. 768 Мб — зарезервированы за системными процессами ESXi. Причем большая часть — за процессом vim. Это значение можно снизить без ущерба производительности (как показывает практика многочисленных коллег по ESXiению по всей сети). Делается это следующим образом:
- Переходим во вкладку «Configuration» VMWare Infrastructure Client
- В блоке «Software» щелкаем на «System Resource Allocation»
- Щелкаем «Advanced»
- В дереве находим «vim» и устанавливаем значение «Reservation» для него в 192 Мб
После перезапуска ESXi (для верности) у нас появляются еще 300-400 Мб доступной виртуальным машинам оперативной памяти.
Автозапуск виртуальных машин
На моем сервере виртуальные машины настроены на автозапуск. Делается это несложно при помощи VMWare Infrastructure Client. Там можно как добавить машины в автозапуск, так и убрать. Это легко, если есть доступ к ESXi по сети. В моем случае получилось так, что одна из автоматически запускаемых виртуальных машин назначает себе неправильный IP-адрес, и подключать к сети ESXi хост отказались.
Имеем: доступ к KVM (т.е. к консоли сервера). Необходимо: убрать виртуальную машину из автозапуска.
Параметры автозагрузки находятся в файле /etc/vmware/hostd/vmAutoStart.xml. В нем перечислены все запускаемые виртуальные машины, а также способы их запуска и остановки.
Для отмены запуска всего, что можно, нужно привести файл к следующему виду (в вашей версии может отличаться, поэтому не забудьте сделать бэкап файла и редактировать его осторожно):
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<ConfigRoot> <AutoStartOrder> <_length>0</_length> <_type>vim.host.AutoStartManager.AutoPowerInfo[]</_type> </AutoStartOrder> <SystemDefaults> <_type>vim.host.AutoStartManager.SystemDefaults</_type> <startDelay>120</startDelay> <stopAction>PowerOff</stopAction> <stopDelay>120</stopDelay> <waitForHeartbeat>false</waitForHeartbeat> </SystemDefaults> </ConfigRoot> |
После перезагрузки можно командой esxtop убедиться, что ни одна виртуальная машина не запущена.