Ask me anything
Ithy Logo
Sign in to save

Мастерство командной строки ESXi: Безопасное управление питанием виртуальных машин

Подробное руководство по выполнению команд, включая принудительное выключение (poweroff), для вашей ВМ Davletov_test_for84 с акцентом на безопасность и лучшие практики.

esxi-shell-vm-poweroff-guide-3kdrttud

Управление виртуальными машинами (ВМ) через командную оболочку ESXi (ESXi Shell) предоставляет мощные возможности, особенно в ситуациях, когда стандартные инструменты, такие как vSphere Client, недоступны. Однако выполнение команд, особенно тех, что могут привести к потере данных, требует особой осторожности. В этом руководстве мы подробно рассмотрим, как безопасно выполнить команду принудительного выключения (аналогичную poweroff) для вашей виртуальной машины Davletov_test_for84 на гипервизоре VMware ESXi.

Ключевые моменты

  • Определение ID виртуальной машины: Перед выполнением любых команд необходимо точно идентифицировать целевую ВМ. Для этого используются команды vim-cmd vmsvc/getallvms (для получения VMID) или esxcli vm process list (для получения World ID).
  • Выбор метода выключения: Важно различать корректное выключение (graceful shutdown), которое позволяет операционной системе ВМ завершить все процессы, и принудительное выключение (force power off), которое немедленно прекращает работу ВМ. Команда poweroff, выполненная напрямую в ESXi Shell, выключит сам хост ESXi, а не конкретную ВМ.
  • Безопасность прежде всего: Доступ к ESXi Shell и SSH следует включать только на время выполнения необходимых операций и отключать сразу после их завершения. Принудительное выключение ВМ может привести к потере несохраненных данных или повреждению файловой системы.

Основы работы с командной оболочкой ESXi

Командная оболочка ESXi (ESXi Shell) и SSH предоставляют прямой доступ к операционной системе гипервизора VMware ESXi. Это позволяет выполнять административные задачи, диагностику и устранение неполадок на низком уровне. Однако, поскольку эти инструменты дают полный контроль над хостом, их использование сопряжено с рисками, особенно при выполнении команд, изменяющих состояние системы или виртуальных машин.

Включение ESXi Shell и SSH

По умолчанию в целях безопасности ESXi Shell и SSH отключены. Для их активации:

  1. Через DCUI (Direct Console User Interface):
    • Подключитесь к консоли хоста ESXi.
    • Нажмите F2 для входа в меню настройки системы (Customize System/View Logs).
    • Перейдите в раздел "Troubleshooting Options".
    • Выберите "Enable ESXi Shell" и "Enable SSH" и нажмите Enter для их активации.
  2. Через vSphere Client:
    • Подключитесь к хосту ESXi или vCenter Server с помощью vSphere Client.
    • Выберите хост в инвентаре.
    • Перейдите на вкладку "Configure" (Конфигурация).
    • В разделе "System" (Система) выберите "Services" (Службы).
    • Найдите службы "ESXi Shell" (TSM) и "SSH" (TSM-SSH).
    • Для каждой службы нажмите "Start" (Запустить). Рекомендуется также настроить политику запуска на "Start and stop manually" (Запускать и останавливать вручную).

Важно: После завершения работ не забудьте отключить ESXi Shell и SSH для обеспечения безопасности хоста.

Консоль управления VMware

Пример интерфейса консоли виртуальной машины VMware.

Подключение к ESXi Shell

После активации соответствующих служб вы можете подключиться к хосту ESXi:

  • Локально (ESXi Shell): Если вы имеете физический доступ к серверу, нажмите Alt+F1 на консоли для доступа к ESXi Shell. Для возврата в DCUI нажмите Alt+F2.
  • Удаленно (SSH): Используйте SSH-клиент (например, PuTTY для Windows или команду ssh в Linux/macOS) для подключения к IP-адресу или имени хоста ESXi. Вход осуществляется под учетной записью root и соответствующим паролем.

Идентификация вашей виртуальной машины Davletov_test_for84

Перед тем как выполнить команду выключения, необходимо получить уникальный идентификатор вашей виртуальной машины Davletov_test_for84. Существует два основных идентификатора:

  • VMID (Virtual Machine ID): Внутренний идентификатор, используемый командой vim-cmd.
  • World ID: Идентификатор процесса ВМ на хосте ESXi, используемый командой esxcli.

Получение VMID с помощью vim-cmd

Выполните следующую команду в ESXi Shell:

vim-cmd vmsvc/getallvms

Эта команда выведет список всех зарегистрированных на хосте виртуальных машин. Найдите в списке вашу ВМ Davletov_test_for84 и запомните ее Vmid из первого столбца. Вывод будет выглядеть примерно так:

Vmid   Name                  File                                 Guest OS          Version   Annotation
1      Davletov_test_for84   [datastore1] Davletov_test_for84/Davletov_test_for84.vmx   ubuntu64Guest   vmx-19
2      AnotherVM             [datastore1] AnotherVM/AnotherVM.vmx         windows10Guest  vmx-19

В данном примере VMID для Davletov_test_for84 равен 1.

Получение World ID с помощью esxcli

Если вы планируете использовать esxcli, получите World ID:

esxcli vm process list

Эта команда покажет список запущенных виртуальных машин и их World ID. Найдите ВМ Davletov_test_for84 по ее Display Name и запишите соответствующий World ID.

Davletov_test_for84
   World ID: 12345
   Process ID: 0
   VMX Cartel ID: 67890
   UUID: aa-bb-cc-dd-ee-ff-00-11-22-33-44-55-66-77-88-99
   Display Name: Davletov_test_for84
   Config File: /vmfs/volumes/datastore1/Davletov_test_for84/Davletov_test_for84.vmx

Здесь World ID для Davletov_test_for84 равен 12345.


Выполнение команд управления питанием для ВМ Davletov_test_for84

Теперь, когда у вас есть идентификатор ВМ, вы можете выполнить команду выключения. Помните, что прямая команда poweroff в ESXi Shell приведет к выключению всего хоста ESXi, а не отдельной ВМ. Для управления питанием конкретной ВМ используются специализированные команды.

Корректное выключение (Graceful Shutdown)

Этот метод является предпочтительным, так как он отправляет сигнал операционной системе внутри ВМ для корректного завершения работы. Это возможно, если в гостевой ОС установлены и работают VMware Tools.

Использование vim-cmd

vim-cmd vmsvc/power.shutdown <VMID>

Замените <VMID> на VMID вашей ВМ. Например, для Davletov_test_for84 с VMID 1:

vim-cmd vmsvc/power.shutdown 1

Использование esxcli

esxcli vm process kill --type=soft --world-id=<WorldID>

Замените <WorldID> на World ID вашей ВМ. Например, для Davletov_test_for84 с World ID 12345:

esxcli vm process kill --type=soft --world-id=12345

Принудительное выключение (Force Power Off – аналог poweroff для ВМ)

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

Использование vim-cmd

Эта команда немедленно выключает ВМ:

vim-cmd vmsvc/power.off <VMID>

Для Davletov_test_for84 с VMID 1:

vim-cmd vmsvc/power.off 1

Использование esxcli

Команда esxcli vm process kill предлагает несколько типов принудительного завершения:

  • hard: Немедленно завершает работу ВМ. Это похоже на power.off.
  • force: Самый агрессивный метод, используется если soft и hard не сработали.

Для принудительного выключения Davletov_test_for84 с World ID 12345:

esxcli vm process kill --type=hard --world-id=12345

Или, если требуется более жесткий метод:

esxcli vm process kill --type=force --world-id=12345

Для вашего тестового случая с Davletov_test_for84 и требованием poweroff, наиболее подходящей командой будет vim-cmd vmsvc/power.off <VMID> или esxcli vm process kill --type=hard --world-id=<WorldID>.


Сравнение команд управления питанием ВМ

В таблице ниже представлено сравнение основных команд для управления питанием виртуальных машин через ESXi Shell.

Команда Инструмент Тип действия Когда использовать Пример для Davletov_test_for84 (VMID=1, WorldID=12345)
power.shutdown <VMID> vim-cmd vmsvc Корректное выключение (Graceful Shutdown) Предпочтительный метод, если ВМ отвечает и VMware Tools установлены. vim-cmd vmsvc/power.shutdown 1
power.off <VMID> vim-cmd vmsvc Принудительное выключение (Force Power Off) Если ВМ не отвечает на корректное выключение. Аналог poweroff для ВМ. vim-cmd vmsvc/power.off 1
kill -t soft -w <WorldID> esxcli vm process Корректное завершение процесса ВМ Аналогично power.shutdown, требует World ID. esxcli vm process kill -t soft -w 12345
kill -t hard -w <WorldID> esxcli vm process Немедленное завершение процесса ВМ Если soft не работает, более агрессивный. Аналог poweroff для ВМ. esxcli vm process kill -t hard -w 12345
kill -t force -w <WorldID> esxcli vm process Принудительное "убийство" процесса ВМ Крайняя мера, если soft и hard не сработали. Самый агрессивный аналог poweroff. esxcli vm process kill -t force -w 12345

Анализ влияния методов выключения ВМ

Различные методы выключения виртуальной машины имеют разные последствия для сохранности данных, скорости операции и общего влияния на систему. Диаграмма ниже иллюстрирует сравнительные характеристики основных методов выключения. Оценка производится по шкале от 1 до 10, где более высокое значение обычно означает лучший результат (например, выше сохранность данных, выше скорость), за исключением "Влияния на систему", где ниже - лучше.

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


Визуализация процесса: от подготовки до выключения ВМ

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

mindmap root["Управление питанием ВМ ('Davletov_test_for84')
через ESXi Shell"] id1["Этап 1: Подготовка"] id1.1["Включить ESXi Shell и/или SSH"] id1.2["(Рекомендация) Создать снимок (snapshot) ВМ
или резервную копию важных данных"] id1.3["Осознать риски принудительного выключения
(потеря данных, повреждение ФС)"] id2["Этап 2: Идентификация ВМ"] id2.1["Подключиться к хосту ESXi
(через SSH или локальную консоль)"] id2.2["Получить VMID для 'Davletov_test_for84'"] id2.2.1["Команда: vim-cmd vmsvc/getallvms"] id2.3["Получить World ID для 'Davletov_test_for84'"] id2.3.1["Команда: esxcli vm process list"] id3["Этап 3: Выполнение команды выключения"] id3.1["Выбор метода и команды"] id3.1.1["Корректное выключение (предпочтительно)"] id3.1.1.1["vim-cmd vmsvc/power.shutdown <VMID>"] id3.1.1.2["esxcli vm process kill -t soft -w <WorldID>"] id3.1.2["Принудительное выключение (для 'poweroff' сценария)"] id3.1.2.1["vim-cmd vmsvc/power.off <VMID>"] id3.1.2.2["esxcli vm process kill -t hard -w <WorldID>"] id3.1.2.3["esxcli vm process kill -t force -w <WorldID>
(самый агрессивный метод)"] id3.2["Выполнить выбранную команду для Davletov_test_for84"] id4["Этап 4: Завершение и проверка"] id4.1["Проверить статус ВМ (выключена ли)"] id4.1.1["vim-cmd vmsvc/getallvms"] id4.1.2["esxcli vm process list"] id4.2["Отключить ESXi Shell и SSH"] id4.3["(При необходимости) Проанализировать логи хоста"] id4.3.1["Лог команд: /var/log/shell.log"] id4.3.2["Лог событий ВМ: /vmfs/volumes/datastore_name/vm_name/vmware.log"]

Эта карта охватывает ключевые шаги, начиная от подготовки и идентификации виртуальной машины до выполнения самой команды и последующих проверок.


Видеоурок: Работа с командной строкой ESXi

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

В этом видео демонстрируются основные приемы работы с ESXi Shell, которые помогут вам увереннее чувствовать себя при выполнении команд.


Проверка состояния ВМ и действия после операции

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

vim-cmd vmsvc/getallvms

Проверьте статус ВМ в выводе или используйте:

vim-cmd vmsvc/power.getstate <VMID>

Ожидаемый вывод для выключенной ВМ: "Powered off".

Также можно проверить список активных процессов ВМ:

esxcli vm process list

Если ВМ Davletov_test_for84 отсутствует в списке, значит, она выключена.

Крайне важно: после завершения всех операций в ESXi Shell или через SSH, не забудьте отключить эти службы для поддержания безопасности вашего хоста ESXi.

Аудит и логирование

Все команды, выполненные в ESXi Shell, обычно логируются в файле /var/log/shell.log. Вы можете просмотреть этот файл для аудита выполненных действий. Это может быть полезно для анализа в случае возникновения проблем.


Часто задаваемые вопросы (FAQ)

В чем разница между power.off и power.shutdown в vim-cmd?

vim-cmd vmsvc/power.shutdown <VMID> инициирует корректное (graceful) выключение. Эта команда отправляет сигнал гостевой операционной системе ВМ для завершения работы всех процессов и сохранения данных перед выключением. Требуется наличие VMware Tools в гостевой ОС.

vim-cmd vmsvc/power.off <VMID> выполняет принудительное (force) выключение ВМ. Это эквивалентно нажатию кнопки питания на физическом компьютере или отключению его от сети. Используется, если ВМ не отвечает на команду корректного выключения. Может привести к потере несохраненных данных.

Что такое VMID и World ID, и как их узнать?

VMID (Virtual Machine ID) — это числовой идентификатор, который ESXi присваивает каждой зарегистрированной виртуальной машине. Он используется в командах утилиты vim-cmd. Узнать VMID можно командой vim-cmd vmsvc/getallvms.

World ID — это идентификатор процесса виртуальной машины в планировщике VMkernel. Он используется в командах утилиты esxcli, например, esxcli vm process kill. Узнать World ID можно командой esxcli vm process list.

Можно ли безопасно оставлять ESXi Shell или SSH включенными?

Нет, не рекомендуется оставлять ESXi Shell и SSH постоянно включенными. Эти службы предоставляют прямой доступ к управлению хостом и могут представлять угрозу безопасности, если не контролируются должным образом. Включайте их только на время выполнения необходимых административных задач и отключайте сразу после завершения.

Что если я не знаю точное имя ВМ или ее ID?

Команды vim-cmd vmsvc/getallvms и esxcli vm process list выводят списки всех виртуальных машин на хосте с их именами и идентификаторами. Вы можете просмотреть эти списки, чтобы найти нужную ВМ по ее отображаемому имени (Display Name) или пути к конфигурационному файлу (.vmx).

Какие риски связаны с принудительным выключением ВМ (например, `power.off` или `esxcli vm process kill -t force`)?

Принудительное выключение ВМ сопряжено со следующими основными рисками:

  • Потеря данных: Любые несохраненные данные в приложениях или операционной системе ВМ будут потеряны.
  • Повреждение файловой системы: Резкое прекращение операций ввода-вывода может привести к повреждению файловой системы внутри ВМ, что может потребовать проверки диска при следующем запуске или даже привести к невозможности загрузки ОС.
  • Нарушение целостности приложений: Приложения, особенно базы данных, могут оказаться в несогласованном состоянии.

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

Команда `poweroff` в ESXi Shell выключит ВМ или хост?

Команда poweroff, выполненная напрямую в командной оболочке ESXi (без указания конкретной ВМ через vim-cmd или esxcli), приведет к выключению всего хоста ESXi, а не отдельной виртуальной машины. Это очень опасная команда, если ваша цель – выключить только одну ВМ. Для управления питанием конкретных ВМ используйте команды, описанные в данном руководстве, такие как vim-cmd vmsvc/power.off <VMID> или esxcli vm process kill --type=[hard|force] --world-id=<WorldID>.


Рекомендуемые запросы для дальнейшего изучения


Источники и полезные ссылки

community.broadcom.com
Test plan for ESXi hosts | ESXi
techdocs.broadcom.com
Test the Management Network

Last updated May 13, 2025

AI-assisted research. Sources, methodology and corrections · Source-checked guides and tools · Explore published answers

Ask Ithy AI