Connect with us

Linux

Come installare il server KVM su Debian 9/10 Headless Server


Kernel-based Virtual Machine (KVM) è un modulo di virtualizzazione per il kernel Linux che lo trasforma in un hypervisor. Come posso installare KVM con rete in bridge, configurare il sistema operativo guest come tecnologia di virtualizzazione back-end per il server Debain Linux 9.x/10.x non grafico?

È possibile utilizzare KVM per eseguire più sistemi operativi come Windows, *BSD, distribuzione Linux utilizzando macchine virtuali. Ogni macchina virtuale ha il suo disco privato, scheda grafica, scheda di rete e altro.

Passaggi per installare il server KVM sul server Debian Linux 9.x/10.x

  1. Il server host si trova nel data center remoto ed è un server headless.
  2. Tutti i comandi in questo tutorial sono stati digitati sulla sessione basata su ssh.
  3. È necessario un client vnc per installare il sistema operativo guest.
  4. In questo tutorial imparerai come installare il software KVM sul server Debian Linux 9.x e utilizzare KVM per configurare la prima VM guest.

Seguire i passaggi di installazione di KVM su server headless Debian Linux 9.x/10.x

Passaggio 1: installa kvm

Digita il seguente comando apt-get/apt comando:
$ sudo apt install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils libguestfs-tools genisoimage virtinst libosinfo-bin
Come installare il server kvm su Debian Linux 9

Consenti all’utente normale di gestire la macchina virtuale

Se vuoi un utente normale/regolare può gestire le macchine virtuali. Aggiungi l’utente vivek a libvirt e libvirt-qemu usando il comando usermod:
$ sudo adduser vivek libvirt
$ sudo adduser vivek libvirt-qemu

Ricarica l’appartenenza al gruppo con l’aiuto del comando newgrp:
$ newgrp libvirt
$ newgrp libvirt-qemu

Verifica la tua appartenenza al gruppo con il comando id:
$ id
Si prega di notare che è necessario utilizzare il seguente comando per connettersi al server KVM:
$ virsh --connect qemu:///system
$ virsh --connect qemu:///system command
$ virsh --connect qemu:///system list --all

Passaggio 2: verifica l’installazione di kvm su Debain

Esegui il seguente comando egrep per verificare che Intel VMX o AMD SVM sia supportato sulla tua CPU:
$ egrep --color 'vmx|svm' /proc/cpuinfo
Uscite di esempio:

rf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm epb kaiser tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt dtherm ida arat pln pts
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep 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 nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm epb kaiser tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt dtherm ida arat pln pts

Passaggio 3: configurare il collegamento in rete su Debian

Creerò l’interfaccia bridge br0 come connessione di rete nella configurazione dei guest VM per l’interfaccia eth0:
$ sudo vi /etc/network/interfaces.d/br0
Aggiungi quanto segue:

## make sure all config related to eth0 deleted ##
auto br0
iface br0 inet static
	address 192.168.2.23        ## set up/netmask/broadcast/gateway as per your setup
	broadcast 192.168.2.255
	netmask 255.255.255.0
	gateway 192.168.2.254
	bridge_ports eth0    # replace eth0 with your actual interface name
	bridge_stp off       # disable Spanning Tree Protocol
        bridge_waitport 0    # no delay before a port becomes available
        bridge_fd 0          # no forwarding delay

Riavvia il servizio di rete su Linux:
$ sudo systemctl restart network-manager
Per vedere le impostazioni di rete correnti per KVM, eseguire:
$ sudo virsh net-list --all
Uscite di esempio:

 Name                 State      Autostart     Persistent
----------------------------------------------------------
 default              inactive   no            yes

Solo guide per i sostenitori di Patreon ????

  • Nessuna pubblicità e tracciamento
  • Guide approfondite per sviluppatori e amministratori di sistema su Opensourceflare✨
  • Unisciti al mio Patreon per supportare i creatori di contenuti indipendenti e iniziare a leggere le ultime guide:

Aderire Patreon ?

È necessario configurare un dominio guest KVM su una rete bridge. Quindi crea un file chiamato bridge.xml come segue un editor di testo come il comando vi:
$ sudo vi /root/bridged.xml
Aggiungi la seguente configurazione:

<network>
  <name>br0</name>
  <forward mode="bridge"/>
  <bridge name="br0"/>
</network>

Salva e chiudi il file in vi/vim.
$ sudo virsh net-define --file /root/bridged.xml
$ sudo virsh net-autostart br0
$ sudo virsh net-start br0

Passaggio 4: crea la tua prima macchina virtuale utilizzando un programma di installazione di immagini ISO

Creerò una macchina virtuale CentOS 7.x. Innanzitutto, prendi l’ultima immagine ISO di CentOS 7.x:
$ cd /var/lib/libvirt/boot/
$ sudo wget https://mirrors.kernel.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1708.iso

Crea una macchina virtuale CentOS 7

In questo esempio, sto creando una macchina virtuale CentOS 7.x con 2 GB di RAM, 2 core CPU, 1 scheda di rete e 40 GB di spazio su disco, inserisci:
$ sudo virt-install
--virt-type=kvm
--name centos7
--ram 2048
--vcpus=2
--os-variant=rhel7
--virt-type=kvm
--hvm
--cdrom=/var/lib/libvirt/boot/CentOS-7-x86_64-DVD-1708.iso
--network=bridge=br0,model=virtio
--graphics vnc
--disk path=/var/lib/libvirt/images/centos7.qcow2,size=40,bus=virtio,format=qcow2

Per configurare il login vnc da un altro terminale su ssh e digitare:
$ sudo virsh dumpxml centos7 | grep vnc
<graphics type="vnc" port="5901" autoport="yes" listen='127.0.0.1'>

Puoi anche usare il seguente comando:
$ sudo virsh vncdisplay centos7
Annotare il valore della porta (es. 5901). È necessario utilizzare un client SSH per configurare il tunnel e un client VNC per accedere al server vnc remoto. Digita il seguente comando di inoltro alla porta SSH dal tuo client/desktop:
$ ssh vivek@server1.cyberciti.biz -L 5901:127.0.0.1:5901
Una volta stabilito il tunnel ssh, puoi puntare il tuo client VNC al tuo indirizzo 127.0.0.1 (localhost) e alla porta 5901 come segue:

Fig.01: Client VNC per completare l’installazione di CentOS 7.x

Dovresti vedere la schermata di installazione guest di CentOS Linux 7 come segue:

Fig.02: Installazione di CentOS 7.x su VM basata su KVM

Ora segui le istruzioni sullo schermo e installa CentOS 7. Una volta installato, vai avanti e fai clic sul pulsante di riavvio. Il server remoto ha chiuso la connessione al nostro client VNC. È possibile riconnettersi tramite client KVM per configurare il resto del server, inclusa la sessione basata su SSH o il firewall.

Passaggio 5: utilizzare virt-builder per creare VM

Il metodo sopra (virt-install) funziona bene, ma se hai bisogno di creare rapidamente nuove macchine virtuali, prova virt-builder.

Come elencare le macchine virtuali disponibili

$ virt-builder --list | more
È possibile utilizzare il comando grep per filtrare solo le VM basate su arch x86_64:
$ virt-builder --list | grep x86_64
Uscite di esempio:

opensuse-13.1            x86_64     openSUSE 13.1
opensuse-13.2            x86_64     openSUSE 13.2
opensuse-42.1            x86_64     openSUSE Leap 42.1
opensuse-tumbleweed      x86_64     openSUSE Tumbleweed
centos-6                 x86_64     CentOS 6.6
centos-7.0               x86_64     CentOS 7.0
centos-7.1               x86_64     CentOS 7.1
centos-7.2               x86_64     CentOS 7.2
centos-7.3               x86_64     CentOS 7.3
centos-7.4               x86_64     CentOS 7.4
cirros-0.3.1             x86_64     CirrOS 0.3.1
cirros-0.3.5             x86_64     CirrOS 0.3.5
debian-6                 x86_64     Debian 6 (Squeeze)
debian-7                 x86_64     Debian 7 (wheezy)
debian-8                 x86_64     Debian 8 (jessie)
debian-9                 x86_64     Debian 9 (stretch)
fedora-18                x86_64     Fedora® 18
fedora-19                x86_64     Fedora® 19
fedora-20                x86_64     Fedora® 20
fedora-21                x86_64     Fedora® 21 Server
fedora-22                x86_64     Fedora® 22 Server
fedora-23                x86_64     Fedora® 23 Server
fedora-24                x86_64     Fedora® 24 Server
fedora-25                x86_64     Fedora® 25 Server
fedora-26                x86_64     Fedora® 26 Server
fedora-27                x86_64     Fedora® 27 Server
freebsd-11.1             x86_64     FreeBSD 11.1
scientificlinux-6        x86_64     Scientific Linux 6.5
ubuntu-10.04             x86_64     Ubuntu 10.04 (Lucid)
ubuntu-12.04             x86_64     Ubuntu 12.04 (Precise)
ubuntu-14.04             x86_64     Ubuntu 14.04 (Trusty)
ubuntu-16.04             x86_64     Ubuntu 16.04 (Xenial)

Per vedere note aggiuntive per qualsiasi sistema operativo:
$ virt-builder --notes ubuntu-16.04
$ virt-builder --notes debian-9

Uscite di esempio:

Debian 9 (stretch)
 
This is a minimal Debian install.
 
This image does not contain SSH host keys.  To regenerate them use:
 
    --firstboot-command "dpkg-reconfigure openssh-server"
 
This template was generated by a script in the libguestfs source tree:
    builder/templates/make-template.ml
Associated files used to prepare this template can be found in the
same directory.

Crea macchina virtuale Debian 9.x

Crea Debian 9 VM con 10 GB di spazio su disco, 2 GB di ram, 2 vCPU e password casuale per l’account root, esegui:
$ sudo virt-builder debian-9
--size=10G
--format qcow2 -o /var/lib/libvirt/images/debian9-vm1.qcow2
--hostname debain9-vm1
--network
--timezone Asia/Kolkata


Infine importa l’immagine con il comando virt-install:
$ sudo virt-install --import --name debian9-vm1
--ram 2048
--vcpu 2
--disk path=/var/lib/libvirt/images/debian9-vm1.qcow2,format=qcow2
--os-variant debian9
--network=bridge=br0,model=virtio
--noautoconsole

Uscite di esempio:

Starting install...
Creating domain...  
Domain creation completed.

Puoi accedere alla tua VM usando la password x0E4iZ8sHjA6ekb6 per l’account root:
$ sudo virsh list --all
$ virsh console debian9-vm1


Devi disabilitare l’account root per la sessione ssh e creare chiavi ssh per la tua VM. Accedi come sopra:
# dpkg-reconfigure openssh-server
# useradd -r -m -d /home/vivek -s /bin/bash vivek
# passwd vivek
# systemctl enable ssh
### [ Disable root user login when using ssh ] ###
# echo 'PermitRootLogin no' >> /etc/ssh/sshd_config
# systemctl restart ssh
# ip a s

Verifica di poter accedere utilizzando un indirizzo IP per l’utente vivek e usa ‘su -‘ per diventare un utente root:
$ ssh vivek@192.168.2.132
$ su -

Comandi utili

Vediamo alcuni comandi utili.

Trova l’elenco delle varianti del sistema operativo accettate

$ osinfo-query os | less
$ osinfo-query os | grep debian
$ osinfo-query os | grep freebsd

Elenca un vms/domini in esecuzione

$ sudo virsh list

Chiudi un vm/dominio chiamato debian9-vm1

$ sudo virsh shutdown debian9-vm1

Avvia un vm/dominio chiamato debian9-vm1

$ sudo virsh start debian9-vm1

Sospendi un vm/dominio chiamato debian9-vm1

$ sudo virsh suspend debian9-vm1

Riavvia (riavvio morbido e sicuro) un vm/dominio chiamato debian9-vm1

$ sudo virsh reboot debian9-vm1

Ripristina (hard reset/non sicuro) un vm/dominio chiamato debian9-vm1

$ sudo virsh reset debian9-vm1

Elimina/rimuovi un vm/dominio chiamato debian9-vm1

$ sudo virsh undefine debian9-vm1
$ sudo virsh destroy debian9-vm1

Per vedere un elenco completo del tipo di comando virsh
$ virsh help | less
$ virsh help | grep reboot


ANNUNCIO



Ti e piaciuto questo articolo?
Supporta il mio lavoro, facendo una donazione!

Click to comment

Leave a Reply

Esegui l'accesso per Commentare.

Di tendenza

Close Popup
Questo sito utilizza i cookie per migliorare servizi ed esperienza dei lettori. Se decidi di continuare la navigazione senza blocchi premi su Accetto, oppure continua tranquillamente la navigazione, nessun dato sulla tua navigazione verrà raccolto.
Close Popup
Privacy Settings saved!
Impostazioni

Quando visiti un sito Web, esso può archiviare o recuperare informazioni sul tuo browser, principalmente sotto forma di cookies. Controlla qui i tuoi servizi di cookie personali.

Questi cookie sono necessari per il funzionamento del sito Web e non possono essere disattivati nei nostri sistemi.

Cookie tecnici
Per utilizzare questo sito web usiamo i seguenti cookie tecnici necessari:
  • wordpress_test_cookie
  • wordpress_logged_in_
  • wordpress_sec
  • swpm_session

Google Adsense
Usiamo la pubblicità di Google solo per mantenere attivi i nostro sito. Con ip anonimizzati.

Rifiuta tutti i Servizi
Save
Accetta tutti i Servizi