Virtualizzazione · 6 min read · Jan 07, 2026

Virtualizzazione Con KVM Su Un Server Fedora 17

Virtualizzazione Con KVM Su Un Server Fedora 17

Versione 1.0
Autore: Falko Timme
Seguimi su Twitter

Questa guida spiega come puoi installare e utilizzare KVM per creare ed eseguire macchine virtuali su un server Fedora 17. Mostrerò come creare macchine virtuali basate su immagini e anche macchine virtuali che utilizzano un volume logico (LVM). KVM è l’abbreviazione di Kernel-based Virtual Machine e sfrutta la virtualizzazione hardware, cioè hai bisogno di una CPU che supporti la virtualizzazione hardware, ad esempio Intel VT o AMD-V.

Non fornisco alcuna garanzia che questo funzionerà per te!

1 Nota Preliminare

Sto usando un server Fedora 17 con il nome host server1.example.com e l’indirizzo IP 192.168.0.100 qui come mio host KVM.

Ho disabilitato SELinux sul mio sistema Fedora 17. Non ho testato con SELinux attivo; potrebbe funzionare, ma se non lo fa, è meglio disattivare SELinux:

vi /etc/selinux/config

Imposta SELINUX=disabled…

| # Questo file controlla lo stato di SELinux sul sistema. # SELINUX= può assumere uno di questi tre valori: # enforcing - La politica di sicurezza SELinux è applicata. # permissive - SELinux stampa avvisi invece di applicare. # disabled - Nessuna politica SELinux è caricata. SELINUX=disabled # SELINUXTYPE= può assumere uno di questi due valori: # targeted - I processi mirati sono protetti, # mls - Protezione Multi Level Security. SELINUXTYPE=targeted |

… e riavvia:

reboot

Abbiamo anche bisogno di un sistema desktop dove installiamo virt-manager in modo da poterci connettere alla console grafica delle macchine virtuali che installiamo. Sto usando un desktop Fedora 17 qui.

2 Installazione di KVM

Host KVM Fedora 17:

Controlla prima se la tua CPU supporta la virtualizzazione hardware - se è così, il comando

egrep '(vmx|svm)' --color=always /proc/cpuinfo

dovrebbe visualizzare qualcosa, ad esempio:

[root@server1 ~]# egrep '(vmx|svm)' --color=always /proc/cpuinfo  
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall  
 nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy misalignsse  
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall  
 nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy misalignsse  
[root@server1 ~]#

Se non viene visualizzato nulla, allora il tuo processore non supporta la virtualizzazione hardware e devi fermarti qui.

Ora importiamo le chiavi GPG per i pacchetti software:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

Per installare KVM e virtinst (uno strumento per creare macchine virtuali), eseguiamo

yum install kvm libvirt python-virtinst qemu-kvm

Crea i collegamenti di avvio del sistema per il demone libvirt e avvialo:

systemctl enable libvirtd.service  
systemctl start libvirtd.service

Per controllare se KVM è stato installato correttamente, esegui

virsh -c qemu:///system list

Dovrebbe visualizzare qualcosa di simile:

[root@server1 ~]# virsh -c qemu:///system list  
 Id Name                 State  
----------------------------------  
  
[root@server1 ~]#

Se visualizza un errore, allora qualcosa è andato storto.

Successivamente dobbiamo configurare un bridge di rete sul nostro server in modo che le nostre macchine virtuali possano essere accessibili da altri host come se fossero sistemi fisici nella rete.

Per fare ciò, installiamo il pacchetto bridge-utils…

yum install bridge-utils

… e configuriamo un bridge.

Disabilito il NetworkManager di Fedora e abilito la rete “normale”. NetworkManager è utile per i desktop dove le connessioni di rete possono cambiare (ad esempio LAN vs. WLAN), ma su un server di solito non cambi le connessioni di rete:

systemctl disable NetworkManager.service  
systemctl enable network.service  
systemctl restart network.service  
systemctl stop NetworkManager.service

Controlla il tuo /etc/resolv.conf se elenca tutti i nameserver che hai precedentemente configurato:

cat /etc/resolv.conf

Se mancano i nameserver, esegui

system-config-network

e aggiungi di nuovo i nameserver mancanti.

Successivamente scopri la tua interfaccia di rete principale eseguendo

ifconfig

Nel mio caso, si chiama em1 - questo è importante per assicurarti di modificare il file di configurazione di rete corretto - nel mio caso /etc/sysconfig/network-scripts/ifcfg-em1.

Per configurare il bridge, crea il file /etc/sysconfig/network-scripts/ifcfg-br0 (per favore usa i valori DNS1 (più eventuali altre impostazioni DNS, se presenti), GATEWAY, IPADDR, NETMASK e SEARCH dal file /etc/sysconfig/network-scripts/ifcfg-em1):

vi /etc/sysconfig/network-scripts/ifcfg-br0

| DEVICE=br0 TYPE=Bridge BOOTPROTO=static DNS1=8.8.8.8 GATEWAY=192.168.0.1 IPADDR=192.168.0.100 NETMASK=255.255.255.0 ONBOOT=yes DNS2=8.8.4.4 SEARCH="example.com" |

Modifica /etc/sysconfig/network-scripts/ifcfg-em1 come segue (commenta BOOTPROTO, DNS1 (e tutti gli altri server DNS, se presenti), GATEWAY, IPADDR, NETMASK e SEARCH, imposta NM_CONTROLLED su no e aggiungi BRIDGE=br0):

vi /etc/sysconfig/network-scripts/ifcfg-em1

| UUID="e8a818cc-0e23-47b8-88f3-013567828572" NM_CONTROLLED=no #BOOTPROTO=none HWADDR=00:1e:90:f3:f0:02 ONBOOT=yes #IPADDR=192.168.0.100 #NETMASK=255.255.255.0 #DNS2=8.8.4.4 TYPE=Ethernet #GATEWAY=192.168.0.1 #DNS1=8.8.8.8 IPV6INIT=no USERCTL=no PREFIX=24 BRIDGE=br0 |

Poi riavvia il sistema:

reboot

Dopo il riavvio, esegui

ifconfig

Ora dovrebbe mostrare il bridge di rete (br0):

[root@server1 ~]# ifconfig  
br0: flags=4163  mtu 1500  
        inet 192.168.0.100  netmask 255.255.255.0  broadcast 192.168.0.255  
        inet6 fe80::21e:90ff:fef3:f002  prefixlen 64  scopeid 0x20  
        ether 00:1e:90:f3:f0:02  txqueuelen 0  (Ethernet)  
        RX packets 70  bytes 7511 (7.3 KiB)  
        RX errors 0  dropped 0  overruns 0  frame 0  
        TX packets 76  bytes 10847 (10.5 KiB)  
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  
  
em1: flags=4163  mtu 1500  
        ether 00:1e:90:f3:f0:02  txqueuelen 1000  (Ethernet)  
        RX packets 117  bytes 15163 (14.8 KiB)  
        RX errors 0  dropped 0  overruns 0  frame 0  
        TX packets 92  bytes 12899 (12.5 KiB)  
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  
  
lo: flags=73  mtu 16436  
        inet 127.0.0.1  netmask 255.0.0.0  
        inet6 ::1  prefixlen 128  scopeid 0x10  
        loop  txqueuelen 0  (Local Loopback)  
        RX packets 0  bytes 0 (0.0 B)  
        RX errors 0  dropped 0  overruns 0  frame 0  
        TX packets 0  bytes 0 (0.0 B)  
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  
  
virbr0: flags=4099  mtu 1500  
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255  
        ether ce:18:6f:2a:7f:0b  txqueuelen 0  (Ethernet)  
        RX packets 0  bytes 0 (0.0 B)  
        RX errors 0  dropped 0  overruns 0  frame 0  
        TX packets 0  bytes 0 (0.0 B)  
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  
  
[root@server1 ~]#

3 Installazione di virt-viewer O virt-manager Sul Tuo Desktop Fedora 17

Desktop Fedora 17:

Abbiamo bisogno di un mezzo per connetterci alla console grafica dei nostri ospiti - possiamo usare virt-manager per questo. Presumo che tu stia usando un desktop Fedora 17.

Diventa root…

su

… e esegui…

yum install virt-manager libvirt qemu-system-x86 openssh-askpass

… per installare virt-manager.

(Se stai usando un desktop Ubuntu 12.04, puoi installare virt-manager come segue:

sudo apt-get install virt-manager

)

4 Creazione di Un Ospite Debian Squeeze (Basato su Immagine) Dalla Riga di Comando

Host KVM Fedora 17:

Ora torniamo al nostro host KVM Fedora 17.

Dai un’occhiata a

man virt-install

per imparare come usare virt-install.

Creeremo le nostre macchine virtuali basate su immagini nella directory /var/lib/libvirt/images/ che è stata creata automaticamente quando abbiamo installato KVM nel capitolo due.

Per creare un ospite Debian Squeeze (in modalità bridging) con il nome vm10, 512MB di RAM, due CPU virtuali e l’immagine disco /var/lib/libvirt/images/vm10.img (con una dimensione di 12GB), inserisci il CD di installazione Netinstall di Debian Squeeze nell’unità CD e esegui

virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /dev/cdrom --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm

Certo, puoi anche creare un’immagine ISO del CD di installazione Netinstall di Debian Squeeze (per favore creala nella directory /var/lib/libvirt/images/ perché più tardi ti mostrerò come creare macchine virtuali tramite virt-manager dal tuo desktop Fedora, e virt-manager cercherà immagini ISO nella directory /var/lib/libvirt/images/)…

dd if=/dev/cdrom of=/var/lib/libvirt/images/debian-6.0.5-amd64-netinst.iso

… e usare l’immagine ISO nel comando virt-install:

virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /var/lib/libvirt/images/debian-6.0.5-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm

L’output è il seguente:

[root@server1 ~]# virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /var/lib/libvirt/images/debian-6.0.5-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm  


Inizio installazione...  
Allocazione 'vm10.img'              |  12 GB     00:00  
Creazione dominio...                 |    0 B     00:00  
Installazione del dominio ancora in corso. Puoi riconnetterti alla  
console per completare il processo di installazione.  
[root@server1 ~]#
Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.