RHCSA serija: Virtualizavimo ir svečių administravimo su KVM pagrindai – 15 dalis


Jei ieškosite žodžio virtualizuoti žodyne, pamatysite, kad jis reiškia „sukurti virtualią (o ne tikrą) kažko versiją“. Skaičiuojant terminas „virtualizacija“ reiškia galimybę vienu metu paleisti kelias operacines sistemas ir atskirti vieną nuo kitos toje pačioje fizinėje (aparatinės įrangos) sistemoje, kuri virtualizacijos schemoje vadinama priegloba.

Naudojant virtualios mašinos monitorių (taip pat žinomą kaip hipervizorius), virtualiosioms mašinoms (vadinamoms svečioms) suteikiami virtualūs ištekliai (t. y. CPU, RAM, saugykla, tinklas). sąsajas, tik keletą) iš pagrindinės aparatinės įrangos.

Turint tai omenyje, akivaizdu, kad vienas iš pagrindinių virtualizacijos pranašumų yra sąnaudų (įrangos ir tinklo infrastruktūros bei priežiūros pastangų) taupymas ir labai sumažinta fizinė erdvė, reikalinga visai reikalingai aparatūrai talpinti.

Kadangi ši trumpa instrukcija negali apimti visų virtualizavimo metodų, raginu peržiūrėti santraukoje pateiktą dokumentaciją, kad gautumėte daugiau informacijos šia tema.

Atminkite, kad šis straipsnis skirtas kaip atspirties taškas norint išmokti virtualizacijos pagrindų RHEL 7 naudojant KVM (branduolių virtualią mašiną) su komandinės eilutės programomis, o ne - gilus temos aptarimas.

Aparatinės įrangos reikalavimų patikrinimas ir paketų diegimas

Norint nustatyti virtualizaciją, jūsų CPU turi ją palaikyti. Galite patikrinti, ar jūsų sistema atitinka reikalavimus, naudodami šią komandą:


grep -E 'svm|vmx' /proc/cpuinfo

Toliau pateiktoje ekrano kopijoje matome, kad dabartinė sistema (su AMD mikroprocesoriumi) palaiko virtualizavimą, kaip nurodo svm. Jei turėtume „Intel“ procesorių, anksčiau pateiktos komandos rezultatuose matytume vmx.

Be to, prieglobos programinėje įrangoje (BIOS arba UEFI) turės būti įjungtos virtualizacijos galimybės.

Dabar įdiekite reikiamus paketus:

  1. qemu-kvm yra atvirojo kodo virtualizatorius, teikiantis aparatinės įrangos emuliaciją KVM hipervizoriui, o qemu-img yra komandų eilutės įrankis, skirtas disko vaizdams valdyti.
  2. libvirt apima įrankius, skirtus sąveikauti su operacinės sistemos virtualizavimo galimybėmis.
  3. libvirt-python yra modulis, leidžiantis programoms, parašytoms Python, naudoti sąsają, kurią teikia libvirt.
  4. libguestfs-tools: įvairūs sistemos administratoriaus komandų eilutės įrankiai, skirti virtualioms mašinoms.
  5. virt-install: kitos komandų eilutės priemonės, skirtos virtualios mašinos administravimui.

yum update && yum install qemu-kvm qemu-img libvirt libvirt-python libguestfs-tools virt-install

Baigę diegti, būtinai paleiskite ir įgalinkite paslaugą libvirtd:


systemctl start libvirtd.service
systemctl enable libvirtd.service

Pagal numatytuosius nustatymus kiekviena virtuali mašina galės susisiekti tik su likusia tame pačiame fiziniame serveryje ir su pačiu pagrindiniu kompiuteriu. Kad svečiai galėtų pasiekti kitus įrenginius mūsų LAN viduje ir internetą, turime nustatyti tilto sąsają savo priegloboje (pvz., br0) taip:

1. prie pagrindinės NIC konfigūracijos pridėjus šią eilutę (greičiausiai /etc/sysconfig/network-scripts/ifcfg-enp0s3):


BRIDGE=br0

2. sukurkite br0 (/etc/sysconfig/network-scripts/ifcfg-br0) konfigūracijos failą su šiuo turiniu (atminkite, kad gali tekti pakeisti IP adresą, šliuzo adresą ir DNS informaciją):


DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.0.18
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
NM_CONTROLLED=no
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=br0
ONBOOT=yes
DNS1=8.8.8.8
DNS2=8.8.4.4

3. galiausiai įgalinkite paketų persiuntimą, aplanke /etc/sysctl.conf


net.ipv4.ip_forward = 1

ir įkeliami dabartinės branduolio konfigūracijos pakeitimai:


sysctl -p

Atminkite, kad taip pat gali reikėti pranešti užkardai, kad tokio tipo srautas turėtų būti leidžiamas. Atminkite, kad galite peržiūrėti tos pačios serijos straipsnį ta tema (11 dalis: Tinklo srauto valdymas naudojant FirewallD ir Iptables), jei jums reikia pagalbos.