Ricerca nel sito web

Serie RHCSA: nozioni fondamentali di virtualizzazione e amministrazione guest con KVM - Parte 15


Se cerchi la parola virtualizzare in un dizionario, scoprirai che significa "creare una versione virtuale (piuttosto che reale) di qualcosa". In informatica, il termine virtualizzazione si riferisce alla possibilità di eseguire più sistemi operativi contemporaneamente e isolati l'uno dall'altro, sullo stesso sistema fisico (hardware), noto nello schema di virtualizzazione come host.

Attraverso l'uso del monitor della macchina virtuale (noto anche come hypervisor), alle macchine virtuali (denominate ospiti) vengono fornite risorse virtuali (ovvero CPU, RAM, spazio di archiviazione, rete interfacce, per citarne alcune) dall'hardware sottostante.

Tenendo presente tutto ciò, è evidente che uno dei principali vantaggi della virtualizzazione è il risparmio sui costi (in termini di apparecchiature e infrastruttura di rete e in termini di manutenzione) e una sostanziale riduzione dello spazio fisico richiesto per ospitare tutto l'hardware necessario.

Poiché questo breve tutorial non può coprire tutti i metodi di virtualizzazione, ti incoraggio a fare riferimento alla documentazione elencata nel riepilogo per ulteriori dettagli sull'argomento.

Tieni presente che il presente articolo vuole essere un punto di partenza per apprendere le basi della virtualizzazione in RHEL 7 utilizzando KVM (Kernel-based Virtual Machine) con utilità della riga di comando e non un'applicazione in -discussione approfondita dell'argomento.

Verifica dei requisiti hardware e installazione dei pacchetti

Per configurare la virtualizzazione, la tua CPU deve supportarla. Puoi verificare se il tuo sistema soddisfa i requisiti con il seguente comando:


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

Nello screenshot seguente possiamo vedere che il sistema attuale (con un microprocessore AMD) supporta la virtualizzazione, come indicato da svm. Se avessimo un processore basato su Intel, vedremmo invece vmx nei risultati del comando precedente.

Inoltre, dovrai avere le funzionalità di virtualizzazione abilitate nel firmware del tuo host (BIOS o UEFI).

Ora installa i pacchetti necessari:

  1. qemu-kvm è un virtualizzatore open source che fornisce l'emulazione hardware per l'hypervisor KVM mentre qemu-img fornisce uno strumento da riga di comando per manipolare le immagini del disco.
  2. libvirt include gli strumenti per interagire con le capacità di virtualizzazione del sistema operativo.
  3. libvirt-python contiene un modulo che consente alle applicazioni scritte in Python di utilizzare l'interfaccia fornita da libvirt.
  4. libguestfs-tools: vari strumenti da riga di comando dell'amministratore di sistema per macchine virtuali.
  5. virt-install: altre utilità da riga di comando per l'amministrazione della macchina virtuale.

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

Una volta completata l'installazione, assicurati di avviare e abilitare il servizio libvirtd:


systemctl start libvirtd.service
systemctl enable libvirtd.service

Per impostazione predefinita, ciascuna macchina virtuale potrà comunicare solo con le altre presenti nello stesso server fisico e con l'host stesso. Per consentire agli ospiti di raggiungere altre macchine all'interno della nostra LAN e anche Internet, dobbiamo impostare un'interfaccia bridge nel nostro host (ad esempio br0) tramite,

1. aggiungendo la seguente riga alla nostra configurazione NIC principale (molto probabilmente /etc/sysconfig/network-scripts/ifcfg-enp0s3):


BRIDGE=br0

2. creando il file di configurazione per br0 (/etc/sysconfig/network-scripts/ifcfg-br0) con questi contenuti (nota che tu potrebbe essere necessario modificare l'indirizzo IP, l'indirizzo del gateway e le informazioni DNS):


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. infine, abilitare l'inoltro dei pacchetti creando, in /etc/sysctl.conf,


net.ipv4.ip_forward = 1

e caricando le modifiche alla configurazione corrente del kernel:


sysctl -p

Tieni presente che potresti anche dover dire a firewalld che questo tipo di traffico dovrebbe essere consentito. Ricorda che puoi fare riferimento all'articolo su quell'argomento in questa stessa serie (Parte 11: Controllo del traffico di rete utilizzando FirewallD e Iptables) se hai bisogno di aiuto per farlo.