Vmware guest shutdown что это

Обновлено: 05.07.2024

Большинство операций с виртуальной инфраструктурой производятся из графического интерфейса клиента vSphere. Однако и командная строка может нам пригодиться:

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

У нас есть несколько способов для получения интерфейса командной строки к серверу ESX(i):

  • локальная командная строка, доступная с локальной консоли или через iLO/IP KVM;
  • сессия SSH к ESX(i);
  • vSphere CLI;

Если на локальной консоли сервера ESX нажать Alt+F1, ввести имя пользователя root и пароль, то вы попадете в командную строку. Это командная строка Service Console, модифицированного Red Hat Enterprise Linux 5.Это означает, что в этой командной строке работают все или большинство стандартных команд Linux.Обратите внимание на то, что команды и ключи регистрозависимы.На своем компьютере запустите клиент SSH, например PuTTY. Подключитесь к серверу ESX. Вам будет необходимо войти в систему, но пользователем root сделать это по SSH нельзя – так по умолчанию настроен сервер SSH на ESX. Вариантов два:

  • создать непривилегированного пользователя и входить в систему с его учетными данными;
  • разрешить вход с учетными данными пользователя root;

Первый вариант более правилен с точки зрения безопасности, второй часто более удобен.

Дополнительного пользователя вы можете создать на этапе установки ESX;

Из клиента vSphere, подключенного напрямую к ESX. Home=>Inventory=>выделите сервер=>закладка Users and Groups в контекстном меню выберите Add. Чтобы пользователь мог заходить по SSH, установите флажок Grant shell access;

Ввести сервер в домен Active Directory и авторизовываться учетными записями AD;

Когда у вас есть дополнительный пользователь, вы можете входить под ним в систему при подключении по SSH. После этого выполните команду

и введите пароль пользователя root. В результате вы получаете привилегии root.Если же вы приняли решение просто разрешить пользователю root авторизацию по SSH, то потребуется отредактировать конфигурационный файл сервера SSH

PermitRootLogin no и поменяйте ее на PermitRootLogin yes.

В состав Service Console входят некоторые специфичные для ESX команды.Список большинства из них вы можете получить, набрав в командной строке

и два раза нажав Tab.Локальная командная строка ESXi, SSH

VMware не рекомендует открывать доступ к командной строке и SSH для ESXi – из общих соображений безопасности. Однако если вы приняли решение пренебречь этой рекомендацией, сделать это несложно.Для доступа в командную строку в локальной консоли ESXi эта возможность должна быть разрешена. В интерфейсе клиента vSphere сделать это можно, пройдя

Configuration=>Security Profile=>Properties=>Local Tech Support;

Через локальное БИОС-подобное меню также можно открыть доступ к локальной командной строке, пройдите Troubleshooting Options=>Enable Local Tech Support;

После нажатия Enter название пункта меню должно поменяться на Disable Local Tech Support – это значит, что локальная командная строка включена, а этим пунктом ее можно отключить обратно.

Так или иначе разрешив доступ к локальной командной строке, нажмите Alt+F1 и авторизуйтесь.

Включение SSH выполняется точно так же (в БИОС-подобном меню или в пункте настроек Security Profile), только теперь вас интересует пункт Remote Tech Support. Теперь вы можете подключаться по SSH.

В состав ESXi входит маленький дистрибутив Linux под названием Busybox. Основные команды Linux в нем работают.

Продолжаем… (кто пропустил шаг назад)
Интересно, а как вы управляетесь с виртуальными машинами?!
Каждый раз, когда Вы делаете snapshot, ставите на паузу или выключаете машину(ы) Вы тратите на это время?!

Тогда мы идем к Вам! :)


Попытаюсь рассказать, как лично я автоматизировал работу с виртуальными машинами.
Многим это покажется полной тупостью, но это решение и ОНО найдено руками пользователя, а не разработчика.

Начнем с самого болезненого, с выключения. Почему с него, да потому что обычно на него никогда не хватает время, вечно куда-то опаздываешь. Ну или, например, оставляешь коллеге, а он по забывчивости не выключает ее.
Не знаю как у остальных, но на моей практике доказано: если выставить машину в режим самовыключения (режим On host shutdown — Shut down guest operating system), то вероятность некорректного выключения очень высока. Vmware просто не успевает корректно все остановить.
Если у кого-то есть желание, можно испытать: берем сервер, запускаем несколько машин c ОС FreeBSD, запускаем на них нагрузочные тесты, выключаем ОС под которой крутится VM. Получаем при новом старте запуск fsck на FreeBSD.
Итого: в таких ситуациях рекомендую VMware ставить на паузу. При снятии с паузы вам остается только синхронизировать время.

А знаете ли вы. при плотной загрузке виртуальными машинами физ.сервера, происходит замедление времени на каждой из них.

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

Перед Вами представлен модифицированный пример-скрипт из поставки дистрибутива VMware (на чем он написан тут все сказано):

check_vm.vbs — основной скрипт

'
' VmCOM VBScript Sample Script (sample2)
' Copyright 1998 VMware, Inc. All rights reserved. -- VMware Confidential
'
' Permission is hereby granted, free of charge, to any person obtaining a
' copy of the software in this file (the "Software"), to deal in the
' Software without restriction, including without limitation the rights to
' use, copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the Software is
' furnished to do so, subject to the following conditions:
'
' The above copyright notice and this permission notice shall be included in
' all copies or substantial portions of the Software.
'
' The names "VMware" and "VMware, Inc." must not be used to endorse or
' promote products derived from the Software without the prior written
' permission of VMware, Inc.
'
' Products derived from the Software may not be called "VMware", nor may
' "VMware" appear in their name, without the prior written permission of
' VMware, Inc.
'
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
' IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
' FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
' VMWARE,INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
' IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
' CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
'
' ------
'
' This program is for educational purposes only.
' It is not to be used in production environments.
'
' Description:
'
' This script displays the virtual machines on the local server.
' It prints the configuration file path and current execution
' state of each VM. If a VM is in the stuck state, the current
' question and its choices are also printed.
' Additionally, if a VM is stuck on an undoable disk related
' question, the script automatically answers 'Keep' on a power-off
' and 'Append' on a power-on.
'
' NOTE: the question-answering logic used is language and product
' dependent, and is only provided for illustration purposes only!
'
' Instructions for Windows 2000 and later operating systems:
'
' - save the contents of this file to a file named 'sample2.vbs'
' unless it's already named that way
'
' - there should be an accompanying file named 'sample2.wsf'
' It is placed in the same directory as this file during
' product installation. This file is responsible for setting
' up the Windows Script Host environment and loading the
' VmCOM type library, thereby enabling this script to
' reference symbolic constants such as vmExecutionState_On
'
' - in a command line window, type:
' cscript //nologo sample2.wsf
'

Set cp = CreateObject( "VmCOM.VmConnectParams" )
Set server = CreateObject( "VmCOM.VmServerCtl" )

server.Connect cp
Set vmCollection = server.RegisteredVmNames

' If this looks like an undoable disk save question,
' automatically answer 'Append' or 'Keep'
'
' NOTE: this code makes alot of assumptions about the product
' and the language used, and may break under some environments.
' It is shown for illustration purposes only!

Set r = new RegExp
r.pattern = "undoable disk"
r.ignorecase = True
Set matches = r.Execute(q.text)

if matches.count > 0 then
for i = 1 to choices.count
if choices(i) = "Append" or choices(i) = "Keep" then
WScript.Echo(s)
s = " --> Automatically selecting '" & q.choices(i) & "' as answer"
vm.AnswerQuestion q,i
exit for
end if
next
end if
end if
end if
WScript.Echo(s)
Recheck(vm) 'добавляем вызов функции
next

Далее запускаемый скрипт check_vm.wsf, от которого передается управление к основному check_vm.vbs:

* This source code was highlighted with Source Code Highlighter .

Ну и наконец bat файл, который вы можете поставить выполнение, например на 22 часа рабочего времени. При таком использовании, никто не забудет, правильно выключить ваш любимый и горячо любимый парк.

cscript check_vm.wsf >> log.txt
shutdown -s -f -t 100

В bat происходит вызов скрипта, с перенаправлением в лог.
Ну shutdown, это как тюнинг на выключение. Можно попробовать поиграть в параметрами.

path=E:\vmware\Ubuntu\Ubuntu.vmx state=ON os=ubuntu
Recheck this VM_machine state=SUSPENDED
path=E:\vmware\Ubuntu_Kde_4\Ubuntu.vmx state=OFF os=ubuntu
path=E:\development\FreeBSD\FreeBSD.vmx state=ON os=freebsd
Recheck this VM_machine state=SUSPENDED

Вот и вроде все. :)
Уфффф… Управились.
Спите спокойно, а самое главное берегите нервы.
До следующей статьи…

Справочный список полезных консольных команд VMWare ESXi (в том числе ESXCLI), которые часто используется при траблшутинге и тонкой настройке гипервизора. По мере необходимости список команд будет расширяться и обновляется.

Доступные команды консоли ESXi можно посмотреть в каталоге /usr/sbin.

Совет . Обратите внимание, что все команды esxi регистрозависимы.

Полный список команд esxcli можно вывести с помощью команды:

esxcli esxcli command list

Для начала команды ESXi, которые вы можете выполнять через ssh доступ.

  • reboot — перезагрузить хост
  • poweroff — выключить хост
  • esxcli system version get — узнать версию (номер) инсталлированной версии VMware ESXi
  • uname -a — так же узнать версию VMware ESXi
  • vmware –vl – и еще один способ узнать версию и релиз VMware ESXi
  • esxcli hardware pci list | more — полная информация об установленных PCI устройствах
  • lspci — краткая информация обо всех установленных PCI устройствах
  • esxtop — диспетчер процессов top для vmware esxi (быстрые клавиши для переключения дисплея: c:cpu, i:interrupt, m:memory, n:network, d:disk adapter, u:disk device, v:disk VM,p:power mgmt)
  • vmkerrcode -l — расшифровка кодов ошибок
  • esxcfg-nics -l — информация о сетевых картах
  • esxcfg-vswitch -l — информация о виртуальных коммутаторах
  • find . -name libstorelib.so — найти файл libstorelib.so

Команды для работы с виртуальными машинами:

  • vim-cmd vmsvc/getallvms — вывод информации обо всех VM
  • vim-cmd vmsvc/power.getstate 1 — включена/выключена VM с Vmid 1
  • vim-cmd vmsvc/power.on 1 — включить VM с Vmid 1
  • vim-cmd vmsvc/power.off 1 — выключить (по питанию) VM с Vmid 1
  • vim-cmd vmsvc/power.reset 1 — перезагрузка (аналогично нажатию клавиши RESET на реальном сервере) VM с Vmid 1
  • vim-cmd vmsvc/power.shutdown 1 — корректное выключение VM с Vmid 1. Действует только, если установлены VMware Tools!
  • vim-cmd vmsvc/power.reboot 1 — перезагрузка VM с Vmid 1. Действует только, если установлены VMware Tools!
  • vim-cmd vmsvc/get.summary 1 — получение полной информации о VM с Vmid 1.
  • vim-cmd vmsvc/get.summary 1 | egrep ‘(name|power|ip)’ — получение отфильтрованной информации о VM с Vmid 1. Выводится имя, состояние питания, IP-адрес

Набрав эту команду, вы увидите все возможные варианты ее использования. Ниже список команд, которые мне показались полезными:

Сегодня речь пойдет о автоматическом выключении гипервизора ESXi при пропадании питания на ИБП.
Для работы данной связки нам необходим ИБП с сетевой картой. В данном конкретном случае это ИБП фирмы APC и для этих целей у APC есть продукт, который называется APC PowerChute Network Shutdown.
Со стороны ESXi в данной схеме будет участвовать виртуальная машина vSphere Management Assistant, или просто vMA.


Итак, первое, что нам нужно это установить vMA на ESXi.
1) Скачиваем и распаковываем vMA
2) Заходим в vSphere Client, жмем File -> Deploy OVF Template и выбираем скачанный .OVF файл
Принимаем лицензионное соглашение, и устанавливаем виртуальную машину.



3) Запускаем машину.
После запуска, первое что нам откроется это меню настройки сетевого интерфейса


Проходимся по всем настройкам и настраиваем интерфейсы, после того как закончили, жмем 1 (Exit this program)
4) Следующий шаг - смена стандартного пароля от пользователя vi-admin



Здесь можно изменить сетевые настройки, настройки часового пояса и автообновления.


Следующий этап - это настройка vMA
1) Настройки прокси:
Если у вас используется прокси сервер, то нужно отредактировать файл /etc/sysconfig/proxy следующим образом: Подставив свои значения proxy_login, proxy_password и proxy_IP:proxy_port
2) Установка mc 3) Установка nano 4) Если вы установили данные программы, то следует перезагрузить vMA


4) Ну и последнее, что нам нужно, это дополнительный файл, который будет запускать PowerChute при пропадании питания на UPS. со следующим содержанием: 5) Не забываем про права запуска и владельца файла:


Ставим галку напротив Enable Command File
Выставляем Delay 20 seconds (если в течении этого времени питание вернется - скрипт отработан не будет)
Full path to command file - путь до нашего скрипта: /home/vi-admin/shutdown_esxi.pl
Применяем настройки


Ну и последнее, что нам нужно это в настройках гипервизора выставить очередность запуска и выключения виртуальных машин:

Читайте также: