Guide Open Source

GUIDE E MANUALI DEL MONDO LINUX E CMS

Guide Open Source

GUIDE E MANUALI DEL MONDO LINUX E CMS

Guide Open Source

GUIDE E MANUALI DEL MONDO LINUX E CMS

Come installare KVM e libvirt su CentOS 6.2 con Bridged Networking

Questo tutorial descrive come installare la libreria di virtualizzazioneKVM hypervisor e libvirt su Linux CentOS 6.2. Alla fine di questa guida avrete una scatola di CentOS (nome ospitano) con le seguenti funzionalità:

  • la capacità di virtualizzazione: possibilità per gli ospiti più (Linux/Windows) in esecuzione e condivisione dell’hardware dell’host
  • configurazione di rete di ponte: sarete in grado di accedere direttamente agli ospiti come se fossero macchine fisiche sulla stessa LAN e viceversa.
  • gestione Visual: utilizzo di virt-manager (io uso Ubuntu 11.10 in questo howto) sarà in grado di in modalità remota admin le macchine virtuali nell’host di CentOS.

 

Cos’è cosa?

KVM:

“KVM (per Kernel-based Virtual Machine) è una soluzione di virtualizzazione completa per Linux su x86 hardware contenente le estensioni di virtualizzazione (Intel VT o AMD-V). Si compone di un modulo del kernel caricabili, KVM, che fornisce l’infrastruttura di virtualizzazione di base e un modulo specifico del processore, kvm-intel.ko o kvm-Ko…”

“Utilizzando KVM, si può eseguire più macchine virtuali in esecuzione non modificato Immagini Linux o Windows. Ogni macchina virtuale ha hardware virtualizzato privato: una scheda di rete, disco, scheda grafica, ecc. “

 

libvirt:

  • “Un insieme di strumenti per interagire con le funzionalità di virtualizzazione delle versioni recenti di Linux… 
  • “Un software gratuito disponibile sotto la GNU Lesser General Public License.”
  • “Un lungo termine stabile C API”
  • “Un insieme di associazioni per i linguaggi comuni”

 

Intel-VT e AMD-V

  • Che cosa è Intel VT / AMD-V / hvm?.
  • Come posso sapere se ho Intel VT o AMD-V?

 

Requisiti

  • Hardware:
    • Processore con supporto per la tecnologia Intel VT o AMD-V
    • Un sacco di memoria RAM a seconda del numero di ospiti
    • Connettività di rete
  • Software:
    • Un previosly installato Linux CentOS 6.2 con un kernel Linux recente. Su questo come:
      $ uname -r
      2.6.32-220.2.1.el6.x86_64
      $ lsb_release -a

      Versione LSB:: core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
      ID Distributore: CentOS
      Descrizione: CentOS versione 6.2 (finale)
      Versione: 6.2
      Codename: finale

    • Un client di Linux con un ambiente Desktop installato
    • Specchio/repository CentOS disponibile

 

Procedura di installazione

    1. Accedere a CentOS con bozz (utente un sudoer) e verificare se l’hardware supporta per le estensioni di virtualizzazione, il mio hardware che è stato:
$ egrep '^flags.*(vmx|svm)' /proc/cpuinfo

bandiere: fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm ida dts tpr_shadow vnmi flexpriority ept vpid
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm ida dts tpr_shadow vnmi flexpriority ept vpid
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm ida dts tpr_shadow vnmi flexpriority ept vpid
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm ida dts tpr_shadow vnmi flexpriority ept vpid
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm ida dts tpr_shadow vnmi flexpriority ept vpid
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm ida dts tpr_shadow vnmi flexpriority ept vpid
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm ida dts tpr_shadow vnmi flexpriority ept vpid
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm ida dts tpr_shadow vnmi flexpriority ept vpid

  1. Install kvm and libvirt packages:
    $ sudo yum install kvm libvirt
  2. Update both packages to the latest version available on repositories/mirrors:
    $ sudo yum update libvirt kvm
    $ yum info libvirt

    Installed Packages
    Nome: libvirt
    Arco: x86_64
    Versione: 0.9.4
    Versione: 23.el6_2.4

    $ yum info qemu-kvm

    Pacchetti installati
    Nome: qemu-kvm
    Arco: x86_64
    Epoca: 2
    Versione: 0.12.1.2
    Versione: 2.209.el6_2.1

  3. Riavviare il demone libvirtd :
    $ sudo service libvirtd restart
  4. Verificare che se il modulo kvm viene caricato, si dovrebbe vedere amd o intel a seconda dell’hardware:
    $ lsmod | grep kvm

    kvm_intel 50380 0
    KVM 305113 1 kvm_intel

  5. Eseguire un comando virsh per garantire la connettività locale principale in primo luogo:
    $ sudo virsh sysinfo

    < sysinfo tipo = “smbios” >

  6. [FACOLTATIVO] Per utilizzare KVM da un utente non –root verificare se è stato creato il gruppo di kvm su installazione:
    $ cat /etc/group | grep kvm
        kvm:x:36:qemu

    Quindi aggiungere l’utente di bozz al gruppo kvm , quindi può accedere al hypervisor:

    $ sudo usermod – un -G kvm bozz
    $ logout

    Accedere nuovamente come utente bozz e verificare l’appartenenza di kvm:

    $ id
        uid=500(bozz) gid=500(bozz) groups=500(bozz),10(wheel),36(kvm) context=...

    e verificare se /dev/kvm è di proprietà di gruppo kvm:

    $ ls -l /dev/kvm
        crw-rw-rw-. 1 root kvm 10, 232 Jan 17 14:50 /dev/kvm

    In un sistema che esegue udev, probabilmente sarà necessario aggiungere la seguente riga nella configurazione di udev, quindi darà automaticamente il gruppo di destra al dispositivo appena creato:

    $ cat  /etc/udev/rules.d/80-kvm.rules 
        KERNEL=="kvm", GROUP="kvm", MODE="0666"
  7. Per il gestore di libvirt con un account non –root è necessario utilizzare PolicyKit. Definire il controllo di accesso per un gruppo di libvirt :

    $ sudo groupadd libvirt
    $ sudo usermod – un -G libvirt bozz
    $ logout

    Accedi nuovamente come utente bozz e modificare un nuovo archivio:

    $ sudo nano /etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla

    con questo contenuto:

    [libvirt Management Access]
    # For allowing access to specific user only:
    #Identity=unix-user:bozz
    # For allowing access to a group (like this guide):
    Identity=unix-group:libvirt
    Action=org.libvirt.unix.manage
    ResultAny=yes
    ResultInactive=yes
    ResultActive=yes
    

    Riavviare il demone libvirtd :

    $ sudo service libvirtd restart

    Verificare se bozz utente può accedere localmente al qemu: / / / sistema (Nota: l’uso di qemu: / / / sessione è sconsigliato):

    $ virsh -c qemu:///system sysinfo

    < sysinfo tipo = “smbios” >

    Verificare se la Boe ‘ e ‘ utente può accedere in remoto a qemu + ssh://bozz@SERVER/system troppo. Così via il problema del client di Linux:

    Per client di Ubuntu (come in questa guida):

    $ sudo apt-get install libvirt-bin

    Per client di CentOS:

    $ sudo yum install libvirt

    Quindi:

    $ virsh -c qemu+ssh://bozz@SERVER/system sysinfo

    < sysinfo tipo = “smbios” >

    Cambia il gruppo proprietario e autorizzazioni per la directory di immagini predefinite:

    $ sudo chown root: libvirt /var/lib/libvirt/images.
    $ sudo chmod g + rw /var/lib/libvirt/images.

  8. [FACOLTATIVO] Quando libvirtd (> = 0.9.3) è in esecuzione come non –root tenta di leggere ~/.libvirt/libvirtd.conf(Vedi qui). Una soluzione è:

    $ mkdir -p ~/.libvirt
    $ touch ~/.libvirt/libvirtd.conf

    Quindi è possibile emettere un comando virsh come utente bozz :

    $ virsh list

    ID nome stato
    ———————————-

  9. Configurare rete Bridged creando un nuovo script di rete /etc/sysconfig/network-scripts/ifcfg-br0:
    $ sudo nano /etc/sysconfig/network-scripts/ifcfg-br0

    e configurare i parametri in base alle impostazioni LAN (Nota: le opzioni sono maiuscole/minuscole cioè ponte e ponte sono due diverse opzioni):

    DEVICE="br0"
    TYPE=Bridge
    DELAY=0
    ONBOOT="yes"
    BOOTPROTO=static
    IPADDR=192.168.11.12
    NETMASK=255.255.255.0
    NETWORK=192.168.11.0
    GATEWAY=192.168.11.1
    DNS1=192.168.11.2
    PEERDNS="yes"
    NM_CONTROLLED=no
    

    Quindi modificare gli script di rete Ethernet /etc/sysconfig/network-scripts/ifcfg-eth0:

    $ sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0

    con il seguente contenuto (Nota: l’indirizzo hardware dipende dalla tua scheda di rete, un arbitrario indirizzo MAC viene utilizzato qui):

    DEVICE="eth0"
    HWADDR="00:2C:C2:85:29:A3"
    ONBOOT="yes"
    BRIDGE=br0
    NM_CONTROLLED=no
    

    Riavviare il servizio di rete:

    $ sudo service network restart

    e verificare la configurazione del ponte:

    $ brctl show

    Ponte nome Ponte id STP abilitato interfacce
    br0 8000.002cc28529a3 nessun eth0

    Configurare iptables per consentire tutto il traffico deve essere inoltrato attraverso il ponte:

    $ sudo iptables-inoltrare -m physdev – physdev-è-a ponte – j ACCEPT
    $ sudo servizio iptables salvare
    $ sudo servizio iptables riavviare

    Impedire l’elaborazione di regole di iptables di traffico con bridging, questo migliora le prestazioni del ponte. In /etc/sysctl.conf aggiungere le seguenti righe:

    net.bridge.bridge-nf-call-ip6tables = 0
    net.bridge.bridge-nf-call-iptables = 0
    net.bridge.bridge-nf-call-arptables = 0

    Ricaricare i parametri del kernel configurati con sysctl:

    $ sudo sysctl -p /etc/sysctl.conf

    Riavviare il demone libvirt:

    $ sudo service libvirtd reload

    Passaggi post-installazione

    Creazione di un virtual machine / ospite per mezzo di Virtual Machine Manager (virt-manager) dalla macchina client Linux. Il sistema operativo guest sarà un Server di Ubuntu 11.10 Oneiric Ocelot:

    Per client di Ubuntu (come in questa guida):

    $ sudo apt-get install virt-manager

    Per client di CentOS:

    $ sudo yum install virt-manager

    Quindi scaricare onirico-server-amd64. ISO dal sito sul client Linux Ubuntu:

    $ wget http://releases.ubuntu.com/11.10/ubuntu-11.10-server-amd64.iso

    Copiare la ISO scaricata al SERVER:

    $ scp ubuntu-11.10-server-amd64.iso bozz@SERVER:/var/lib/libvirt/images/

    Sul client Linux eseguire virt-manager:

    $ virt-manager & 

    Vai a “File” / “Aggiungi connessione…” con queste impostazioni:

    • Hypervisor: QEMU/KVM
    • Metodo: ssh
    • Nome utente: bozz
    • Host: SERVER

    Una volta connesso clicca sul pulsante “Crea una nuova macchina virtuale”.

    1. Impostare il nome su ubuntu-onirico e scegliere “Locale installare media (immagine ISO o CDROM)”:
    2. Sfoglia e selezionare la ISO che si trova a /var/lib/libvirt/images/ubuntu-11.10-server-amd64.iso, OS tipo “Linux” e versione “Ubuntu 11.10 (Oneiric Ocelot)”:
    3. Scegliere la memoria e CPU impostazione come si desidera:
    4. Scegliere impostazioni di archiviazione:
    5. Scegliere il dispositivo di rete creato in precedenza ponte “Host dispositivo eth0 (ponte ‘br0’)”, Virt digitare “kvm” e architettura “x86_64”:

      Premere il pulsante “Finish” e installare il sistema operativo guest.

     

    Riferimenti

    • KVM
    • KVM FAQ
    • libvirt
    • CentOS / Redhat: KVM rete configurazione a ponte
    • HOWTO/KVM
    • Bridged networking con libvirt
    
    

Piaciuto l'articolo? Condividilo sui social!

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on whatsapp
WhatsApp