RHCSA Series: Essentials of Virtualization and Guest Administration with KVM - Del 15
Hvis du slår opp ordet virtualisere i en ordbok, vil du finne at det betyr «å lage en virtuell (i stedet for faktisk) versjon av noe.» I databehandling refererer begrepet virtualisering til muligheten for å kjøre flere operativsystemer samtidig og isolert fra hverandre, på toppen av det samme fysiske (maskinvare) systemet, kjent i virtualiseringsskjemaet som vert.
Gjennom bruken av den virtuelle maskinmonitoren (også kjent som hypervisor), blir virtuelle maskiner (referert til som gjester) gitt virtuelle ressurser (dvs. CPU, RAM, lagring, nettverksgrensesnitt, for å nevne noen) fra den underliggende maskinvaren.
Med det i tankene er det tydelig å se at en av hovedfordelene med virtualisering er kostnadsbesparelser (i utstyr og nettverksinfrastruktur og i form av vedlikeholdsinnsats) og en betydelig reduksjon i den fysiske plassen som kreves for å romme all nødvendig maskinvare.
Siden denne korte fremgangsmåten ikke kan dekke alle virtualiseringsmetoder, oppfordrer jeg deg til å referere til dokumentasjonen som er oppført i sammendraget for ytterligere detaljer om emnet.
Vær oppmerksom på at denne artikkelen er ment å være et utgangspunkt for å lære det grunnleggende om virtualisering i RHEL 7 ved å bruke KVM (Kernel-basert virtuell maskin) med kommandolinjeverktøy, og ikke en grundig diskusjon av emnet.
Verifisere maskinvarekrav og installere pakker
For å sette opp virtualisering må CPU-en din støtte det. Du kan bekrefte om systemet ditt oppfyller kravene med følgende kommando:
# grep -E 'svm|vmx' /proc/cpuinfo
I det følgende skjermbildet kan vi se at det nåværende systemet (med en AMD-mikroprosessor) støtter virtualisering, som indikert av svm. Hvis vi hadde en Intel-basert prosessor, ville vi se vmx i stedet i resultatene av kommandoen ovenfor.
I tillegg må du ha virtualiseringsfunksjoner aktivert i fastvaren til verten din (BIOS eller UEFI).
Installer nå de nødvendige pakkene:
- qemu-kvm er en åpen kildekode-virtualisering som gir maskinvareemulering for KVM-hypervisoren, mens qemu-img gir et kommandolinjeverktøy for å manipulere diskbilder.
- libvirt inkluderer verktøyene for å samhandle med virtualiseringsmulighetene til operativsystemet.
- libvirt-python inneholder en modul som tillater applikasjoner skrevet i Python å bruke grensesnittet levert av libvirt.
- libguestfs-tools: diverse systemadministrator-kommandolinjeverktøy for virtuelle maskiner.
- virt-install: andre kommandolinjeverktøy for virtuell maskinadministrasjon.
# yum update && yum install qemu-kvm qemu-img libvirt libvirt-python libguestfs-tools virt-install
Når installasjonen er fullført, sørg for at du starter og aktiverer libvirtd-tjenesten:
# systemctl start libvirtd.service # systemctl enable libvirtd.service
Som standard vil hver virtuell maskin kun kunne kommunisere med resten på den samme fysiske serveren og med verten selv. For å tillate gjestene å nå andre maskiner innenfor vårt LAN og også Internett, må vi sette opp et brogrensesnitt i verten vår (si br0, for eksempel) ved å,
1. legge til følgende linje i hovedkonfigurasjonen for NIC (mest sannsynlig /etc/sysconfig/network-scripts/ifcfg-enp0s3
):
BRIDGE=br0
2. lage konfigurasjonsfilen for br0 (/etc/sysconfig/network-scripts/ifcfg-br0
) med dette innholdet (merk at du kanskje må endre IP-adressen, gatewayadressen og DNS-informasjonen ):
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. til slutt, aktivere pakkevideresending ved å lage, i /etc/sysctl.conf
,
net.ipv4.ip_forward = 1
og laster endringene til gjeldende kjernekonfigurasjon:
# sysctl -p
Merk at du kanskje også må fortelle brannmuren at denne typen trafikk bør tillates. Husk at du kan referere til artikkelen om det emnet i samme serie (Del 11: Network Traffic Control Using FirewallD and Iptables) hvis du trenger hjelp til å gjøre det.