Zoeken op website

RHCSA-serie: Basisprincipes van virtualisatie en gastenbeheer met KVM - Deel 15


Als je het woord virtualiseren in een woordenboek opzoekt, zul je ontdekken dat het betekent “een virtuele (in plaats van een werkelijke) versie van iets creëren”. In de computerwereld verwijst de term virtualisatie naar de mogelijkheid om meerdere besturingssystemen tegelijkertijd en geïsoleerd van elkaar te laten draaien, bovenop hetzelfde fysieke (hardware) systeem, dat in het virtualisatieschema bekend staat als host.

Door het gebruik van de virtuele machinemonitor (ook bekend als hypervisor), worden virtuele machines (ook wel gasten genoemd) voorzien van virtuele bronnen (d.w.z. CPU, RAM, opslag, netwerk interfaces, om er maar een paar te noemen) van de onderliggende hardware.

Met dat in gedachten is het duidelijk dat een van de belangrijkste voordelen van virtualisatie kostenbesparingen is (in apparatuur en netwerkinfrastructuur en in termen van onderhoudsinspanningen) en een aanzienlijke vermindering van de fysieke ruimte die nodig is om alle benodigde hardware te huisvesten.

Aangezien deze korte how-to niet alle virtualisatiemethoden kan omvatten, raad ik u aan de documentatie in de samenvatting te raadplegen voor meer details over dit onderwerp.

Houd er rekening mee dat dit artikel bedoeld is als startpunt voor het leren van de basisprincipes van virtualisatie in RHEL 7 met behulp van KVM (Kernel-gebaseerde virtuele machine) met opdrachtregelhulpprogramma's, en niet als een in -diepgaande bespreking van het onderwerp.

Hardwarevereisten verifiëren en pakketten installeren

Om virtualisatie in te stellen, moet uw CPU dit ondersteunen. Met het volgende commando kunt u controleren of uw systeem aan de eisen voldoet:


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

In de volgende schermafbeelding kunnen we zien dat het huidige systeem (met een AMD microprocessor) virtualisatie ondersteunt, zoals aangegeven door svm. Als we een op Intel gebaseerde processor hadden, zouden we in plaats daarvan vmx zien in de resultaten van de bovenstaande opdracht.

Bovendien moet u de virtualisatiemogelijkheden ingeschakeld hebben in de firmware van uw host (BIOS of UEFI).

Installeer nu de benodigde pakketten:

  1. qemu-kvm is een open source virtualizer die hardware-emulatie biedt voor de KVM-hypervisor, terwijl qemu-img een opdrachtregelprogramma biedt voor het manipuleren van schijfimages.
  2. libvirt bevat de tools voor interactie met de virtualisatiemogelijkheden van het besturingssysteem.
  3. libvirt-python bevat een module die het mogelijk maakt dat applicaties geschreven in Python de interface gebruiken die door libvirt wordt geleverd.
  4. libguestfs-tools: diverse opdrachtregelprogramma's voor systeembeheerders voor virtuele machines.
  5. virt-install: andere opdrachtregelhulpprogramma's voor het beheer van virtuele machines.

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

Zodra de installatie is voltooid, zorg ervoor dat u de libvirtd service start en inschakelt:


systemctl start libvirtd.service
systemctl enable libvirtd.service

Standaard kan elke virtuele machine alleen communiceren met de rest op dezelfde fysieke server en met de host zelf. Om de gasten in staat te stellen andere machines binnen ons LAN en ook het internet te bereiken, moeten we een bridge-interface in onze host opzetten (bijvoorbeeld br0) door:

1. door de volgende regel toe te voegen aan onze hoofd-NIC-configuratie (hoogstwaarschijnlijk /etc/sysconfig/network-scripts/ifcfg-enp0s3):


BRIDGE=br0

2. het maken van het configuratiebestand voor br0 (/etc/sysconfig/network-scripts/ifcfg-br0) met deze inhoud (houd er rekening mee dat u moet mogelijk het IP-adres, gateway-adres en DNS-informatie wijzigen):


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. tenslotte, het doorsturen van pakketten mogelijk maken door in /etc/sysctl.conf het volgende te maken:


net.ipv4.ip_forward = 1

en het laden van de wijzigingen in de huidige kernelconfiguratie:


sysctl -p

Houd er rekening mee dat u firewalld mogelijk ook moet vertellen dat dit soort verkeer moet worden toegestaan. Houd er rekening mee dat u het artikel over dat onderwerp in dezelfde serie (Deel 11: Beheer van netwerkverkeer met behulp van FirewallD en Iptables) kunt raadplegen als u daarbij hulp nodig heeft.