Гипервизоры VirtualBox/WorkStation/Fusion/ESXI/Hyper-V/XEN; KVM/QEMU (oVirt/Proxmox VE)

  • Виртуализировать приложение, которое задач виртуализации сопротивляется – занятие зачастую сложное и неблагодарное (с linkmeup telecom 98).
  • Open VM Tools (open-vm-tools) – аналог проприетарных дополнительных пакетов в VM типа VMware Tools, которые позволяют с ней лучше взаимодействовать гипервизору (например, гипернация/мягкое отключение) и пользователю (драйвера/разрешение экрана, копипаст, захват мыши). На каких то дистрибутивах установлены сразу, но не включены (sudo systemctl enable –now open-vm-tools), на каких то не установлены (sudo apt install open-vm-tools).
Open VM Tools (open-vm-tools) is the open source implementation of VMware Tools for Linux and FreeBSD guest operating systems.
The open-vm-tools suite is bundled with some Linux operating systems and is installed as a part of the OS, eliminating the need to separately install the suite on guest operating systems. All leading Linux vendors support the open-vm-tools suite on vSphere, Workstation, and Fusion, and bundle open-vm-tools with their product releases. 
List of operating systems with open-vm-tools
Red Hat Enterprise Linux 7.0 and later releases
SUSE Linux Enterprise 12 and later releases
Ubuntu 14.04 and later releases
CentOS 7 and later releases
FreeBSD 10.3, 10.4 & 11.1
Debian 7.x and later releases
Oracle Linux 7 and later
Fedora 19 and later releases
openSUSE 11.x and later releases
  • Для VM чаще всего лучше отключать режимы типо гипернации/отключение экрана и ЖД по времени – если это и работает, то зачастую плохо или просто мешает.
  • Файлы с образом виртуальной машины:
    • name.ova (или name.ovf + name.vmdk) – для в ESXi и остальных сред виртуализации
    • name.vhd (или name.vhdx) – для развертывания в среде Microsoft Hyper-V
    • name.raw – для развертывания в среде KVM
    • name.qcow2 – для развертывания в среде KVM

 

VirtualBox

В контексте виртуализации снимок машины это огонь  – как просто и эффективно решить задачу по бекапу данных – регулярному или разовому.

Мой первый гипервизор. Имеет существенные недостатки:

  • Совместимость – что не запускаетсч на VirtualBox, зачастую работает на VMware Workstation, Player, ESXi.
  • Судя по инфе с сайта eve-ng virtual box не использует аппаратное ускорение, в отличии от Workstation.
VIRTUAL BOX DOESN'T SUPPORT HW ACCELERATION !!! AVOID USING IT !!!!

Сеть

Доступ с host машины по SSH на guest в VirtualBox

Варианты:

  • сделать интерфейс bridged (описание ниже)
  • сделать интерфейс “Виртуальный адаптер хоста” (тоже ниже)
  • сделать проброс порта через NAT (может не работать с антивирусом)

Типы интерфейсов

В VirtualBox очень богатая настройка сетевых интерфейсов виртуальной машины. Самих сетевых интерфейсов можно на виртуалке поднять до четырех, а их настройки очень гибки (отключение, смена MAC, смена типа, проброс портов).

Есть четыре типа интерфейсов (полностью о настройках и типах сетевых подключений тут):

NAT Network Adress Translation – тип по умолчанию. VM находится за “NAT” интерфейса машины-хоста.

Сетевой мост (Bridged) – VM создает мост между своим сетевым интерфейсом и интерфейсом хост-машины. Таким образом VM попадает в один broadcast-домен с интерфейсом хоста и может получить независимый от хост-машины адрес. К примеру, для того чтобы зайти на VM с хостовой машины я использовал именно этот тип (бинд на Ethernet интерфейс), а не проброс порта т.к. он самый простой – VM получило независимый от хост-машины адрес, а я далее, для удобства, прописал его в static-dhcp. У виртуалки при режиме Bridge свой MAC-адрес на порту. По сути режим представляет из себя Secondary адрес на сетевой карте хост-машины для виртуалки.

        В Bridged схемы возможна проблема со связностью (судя по всему broadcast/multicast) между двумя VM, использующими bridged схему на одной хостовой машине. Решается использованием внутренней сети между VM (Internal Network, vmnet).

DGS-3620-28SC:admin#show fdb po 24
1    default   00-0F-FE-F1-D3-61 24    Dynamic Forward - 192.168.1.2     
1    default  08-00-27-31-A9-E7 24    Dynamic Forward - 192.168.1.100
Total Entries: 2

Виртуальный адаптер хоста (Host Only) – p2p связь между хост-машиной и гостевой, по сути это отдельная сетка между хостом и guest. Настроить интерфейс можно статикой (см. настройки в “Виртуальные сети хоста” или по DHCP.

Внутренняя сеть (Internal Network) – связь между хост-машиной и другими гостевыми.

Direct Path IO, SR-IOV (SR IOV)

  • DirectPath I/O менее гибкая технология – выделяется полностью сетевая карта, а не виртуальная сетевая карта (Virtual Function) как в случае с SR-IOV (которых может быть несколько).
SR-IOV offers performance benefits and tradeoffs similar to those of DirectPath I/O.

With DirectPath I/O you can map only one physical function to one virtual machine. SR-IOV lets you share a single physical device, allowing multiple virtual machines to connect directly to the physical function.

SR-IOV allow for a single physical device to be shared amongst multiple guests.

In the Number of virtual functions text box, type the number of virtual functions that you want to configure for the adapter.

A value of 0 means SR-IOV is not enabled for that physical function.

82599EB 10-Gigabit SFI/SFP+ Network Connection
82599EB 10-Gigabit SFI/SFP+ Network Connection
82599 Ethernet Controller Virtual Function
82599 Ethernet Controller Virtual Function
  • Обе технологии (DirectPath I/O и SR-IOV)
    • увеличивают производительность за счет исключения из схемы обработки vSwitch.
    • имеют ограничения – использование vMotion, snapshots
Some virtual machine operations are unavailable when PCI/PCIe passthrough devices are present.
You cannot suspend, migrate with vMotion, or take or restore snapshots of such virtual machines. 

Like DirectPath I/O, SR-IOV is not compatible with certain core virtualization features, such as vMotion.
    • требуют при использовании (пробросе NIC) полный доступ к ОП для VM – т.е. не получится выделить 8GB на платформе с 8GB RAM, как если бы эти технологии не использовались.
Reserve all memory
The VM will not power on until its memory reservation equals its memory size.

Разное

  • Для использования общей папки расшаренной с основной системы для гостевой в гостевой нужно обратится к общей папке. В Windows (можно просто зайти в раздел Сеть в “Мой компьютер”) и Linux используются разные команды для монтировки общей сетевой папки:
net use x: \\vboxsvr\1 - windows
mount -t vboxsf 1 mount_point - UNIX
  • VM машина Virtual Box с одного компа переносится легко на другой. Просто копируешь всю папку с VM, включая файл .vbox с параметрами машины и .vdi с образом и файлами машины. Далее заходишь в VirtualBox на новом ПК, выбираешь Машина -> Добавить и указываешь .vbox файл.
  • Между разными гипервизорами VM можно переносить используя расширение OVA/OVF
OVF (Open Virtualization Format) — открытый стандарт для хранения и распространения виртуальных машин. Стандарт описывает открытый, переносимый, расширяемый формат для распространения образов виртуальных машин. Стандарт OVF не привязан к какой-либо реализации гипервизора или аппаратной архитектуре.

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

Весь каталог может быть распространен в виде пакета Open Virtual Appliance (OVA), который представляет собой файл архива TAR с внутренним каталогом OVF.

Поддерживается в:

VirtualBox от Oracle;
VMware ESX, VMware Workstation от VMWare.
  • VirtualBox по умолчанию выделяет одно ядро на виртуалку. Можно изменить (отключаешь виртуалку, перетягиваешь “ползунок”, включаешь).
  • Resize (увеличение/уменьшение) размера виртуального диска vdi в VirtualBox на Windows раньше возможен был только через консоль, теперь легко делается через GUI (менеджер -> инструменты) просто перетягиванием бегунка для нужного vdi. Если при попытке resize выдает VBOX_E_FILE_ERROR (0x80BB0004) – проверить что места достаточно, перезагрузить ПК.
  • Если выдает VERR_VD_IMAGE_READ_ONLY – сначала перезагрузить ПК, попробовать запустить VB от имени администратора, потом проверить отсутствие галки “только чтение” и только потом переустанавливать/шаманить с правами.

 

 

XCP-NG

  • Популярен
  • Основан на XEN
  • `Имеет коммерческую поддержку
  • Поддерживает в том числе “сетевые” (network function) VM – pfsense например

 

 

VMWARE
  • VMware – де-факто стандарт по виртуализации. У меня еще в 2015 была виртуалка, которая крутилась на корпоративном гипервизоре VMware vSphere в Билайне. Юзал так же VMware Workstation для работы с GNS3. В vSphere можно поднимать IOS-XE (Cisco Nexus 1000V).
    У VMware в разы лучше эмуляция. То, что не идет на виртуалке VirtualBox - пойдет 100% на VMware.
  • (python, vmware) Методы взаимодействия с VMware используя python через API: Pyvmomi (official, supported now), pysphere (not official, deprecated from 2013). Сравнение явно в пользу pyvmomi.
Workstation/Fusion

Пример Export’а машины в Workstation Player через командную утилиту OVFTool.

C:\Program Files (x86)\VMware\VMware Player\OVFTool>ovftool "D:\New VMs\Virtual Machines\dev.vmx" "D:\dev.ovf"

Для Workstation при импорте иногда (в случае ошибки на размер файла) требуется отключение проверки на размер vmdk (test-vm.vmx), открываем VMX файл, добавляем строку. Такое было при использовании сетевого диска для сохранения VM. В целом, лучше не использовать просто и вероятнее всего с такими проблемами не столкнешься.

\\network-path\test-vm\test-vm.vmx
diskLib.sparseMaxFileSizeCheck= "FALSE"
Vmware fusion

Аналог бесплатного VMware Workstation для MAC OS. Во многих случаях значительно производительнее VirtualBox т.к. поддерживает nested virtualization (например, нужно для GNS3/EVE-NG).

В Fusion/Workstation встроен impairment функционал для виртуалок.

В случае проблемы Could not open /dev/vmmon: Broken pipe” поможет разрешение на приложения VMware в политиках безопасности.

https://communities.vmware.com/thread/600496
VMWARE vSphere & ESXI

Из опыта с vSphere/ESXI:

  • VMware Compatibility Guide
  • ESXi бесплатной версии достаточен для многих HOME/SOHO задач, какие можно ждать особенности
    • при установке на старое/новое железо может потребоваться изменение установочного образа ESXi путем добавления в него необходимых драйверов, в моем случае это были драйвера Realtek rtl8111e для ESXi 6.7
    • В ESXi 6.7 autostart VM (непостоянно рабочий гипервизор) настраивается с пары кликов (manage -> system -> autostart), в том числе последовательность загрузки VM во время autostart
    • Graceful отключение настраивается в том же разделе что и автостарт – нужно выбрать Shut down action (OS shutdown) вместо Power Off (pulling the off cable). Так же требуется установка VMware Tools (Actions -> Guest OS -> Install VMware Tools). VMware Tools is not installed in this virtual machine. VMware Tools allows detailed guest information to be displayed as well as allowing you to perform operations on the guest OS, e.g. graceful shutdown, reboot, etc. You should install VMware Tools. 
    • исчетение evaluation периода (подробнее ниже)
    • если хочется запретить взаимодействие с внешней сетью интерфейса самого гипервизора (уязвимости/обновления и проч) – обнуляем default route и (дополнительно) настраиваем deny правило на домашнем роутере
    • можно и привязать ядра cpu через affinity к определенным VM и создать эти ядра как ядра на одном сокете (лучше для windows guest – см. ниже)
  • 3 и более vCPU в VM на базе Windows (сталкивался на Windows 7 PRO и ESXi 6.7) могут в системе не включится, если они на гипервизоре созданы как отдельные сокеты (1 сокет = 1 vCPU). При этом если создать такое же количество (напр. 8) используя 2 сокета и 4 ядра на сокет – все будет работать корректно (продублировал в гипервизоры и windows).
  • ESXi можно устанавливать на SSD, даже нужно. Так же на версиях до 7-ой можно было устанавливать даже на USB flash.
I would choose to use the SSD disks, as my experience tells me, that booting ESXi from a USB stick is terribly slow, which you don't want it to be when you are rebooting in the middle of the day during work hours.
US$ 1,164.15
  • ESXi 5.5.0 и 6.7.0 устанавливаются с использованием unetbootin 6.6.1. С Rufus могут быть проблемы из-за файла menu.c
  • ESXi 6.7.0 требует сложный пароль при установке вручную (при авто-развертывании не обязательно)
  • В свежих версиях vSphere по умолчанию есть ограничение на copy-paste из виртуальной машины и в нее – решается тюнингом настроек VM в vSphere и обновлением VMWare Tools в VM.
https://kb.vmware.com/s/article/57122
Name: Value:
isolation.tools.copy.disable FALSE
isolation.tools.paste.disable FALSE
isolation.tools.setGUIOptions.enable TRUE
  • – Отключение HyperThreading
    – Включение Intel® Turbo BoostTechnology 2.0
    – Настройка Scheduling Affinity – используем только ядра одного CPU
    – Настройка SR-IOV для создания 6 Virtual Function сетевых карт в сторону коммутатора HPE5900 JC772A
    The Palo Alto Networks Next Generation Firewall VM-700 was instantiated on the KVM hypervisor directly, using 16 CPU cores and 56 Gigabyte of RAM. Hyperthreading was disabled and Intel® Turbo BoostTechnology 2.0 was enabled in the compute node.The CPU cores from 1 to 16 on Non Uniform MemoryAccess (NUMA) node 0 were pinned for the VM-700.The remaining 6 cores on node 0 and all cores onnode 1 remained idle. Palo Alto Networks achieves itsmaximum scale with 16 dedicated cores. To fullyutilize HPE server configuration with a total of44 cores, multiple VM-700 would need to bedeployed. Since there was no virtualized loadbalancer available distributing the workload, testswere conducted with just one VM-700. Three SR-IOV virtual functions (VF) were created foreach physical port of the HPE 40GbE dual-port NIC;in total, 6 VFs were bound to Palo Alto Networks VM-700 as shown in Figure 3.
    The compute node and the traffic generator were connected through an HPE5900 Series JC772A switch.
  • Настройка Scheduling Affinity может значительно влиять на performance устройства – при динамическом распределении средствами ESXi производительность Fortitester была нестабильной с крайними значениями меньше на 10-20% от максимальной производительности. После “жесткого” binding ядер одного из процессоров (в двух-процессорном сервере) к VM производительность стала стабильной и всегда максимальной (для максимума в Line-Rate, возможно нестабильность ушла “за line-rate”).
The Scheduling Affinity option gives you detailed control over how virtual machine CPUs are distributed across the host's physical cores. 
The option supports hyperthreading if hyperthreading is enabled. 
ESXi generally manages processor scheduling well, even when hyperthreading is enabled. 
These settings are useful only for fine-tuning critical virtual machines. Using CPU affinity, you can assign a virtual machine to a specific processor.
  • При заливки крупных файлов в ESXi 6.7 через WEB в datastore полезно отключить idle timeout, иначе можно получить фейлы upload из-за idle
settings -> application timeout -> off
  • Устранение дублирования символов в vSphere client (web/app) возможно через файл конфигурации для VM (задержка отклика клавиатуры keyboard.typematicMinDelay = “2000000”).
  • ESXi если в management после установки нет ethernet интерфейсов – возможно ESXI не имеет драйверов на них, может помочь апгрейд (помогало в случае 5.5 -> 6.7).
  • ESXi 5.5 (на базе flash) и 6.7 удобный WEB, vSphere клиент не нужен, да и он deprecated (Legacy C# Client)
  • Nested виртуализация (т. е. в VM гипервизора VMware ESXi запускаем еще один гипервизор типа VMware Workstation) требует включения “Expose hardware assisted virtualization to the guest OS” в гипервизоре, иначе возникает ошибка “This host does not support intel VT-x

  • В ESXi можно поменять согласование линка на сетевой карте, но между двумя ESXi может не получится поднять 100 full:
      • линк будет падать при статичных настройках 100 full с двух стороны
      • линк не будет падать, но согласование с одной стороны будет 100 half при автосогласовании с одной стороны
        При этом статичная настройка корректно работает с коммутатором (видимо проблема связана с mdi).
  • В ESXi легко пробросить CD/DVD привод – создаем ISO, например с помощью “ISO Creator” (freeisocreator.com), далее в vSphere Client или WEB выбираем “connect to iso image on local disk”. Пути к файлам обязательны, иначе будет silent error.

  • Distributed Switch вместо обычного vSwitch может пригодится при организации связи между несколькими eSXI гипервизоров в рамках одного vSphere.
  • Работа с томами VMDK:
    • Используя vmdk + vmx легко развернуть ОС
    • *-flat.vmdk хорошо сжимаются 7zip и другими compression тулами (7zip LZMA2 “скоростной”):
      • 120GB -> 23GB
      • 100GB -> 20GB
    • Расширить том очень легко – добавляешь памяти на диск в ESXi, расширяешь в настройках Windows том. Проблемы могут быть если созданы snapshot – будет ошибка Failed – Invalid operation for device ‘3’. в GUI и ошибка ‘The called function cannot be performed on partial chains. Open the parent virtual disk.’ в VMRC. В таком случае достаточно удалить все snapshot.
    • Сжать том (shrink) можно было только в старых версиях ESXi/vSphere. Лучше это никогда не делать т.к. это опасно. Лучше создать небольшой том и перенести на него данные, далее дропнуть старый.
shrink vmdk
Gary D Williams This person is a Verified Professional
VMWARE EXPERT
Shrinking a VMDK is no longer supported and it never was a good idea. If you can, stand up another, smaller VMDK, move the data to it then delete the oversized one.
  • При импорте ova на ESXi 5.5 через vSphere Client 5.5 можно столкнуться с проблемой того, что vSphere Client 5.5 не поддерживает SHA256 hash в Manifest. Нужно конвертировать, используя ovftool ((или удалять файл с контрольной суммой – еще проще, подробнее ниже)). В теории можно так же WEB c VMware Client Integration Plug-in, но по факту сам плагин у меня не заработал в Chrome и использовал ovftool.
Fix OVA file importing error on VMware: "The OVF package is invalid and cannot be deployed"
The following manifest file entry (line) is invalid: SHA256(filename-ovf)=sha256-hash-string
C:\Program Files\VMware\VMware OVF Tool> .\ovftool.exe --shaAlgorithm=SHA1 D:\old-sha255.ova D:\new-sha1.ova

Opening OVA source: D:\old-sha255.ova
The manifest validates
Opening OVA target: D:\new-sha1.ova
Writing OVA package: D:\new-sha1.ova
Transfer Completed
Completed successfully
  • При импорте ova на ESXi 5.5 можно столкнуться с ошибкой отсутствия поддержки каких-либо интерфейсов (напр. Serial для Cisco FirePower). Решается простым удалением данного интерфейса (конечно, если по факту он действительно не критично в вашем деплое).
Failed to deploy OVF package: Incompatible device backing specified for device
https://kb.vmware.com/s/article/2128084
<Item>
<rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
<rasd:ElementName>Serial port 1</rasd:ElementName>
<rasd:InstanceID>18</rasd:InstanceID>
<rasd:ResourceSubType>vmware.serialport.device</rasd:ResourceSubType>
<rasd:ResourceType>21</rasd:ResourceType>
<vmw:Config ovf:required="false" vmw:key="yieldOnPoll" vmw:value="true"/>
</Item>
  • При импорте ova на ESXi 5.5 можно столкнуться с ошибкой отсутствия на текущей системе образа ОС, которая устанавливалась через CD-ROM. “Failed to deploy OVF package: File ds:///vmfs/volumes/36b401f-680d4bc0-1ff7-001517d3bf0c/_deviceImage-0.iso was not found”
    • лучше всего, если есть возможность, удалить из изначальной VM (которую пытаемся импортировать) CD-ROM  и сделать повторный экспорт
    • иначе требуется изменение OVF файла
      For this particular problem, locate the line 'vmware.cdrom.iso' and change this to 'vmware.cdrom.remotepassthrough'.
      https://communities.vmware.com/t5/Open-Virtualization-Format-Tool/Failed-to-deploy/m-p/1785416
  • При импорте ova можно столкнуться с ошибкой отсутствия поддержки нужного количества ядер в виде сокетов (напр. 32 или 64 сокета с одним ядром на каждое), в таком случае требуется поддержка
    • как со стороны гипервизора: virtualhw.version = “8”
    • так и со стороны ОС гостевой системы: Все 32-разрядные версии Windows 7 поддерживают до 32 ядер процессора, а 64‑разрядные версии — до 256 ядер
  • При импорте ova на ESXi 5.5 пришлось изменить ova:
    • Распаковываем ova с помощью 7-zip – извлекаем ovf, vmdk, mf файлы (поэтому best practice при импорте VM – сразу сохранять ее не в OVA, а в виде OVF + VMDK); извлекать нужно т.к. после сохранения измененных параметров ova через 7-zip он перестает распознаваться vSphere 5.5
    • Изменяем в ovf файле vmx-11 на vmx-10
      "The following manifest file entry (line) is invalid: SHA256(filename-ovf)=sha256-hash-string"
      
      "Unsupported hardware family vmx-11"
    • Удаляем файл *.mf с контрольными суммами, иначе
      • придется пересчитывать из sha256 в sha1 (напр. с помощью ovftool, описал выше)
      • придется пересчитывать после изменения vmx
  • Для экспорта VM в случае глюков gui интерфейсов (сталкивался на WEB 6.7)/необходимости автоматизации можно скачать vmdk прямо с datastore или использовать CLI OVFTool и Export-VApp.
OVFTool - Example of how to use OVFTool can be found here: https://www.michellelaverick.com/2018/04/using-ovftool/

Export-VApp - vSphere PowerCLI Cmdlets Reference https://www.vmware.com/support/developer/PowerCLI/PowerCLI51/html/Export-VApp.html
  • Установка ОС через образа ISO в виде виртуального CD на VM
    • connect to iso on local disk может быть серым из-за того, что VM отключена или это глюк клиента vSphere (помогает перезагрузка клиента)
    • после того, как заработало, попадаем в BIOS отправив ctrl+alt+del через консоль и нажав F2, выставляем загрузку с CD
  • Разворачивание VM с использованием vmdk + vmx – загружаем в datastore оба файла, ПКМ по VMX -> Register VM. Если VMX файла нет или в таком режиме разворачивается с ошибками и не хотим мучаться с конвертерами (vmkfstools)  – можно примонтировать диск при создании VM.
    https://serverfault.com/questions/579866/deploying-vm-from-vmdk-vmx-file
  • PCI passthrough
    • На моей практике PCI-E PassThroughput против vswitch (ESXI) или тем бодее virtio (KVM) увеличивает производительность в разы (vswitch) и десятки раз (virtio). Пример реальных дропов на vswitch при нагрузке (увеличение очереди и другие шаманства не помогли от них избавиться) – см. ниже в управлении через CLI.
    • ESXi может не прокидывать passthrough из-за некорректных настроек в BIOS в контексте виртуализации. Самое простое для начала – сбрасываем в default.
Task Update Passthru Config
Key haTask-ha-host-vim.host.PciPassthruSystem.updatePassthruConfig-882758993
Description Update PCI passthrough device configuration
State Failed - An error occurred during host configuration.
  • VM может не запускаться из-за кривых настроек (куча разных причин). Например:
    • Нужно memory reservations поправить в соответствии с размером памяти.
Failed - Invalid memory setting: memory reservation (sched.mem.min) should be equal to memsize(5192).
    • кривых настроек дисков – может помочь смена scsi на IDE
Failed - Unsupported or invalid disk type 2 for 'scsi0:0'. Ensure that the disk has been imported.

I solved the issue by changing the Virtual Device Node from SCSI controller 0 to IDE controller 0 at the hard disk settings of the virtual machine.
  • CTRL+ALT снять захват из Console (если забыть можно долго мучатся)
  • В vSphere очень просто сделать snapshot (backup) текущей системы, главное чтобы были права
  • Если install vmware tools не активно (серое) – отключаем CD/flopy
    Had the same issue. Like the answer posted before, I had to shutdown the machine and change both the floppy drive and cd drives to "Auto detect" and then power on the machine.
  • в vSphere можно посмотреть загрузку CPU/memory/сети за день/неделю/месяц/год/кастом
• количество пакетов среднее макс
• оперативная память среднее макс
• жесткий диск
• CPU среднее макс
• сеть среднее макс
  • периодически в vSphere появляются сообщения о миграции виртуальной машины (VM migration) из-за изменения потребления ресурсов (DRS – Distributed Resource Scheduler):
    13.12.2015 12:23:21 <Server_name> info Alarm 'Virtual machine total disk latency' changed from Gray to Green
    13.12.2015 12:23:21 <Server_name> info Alarm Alarm 'Virtual machine memory usage' changed from Gray to Green
    13.12.2015 12:23:21 <Server_name> info Alarm Alarm 'Virtual machine CPU usage' changed from Gray to Green
    13.12.2015 12:22:28 <Server_name> info Resource allocation changed Migrate virtual machine
  • “Unsuccessful EFI network VMware doesn’t boot Windows 10 Installer.” – выбираем вместо UEFI загрузку BIOS (VM options -> boot options).
Управление ESXi через CLI по SSH

Версия ESXi

~ # vmware -vl
VMware ESXi 5.5.0 build-3248547
VMware ESXi 5.5.0 Update 3

Изменение hostname ESXi

esxcli system hostname set –host=hostname
esxcli system hostname set –fqdn=fqdn
Список VM с именами VM и их ID.
> esxcli vm process list
Win10-experiments
World ID: 2099339
Process ID: 0
VMX Cartel ID: 2099337
UUID: 56 4d 1d ee 48 c7 9b 63-73 bd 9f e9 b2 29 dd 90
Display Name: Win10-experiments
Config File: /vmfs/volumes/643b0919-87228d82-6cb3-3085a9a10821/Win10-experiments/Win10-experiments.vmx
Список VM с номерами VM, используемыми носителями и VMX файлами.
> vim-cmd vmsvc/getallvms
Vmid Name File Guest OS Version Annotation
1 old-Win10-backups [Barracuda-150GB] Win10/Win10.vmx windows9_64Guest vmx-14
2 Win10-experiments [SSH-OCZ-Vertex3-100GB] Win10-experiments/Win10-experiments.vmx windows9_64Guest vmx-14
3 Win10-backups [WD-1.8TB] Win10/Win10.vmx windows9_64Guest vmx-14
Отключение процессов VM по World ID VM. Якобы “помогает от зависших и не отвечающих в vSphere Client ВМ”, но мне не помогло – задача автостарта не сбрасывалась 🙂 ((root cause – умерший SSD; для отмены задачи помогла только разрегистрация VM, но зависания в других задачах из-за root cause сохранились))
> esxcli vm process kill --type=[soft,hard,force] --world-id=WorldID 
> esxcli vm process kill --type=hard --world-id=2099529
Аналогия – отключение задач VM. По номеру VM получаем ее задачи, по названию задачи убиваем. У меня так же не сработало ((root cause – умерший SSD; для отмены задачи помогла только разрегистрация VM, но зависания в других задачах из-за root cause сохранились)).
> vim-cmd vmsvc/get.tasklist 3
(ManagedObjectReference) [
'vim.Task:haTask-3-vim.VirtualMachine.powerOn-47'
]
> vim-cmd vimsvc/task_cancel 'haTask-3-vim.VirtualMachine.powerOn-47'

Продление evaluation по ssh. После 60 дней отключаются advanced фичи и нужно запросить бесплатную лицензию (иначе отключенные vm не включить), но evaluation период при необходимости легко продливается даже после истечения, без каких-либо “кряков”. Продление делается по SSH (включаем по консоли на hypervisor) через подмену старого файла шаблоном. Работает как на ESXi 5.5, так и на ESXi 6.7.

If 60 days have passed and no license was applied, then all advanced features are locked, running VMs continue to run but you cannot start powered off VMs. ESXi hosts connected to vCenter Server are disconnected in this case. You'll need to apply a license (free or paid) to make your ESXi server work again.

rm -r /etc/vmware/license.cfg cp /etc/vmware/.#license.cfg /etc/vmware/license.cfg /etc/init.d/vpxa restart
Пример реальных дропов на vswitch при нагрузке (увеличение очереди и другие шаманства не помогли от них избавиться).
~ # esxcli network vm list
World ID Name Num Ports Networks
-------- ---------------------- --------- ------------------------------------------
40713 Test-VA 4 VM Network, VM Network, VM Network, attack

~ # esxcli network vm port list -w 40713
Port ID: 33554440
vSwitch: vSwitch0
Portgroup: VM Network
DVPort ID:
MAC Address: 00:00:00:00:00:00
IP Address: 0.0.0.0
Team Uplink: vmnic1
Uplink Port ID: 33554434
Active Filters:

Port ID: 33554441
vSwitch: vSwitch0
Portgroup: VM Network
DVPort ID:
MAC Address: 00:00:00:00:00:00
IP Address: 0.0.0.0
Team Uplink: vmnic1
Uplink Port ID: 33554434
Active Filters:

Port ID: 33554442
vSwitch: vSwitch0
Portgroup: VM Network
DVPort ID:
MAC Address: 00:0c:29:26:7c:1a
IP Address: 0.0.0.0
Team Uplink: vmnic1
Uplink Port ID: 33554434
Active Filters:

Port ID: 50331653
vSwitch: vSwitch1
Portgroup: UPLINK
DVPort ID:
MAC Address: 00:0c:29:26:7c:24
IP Address: 0.0.0.0
Team Uplink: vmnic3
Uplink Port ID: 50331650
Active Filters:

~ # esxcli network port stats get -p 50331653
Packet statistics for port 50331653
Packets received: 1846312006
Packets sent: 210
Bytes received: 2795316313108
Bytes sent: 12600
Broadcast packets received: 0
Broadcast packets sent: 210
Multicast packets received: 0
Multicast packets sent: 0
Unicast packets received: 1846312006
Unicast packets sent: 0
Receive packets dropped: 261199086
Transmit packets dropped: 0

Увеличение размера RX-очереди и другие шаманства не помогают существенно:
~ # esxcfg-nics -s 10000 -d full vmnic3
~ # ethtool -A vmnic3 autoneg off rx off tx off
~ # ethtool -s vmnic3 autoneg off speed 10000 duplex full
~ # ethtool -G vmnic3 rx 4096 tx 4096

Изменение управляющего (management) IP возможно через SSH, помимо Console

https://kb.vmware.com/s/article/2084629
esxcli network ip interface ipv4 get # смотрим название интерфейса
esxcli network ip interface ipv4 set -i vmk0 -I 172.16.1.101 -N 255.255.255.0 -t static # изменяем IP

Просмотр всех носителей ssd/hdd/cd.

[root@192:~] esxcli storage core device list
t10.ATA_____OCZ2DVERTEX3_MI__________________________OCZ2DN900H83UOGFTNL8U
   Display Name: Local ATA Disk (t10.ATA_____OCZ2DVERTEX3_MI__________________________OCZ2DN900H83UOGFTNL8U)
   Has Settable Display Name: true
   Size: 114473
   Device Type: Direct-Access
   Multipath Plugin: NMP
   Devfs Path: /vmfs/devices/disks/t10.ATA_____OCZ2DVERTEX3_MI__________________________OCZ2DN900H83UOGFTNL8U
   Vendor: ATA
   Model: OCZ-VERTEX3 MI
   Revision: 2.25
   SCSI Level: 5
   Is Pseudo: false
   Status: on
   Is RDM Capable: false
   Is Local: true
   Is Removable: false
   Is SSD: true
   Is VVOL PE: false
   Is Offline: false
   Is Perennially Reserved: false
   Queue Full Sample Size: 0
   Queue Full Threshold: 0
   Thin Provisioning Status: yes
   Attached Filters:
   VAAI Status: unknown
   Other UIDs: vml.01000000004f435a2d4e393030483833554f4746544e4c38554f435a2d5645
   Is Shared Clusterwide: false
   Is SAS: false
   Is USB: false
   Is Boot Device: true
   Device Max Queue Depth: 31
   No of outstanding IOs with competing worlds: 31
   Drive Type: unknown
   RAID Level: unknown
   Number of Physical Drives: unknown
   Protection Enabled: false
   PI Activated: false
   PI Type: 0
   PI Protection Mask: NO PROTECTION
   Supported Guard Types: NO GUARD SUPPORT
   DIX Enabled: false
   DIX Guard Type: NO GUARD SUPPORT
   Emulated DIX/DIF Enabled: false

t10.ATA_____WDC_WD20EZBX2D00AYRA0_________________________WD2DWXK2AA2PX4PP
   Display Name: Local ATA Disk (t10.ATA_____WDC_WD20EZBX2D00AYRA0_________________________WD2DWXK2AA2PX4PP)
   Has Settable Display Name: true
   Size: 1907729
   Device Type: Direct-Access
   Multipath Plugin: NMP
   Devfs Path: /vmfs/devices/disks/t10.ATA_____WDC_WD20EZBX2D00AYRA0_________________________WD2DWXK2AA2PX4PP
   Vendor: ATA
   Model: WDC WD20EZBX-00A
   Revision: 1A01
   SCSI Level: 5
   Is Pseudo: false
   Status: on
   Is RDM Capable: false
   Is Local: true
   Is Removable: false
   Is SSD: false
   Is VVOL PE: false
   Is Offline: false
   Is Perennially Reserved: false
   Queue Full Sample Size: 0
   Queue Full Threshold: 0
   Thin Provisioning Status: yes
   Attached Filters:
   VAAI Status: unsupported
   Other UIDs: vml.0100000000202020202057442d57584b324141325058345050574443205744
   Is Shared Clusterwide: false
   Is SAS: false
   Is USB: false
   Is Boot Device: false
   Device Max Queue Depth: 31
   No of outstanding IOs with competing worlds: 31
   Drive Type: unknown
   RAID Level: unknown
   Number of Physical Drives: unknown
   Protection Enabled: false
   PI Activated: false
   PI Type: 0
   PI Protection Mask: NO PROTECTION
   Supported Guard Types: NO GUARD SUPPORT
   DIX Enabled: false
   DIX Guard Type: NO GUARD SUPPORT
   Emulated DIX/DIF Enabled: false

Просмотр smart/health информации по носителям ssd/hdd. В данном случае SSD оказался проблемным – через минут 5 после включения сервера переставал работать и в том числе выдавать smart информацию. Обращает на себя внимание процент износа диска (Media Wearout Indicator) – 95 при пороге 10!!!

[root@192:~] esxcli storage core device smart get -d=t10.ATA_____OCZ2DVERTEX3_MI__________________________OCZ2DN900H83UOGFTNL8U
Error getting Smart Parameters: Cannot open device

[root@192:~] esxcli storage core device smart get -d=t10.ATA_____OCZ2DVERTEX3_MI__________________________OCZ2DN900H83UOGFTNL8U
Parameter                     Value  Threshold  Worst
----------------------------  -----  ---------  -----
Health Status                 OK     N/A        N/A
Media Wearout Indicator       95     10         95
Write Error Count             0      0          0
Read Error Count              N/A    N/A        N/A
Power-on Hours                71     0          71
Power Cycle Count             97     0          97
Reallocated Sector Count      100    3          100
Raw Read Error Rate           120    50         120
Drive Temperature             30     0          30
Driver Rated Max Temperature  N/A    N/A        N/A
Write Sectors TOT Count       0      0          0
Read Sectors TOT Count        0      0          0
Initial Bad Block Count       N/A    N/A        N/A

Пример вывода по относительно новому HDD.

[root@192:~] esxcli storage core device smart get -d=t10.ATA_____WDC_WD20EZBX2D00AYRA0_________________________WD2DWXK2AA2PX4PP
Parameter                     Value  Threshold  Worst
----------------------------  -----  ---------  -----
Health Status                 OK     N/A        N/A
Media Wearout Indicator       N/A    N/A        N/A
Write Error Count             0      0          N/A
Read Error Count              0      51         N/A
Power-on Hours                125    0          N/A
Power Cycle Count             46     0          N/A
Reallocated Sector Count      0      140        N/A
Raw Read Error Rate           0      51         N/A
Drive Temperature             34     0          N/A
Driver Rated Max Temperature  N/A    N/A        N/A
Write Sectors TOT Count       N/A    N/A        N/A
Read Sectors TOT Count        N/A    N/A        N/A
Initial Bad Block Count       N/A    N/A        N/A

 

vSwitch

  • Standard vSwitch и VLAN (VID)

    • Если на свиче указать TAG 4095 – в ESXi для standard vSwitch это рассматривается как special case фича Virtual Guest Tagging (VGT), она позволяет пробрасывать любые (напр. 754, 755, 854, 855, 1033, 4000) тегированные фреймы в VM не снимая VID метку при отдаче на VM (по сути trunk port с vSwitch в сторону VM).

    • Есть на свиче настроить конкретный TAG (от 1 до 4094) – он будет обрабатывать фреймы, полученные с этим фреймом с vSwitch uplink и отдавать нетегированными в VM (гостевые машины) и наоборот, получив от VM кадр будет отдавать его тегированным на uplink (по сути access port с vSwitch в сторону VM).

Virtual Guest Tagging (VGT) – With VGT, all VLAN tagging is done by the virtual machine. VLAN tags are preserved between the virtual machine networking stack and external switch when frames pass to and from virtual switches.
Host network adapters must be connected to trunk ports on the physical switch. For a standard switch, the VLAN ID of port groups with VGT must be set to 4095.
  • В vSwitch даже для организации базовой связности может пригодиться отключение Security параметров – Promiscuous, MAC address changes, Forged transmits.
ARP ответы от VM в nested VM (VMware ESXi -> VM Windows -> VMware Workstation -> Linux) по какой-то причине не фиксировались на проблемной VM, при том, что хост машина (VM Windows) была доступна с проблемной VM. Решилось модификацией security политик для трафика на vSwitch.
            Security
               Promiscuous mode Accept
               MAC address changes Accept
               Forged transmits Accept
  • CDP: На vswitch esxi можно настроить как прием, так и анонс CDP. Кроме того очень полезно, что в ESXi можно посмотреть какие MAC адреса VM выучил vSwitch (чтобы сопоставить например VM и VLAN TAG проброшенный TRUNK/VGT).
   csco#show cdp neighbors
   Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
                     S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone,
                     D - Remote, C - CVTA, M - Two-port Mac Relay
   Device ID        Local Intrfce     Holdtme    Capability  Platform  Port ID
   localhost        Gig 1/0/30        178               S    VMware ES vmnic2
   localhost        Gig 1/0/29        178               S    VMware ES vmnic1

 

Hyper-V

Hyper-V устанавливается через дополнительные компоненты как простой компонент типа Telnet.  И работает хорошо на первый взгляд – легко развернулась VM Ubuntu 18.04. Легко заресайзил с его использованием VHD/VHDX диски. Огонь.

  • Отключение IPv6 для раздачи Hyper-V на VM (кейс – неизвестный адрес девайса по IPv4, а по консоли доступа по какой-то причине нет, напр. отключена) – просто в сетевых параметрах адаптера Hyper-V Virtual Adapter (vEthernet Default Switch) в панели управления отключаем IPv6, рестартуем адаптер (мне было достаточно) или возможно весь ПК.
    You can edit each network adapter and uncheck the IP6 binding; in your case edit the Hyper-V Virtual adapter. You may need to reboot for it to take effect. You should no longer have an IP6 address assigned to the adapter.
  • “Under the hood” Azure используется модифицированный под облачный сценарий Hyper-V.
https://www.quora.com/What-technology-is-Azure-running-on-Is-it-on-Hyper-V-or-some-other-kind-of-virtualization-technology     
Azure runs on a customized version of Hyper-V.

С самого Azure:
   root@user~# virt-what
   hyperv

   root@user:~# lscpu | grep Hypervisor
   Hypervisor vendor:   Microsoft

   root@user:~# cpuid -l 0x40000000
   CPU 0:
   hypervisor_id = "Microsoft Hv"

Работа с VHD/VHDX.

Virtual Hard Drive (VHD) — формат файла, содержащий полную структуру и содержание, сходные с жёстким диском. Используется для хранения виртуальных операционных систем, программ и других файлов в одном файле-образе, который можно открыть разными программами виртуализации или виртуальными машинами. C июня 2005 Microsoft сделала спецификацию формата VHD доступной третьим фирмам в рамках Microsoft Open Specification Promise.

Получение информации

Get-VHD -Path D:\livecd.ubuntu-cpc.azure-resized.vhd

Уменьшение размера, работает только для VHDX и даже для него без Optimize-VHD (тоже только для VHDX)/GPARTED можно не обойтись

Resize-VHD -Path D:\livecd.ubuntu-cpc.azure.vhdx -ToMinimumSize
Optimize-VHD -Path D:\livecd.ubuntu-cpc.azure.vhd -Mode Quick

# конвертируем в VHDX
Resize-VHD : Не удалось изменить размер виртуального диска.
Системе не удалось изменить размер "D:\livecd.ubuntu-cpc.azure.vhd".
Невозможно выполнить запрошенную операцию, так как изменение размера на значение, не превышающее текущее, поддерживается только для виртуальных жестких дисков формата VHDX.

# используем потенциально Optimize-VHD/GPART
Resize-VHD : Не удалось изменить размер виртуального диска.
Не удалось изменить размер виртуального диска.
Системе не удалось изменить размер "D:\livecd.ubuntu-cpc.azure.vhdx": Не удалось выполнить запрошенную операцию, так как
невозможно безопасно уменьшить размер виртуального диска. (0xC03A0027).

Увеличение размера (образ был 3GB)

Resize-VHD -Path D:\livecd.ubuntu-cpc.azure-resized.vhd -SizeBytes 4GB

Конвертация (удобнее в Hyper-V) из VHD в VHDX

Convert-VHD -Path D:\livecd.ubuntu-cpc.azure-resized.vhd -VHDType Fixed -DestinationPath D:\livecd.ubuntu-cpc.azure-resized.vhdx -DeleteSource

 

 

KVM/QEMU

  • https://www.linux-kvm.org/page/Management_Tools список managent утилит поверх KVM
  • KVM используется google в ряде коммерческих проектов, поэтому они следят за его безопасностью
Компания Google представила инициативу kvmCTF, в рамках которой исследователи безопасности могут получить денежное вознаграждение за выявление уязвимостей в гипервизоре KVM (Kernel-based Virtual Machine). Интерес Google к KVM обусловлен использованием данного гипервизора в сервисе Google Cloud, а также в платформах Android и ChromeOS (CrosVMоснован на KVM). Для получения вознаграждения должен быть продемонстрирован взлом специально подготовленного окружения CTF (Capture the Flag) на базе свежего ядра Linux, выполняющего виртуальную машину, доступ к которой предоставляется по заявкам. Атакующему предлагается эксплуатировать уязвимость в подсистеме KVM в ядре Linux, обеспечивающем работу хост-системы в данном окружении.

Proxmox

Хорош, но даже для домашнего гипервизора зачастую проще/надежнее использовать ESXi – его бесплатной версии (после покупки broadcom бесплатной версии нет :)) чаще всего достаточно. Плюсы Proxmox:

    1. Основан на Debian, для виртуализации использует QEMU/KVM
    2. Популярен, напр. его используют в немаленькой компании carprice или в достаточно маленьком сайте linkmeup (смигрировали с vmware)
    3. Имеет коммерческую поддержку
    4. Поддерживает в том числе “сетевые” (network function) VM – pfsense например
    5. Прост
      • первичный деплой возможен не только из пакета, но и из iso на bare-metal (аналогия с ESXi)
      • эксплуатация (WEB, CLI и даже API)
    6. Надежен
    7. Функционал/масштабирование достаточны для home/SOHO задач

 

OVIRT

oVirt довольно неплох на практике:

    1. Глубокий и удобный функционал из GUI (по сути удобная прослойка к libvirt)
    2. Хорошая масштабируемость
    3. На его основе работают многие отечественные продукты (напр. РЕДОС)

Из недостатков oVirt:

    1. Основан на RHEL (RHEL, CentOS, Rocky Linux, Fedora), поэтому привязан к этому семейству ОС – как для host, так и для engine
    2. Для работы даже с одним хостом (гипервизором), требует установку контроллера Engine (аналогия vSphere)

EXPORT OVA/DISK/IMAGE

export ova ovirt и export/download disk image – могут не работать по факту, особенно если созданы snapshot для VM. Выгрузка с гипервизора ova через scp простая:

scp root@1.1.1.1:/tmp/Astra.ova

 

Leave a Reply