Hypervisor — bitta fizik kompyuter resurslarini bir nechta virtual mashina o‘rtasida ajratib, ularning ishlashini boshqaradigan dasturiy yoki firmware qatlami.
Hypervisor CPU, RAM, storage va network qurilmalarini virtual ko‘rinishda guest operatsion tizimlarga taqdim etadi. Har virtual mashina o‘z operatsion tizimi va ilovalariga ega.
Hypervisor virtual mashinalarni bir-biridan va hostdan izolatsiya qilishga mas’ul.
Type 1
Type 1 hypervisor to‘g‘ridan-to‘g‘ri fizik apparat ustida ishlaydi.
Misollar:
- VMware ESXi;
- Microsoft Hyper-V Server arxitekturasi;
- Xen;
- KVM Linux kernel ichidagi hypervisor sifatida.
Type 1 server va data centerlarda keng qo‘llanadi.
Afzalliklari:
- yuqori performance;
- markaziy boshqaruv;
- kuchli izolatsiya;
- hardwarega yaqin nazorat.
Type 2
Type 2 hypervisor host operatsion tizim ustida dastur sifatida ishlaydi.
Misollar:
- VirtualBox;
- VMware Workstation;
- Parallels Desktop.
U desktop test, o‘quv va development uchun qulay.
Host OS driver va resurs boshqaruviga tayanadi.
Virtual CPU
Hypervisor fizik CPU vaqtini virtual CPUlar o‘rtasida rejalashtiradi.
Guest vCPU oddiy processor core sifatida ko‘rinadi.
vCPU soni fizik core sonidan ko‘p bo‘lishi mumkin. Bu overcommit hisoblanadi.
Juda katta overcommit CPU ready time va kechikishni oshiradi.
Hardware virtualization
Zamonaviy CPUlar virtualizatsiya extensionlariga ega.
Misollar:
- Intel VT-x;
- AMD-V;
- second-level address translation;
- interrupt virtualization;
- IOMMU.
Bu guestning privileged instructionlarini samarali boshqarishga yordam beradi.
Privilege
Guest kernel o‘zini yuqori privilege’da ishlayapti deb hisoblaydi. Hypervisor xavfli instruction va resurs kirishini nazorat qiladi.
Hardware extension trap va transition xarajatini kamaytiradi.
Virtual xotira
Har guest o‘z virtual va fizik deb hisoblangan manzil maydoniga ega.
Hypervisor guest physical address’ni haqiqiy host physical memoryga xaritalaydi.
Texnologiyalar:
- Extended Page Tables;
- Nested Page Tables.
Qo‘shimcha tarjima TLB va memory performance’iga ta’sir qiladi.
Memory overcommit
Hypervisor guestlarga fizik RAMdan ko‘proq virtual RAM ajratishi mumkin.
Usullar:
- ballooning;
- page sharing;
- compression;
- host swapping.
Host memory bosimi kuchaysa, barcha VM performance’i keskin pasayishi mumkin.
Virtual storage
Guest virtual diskni block device sifatida ko‘radi.
bo‘lishi mumkin.
Virtual disk formatlari snapshot va thin provisioning imkoniyatiga ega.
Virtual network
Virtual switch VM network adapterlarini o‘zaro va fizik NIC bilan bog‘laydi.
Funksiyalar:
Virtio kabi paravirtual driver emulyatsiya qilingan eski NICga qaraganda tezroq ishlaydi.
Emulyatsiya va paravirtualizatsiya
Emulated device guestga real hardware modelini taqdim etadi.
Afzalligi — eski OS driver bilan ishlaydi. Kamchiligi — ko‘proq overhead.
Paravirtual device hypervisor uchun yaratilgan samarali interfeys.
Misollar:
- virtio-net;
- virtio-blk;
- VMware paravirtual controller.
Passthrough
IOMMU yordamida fizik PCIe qurilma to‘g‘ridan-to‘g‘ri VMga berilishi mumkin.
Qo‘llanishlar:
- GPU;
- high-speed NIC;
- storage controller;
- accelerator.
Performance yuqori, lekin live migration va sharing cheklanadi.
Snapshot
Snapshot VM disk va ba’zan memory holatini saqlaydi.
Qo‘llanishlar:
Snapshot backupning to‘liq o‘rnini bosmaydi. U asosiy disk chain’iga bog‘liq va uzoq saqlansa performancega ta’sir qiladi.
Live migration
Ishlayotgan VMni boshqa hostga minimal uzilish bilan ko‘chirish mumkin.
Jarayon:
- disk umumiy storage’da yoki ko‘chiriladi;
- memory sahifalari nusxalanadi;
- tez o‘zgaruvchi sahifalar qayta yuboriladi;
- VM qisqa to‘xtatiladi;
- yakuniy state ko‘chadi;
- yangi hostda davom etadi.
CPU feature va network mosligi kerak.
High availability
Host ishlamay qolsa, boshqaruv tizimi VMlarni boshqa hostda qayta ishga tushiradi.
Bu live migration emas, chunki eski host ishlamaydi.
HA uchun:
kerak.
Isolation
Hypervisor VMlar o‘rtasida:
izolatsiyasini saqlaydi.
Hypervisor zaifligi VM escape’ga olib kelishi mumkin. Patch va minimal management access muhim.
Nested virtualization
Virtual mashina ichida yana hypervisor ishlatish nested virtualization hisoblanadi.
Development, CI va trainingda foydali.
Qo‘shimcha virtualizatsiya qatlami performance va feature cheklovini oshiradi.
Monitoring
Hypervisor darajasida:
- CPU usage va ready time;
- memory pressure;
- disk latency;
- IOPS;
- network throughput;
- balloon;
- swap;
- snapshot;
- hardware sensor
kuzatiladi.
Guest ichidagi 100% CPU hostdagi holatni to‘liq ifodalamaydi.
Diagnostika
VM sekin ishlasa:
- vCPU overcommit;
- CPU ready;
- NUMA;
- memory balloon;
- host swap;
- disk latency;
- snapshot chain;
- network driver;
- storage queue;
- host hardware
tekshiriladi.
Muammo guest OS, hypervisor yoki fizik infratuzilma qatlamida bo‘lishi mumkin.
NUMA
Ko‘p socketli serverda CPU va RAM NUMA node’larga bo‘linadi. VM vCPUlari bir node’da, xotirasi boshqa node’da joylashsa, memory latency oshadi.
Katta VM uchun:
- vNUMA;
- CPU pinning;
- memory locality;
- host topology
hisobga olinadi.
Timekeeping
Virtual mashina soati fizik timer va hypervisor clock source’iga tayanadi. Host overload yoki migration vaqt driftiga sabab bo‘lishi mumkin.
Guest NTP ishlatadi, hypervisor esa stable paravirtual clock taqdim etadi. Bir vaqtda bir nechta zid time sync mexanizmi ishlatilmaydi.
Bog‘liq tushunchalar
Virtualization, Virtual machine, Type 1, Type 2, vCPU, IOMMU, Snapshot, Live migration, KVM, ESXi