Introduzione
Cos'è una macchina virtuale (VM)?
Una macchina virtuale (VM) è un ambiente virtuale che funziona come un computer virtuale con CPU, memoria, interfaccia di rete e storage propri, creati su un sistema hardware fisico (posizionato fuori sede o in locale). Il software chiamato hypervisor separa le risorse della macchina dall'hardware e le fornisce in modo appropriato in modo che possano essere utilizzate dalla VM.
Come funzionano le macchine virtuali?
La tecnologia di virtualizzazione consente di condividere un sistema con molti ambienti virtuali. L'hypervisor gestisce l'hardware e separa le risorse fisiche dagli ambienti virtuali. Le risorse vengono partizionate in base alle esigenze dall'ambiente fisico alle macchine virtuali.
Cos'è un KVM?
KVM o (Macchina virtuale basata sul kernel) è una soluzione di virtualizzazione completa per Linux. È incluso nel kernel Linux dalla 2.6.20 ed è stabile e veloce per la maggior parte dei carichi di lavoro.
Iniziamo le nostre procedure:
Passaggio 1:verifica delle estensioni di virtualizzazione hardware
Per gli host basati su Intel, verificare che l'estensione di virtualizzazione della CPU [vmx] sia disponibile.
Per gli host basati su AMD, verificare che l'estensione di virtualizzazione della CPU [svm] sia disponibile.
Verifica anche che i moduli KVM siano caricati nel kernel.
RHEL o Ubuntu
root@W10GCHF473:~# grep -c vmx /proc/cpuinfo
8
root@W10GCHF473:~#
root@W10GCHF473:~#
root@W10GCHF473:~# kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
Passaggio 2:installa i pacchetti e gli strumenti KVM
Installeremo qemu-kvm e qemu-img pacchetti all'inizio. Questi pacchetti forniscono il KVM a livello di utente e il gestore di immagini del disco.
Ubuntu:
root@W10GCHF473:~# apt install qemu-kvm libvirt-daemon-system libvirt-clients
RHEL:
[root@rhelab~]# yum install qemu-kvm qemu-img
installeremo anche gli strumenti più importanti per la gestione delle VM:
- gestore virtuale fornisce uno strumento GUI per amministrare le tue macchine virtuali.
- client libvirt fornisce uno strumento CL per amministrare il tuo ambiente virtuale, questo strumento chiamato virsh.
- installazione virtuale fornisce il comando “virt-install” per creare le tue macchine virtuali dalla CLI.
- libvirt fornisce le librerie lato server e host per interagire con hypervisor e sistemi host.
RHEL:
[root@rhelab ~]# yum install virt-manager libvirt libvirt-python libvirt-client
Passaggio 3:abilita e avvia il servizio di virtualizzazione (libvirtd)
RHEL/Ubuntu
[root@rhelab ~]#systemctl enable libvirtd
[root@rhelab ~]#systemctl restart libvirtd
libvirtd.service - Virtualization daemon
Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled)
Active: active (running) since Mon 2021-04-26 15:48:46 EET; 14s ago
Main PID: 15401 (libvirtd)
Passaggio 4: Inizia a costruire la tua VM
Parte 1:
Puoi costruire la tua macchina usando virt-manager .
Sebbene gestore virtuale è uno strumento basato su GUI, potremmo anche avviarlo/avviarlo dal terminale e dalla GUI.
RHEL/UBUNTU
root@W10GCHF473:~# virt-manager
Puoi scegliere il modo migliore per installare il sistema operativo
- Immagine ISO o CDROM
- Importa immagine disco esistente
- PXE, HTTP, NFS e FTP
Parte 2 :
Crea la tua VM usando qemu
Quemu è un progetto molto vecchio e grande che ha basi di utenti diverse e si interseca con progetti diversi. Qemu è utilizzato nel progetto di virtualizzazione del kernel Linux denominato KVM. Quindi questo progetto fornisce anche a Qemu nomi di comandi diversi ma con più funzionalità.qemu_system_x86_64 è il comando o binario per Qemu utilizzato per creare VM x86 a 64 bit
root@W10GCHF473:~# qemu-system-x86_64 -bios Data/OVMF.fd -drive file=CentOS-7-x86_64-DVD-1708.iso,media=cdrom,readonly -net nic -net user -m 5172 -vga qxl --enable-kvm -smp 4
Puoi conoscere ogni opzione usando l'opzione -h con il comando qemu-system-x86_64
root@W10GCHF473:~# qemu-system-x86_64 -h|more
QEMU emulator version 4.2.1 (Debian 1:4.2-3ubuntu6.14)
Copyright (c) 2003-2019 Fabrice Bellard and the QEMU Project developers
usage: qemu-system-x86_64 [options] [disk_image]
'disk_image' is a raw hard disk image for IDE hard disk 0
Standard options:
-h or -help display this help and exit
-version display version information and exit
...
memory-encryption=@var{} memory encryption object to use (default=none)
-cpu cpu select CPU ('-cpu help' for list)
...
-m [size=]megs[,slots=n,maxmem=size]
configure guest RAM
size: initial amount of guest memory
slots: number of hotplug slots (default: none)
maxmem: maximum amount of guest memory (default: none)
...