Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ 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. Π΄ΡΡΠ³ΠΈΠ΅ Π³ΠΈΠΏΠ΅ΡΠ²ΠΈΠ·ΠΎΡΡ: ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅
| Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° | KVM | VMware ESXi | Hyper-V | Xen |
|---|---|---|---|---|
| Π’ΠΈΠΏ Π³ΠΈΠΏΠ΅ΡΠ²ΠΈΠ·ΠΎΡΠ° | Type-1 (ΡΠ΅ΡΠ΅Π· ΡΠ΄ΡΠΎ Linux) | Type-1 (bare-metal) | Type-1 (bare-metal) | Type-1 (bare-metal) |
| ΠΠΈΡΠ΅Π½Π·ΠΈΡ | ΠΡΠΊΡΡΡΡΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ (GPL) | ΠΡΠΎΠΏΡΠΈΠ΅ΡΠ°ΡΠ½Π°Ρ (Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ) | ΠΡΠΎΠΏΡΠΈΠ΅ΡΠ°ΡΠ½Π°Ρ (Π²Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠΎΡΡΠ°Π² Windows Server) | ΠΡΠΊΡΡΡΡΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ (GPL) |
| ΠΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ CPU | Intel VT-x / AMD-V | Intel VT-x / AMD-V | Intel VT-x / AMD-V | Intel VT-x / AMD-V |
| ΠΠ°ΡΠ°Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π²Π²ΠΎΠ΄-Π²ΡΠ²ΠΎΠ΄ | VirtIO | VMware PVSCSI / VMXNET3 | Hyper-V Synthetic Adapters | Xen PV drivers |
| ΠΠΈΠ²Π°Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ | ΠΠ° (ΡΠ΅ΡΠ΅Π· virsh migrate) | ΠΠ° (vMotion) | ΠΠ° (Live Migration) | ΠΠ° |
| ΠΠ΅ΡΠ΅ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ° ΠΏΠ°ΠΌΡΡΠΈ | ΠΠ° (KSM, ballooning) | ΠΠ° (TPS, ballooning) | ΠΠ° (Dynamic Memory) | ΠΠ° |
| ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ | libvirt, virt-manager, Proxmox, oVirt | vCenter | SCVMM, Hyper-V Manager | XenCenter, XCP-ng |
| ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π³ΠΎΡΡΠ΅Π²ΡΡ ΠΠ‘ | Linux, Windows, BSD, macOS (ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎ) | Linux, Windows, BSD | Linux, Windows | Linux, Windows, BSD |
| ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΎΠ±Π»Π°ΠΊΠΎΠΌ | ΠΠ°ΡΠΈΠ²Π½Π°Ρ (OpenStack, oVirt) | VMware Cloud | Azure | ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½Π°Ρ |
| ΠΠ°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ | ΠΡΠ΅Π½Ρ Π½ΠΈΠ·ΠΊΠΈΠ΅ | ΠΠΈΠ·ΠΊΠΈΠ΅ | ΠΠΈΠ·ΠΊΠΈΠ΅ | ΠΠΈΠ·ΠΊΠΈΠ΅ |
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ 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).
Π½Π° Π²ΡΠ΅Ρ
Ρ
ΠΎΡΡΠΈΠ½Π³ΠΎΠ²ΡΡ
ΡΡΠ»ΡΠ³Π°Ρ