- Виртуализировать приложение, которое задач виртуализации сопротивляется – занятие зачастую сложное и неблагодарное (с 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 от имени администратора, потом проверить отсутствие галки “только чтение” и только потом переустанавливать/шаманить с правами.
- Популярен
- Основан на 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
- можно самостоятельно добавить драйвера с использованием
- VMware PowerCLI аддон к PowerShell от VMware (инструкция с видео)
- ESXi-Customizer сторонняя утилита
- можно скачать уже готовый образ (резервный линк из-за ограничений github LFS – arhive.org), проверка virustotal (в URL sha256 как ID файла)
- можно самостоятельно добавить драйвера с использованием
- В 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 – см. ниже)
- при установке на старое/новое железо может потребоваться изменение установочного образа ESXi путем добавления в него необходимых драйверов, в моем случае это были драйвера Realtek rtl8111e для ESXi 6.7
- 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.
- Лицензия vSphere стоит очень дорого, особенно с текущим курсом доллара. Даже базовая (vSphere Standard) – порядка 1 тыс. долларов за 1 vCPU!
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).
-
- Установка IOS
- Получаем откуда то ISO или создаем ISO, например с помощью “ISO Creator” (freeisocreator.com),
- далее в vSphere Client или WEB выбираем “connect to iso image on local disk”
- или в ESXi легко пробросить CD/DVD привод – в CD-Rom выбираем файл ISO из datastore
- Пути к файлам обязательны, иначе будет 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
- Множество полезных команд
- Для включения SSH нужно активировать сервис SSH в настройках гипервизора
Версия ESXi
~ # vmware -vl VMware ESXi 5.5.0 build-3248547 VMware ESXi 5.5.0 Update 3
esxcli system hostname set –host=hostname esxcli system hostname set –fqdn=fqdn
Изменения маршрута или удаление (обнуление)
esxcfg-route 192.168.111.1 esxcfg-route 0.0.0.0
> 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
> 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
> esxcli vm process kill --type=[soft,hard,force] --world-id=WorldID > esxcli vm process kill --type=hard --world-id=2099529
> 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
~ # 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, обеспечивающем работу хост-системы в данном окружении.
libvirt
ключевой демон, через который происходит взаимодействие между утилитами управления (virsh, virt-manager, virt-viewer) и гипервизорами (xen, kvm/qemu, vmware, virtualbox, etc).
Proxmox
Хорош, но даже для домашнего гипервизора зачастую проще/надежнее использовать ESXi – его бесплатной версии (после покупки broadcom бесплатной версии нет :)) чаще всего достаточно. Плюсы Proxmox:
-
- Основан на Debian, для виртуализации использует QEMU/KVM
- Популярен, напр. его используют в немаленькой компании carprice или в достаточно маленьком сайте linkmeup (смигрировали с vmware)
- Имеет коммерческую поддержку
- Поддерживает в том числе “сетевые” (network function) VM – pfsense например
- Прост
- первичный деплой возможен не только из пакета, но и из iso на bare-metal (аналогия с ESXi)
- эксплуатация (WEB, CLI и даже API)
- Надежен
- Функционал/масштабирование достаточны для home/SOHO задач
OVIRT
oVirt довольно неплох на практике:
-
- Глубокий и удобный функционал из GUI (по сути удобная прослойка к libvirt)
- Хорошая масштабируемость
- На его основе работают многие отечественные продукты (напр. РЕДОС)
Из недостатков oVirt:
-
- Основан на RHEL (RHEL, CentOS, Rocky Linux, Fedora), поэтому привязан к этому семейству ОС – как для host, так и для engine
- Для работы даже с одним хостом (гипервизором), требует установку контроллера 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
questions
Which of the following properties of a Linux system should be changed when a virtual machine is cloned? (Choose two.)
A. The partitioning scheme
B. The file system
C. The D-Bus Machine ID
D. The permissions of /root/
E. The SSH host keys
Answer: CE
Some configurations are machine specific. For example, a network card's MAC address should be unique for whole the network. If we are cloning a machine or sometimes creating them from templates, at least we need to change these on each machine before booting them: Host Name - NIC MAC Address - NIC IP (If not using DHCP) - Machine ID (delete the/etc/machine-id
and/var/lib/dbus/machine-id
and rundbus-uuidgen --ensure
. These two files might be soft links to each other) - Encryption Keys like SSH Fingerprints and PGP keys - HDD UUIDs Any other UUIDs on the system