Как использовать virtualbox и vmware вместе с hyper-v в windows 10

Установка и настройка гипервизора kvm на centos

Limitations

The maximum number of virtual processor sockets assigned to a VM is 128. If you want to assign more than 128 virtual processors, configure a VM to use multicore processors.

The maximum number of processor cores that can be assigned to a single VM is 768 in vSphere 7.0 Update 1. A virtual machine cannot use more CPU cores than the number of logical processor cores on a physical machine.

CPU hot add. If a VM has 128 vCPUs or less than 128 vCPUs, then you cannot use the CPU hot add feature for this VM and edit the CPU configuration of a VM while a VM is in the running state.

OS CPU restrictions. If an operating system has a limit on the number of processors, and you assign more virtual processors for a VM, the additional processors are not identified and used by a guest OS. Limits can be caused by OS technical design and OS licensing restrictions. Note that there are operating systems that are licensed per-socket and per CPU core (for example, Windows Server 2019).

CPU support limits for some operating systems:

  • Windows 10 Pro – 2 CPUs
  • Windows 10 Home – 1 CPU
  • Windows 10 Workstation – 4 CPUs
  • Windows Server 2019 Standard/Datacenter – 64 CPUs
  • Windows XP Pro x64 – 2 CPUs
  • Windows 7 Pro/Ultimate/Enterprise – 2 CPUs
  • Windows Server 2003 Datacenter – 64 CPUs

Плюсы и минусы KVM

Проект KVM (Kernel-based Virtual Machine) в этом году празднует десятилетие. Официально он включен в ядро с версии 2.6.20, выложенное на kernel.org 4 февраля 2007 года. Изначально разрабатывался компанией Qumranet, выкупленной Red Hat в 2008 году. После сделки KVM и библиотека управления виртуализацией oVirt стала основой платформы виртуализации RHEV, поэтому Red Hat на сегодня ключевой разработчик KVM.

Технология предоставляет полную виртуализацию на аппаратном уровне. Поэтому, в отличие от популярных LXC и OpenVZ, KVM может запускать в принципе любую ОС, не только Linux (Windows, FreeBSD…), и Linux, отличающийся от конфигурации основной системы. Если нужна виртуальная машина, не совпадающая параметрами с основным хостом, то выбора особо нет. Включение в ядро было большим прорывом. Теперь поддержка виртуализации в ОС не требовала установки гипервизора (как Xen) и могла быть реализована в любом дистрибутиве, включая настольный. Из коробки доступен VNC, дающий возможность управлять виртуальным сервером с момента загрузки (то есть когда еще не работает SSH), как будто из локальной консоли. Проект активно сотрудничает с другим подобным решением QEMU, задействованы некоторые утилиты и общий формат файла образа Qcow2.

Минусы, конечно, тоже есть. Куда же без них. Главный — процессор должен иметь аппаратную поддержку виртуализации Intel VT-x или AMD-V. Проверить их наличие можно вручную или при помощи утилит:

Также о поддержке технологий говорят флаги в CPU:

В зависимости от производителя процессора будет загружен свой модуль ядра (kvm-amd.ko либо kvm-intel.ko).

Проверяем поддержку KVM
Другие статьи в выпуске:

Xakep #216. Копаем BitLocker

  • Содержание выпуска
  • Подписка на «Хакер»-60%

Накладные расходы чуть выше, чем при использовании LXC и OpenVZ. Причин тому две.

KVM-контейнер запускает свою копию ядра и окружения, и под них требуется память. LXC и OpenVZ же используют ядро и системные вызовы сервера. Поэтому при одинаковых характеристиках на хостинге у них совершенно разные возможности. При создании KVM-контейнера под него сразу резервируются все ресурсы согласно установкам. Это хорошо видно в htop. Стоит добавить ОЗУ в KVM, как сразу на это значение увеличивается объем занятой памяти. Выйти за лимиты VM не может, они устанавливаются жестко. В этом даже и плюс, можно сразу рассчитать будущую нагрузку на своем сервере, а ресурсы никто не позаимствует.

И VM работают относительно стабильно в плане производительности. В то время как при OpenVZ-виртуализации ресурсы выделяются динамически по мере надобности и каждый виртуальный сервер использует ровно столько ресурсов, сколько ему сейчас нужно. Незанятые ресурсы остаются свободными. Поэтому он и популярен у хостеров, ведь можно всегда напихать чуть больше VM, и именно поэтому виртуальные машины, созданные с запасом, могут работать то быстрее, то медленнее. Иногда оптимизация VM под OpenVZ — настоящая мука: непонятно, почему сервер стал работать по-другому — из-за новых настроек или внешних факторов.

Администрировать KVM сложнее, так как прозрачный доступ к файлам, процессам, консолям и сети контейнеров отсутствует, это приходится настраивать самостоятельно. Перестройка параметров VM в KVM (CPU, RAM, HDD) не очень удобна и требует дополнительных действий, включающих перезагрузку ОС. В том же OpenVZ это можно сделать на лету. Сам проект не предлагает удобных графических инструментов для управления виртуальными машинами, только утилиту virsh, реализующую все необходимые функции. Но, поискав в Сети, можно найти несколько интерфейсов, хотя для индивидуального использования одной или нескольких VM их обычно ставить нет смысла. К тому же много open source проектов, активно развивавшихся во время большого интереса к виртуальным машинам, сегодня стали коммерческими, хотя некоторые по-прежнему предлагают обрезанную free-версию. В репозитории пакетов есть virt-manager, предлагающий графический интерфейс для управления KVM и другими типами VM, поддерживающими virtlib, как установленных локально, так и удаленно через SSH.

В качестве веб-интерфейсов можно порекомендовать старенький, но еще рабочий WebVirtMgr, бесплатный UVMM UCS Core Edition, openQRM Free Community Edition и другие. Кроме того, существуют специальные дистрибутивы вроде Proxmox VE, в котором все необходимые инструменты для создания и управления VM на базе KVM и LXC уже есть (правда, он подходит для bare metal установки, а не на удаленный VDS).

Configuration Recommendations

For older vSphere versions, I recommend using sockets over cores in VM configuration. At first, you might not see a significant difference in CPU sockets or CPU cores in VM configuration for VM performance. Be aware of some configuration features. Remember about NUMA and vNUMA when you consider setting multiple virtual processors (sockets) for a VM to have optimal performance.

If vNUMA is not configured automatically, mirror the NUMA topology of a physical server. Here are some recommendations for VMs in VMware vSphere 6.5 and later:

  • When you define the number of logical processors (vCPUs) for a VM, prefer the cores-per-socket configuration. Continue until the count exceeds the number of CPU cores on a single NUMA node on the ESXi server. Use the same logic until you exceed the amount of memory that is available on a single NUMA node of your physical ESXi server.
  • Sometimes, the number of logical processors for your VM configuration is more than the number of physical CPU cores on a single NUMA node, or the amount of RAM is higher than the total amount of memory available for a single NUMA node. Consider dividing the count of logical processors (vCPUs) across the minimum number of NUMA nodes for optimal performance.
  • Don’t set an odd number of vCPUs if the CPU count or amount of memory exceeds the number of CPU cores. The same applies in case memory exceeds the amount of memory for a single NUMA node on a physical server.
  • Don’t create a VM that has a number of vCPUs larger than the count of physical processor cores on your physical host.
  • If you cannot disable vNUMA due to your requirements, don’t enable the vCPU Hot-Add feature.

If vNUMA is enabled in vSphere prior to version 6.5, and you have defined the number of logical processors (vCPUs) for a VM, select the number of virtual sockets for a VM while keeping the cores-per-socket amount equal to 1 (that is the default value). This is because the one-core-per-socket configuration enables vNUMA to select the best vNUMA topology to the guest OS automatically. This automatic configuration is optimal on the underlying physical topology of the server. If vNUMA is enabled, and you’re using the same number of logical processors (vCPUs) but increase the number of virtual CPU cores and reduce the number of virtual sockets by the same amount, then vNUMA cannot set the best NUMA configuration for a VM. As a result, VM performance is affected and can degrade.

If a guest operating system and other software installed on a VM are licensed on a per-processor basis, configure a VM to use fewer processors with more CPU cores. For example, Windows Server 2012 R2 is licensed per socket, and Windows Server 2016 is licensed on a per-core basis.

If you use CPU overcommitment in the configuration of your VMware virtual machines, keep in mind these values:

  • 1:1 to 3:1 – There should be no problems in running VMs
  • 3:1 to 5:1 – Performance degradation is observed
  • 6:1 – Prepare for problems caused by significant performance degradation

CPU overcommitment with normal values can be used in test and dev environments without risks.

Типы гипервизоров

Существует два типа гипервизоров. Гипервизоры первого типа запускаются непосредственно на «железе» и не требуют установки какой-либо операционной системы. Для работы монитора виртуальных машин второго типа нужна операционная система — через нее производится доступ к аппаратной части. Лучшим гипервизором считается тот, что относится к первому типу, т. к. его производительность выше, поскольку они работают напрямую с оборудованием.

Рис. 1. Принцип работы гипервизора 1-го типа

Рис. 2. Принцип работы гипервизора 2-го типа

Примеры гипервизоров 1-го типа: Hyper-V, KVM, ESXi. Гипервизоры 2-го типа: VMware Workstation, Oracle Virtual Box, OpenVZ. Нас интересуют только системы виртуализации первого типа, так как вторые больше подходят для индивидуального использования, чем в качестве решений уровня предприятия.

Отметим, что Hyper-V и WMware — это проприетарные решения, поэтому мы подготовили обзор и сравнение гипервизоров этих моделей. Мы также поговорим и о решении с открытым исходным кодом — KVM. Многие предприятия выбирают именно его, не смотря, что некоторые независимые эксперты считают это решение довольно сырым и непригодным на корпоративной кухне. Однако, согласно отчету IT Central Station за январь 2018 года, 25% операторов связи и 11% финансовых организаций считают именно KVM лучшим гипервизором. Так что при рассуждениях о том, какой гипервизор выбрать, это решение исключать нельзя.

Рис. 3. Немного статистики от IT Central Station

Сначала мы рассмотрим проприетарные решения, а затем попытаемся выяснить, стоит ли использовать KVM.

Системные требования Hyper-V

Итак если говорить о системных требованиях к операционной системе, на которой будет разворачиваться гипервизор под названием Hyper-V, то подойдут редакции Windows 10 Enterprise, Professional и Education. Обязательно должна быть 64 — битная версия операционной системы Windows 10, поскольку 32 — версии не имеют возможности использовать Hyper-V.

Помимо этого Вам потребуется 64 — битный процессор, который поддерживает технологии виртуализации, такие, как VM Monitor Mode Extension и поддержка Second Level Address Translation. Рекомендуется использовать минимум 4 ГБ оперативной памяти, если же запускать на меньшем объеме, тогда виртуальной машине ничего не достанется.

А также необходимо будет включить эти самые технологии виртуализации, а также включить Hardware Enforced Data Execution Prevention (DEP). Без этой технологии у Вас не будут запускаться виртуальные машины. Есть ряд особенностей связанных с конкретной моделью BIOS или UEFI. Некоторые технологии могут конкурировать с виртуализацией и соответственно не позволять запускать виртуальные машины.

Операционная система Windows 10 имеет инструмент проверки совместимости оборудования с установкой Hyper-V, который пригодиться новичкам. С помощью утилиты systeminfo.exe мы увидим параметры по требованиях к Hyper-V.

  1. Открываем поиск нажав Win+Q и в поисковой строке вводим Windows PowerShell.
  2. Дальше выбираем классическое приложение Windows PowerShell — Запуск от имени администратора.
  3. В открывшемся окне вводим и выполняем команду systeminfo.

Внизу окна находим пункт требований Hyper-V и проверяем поддерживается ли установка виртуальной машины на Вашем компьютере. Если же Вы найдете следующие параметры значений, тогда проблем с установкой Hyper-V на эту машину у Вас не возникнет:

  • Расширения режима мониторинга виртуальной машины: Да
  • Виртуализация включена во встроенном ПО: Да
  • Преобразование адресов второго уровня: Да
  • Доступно предотвращение выполнения данных: Да

KVM: добавление диска в виртуальную машину

Сна­ча­ла нуж­но создать допол­ни­тель­ный файл дис­ка для вир­ту­аль­ной машины:

Вме­сто qcow2 вы може­те ука­зать нуж­ный фор­мат дис­ка, так же нуж­но ука­зать путь до фай­ла. У меня хра­ни­ли­ще для дис­ков /vz/disk/.

После это­го, мож­но доба­вить устрой­ство вир­ту­аль­но­го дис­ка к самой ВМ:

Оста­но­ви­те и запу­сти­те ВМ, про­верь­те что получилось:

YAML

Domain test-centos is being shutdown

1 Domaintest-centosisbeingshutdown

YAML

Domain test-centos started

1 Domaintest-centosstarted

YAML

<domain type=’kvm’ id=’14’>
<name>test-centos</name>
<uuid>5c7eabea-a180-4f74-af9f-c4c2d3b7f70f</uuid>
<memory unit=’KiB’>2097152</memory>
<currentMemory unit=’KiB’>2097152</currentMemory>
<vcpu placement=’static’>6</vcpu>
<resource>
<partition>/machine</partition>
</resource>
<os>
<type arch=’x86_64′ machine=’pc-i440fx-rhel7.0.0’>hvm</type>
<boot dev=’cdrom’/>
<boot dev=’hd’/>
<bootmenu enable=’yes’/>
</os>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<disk type=’file’ device=’disk’>
<driver name=’qemu’ type=’qcow2’/>
<source file=’/vz/disk/test.img’/>
<backingStore/>
<target dev=’vdb’ bus=’virtio’/>
<alias name=’virtio-disk1’/>
<address type=’pci’ domain=’0x0000′ bus=’0x00′ slot=’0x09′ function=’0x0’/>
</disk>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

<domaintype=’kvm’id=’14’>

<name>test-centos</name>

<uuid>5c7eabea-a180-4f74-af9f-c4c2d3b7f70f</uuid>

<memoryunit=’KiB’>2097152</memory>

<currentMemoryunit=’KiB’>2097152</currentMemory>

<vcpuplacement=’static’>6</vcpu>

<resource>

<partition>/machine</partition>

</resource>

<os>

<typearch=’x86_64’machine=’pc-i440fx-rhel7.0.0’>hvm</type>

<bootdev=’cdrom’/>

<bootdev=’hd’/>

<bootmenuenable=’yes’/>

</os>

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

<disktype=’file’device=’disk’>

<drivername=’qemu’type=’qcow2’/>

<sourcefile=’/vz/disk/test.img’/>

<backingStore/>

<targetdev=’vdb’bus=’virtio’/>

<aliasname=’virtio-disk1’/>

<addresstype=’pci’domain=’0x0000’bus=’0x00’slot=’0x09’function=’0x0’/>

</disk>

Как видим, диск добав­лен. После дан­ных мани­пу­ля­ций, на вир­ту­аль­ной машине нуж­но раз­ме­тить этот диск под ваши нужды.

Добавление памяти и vCPU виртуальной машине KVM

В кон­со­ли KVM вы може­те доба­вить или умень­шить ресур­сы про­цес­со­ра и памя­ти, выде­лен­ные для ВМ дву­мя способами:

  • С помо­щью virsh
  • Через кон­фи­гу­ра­ци­он­ный XML файл ВМ

Если вир­ту­аль­ная маши­на запу­ще­на, ее нуж­но остановить:

YAML

Domain test-centos is being shutdown

1 Domaintest-centosisbeingshutdown

Теперь с помо­щью virsh изме­ним коли­че­ство вир­ту­аль­ных про­цес­со­ров до 6 (vCPU):

Где:

YAML

<vm name>

1 <vmname>

— имя машины

YAML

<vcpu_count>

1 <vcpu_count>

— коли­че­ство ядер процессора

Напри­мер:

Но при при­ме­не­нии этой коман­ды, у меня сра­зу же появи­лась ошибка:

YAML

“error: invalid argument: requested vcpus is greater than max allowable vcpus for the persistent domain: 6 > 4”

1 “error: invalid argument: requested vcpus is greater than max allowable vcpus for the persistent domain: 6 > 4”

Мы не можем уста­но­вить коли­че­ство ядер про­цес­со­ра, боль­ше, чем мак­си­маль­ное коли­че­ство. Что­бы уве­ли­чить мак­си­маль­ное коли­че­ство ядер ВМ, выпол­ни­те команду:

Повто­ри­те первую коман­ду и запу­сти­те вир­ту­аль­ную машину:

Про­ве­рим коли­че­ство про­цес­со­ров в настрой­ках ВМ: овлен­ное коли­че­ство процессоров:

YAML

<domain type=’kvm’>
<name>test-centos</name>
<uuid>5c7eabea-a180-4f74-af9f-c4c2d3b7f70f</uuid>
<memory unit=’KiB’>2097152</memory>
<currentMemory unit=’KiB’>2097152</currentMemory>
<vcpu placement=’static’>6</vcpu>

1
2
3
4
5
6
7

<domaintype=’kvm’>

<name>test-centos</name>

<uuid>5c7eabea-a180-4f74-af9f-c4c2d3b7f70f</uuid>

<memoryunit=’KiB’>2097152</memory>

<currentMemoryunit=’KiB’>2097152</currentMemory>

<vcpuplacement=’static’>6</vcpu>

 

Ана­ло­гич­ным обра­зом доба­вим память вир­ту­аль­ной машине:

Напри­мер:

Все по той же при­чине, сра­зу же вышла ошибка:

YAML

“error: invalid argument: cannot set memory higher than max memory.”

1 “error: invalid argument: cannot set memory higher than max memory.”

Уве­ли­чим мак­си­маль­ное зна­че­ние памяти::

Теперь мож­но уве­ли­чить память ВМ.

Перед все­ми изме­не­ни­я­ми не забы­вай­те оста­нав­ли­вать ВМ, а после запус­кать ее.

Так­же вы може­те изме­нить ресур­сы ВМ KVM через ее кон­фи­гу­ра­ци­он­ный XML файл. Мож­но изме­нить файл в режи­ме онлайн или же сде­лав бэкап XML фай­ла ВМ, изме­нить его и при­ме­нить к вир­ту­аль­ной машине.

Отре­дак­ти­ру­ем XML файл ВМ в онлайн режиме:

В открыв­шем­ся редак­то­ре vi вне­си­те изме­не­ния, нажав кноп­ку “Insert”.

Изме­ни­те блок:

YAML

<domain type=’kvm’>
<name>test-centos</name>
<uuid>5c7eabea-a180-4f74-af9f-c4c2d3b7f70f</uuid>
<memory unit=’KiB’>6291456</memory>
<currentMemory unit=’KiB’>4194304</currentMemory>
<vcpu placement=’static’>6</vcpu>
<os>

1
2
3
4
5
6
7
8

<domaintype=’kvm’>

<name>test-centos</name>

<uuid>5c7eabea-a180-4f74-af9f-c4c2d3b7f70f</uuid>

<memoryunit=’KiB’>6291456</memory>

<currentMemoryunit=’KiB’>4194304</currentMemory>

<vcpuplacement=’static’>6</vcpu>

<os>

 

Напри­мер, зада­дим для ВМ 2 ядра и 1Гб памяти:

Учи­ты­вай­ие что память ука­зы­ва­ет­ся в килобайтах.

Сохра­ни­те изме­не­ния в фай­ле и пере­за­пу­сти­те ВМ:

Про­верь­те настрой­ки ВМ:

Тоже самое мож­но сде­лать, сде­лав бэкап XML файла:

Изме­ни­те нуж­ные вам пара­мет­ры, сохра­ни­те файл и при­ме­ни­те к вир­ту­аль­ной машине:

YAML

Domain test-centos is being shutdown

1 Domaintest-centosisbeingshutdown

YAML

Domain test-centos defined from /root/test.xml

1 Domaintest-centosdefinedfrom/root/test.xml

YAML

Domain test-centos started

1 Domaintest-centosstarted

Ино­гда при изме­не­нии кон­фи­гу­ра­ци­он­но­го фай­ла ВМ в онлайн режи­ме назна­чен­ные ресур­сы сбра­сы­ва­ют­ся после пере­за­груз­ки. В этом слу­чае выпол­ни­те оста­нов­ку вир­ту­аль­ной маши­ны и после это­го про­сто запу­сти­те ее.

Conclusion

This blog post has covered the configuration of virtual processors for VMware vSphere VMs. Virtual processors for virtual machines are configured in VMware vSphere Client and in Power CLI. The performance of applications running on a VM depends on the correct CPU and memory configuration. In VMware vSphere 6.5 and later versions, set more cores in CPU for virtual machines and use the CPU cores per socket approach. If you use vSphere versions older than vSphere 6.5, configure the number of sockets without increasing the number of CPU cores for a VM due to different behavior of vNUMA in newer and older vSphere versions. Take into account the licensing model of software you need to install on a VM. If the software is licensed on using a per CPU model, configure more cores per CPU in VM settings.

Понравилась статья? Поделиться с друзьями:
Быть в курсе нового
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: