Иногда бывает, что ESXi теряет управление – отваливается от vCenter.
Что с этим делать расписано на русском в статье “Хост VMware ESXi в состоянии Not Responding на сервере vCenter – в чем может быть проблема?”
Опытные админы, обычно, идут в консоль и подают 2-3-4 команды:
1 2 3 |
/etc/init.d/hostd restart /etc/init.d/vpxa restart /etc/init.d/rhttpproxy restart |
либо полный фарш:
1 |
services.sh restart |
Недавно у нас случилась аналогичная ситуация – отвалилось несколько хранилищ (datastore) и ESXi решил прикурить: vCenter отпал, хостовый веб-клиент отпал, вышеупомянутые команды якобы отрабатывали с нулевым результатом. Хорошо хоть виртуальные машины продолжали работать.
В итоге решили перезагрузить хост. Вот только для этого нужно было погасить виртуальные машины – часть выключили штатно изнутри, но некоторым нужно подать команду shutdown снаружи.
Типовые команды для выключения ВМок описаны в статье “Powering off an unresponsive virtual machine on an ESXi host (1004340)”
Но у нас-то случился клинический случай и ESXi не отрабатывал команд esxcli. Соответственно, пришлось искать более низкоуровневое решение – localcli.
localcli – это набор команд для работы технической поддержки VMware. Команды localcli эквивалентны командам ESXCLI, но обходят hostd. Команды localcli предназначены только для ситуаций, когда hostd недоступен и не может быть перезапущен.
Предупреждение: Использование LOCALCLI официально не поддерживается. Все действия выполняются на свой страх и риск.
Однако команда очень интересна тем, что при использовании специального внутреннего каталога плагинов появляются некоторые недокументированные пространства имен. Вы можете просмотреть эти пространства имен и открыть для себя некоторые интересные функциональные возможности. Просто войдите в ESXi и используйте команду
1 |
localcli --plugin-dir /usr/lib/vmware/esxcli/int/ |
результат вывода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
[root@esxi01:~] localcli --plugin-dir /usr/lib/vmware/esxcli/int/ Usage: localcli [disp options] <namespaces> <command> For help please run localcli --help Available Namespaces: boot operations for system bootstrapping daemon Commands for controlling daemons built with Daemon SDK (DSDK). debug Options related to VMkernel debugging. These commands should be used at the direction of VMware Support Engineers. device Device manager commands deviceInternal Device layer internal commands. esxcli Commands that operate on the esxcli system itself allowing users to get additional information. fcoe VMware FCOE commands. graphics VMware graphics commands. hardware VMKernel hardware properties and commands for configuring hardware. hardwareinternal VMKernel hardware properties and commands for configuring hardware, which are not exposed to end users. hyperclockinternal Operations on HyperClock subsystem, a general framework for publishing hypervisor time to virtual machines. The operations are not exposed to the end user. iscsi VMware iSCSI commands. network Operations that pertain to the maintenance of networking on an ESX host. This includes a wide variety of commands to manipulate virtual networking components (vswitch, portgroup, etc) as well as local host IP, DNS and general host networking settings. networkinternal Operations used by partner software, but are not exposed to the end user. These operations must be kept compatible across releases. nvme VMware NVMe driver operations. rdma Operations that pertain to remote direct memory access (RDMA) protocol stack on an ESX host. rdmainternal Operations that pertain to the remote direct memory access (RDMA) protocol stack on an ESX host, but are not exposed to the end user. These operations must be kept compatible across releases. sched VMKernel system properties and commands for configuring scheduling related functionality. software Manage the ESXi software image and packages storage VMware storage commands. system VMKernel system properties and commands for configuring properties of the kernel core system and related system services. systemInternal Internal VMKernel system properties andcommands for configuring properties of the kernel core system. user VMKernel properties and commands for configuring user level functionality. vm A small number of operations that allow a user to Control Virtual Machine operations. vmci VMCI commands for internal use vsan VMware vSAN commands Available Commands: |
Осталось написать скрипт массового выключения ВМок. Пока думал как написать решил поискать готовые решения и поисковик выдал примечательную статью о шифровальщиках для VMware vSphere c готовым скриптом New Linux-Based Ransomware Cheerscrypt Targeting ESXi Devices Linked to Leaked Babuk Source Code. В статье косяки с кавычками и апострофами, так что держите верный код:
1 |
esxcli vm process kill –type=force –world-id=$(esxcli vm process list|grep "World ID"|awk '{print $3}') |
Ну, а для нашей задачи такой жести не надо, но нужны другая команда и обычное выключение:
1 |
localcli vm process kill –type=soft –world-id=$(localcli vm process list|grep "World ID"|awk '{print $3}') |
Если же перед вами стоят другие задачи, но esxcli не работает, то попробуйте использовать доступные пространства имен для localcli.
https://kb.vmware.com/s/article/1003490
А еще запрещается использование services.sh restart при использовании lacp
Данное KB указано в статье
При отвале флешки может помочь рескан HBA, а вот рестарт сервисов почти гарантированно лишит консоли и SSH:
https://vninja.net/2021/06/01/esxi-7.0-sd-card-issue-temporary-workaround/
Расшифровка прочих команд
https://www.virten.net/2015/10/whats-inside-an-esxi-vm-support-bundle/