Π‘ΡΠΊΠΎΠ½ΠΎΠΌΡŒΡ‚Π΅ 15% Π½Π° всСх хостинговых услугах

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ свои Π½Π°Π²Ρ‹ΠΊΠΈ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ скидку Π½Π° любой Ρ‚Π°Ρ€ΠΈΡ„Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ΄: Skills ΠΠ°Ρ‡Π°Ρ‚ΡŒ
Π ΡƒΠ±Ρ€ΠΈΠΊΠΈ
Linux VPS

ВСхнология Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ KVM: Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, прСимущСства ΠΈ практичСскоС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅

Kernel-based Virtual Machine (KVM) β€” это Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π½ΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, встроСнноС нСпосрСдствСнно Π² ядро Linux Π² Π²ΠΈΠ΄Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ модуля. Оно ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ само ядро Linux Π² Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ Type-1 (bare-metal), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ CPU β€” Intel VT-x ΠΈΠ»ΠΈ AMD-V β€” для выполнСния гостСвых Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, Π±Π»ΠΈΠ·ΠΊΠΎΠΉ ΠΊ Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ, ΠΈ строгой Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ изоляциСй.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Ρ‘Π½Π½Ρ‹Ρ… Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ΠΎΠ², Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… ΠΊΠ°ΠΊ прилоТСния ΠΏΠΎΠ²Π΅Ρ€Ρ… ОБ, KVM Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ядра, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ с физичСским ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ ядра, ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ памяти ΠΈ подсистСмы Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°. Π­Ρ‚ΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ являСтся Π³Π»Π°Π²Π½ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ KVM ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ прСвосходит ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎ пропускной способности, Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°ΠΌ ΠΈ эффСктивности использования рСсурсов.

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ KVM: основная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°

Π―Π΄Ρ€ΠΎ Linux ΠΊΠ°ΠΊ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€

Когда ΠΌΠΎΠ΄ΡƒΠ»ΡŒ kvm.ko (ΠΈ спСцифичный для CPU ΠΌΠΎΠ΄ΡƒΠ»ΡŒ β€” kvm-intel.ko ΠΈΠ»ΠΈ kvm-amd.ko) загруТаСтся, ядро Linux ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ возмоТности Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π°, Π½Π΅ замСняя ΠΈ Π½Π΅ обходя ОБ. Π―Π΄Ρ€ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°ΠΌΠΈ устройств, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ гостСвыС срСды β€” Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ (Π’Πœ).

КаТдая Π’Πœ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½ΠΎΠΌ контСкстС выполнСния. АппаратныС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ CPU ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ ядром хоста (ring 0) ΠΈ гостСвым ΠΊΠΎΠ΄ΠΎΠΌ, прСдотвращая прямой доступ любого гостя ΠΊ памяти ΠΈΠ»ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ хоста ΠΈΠ»ΠΈ ΠΈΡ… ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅.

QEMU: ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ эмуляции устройств

KVM обСспСчиваСт Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ CPU ΠΈ памяти, Π½ΠΎ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ эмулируСт ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½ΠΎΠ΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅. ИмСнно здСсь Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ QEMU (Quick Emulator). KVM ΠΈ QEMU Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΊΠ°ΠΊ тСсно связанная ΠΏΠ°Ρ€Π°:

  • KVM управляСт Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ CPU Ρ‡Π΅Ρ€Π΅Π· Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ памяти Ρ‡Π΅Ρ€Π΅Π· Extended Page Tables (EPT Π½Π° Intel) ΠΈΠ»ΠΈ Nested Page Tables (NPT Π½Π° AMD).
  • QEMU эмулируСт Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ устройства β€” сСтСвыС ΠΊΠ°Ρ€Ρ‚Ρ‹, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰, USB-ΡˆΠΈΠ½Ρ‹, Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Ρ‹ дисплСя β€” ΠΈ прСдоставляСт интСрфСйс управлСния Π² пространствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π’Πœ.

Π­Ρ‚Π° комбинация часто называСтся QEMU/KVM. КаТдая Π’Πœ отобраТаСтся ΠΊΠ°ΠΊ стандартный процСсс QEMU Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ процСссов хоста, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ прямоС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ изоляции процСссов Linux, cgroups ΠΈ пространств ΠΈΠΌΡ‘Π½ для управлСния рСсурсами Π’Πœ.

VirtIO: ΠΏΠ°Ρ€Π°Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄ для максимальной пропускной способности

ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ Π²Π°ΠΆΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π²Π²ΠΎΠ΄Π½Ρ‹Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΡƒΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ΠΈΠ· Π²ΠΈΠ΄Ρƒ, β€” это VirtIO. ВмСсто ΠΏΠΎΠ»Π½ΠΎΠΉ эмуляции ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅Π³ΠΎ оборудования (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сСтСвого Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° Intel e1000 ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° диска IDE) VirtIO прСдоставляСт стандартизированный ΠΏΠ°Ρ€Π°Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ интСрфСйс. ГостСвыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы с Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°ΠΌΠΈ VirtIO Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ с Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ΠΎΠΌ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ»ΡŒΡ†Π΅Π²ΠΎΠΉ Π±ΡƒΡ„Π΅Ρ€ ΠΎΠ±Ρ‰Π΅ΠΉ памяти, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сниТаСт Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы Π½Π° Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄.

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π’Πœ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ сСтСвой интСрфСйс VirtIO (virtio-net), достигаСт Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ высоких ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² сСкунду ΠΈ ΠΌΠ΅Π½ΡŒΡˆΠΈΡ… Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с эмулируСмым Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠΌ e1000. Π’ΠΎΡ‚ ΠΆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ примСняСтся ΠΊ Π±Π»ΠΎΡ‡Π½ΠΎΠΌΡƒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Ρƒ (virtio-blk, virtio-scsi) ΠΈ балансировкС памяти (virtio-balloon).

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ дистрибутивы Linux Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ VirtIO ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ГостСвыС систСмы Windows Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² VirtIO Win, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ поддСрТиваСтся Red Hat ΠΈ доступСн бСсплатно.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ: KSM ΠΈ Huge Pages

KVM интСгрируСтся с двумя Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ функциями управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ядра Linux:

  • Kernel Same-page Merging (KSM): Π―Π΄Ρ€ΠΎ сканируСт страницы памяти Π’Πœ ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹Π΅ страницы Π² Π΅Π΄ΠΈΠ½ΡƒΡŽ страницу с ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΈ записи. На хостС, Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‰Π΅ΠΌ мноТСство ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… Π’Πœ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ОБ), KSM ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ физичСской памяти Π½Π° 20–40%, обСспСчивая Π±ΠΎΠ»Π΅Π΅ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΠΏΠ»ΠΎΡ‚Π½ΠΎΡΡ‚ΡŒ Π’Πœ.
  • Transparent Huge Pages (THP) ΠΈ Hugetlbfs: Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ гостСвой памяти с использованиСм ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Ρ… страниц Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 2 ΠœΠ‘ ΠΈΠ»ΠΈ 1 Π“Π‘ сниТаСт Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° TLB Π² CPU, ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ. Π’ производствСнных развёртываниях гостСвая ΠΏΠ°ΠΌΡΡ‚ΡŒ часто закрСпляСтся Π² hugetlbfs для прСдсказуСмых Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ.

KVM vs. Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Ρ‹: тСхничСскоС сравнСниС

Π₯арактСристикаKVMVMware ESXiHyper-VXen
Π’ΠΈΠΏ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π°Type-1 (Ρ‡Π΅Ρ€Π΅Π· ядро Linux)Type-1 (bare-metal)Type-1 (bare-metal)Type-1 (bare-metal)
Π›ΠΈΡ†Π΅Π½Π·ΠΈΡΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ (GPL)ΠŸΡ€ΠΎΠΏΡ€ΠΈΠ΅Ρ‚Π°Ρ€Π½Π°Ρ (доступСн бСсплатный ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ)ΠŸΡ€ΠΎΠΏΡ€ΠΈΠ΅Ρ‚Π°Ρ€Π½Π°Ρ (Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав Windows Server)ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ (GPL)
Виртуализация CPUIntel VT-x / AMD-VIntel VT-x / AMD-VIntel VT-x / AMD-VIntel VT-x / AMD-V
ΠŸΠ°Ρ€Π°Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄VirtIOVMware PVSCSI / VMXNET3Hyper-V Synthetic AdaptersXen PV drivers
Живая миграцияДа (Ρ‡Π΅Ρ€Π΅Π· virsh migrate)Π”Π° (vMotion)Π”Π° (Live Migration)Π”Π°
ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ° памятиДа (KSM, ballooning)Π”Π° (TPS, ballooning)Π”Π° (Dynamic Memory)Π”Π°
Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ управлСнияlibvirt, virt-manager, Proxmox, oVirtvCenterSCVMM, Hyper-V ManagerXenCenter, XCP-ng
ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° гостСвых ОБLinux, Windows, BSD, macOS (ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎ)Linux, Windows, BSDLinux, WindowsLinux, Windows, BSD
Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с облакомНативная (OpenStack, oVirt)VMware CloudAzureΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Π°Ρ
НакладныС Ρ€Π°ΡΡ…ΠΎΠ΄Ρ‹ΠžΡ‡Π΅Π½ΡŒ низкиСНизкиСНизкиСНизкиС

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ прСимущСства Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ KVM

Нативная интСграция с Linux ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с инструмСнтариСм

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ KVM являСтся ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ ядра, Π° Π½Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ стСком, ΠΎΠ½ наслСдуСт всю экосистСму Linux. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ инструмСнты β€” systemd, cgroups v2, perf, ftrace, iptables/nftables, tc β€” Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ нСпосрСдствСнно с процСссами KVM ΠΈ связанными с Π½ΠΈΠΌΠΈ рСсурсами. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ систСмный администратор, ΡƒΠΆΠ΅ Π²Π»Π°Π΄Π΅ΡŽΡ‰ΠΈΠΉ Linux, нуТдаСтся Π² минимальном Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ для управлСния инфраструктурой Π½Π° Π±Π°Π·Π΅ KVM.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· libvirt β€” ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ API, Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ KVM/QEMU. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ virsh, virt-manager ΠΈ virt-install ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ интСрфСйсы CLI ΠΈ GUI. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Proxmox VE ΠΈ oVirt строят ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ уровня Π΄Π°Ρ‚Π°Ρ†Π΅Π½Ρ‚Ρ€Π° ΠΏΠΎΠ²Π΅Ρ€Ρ… libvirt ΠΈ KVM.

Π₯арактСристики ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ KVM Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ обусловлСно нСсколькими Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΌΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ:

  • Аппаратно-ускорСнноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ CPU: ГостСвой ΠΊΠΎΠ΄ выполняСтся нСпосрСдствСнно Π½Π° физичСском CPU Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ VMX non-root. Π“ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ инструкции (VM exits), Π° Π½Π΅ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ.
  • ΠŸΡ€ΡΠΌΠΎΠΉ доступ ΠΊ памяти: ЀизичСская ΠΏΠ°ΠΌΡΡ‚ΡŒ гостя отобраТаСтся с использованиСм EPT/NPT, Ρ‡Ρ‚ΠΎ устраняСт Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… Ρ‚Π΅Π½Π΅Π²Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† страниц, ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΠΈΡ… Π² Π±ΠΎΠ»Π΅Π΅ старых ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°Ρ… ΠΊ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.
  • ΠŸΡƒΡ‚ΡŒ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° VirtIO: Как описано Π²Ρ‹ΡˆΠ΅, ΠΏΠ°Ρ€Π°Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ ΡƒΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы эмуляции устройств для сСти ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°.

НСзависимыС тСсты ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ KVM обСспСчиваСт 95–99% ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ bare-metal CPU для Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ-интСнсивных Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ, ΠΏΡ€ΠΈ этом ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° приблиТаСтся ΠΊ ΡƒΡ€ΠΎΠ²Π½ΡŽ bare-metal ΠΏΡ€ΠΈ использовании VirtIO ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… бэкСндов Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, NVMe с io_uring).

МодСль изоляции бСзопасности

KVM опираСтся Π½Π° нСсколько ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ изоляции:

  • АппаратныС ΠΊΠΎΠ»ΡŒΡ†Π° ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ: CPU обСспСчиваСт Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ гостя ΠΈ хоста Π½Π° Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅.
  • SELinux/AppArmor sVirt: ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ процСсс Π’Πœ помСчаСтся ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ контСкстом SELinux, прСдотвращая доступ процСсса QEMU ΠΎΠ΄Π½ΠΎΠΉ Π’Πœ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ памяти Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π’Πœ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ эксплуатации уязвимости Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ процСсса.
  • Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ Seccomp: ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹ QEMU ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ seccomp для ограничСния Π½Π°Π±ΠΎΡ€Π° доступных систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ Π°Ρ‚Π°ΠΊΠΈ самого процСсса Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π°.

Π­Ρ‚Π° многоуровнСвая модСль бСзопасности Π΄Π΅Π»Π°Π΅Ρ‚ KVM Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΠΉ основой для ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… хостинговых срСд.

Живая миграция ΠΈ высокая Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ

KVM ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΆΠΈΠ²ΡƒΡŽ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ β€” ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΉ Π’Πœ с ΠΎΠ΄Π½ΠΎΠ³ΠΎ физичСского хоста Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π±Π΅Π· простоя. ΠŸΡ€ΠΎΡ†Π΅ΡΡ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡƒΡ‚Ρ‘ΠΌ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ копирования ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹Ρ… страниц памяти Π½Π° Ρ†Π΅Π»Π΅Π²ΠΎΠΉ хост, ΠΏΠΎΠΊΠ° Π’Πœ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠΉ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ синхронизациСй ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ. Π’ сочСтании с ΠΎΠ±Ρ‰ΠΈΠΌ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ (Ceph, NFS, iSCSI) ΠΈΠ»ΠΈ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° это обСспСчиваСт:

  • ПлановоС обслуТиваниС оборудования Π±Π΅Π· прСрывания сСрвиса
  • Балансировку Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ физичСскими хостами
  • АвтоматичСскоС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΠ°Π·Π΅ Π² кластСрах высокой доступности (с использованиСм Pacemaker/Corosync ΠΈΠ»ΠΈ Proxmox HA)

Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Π² Π²Ρ‹Π±ΠΎΡ€Π΅ гостСвых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм

KVM ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π»ΡŽΠ±ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму, ΡΠΏΠΎΡΠΎΠ±Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ x86-64, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ всС дистрибутивы Linux, сСрвСрныС ΠΈ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Π΅ вСрсии Windows, FreeBSD, OpenBSD ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. Π‘ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ OVMF UEFI гостСвыС систСмы KVM ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ UEFI с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Secure Boot, Ρ‡Ρ‚ΠΎ являСтся Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΉ Windows 11 ΠΈ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ Linux.

Π Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ сцСнарии использования ΠΈ Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Π΅ случаи

ΠžΠ±Π»Π°Ρ‡Π½Π°Ρ инфраструктура

KVM являСтся Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π½ΠΎΠΉ основой OpenStack β€” Π΄ΠΎΠΌΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΎΠ±Π»Π°ΠΊΠ° с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ β€” ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΌΠΈ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π°ΠΌΠΈ. Когда Π²Ρ‹ создаётС экзСмпляр VPS Π₯остинга, сущСствуСт высокая Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° стСкС Π½Π° Π±Π°Π·Π΅ KVM, учитывая Π΄ΠΎΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ KVM Π² индустрии Linux-хостинга.

ΠŸΡ€ΠΎΠ±Ρ€ΠΎΡ GPU для Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ

ВСхничСски ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΌ, Π½ΠΎ всё Π±ΠΎΠ»Π΅Π΅ распространённым сцСнариСм использования являСтся проброс PCI (с использованиСм VFIO β€” Virtual Function I/O). Π­Ρ‚ΠΎ позволяСт Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ физичСский GPU ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π’Πœ, прСдоставляя Π΅ΠΉ прямой, нСопосрСдованный доступ ΠΊ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΌΡƒ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ GPU. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ достигаСтся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ GPU, близкая ΠΊ Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ, Π²Π½ΡƒΡ‚Ρ€ΠΈ Π’Πœ, Ρ‡Ρ‚ΠΎ критичСски Π²Π°ΠΆΠ½ΠΎ для:

  • Машинного обучСния ΠΈ обучСния ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ИИ
  • Π Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° с ускорСниСм GPU
  • Научных Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ

Π­Ρ‚ΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, лСТащая Π² основС услуг GPU Π₯остинга, Π³Π΄Π΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ рСсурсы GPU ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π°Ρ€Π΅Π½Π΄Π°Ρ‚ΠΎΡ€Π°ΠΌ Ρ‡Π΅Ρ€Π΅Π· KVM с ΠΏΡ€ΠΎΠ±Ρ€ΠΎcΠΎΠΌ VFIO, Π° Π½Π΅ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΡƒΡŽ ΡΠΌΡƒΠ»ΡΡ†ΠΈΡŽ.

ВлоТСнная виртуализация

KVM ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ β€” запуск Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π° KVM Π²Π½ΡƒΡ‚Ρ€ΠΈ гостСвой систСмы KVM. Π­Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΏΡƒΡ‚Ρ‘ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Ρ„Π»Π°Π³ΠΎΠ² CPU vmx (Intel) ΠΈΠ»ΠΈ svm (AMD) гостСвой систСмС. ВлоТСнная виртуализация ΠΏΠΎΠ»Π΅Π·Π½Π° для:

  • ΠšΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΎΠ² CI/CD, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π’Πœ для тСстирования
  • Π£Ρ‡Π΅Π±Π½Ρ‹Ρ… срСд для администраторов Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ
  • Запуска Kubernetes с изоляциСй ΡƒΠ·Π»ΠΎΠ² Π½Π° основС Π’Πœ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Kata Containers)

НакладныС расходы Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ сущСствСнны, ΠΎΠ΄Π½Π°ΠΊΠΎ для Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ тСстирования ΠΎΠ½ΠΈ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡ‹.

Виртуализация Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… сСрвСров

ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Π’Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ сСрвСры, часто Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°ΡŽΡ‚ KVM для раздСлСния физичСского оборудования Π½Π° нСсколько ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… срСд β€” раздСляя производствСнныС, тСстовыС ΠΈ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ физичСской машинС ΠΏΡ€ΠΈ сохранСнии строгих Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΉ рСсурсов Ρ‡Π΅Ρ€Π΅Π· привязку CPU ΠΈ Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ памяти.

ПанСли управлСния Π²Π΅Π±-хостингом Π½Π° KVM

ЭкзСмпляры KVM VPS ΡΠ²Π»ΡΡŽΡ‚ΡΡ стандартной основой для хостинга Π½Π° Π±Π°Π·Π΅ ΠΏΠ°Π½Π΅Π»Π΅ΠΉ управлСния. VPS с cPanel Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° гостСвой систСмС KVM, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ ΠΈΠ·ΠΎΠ»ΡΡ†ΠΈΡŽ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ОБ, Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡƒΡŽ модСлью бСзопасности cPanel, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π° Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ соблюдСниС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ рСсурсов (CPU, RAM, дисковый Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄) Π½Π° Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ срСдств управлСния Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ОБ.

РаспространённыС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ сообраТСния

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ пСрСподписки CPU: KVM позволяСт количСству vCPU ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ число физичСских ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² CPU (пСрСподписка). Π₯отя это Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для ΡΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ с Π½ΠΈΠ·ΠΊΠΈΠΌ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ спросом Π½Π° CPU, агрСссивныС коэффициСнты пСрСподписки (Π²Ρ‹ΡˆΠ΅ 4:1) для CPU-интСнсивных Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΡŽ ΠΏΡ€ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ всплСски Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ. ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΠΉΡ‚Π΅ steal time Π² ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°Ρ… гостСвой ОБ ΠΊΠ°ΠΊ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€.

Π£Ρ‡Ρ‘Ρ‚ Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ NUMA: На многосокСтных сСрвСрах нСсоотвСтствиС выдСлСния памяти Π’Πœ ΠΈ vCPU ΠΎΠ΄Π½ΠΎΠΌΡƒ ΡƒΠ·Π»Ρƒ NUMA ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡˆΡ‚Ρ€Π°Ρ„Π°ΠΌ Π·Π° ΠΌΠ΅ΠΆΡƒΠ·Π»ΠΎΠ²ΠΎΠΉ доступ ΠΊ памяти NUMA. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ numactl ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ <numatune> libvirt для привязки Π’Πœ ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ ΡƒΠ·Π»Π°ΠΌ NUMA.

Π’Ρ‹Π±ΠΎΡ€ бэкСнда Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°: Π’Ρ‹Π±ΠΎΡ€ бэкСнда Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° сущСствСнно влияСт Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° Π’Πœ. ΠžΠ±Ρ€Π°Π·Ρ‹ raw-дисков Π½Π° NVMe с io_uring ΠΈ cache=none ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. ΠžΠ±Ρ€Π°Π·Ρ‹ QCOW2 с настройками ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ вносят Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы копирования ΠΏΡ€ΠΈ записи; ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ preallocation=metadata ΠΈΠ»ΠΈ preallocation=full для Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ, Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°ΠΌ.

Π‘Π΅Ρ‚Π΅Π²ΠΎΠΉ мост vs. macvtap: Для простых ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ сСтСвой мост Linux прост Π² использовании. Для сцСнариСв с высокой пропускной ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒΡŽ macvtap Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ VEPA ΠΈΠ»ΠΈ bridge, Π»ΠΈΠ±ΠΎ SR-IOV с Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ VF, ΠΌΠΎΠ³ΡƒΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΡΠ΅Ρ‚Π΅Π²ΡƒΡŽ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ½ΡƒΡŽ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΈ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° CPU хоста.

Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ снимков: Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ снимки QCOW2 Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ состояниС согласованности ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Для Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с сохранСниСм состояния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ приостановку Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ гостя Ρ‡Π΅Ρ€Π΅Π· QEMU Guest Agent (qemu-guest-agent) ΠΏΠ΅Ρ€Π΅Π΄ созданиСм снимков для обСспСчСния согласованности Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

KVM Π² контСкстС управляСмого хостинга

Для ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½ΡƒΠΆΠ½Π° ΠΌΠΎΡ‰ΡŒ KVM Π±Π΅Π· нСобходимости нСпосрСдствСнного управлСния ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π°, управляСмыС хостинг-ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Ρ‹ Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΡƒΡŽΡ‚ эту ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ. Π‘Ρ€Π΅Π΄Π° ПанСлСй управлСния VPS, построСнная Π½Π° KVM, прСдоставляСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ root-доступ ΠΊ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ гостСвой систСмС, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ обСспСчиваСт обслуТиваниС Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π°, устранСниС Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… сбоСв ΠΈ ΠΆΠΈΠ²Ρ‹Π΅ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ.

Для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ трСбуСтся управляСмая почтовая инфраструктура наряду с рСсурсами VPS, сочСтаниС KVM VPS с Email Π₯остингом позволяСт Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ доставку ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ β€” это Π»ΡƒΡ‡ΡˆΠ°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°, ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ влияниС скомпромСтированного прилоТСния Π½Π° Ρ€Π΅ΠΏΡƒΡ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ сСрвСра.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ список тСхничСских Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ этот ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ список, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ KVM подходящим ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для вашСй срСды:

  • Π’ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ: KVM ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½ для сСрвСрных Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния, Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… срСд. Для ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½ΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… столов ΠΎΡ†Π΅Π½ΠΈΡ‚Π΅, Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ Π»ΠΈ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ спСциализированныС VDI-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.
  • ОБ хоста: KVM Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ хоста Π½Π° Linux. Если ваша инфраструктура ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° Π½Π° Windows, Hyper-V ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ трудности.
  • ВрСбования ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ: Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ 95% ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ bare-metal CPU, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² гостСвых систСмах установлСны Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ VirtIO ΠΈ настроСны привязка CPU ΠΈ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ NUMA.
  • Π Π°Π±ΠΎΡ‡ΠΈΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ GPU: Если Π°Ρ€Π΅Π½Π΄Π°Ρ‚ΠΎΡ€Π°ΠΌ трСбуСтся Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ доступ ΠΊ GPU, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ IOMMU Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ Π² BIOS/UEFI ΠΈ Ρ‡Ρ‚ΠΎ проброс VFIO поддСрТиваСтся вашим ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.
  • Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ управлСния: Для ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Ρ… хостов ΠΈΠ»ΠΈ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΉ достаточно virt-manager ΠΈΠ»ΠΈ Cockpit с ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ Machines. Для многохостовых кластСров рассмотритС Proxmox VE ΠΈΠ»ΠΈ oVirt.
  • БэкСнд Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°: ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ raw-ΠΎΠ±Ρ€Π°Π·Ρ‹ ΠΈΠ»ΠΈ QCOW2 с preallocation=full Π½Π° NVMe для Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ, Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°ΠΌ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ceph RBD для распрСдСлённого, высокодоступного Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°.
  • Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ бСзопасности: Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ sVirt (SELinux/AppArmor) ΠΈ ΠΈΠ·ΠΎΠ»ΡΡ†ΠΈΡŽ seccomp для процСссов QEMU Π² любой ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ срСдС.
  • ВлоТСнная виртуализация: Π’ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ нСобходимости; ΠΎΠ½Π° добавляСт Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ Π°Ρ‚Π°ΠΊΠΈ.

Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы

Π’ Ρ‡Ρ‘ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ KVM ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ Docker?

KVM Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΠ΅ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ΅ обСспСчСниС, прСдоставляя ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π’Πœ собствСнноС ядро, пространство памяти ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ устройства. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Docker совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ядро хоста ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ пространства ΠΈΠΌΡ‘Π½ Linux ΠΈ cgroups для изоляции. KVM обСспСчиваСт Π±ΠΎΠ»Π΅Π΅ ΡΡ‚Ρ€ΠΎΠ³ΡƒΡŽ ΠΈΠ·ΠΎΠ»ΡΡ†ΠΈΡŽ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π»ΡŽΠ±ΡƒΡŽ Π³ΠΎΡΡ‚Π΅Π²ΡƒΡŽ ОБ; ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ мСньшиС Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы ΠΈ Π±ΠΎΠ»Π΅Π΅ быстрый запуск для Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ядро.

Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π»ΠΈ KVM ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ CPU для Ρ€Π°Π±ΠΎΡ‚Ρ‹?

Π”Π°. KVM Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ β€” Intel VT-x ΠΈΠ»ΠΈ AMD-V β€” ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² BIOS/UEFI систСмы. Π‘Π΅Π· этих Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ KVM Π½Π΅ загрузится. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ² Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ„Π»Π°Π³ΠΎΠ² vmx (Intel) ΠΈΠ»ΠΈ svm (AMD) Π² /proc/cpuinfo.

ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ KVM Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Windows?

Π”Π°. KVM ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ гостСвыС систСмы Windows ΠΎΡ‚ Windows XP Π΄ΠΎ Windows Server 2022 ΠΈ Windows 11. Для ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ установитС ΠΏΠ°ΠΊΠ΅Ρ‚ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² VirtIO Win Π²Π½ΡƒΡ‚Ρ€ΠΈ гостСвой систСмы Windows для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠ°Ρ€Π°Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… сСтСвых Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°. Для Windows 11 трСбуСтся Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° UEFI с OVMF.

ΠšΠ°ΠΊΠΎΠ²Ρ‹ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ KVM ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с bare-metal?

Для CPU-интСнсивных Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы KVM ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ 1–5% ΠΏΡ€ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΡ… Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ использовании Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² VirtIO. Π Π°Π±ΠΎΡ‡ΠΈΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ с интСнсивным Π²Π²ΠΎΠ΄ΠΎΠΌ-Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ нСсколько Π±ΠΎΠ»Π΅Π΅ высокиС Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы Π² зависимости ΠΎΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ бэкСнда Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ настроСнныС срСды KVM ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ Π΄ΠΎΡΡ‚ΠΈΠ³Π°ΡŽΡ‚ 95–99% пропускной способности bare-metal.

Как KVM обСспСчиваСт ΠΈΠ·ΠΎΠ»ΡΡ†ΠΈΡŽ Π’Πœ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ срСдС?

KVM обСспСчиваСт ΠΈΠ·ΠΎΠ»ΡΡ†ΠΈΡŽ Π½Π° Ρ‚Ρ€Ρ‘Ρ… уровнях: Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΌ (ΠΊΠΎΠ»ΡŒΡ†Π° ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ CPU ΠΈ IOMMU для изоляции устройств), ядра (каТдая Π’Πœ являСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ процСссом с собствСнными отобраТСниями памяти) ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° бСзопасности (sVirt Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΊΠΈ SELinux ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ процСссу Π’Πœ ΠΈ связанным с Π½ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·Π°ΠΌ дисков, прСдотвращая ΠΌΠ΅ΠΆΠ²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ доступ Π΄Π°ΠΆΠ΅ Π² случаС ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚Π°Ρ†ΠΈΠΈ процСсса QEMU).