Vmware отключить спящий режим
Анализ статистики раздувания памяти
Вы можете проверить статистику всплывающей памяти в Esxtop, на вкладке Memory Ballooning у виртуальной машины, а также с помощью графиков производительности vCenter.
Вы увидите счетчик «MEMCTL/MB», который показывает общую активность раздувания (22110 МБ). Значения «curr» и «target» являются накопленными значениями «MCTLSZ» и «MCTLTGT», как описано ниже.
Мы должны искать столбцы «MCTL» для просмотра активности всплывающих окон для каждой виртуальной машины:
- «MCTL?» : Указывает, активен ли драйвер баллона «Y» или нет «N». Если инструменты VMware не установлены или не работают, это значение будет отображаться как «N»
- «MCTLSZ» : объем (в МБ) гостевой физической памяти, который фактически возвращается драйвером
- «MCTLTGT »: объем (в МБ) гостевой физической памяти, который будет восстановлен (целевая память). Если этот счетчик больше, чем «MCTLSZ», драйвер раздувается, вызывая восстановление большей памяти. Если «MCTLTGT» меньше, чем «MCTLSZ», то воздушный шар будет спускаться. Этот процесс дефляции работает медленно, если гость не запрашивает память.
- «MCTLMAX» : максимальный объем гостевой физической памяти, который может восстановить драйвер. По умолчанию 65% назначенной памяти.
Что такое Memory Ballooning?
Раздувание (Memory Ballooning) VMware - это метод восстановления памяти, используемый, когда хосту ESXi не хватает памяти. Ваши виртуальные машины, сконфигурированные с некоторым количеством оперативной памяти в их виртуальном оборудовании, и будут использовать память через приложения, работающие в памяти.
В виртуализации хост ESXi не знает, что выполняется на гостевой системе, а также гостевая ОС не знает, что она работает на виртуальной машине. Тогда как хост ESXi будет запрашивать память у гостевой операционной системы? , Вот где Memory Ballooning входит в игру. Есть общий драйвер, называемый vmmemctl.sys, который работает на виртуальной машине, которая доступна как часть VMware Tools. Когда хосту ESXi не хватает физической памяти, он использует раздувающий драйвер (vmmemctl.sys), чтобы определить, сколько памяти с виртуальных машин можно вернуть, чтобы предотвратить перестановку гипервизора. Этот драйвер затем использует часть памяти, которая, по мнению гостевой ОС, физически присутствует на виртуальной машине. Гостевая ОС затем поменяет память на диск, уменьшая нагрузку на физическую память хоста. Хост затем перераспределит эту память другим виртуальным машинам.
Прежде чем мы углубимся, я думаю, что было бы неплохо поговорить о различных типах памяти, которые есть в ESXi. У нас есть физическая память хоста, гостевая физическая память, но также и виртуальная память, которая находится внутри каждой виртуальной машины и где работают приложения.
- Физическая память хоста - физическая RAM каждого хоста ESXi (сервера). Это физический ресурс.
- Гостевая физическая память - память гостевой ОС. Память, которая видна гостевой операционной системе, работающей на виртуальной машине. Допустим, вы создали виртуальную машину под названием VM1 с 4 ГБ памяти. Гостевая ОС увидит 4 ГБ памяти, которая называется гостевой физической памятью.
- Виртуальная память - память, в которой приложение работает в виртуальной машине. Это непрерывное виртуальное адресное пространство, предоставляемое гостевой операционной системой приложениям. Это память, которая видна приложениям, работающим на виртуальной машине.
Memory Ballooning включается когда у хост-сервера VMware ESX 6% или менее свободной памяти. Для изъятия памяти используются виртуальные машины, у которых больше всего памяти по процессу idle memory tax. Если сравнивать Ballooning и Swapping, то последний проигрывает примерно так (база данных Oracle в виртуальной машине для OLTP-нагрузок, т.е. постоянный поток небольших транзакций):
Когда включается Memory Ballooning в VMware vSphere-01
Когда включается Memory Ballooning в VMware vSphere-02
Или локально в Advanced Settings виртуальной машины (то же самое, что и добавление строчки в vmx-файл конфигурации):
Кстати, в ESX 3.5 нам давали возможность изменить порог в 6%
Когда включается Memory Ballooning в VMware vSphere-03
Вкладка распределения ресурсов
Вы можете проверить статистику «Раздувание памяти» каждой отдельной виртуальной машины на вкладке «Распределение ресурсов виртуальной машины (Resource Allocation Tab)». Это конкретное значение VM Ballooned составляет 5,08 ГБ.
Поведение хоста при нехватке памяти
- Вы запускаете виртуальную машину с именем «VM1» и запускаете приложение под названием Microsoft Excel на этой виртуальной машине. Microsoft Excel как приложение будет запрашивать у гостевой операционной системы Windows память. Windows предоставит память приложению и отобразит ее из гостевой виртуальной памяти -> гостевая физическаяпамять
- Когда гостевая виртуальная память отображается на гостевую физическую память, гипервизор видит запрос памяти от гостя, а гипервизор отображает гостевую физическую память -> физическую память хоста . Вы создаете отчет в приложении Microsoft Excel в течение примерно 2 часов и закрываете приложение, как только закончите с ним.
- Когда вы закрываете Microsoft Excel, гостевая операционная система помечает память, выделенную для Microsoft Excel, как «свободную (free)» и делает ее доступной для других приложений, работающих на гостевой ОС, но ваш гипервизор не будет знать о «списке свободной памяти (free memory list)» вашей гостевой ОС, поэтому он хранит память, отображаемую в физической памяти хоста и которая загружает память на хост ESXi.
- Таким образом, когда узлу ESXi не хватает памяти или состояние памяти узла ESXi установлено в «Soft», появляется VMware Memory Ballooning. Гипервизор попросит «раздувать (inflate)» драйвер, установленный внутри виртуальной машины. Так как в гостевой операционной системе работает драйвер раздувания памяти, он получит память из «свободного списка (free list)». Гипервизор обнаружит память, возвращаемую драйвером всплывающей подсказки, и освободит ее на уровне физической памяти хоста и предоставит эту физическую память другим виртуальным машинам, которые нуждаются в памяти, вместо того, чтобы скидывать ее на диск. По умолчанию драйвер Balloon (vmmemctl.sys) может восстанавливать до 65% гостевой физической памяти. Например, вашей виртуальной машине выделяется 1000 МБ памяти, ее можно восстановить до 650 МБ, используя эту технику.
Вкладка Performance Charts в vCenter 5.5
Вы можете сгенерировать пользовательские графики производительности в vCenter, чтобы понять статистику Memory Ballooning в памяти всех виртуальных виртуальных машин на хосте ESXi или отдельных виртуальных машинах.
VMware Ballooning - не единственная техника восстановления памяти. Есть также другие методы, такие как VMware Transparent Page Sharing (TPS), который является проприетарным решением для прозрачного распределения страниц памяти между виртуальными машинами и устранения избыточных копий страниц памяти. Затем происходит сжатие памяти, при котором ESXi сжимает память до необходимости замены.
Функция приостановки (Suspend) - включена по умолчанию в Vmware Workstation 14. Сделано, это для экономии ваших ресурсов в хостовой операционной системе. Логика в это есть, тут расчет идет на то, что если к виртуальной машине давно не обращаются, то и ресурсы не нужно тратить, видимо пользователь забыл ее выключить. Вот для таких вещей и есть функция приостановки, которая как бы не выключает виртуальную машину, а замораживает ее на текущем момента, так сказать пауза. Вроде бы это хорошо, но бывают моменты, когда вы производите тестирование групповых политик или скриптов, которые должны отработать в определенное время, что подразумевает постоянную работу вашего стенда. Для таких вот ситуаций и есть потребность в отключении встроенной приостановки виртуальных машин в паузу (Suspend). Выглядит приостановки виртуальных машин в Vmware Workstation вот так.
Чтобы убрать эту функцию для конкретной виртуальной машины, вам необходимо выполнить вот такие действия.
- Вы останавливаете вашу виртуальную машину.
- Далее вы выбираете вашу виртуальную машину и смотрите в самом низу, в области "Virtual Machine Details". где располагаются ее конфигурационные файлы. Нас будет интересовать файл с расширением vmx (Про структуру файлов Vmware я уже рассказывал, советую вам почитать). В двух словах все настройки по оборудованию и всему остальному, находятся именно в этом конфигурационном файлике.
Переходим в расположение файлов виртуальной машины, и открываем файл vmx любым текстовым редактором, который для вас удобен. В моем случае, это Notepad++.
За отключение Suspend отвечает параметр suspend.disabled, который нужно активировать в конфигурационном файле. Для этого в самом низу добавьте строку:
Всем привет сегодня сделаю для себя заметку список команд ESXI, которая будет пополняться по мере поступления новых команд. Сюда же будут выкладываться ссылки на скрипты powercli. Бывают ситуации, что у вас не очень производительный интернет, а выполнить работу по настройке или мониторингу ESXI хоста вам необходимо, данный вариант будет идеален, плюс в консоли вы можете сделать больше, чем через графический интерфейс.
Для начала команды ESXi, которые вы можете выполнять через ssh доступ. Как включить ssh на ESXI читайте тут.
- reboot — перезагрузить хост
- poweroff — выключить хост
- esxcli system version get — узнать версию (номер) инсталлированной версии VMware ESXi
- uname -a - так же узнать версию 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
- dcui — работа с консолью сервера через ssh сессию
- chkconfig -l — статус работы демонов
- esxcli hardware memory get — размер установленной памяти
- esxcli software vib list — список установленных vib-пакетов
- esxcli network ip connection list — состояние активных соединений (аналог netstat)
- esxcli storage vmfs extent list — информация о примонтированных/подключенных томах VMFS
- esxcli hardware clock (get/set) — отображение/установка времени esxi-хоста
Команды для работы с виртуальными машинами:
- 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-адрес
- esxcli vm process list — получить список ВМ с их World ID
- esxcli vm process kill —type=[soft,hard,force] —world-id=WorldID — убиваем разными способами ВМ с нужным WorldID (помогает от зависших и не отвечающих VM)
Набрав эту команду, вы увидите все возможные варианты ее использования.Ниже список команд, которые мне показались полезными:
03.05.2021
itpro
VMWare, Windows 10, Виртуализация, Вопросы и ответы
Комментариев пока нет
Заметил одну неприятную особенность в гипервизоре VMWare Workstation. Если вы не используете виртуальную машину в течении некоторого времени, она автоматически приостанавливается функцией Suspend. Чтобы продолжить использование ВМ приходится нажимать кнопку Resume this virtual machine.
Функция автоматической приостановки (Suspend) в VMWare Workstation Player/ Fusion включена по умолчанию. Ее задача – экономия ресурсов хоста, которая автоматически замораживает состояние ВМ, не выключая ее полностью. Чтобы включить замороженную ВМ нужно несколько секунд, но лично мне эта функция мешает. Во-первых, это неудобно, если вы тестируете что-то на ВМ и ожидаете результатов процесса или скрипта; во-вторых, периодический Suspend ВМ и сброс состояния памяти на диск расходует ресурс SSD диска; в-третьих, я не хочу каждый раз ждать по несколько секунд пока VMWare Workstation возобновит работу ВМ.
Гипервизор может включить Suspend автоматически или, когда обнаружит что гостевая ОС переведена в спящее состояние. Например, в Windows 10 по умолчанию компьютер переводится в спящий режим через 30 минут неактивности (Control Panel\Hardware and Sound\Power Options\Edit Plan Settings -> Put the computer to sleep).
К сожалению, полностью отключить функцию Auto Suspend в настройках VMWare Workstation нельзя. Но вы можете в параметрах vmx файла конкретной ВМ запретить гипервизору переводить в состояние suspend.
Совет. Вы можете добавить строку в текстовый vmx файл с помощью следующей PowerShell команды:
Add-Content C:\VHD\win10x64\win10x64.vmx 'suspend.disabled = "TRUE"'
Проверьте, что строка была успешно добавлена в vmx файл ВМ:
get-content C:\VHD\win10x64\win10x64.vmx | Select-String "suspend"
09.10.2019
itpro
VMWare
комментариев 7
Иногда сталкиваюсь с тем, что определенная виртуальная машина на хосте VMWare ESXi зависает и ее нельзя никаким средствами выключить или перезагрузить из веб-интерфейса клиента vSphere. Перезагружать целиком ESXi сервер из-за одной виртуальной машины – не совсем целесообразно (особенно, если у вас всего один ESXi хост, или оставшиеся сервера в DRS кластере не потянут дополнительной нагрузки в виде виртуальных машин с перезагружаемого сервера). Рассмотрим основные способы принудительной остановки зависшей виртуальной машины в VMWare ESXi.
Если процесс виртуальной машины на сервере ESXi завис, она перестает реагировать на команды Reset / Power Off, и на любое действие выдает одну из ошибок:
-
The attempted operation cannot be performed in the current state ;
В таких случаях вы можете вручную остановить процесс виртуальной машины на хосте ESXi из командной строки ESXi Shell или PowerCLI.
Сначала определите на каком ESXi хосте запушена зависшая виртуальная машина. Для этого в интерфейсе vSphere Client найдите ВМ. Имя хоста, на котором она запущена, указано на вкладке Summary в секции Related Object -> Host.
Щёлкните по имени хоста ESXi. Вам нужно разрешить доступ к нему по протоколу SSH. Перейдите в Configure -> Services -> SSH -> Start.
Теперь вы можете подключиться к этому ESXi хосту через SSH с помощью клиента putty.
Выведем список ВМ, запушенных на хосте ESXi:
esxcli vm process list
Скопируйте идентификатор нужной виртуальной машины (World ID).
Чтобы завершить процесс зависшей виртуальной машинына хосте ESXi используется следующая команда:
esxcli vm process kill --type=[soft,hard,force] --world-id=WorldNumber
Как вы видите, есть три типа завершения процесса ВМ:
- Soft – самый безопасный способ завершить VMX процесс (похож на kill -SIGTERM);
- Hard – немедленное завершение процесса ВМ (kill -9);
- Force – самый жесткий режим завершения процесса, должен использоваться в последнюю очередь, если ничего другое не помогает.
Убедитесь, что для ВМ нет активных заданий по созданию снапшотов, бэкапов, и подобных операций, а у ВМ нет статуса Virtual Machine disks consolidation is needed. Иначе вы можете сломать свою ВМ и ее придется восставливать из бэкапа.
Попробуем мягко остановить ВМ с указанным ID:
esxcli vm process kill --type=soft -w=25089429
ВМ должна выключиться.
Вы можете остановить зависшую виртуальную машину с помощью PowerCLI (это удобно, т.к. при подключении к vCenter вам не нужно искать хост, на котором запушена ВМ и включать SSH доступ). Проверим, что ВМ запушена:
get-vm “web2" | select name,PowerStates
Принудительно остановите процесс ВМ командой:
stop-vm -kill "web2" -confirm:$false
Также вы можете остановить зависшую виртуальную машину с помощью утилиты ESXTOP.
В SSH сесиии введите команду esxtop, затем нажмите “c” для отображения ресурсов CPU и shift + V, чтобы отображать только процессы вириальных машин
Затем нажмите “f” (выбрать отображаемы поля), “c” (отобразить поле LWID- Leader World Id) и нажмите Enter.
В столбце Name найдите виртуальную машину, которую нужно остановить, и определите номер ее LWID по соответствующему столбцу.
Затем осталось нажать кнопку «k» (kill) и набрать LWID идентфикатор той виртуальной машины, которую нужно принудительно выключить.
Последний способ жёсткого выключения виртуальной машины – воспользоваться утилитой kill. Такой способ позволит остановить не только ВМ, но и все дочерние процессы.
Получим ID родительского процесса ВМ:
kill -9 24288474
После такого “hard reset”, установленная ОС запустится в режиме восстановления. В случае гостевой Windows, скрин будет выглядеть так.
Предыдущая статья Следующая статья
Как расширить диск виртуальной машины в VMWare
Установка VMware Tools на Debian, Ubuntu и CentOS
Сжимаем тонкий (thin) диск в ESXi 5
Создаем собственные правила файервола в ESXi 5.0
+5 Спасибо, очень помог!
А нет ли лекарства, чтобы виртуалки не зависали таким образом ? На сервере крутится единственная включенная вируталка с win2008r2/sql2008r2. Виснет она строго по ночам, без каких либо выявленных закономерностей: может месяцами не виснуть, может 2 раза за ночь. Достало просыпаться по ночам и перезагружать.
Странно — у меня баг с зависанием виртуальной машиной на ESXi встречался не столько часто…
Возможно стоит для начала обновить версию до последней версию ESXi и VMtools на гостевой ОС.
Если ничего не поможет — придется прикручивать какой-нибудь костыль в виде скрипта, периодически запускающегося на хосте ESXi и проверяющий доступность определенного сервиса на виртуалке (хотя бы тем же telnet-ом). Если сервис не отвечает — выполняем скрипт перезапуска виртуалки (по мотивам этого мануала)
Спасибо за инфу!
У меня были случаи подвисания виртуальных машин с Linux, Windows и FreeBSD — так что решение, похоже, не универсальное. Скорее тут какой-то глюх самого ESXi.
В любом случае по результатам, пожалуйста, отпишитесь…
К сожалению не помогла заплатка. зависания всё равно случаются.
Может память или ядра неправильно распределены?
Я заметил что бывают торможения всех виртуалок и начал оставлять запас по мощности.
Читайте также: