Indice generale della serie: Reti di computer per le PMI: Introduzione
Il titolo di questo post si riferisce a una serie di comandi della console che iniziano con «virtù- « E questo può essere utile in determinate circostanze. Forniremo solo una breve descrizione di ciascuno e alcuni esempi di utilizzo. Lo ripetiamo: non possiamo sostituire i manuali che accompagnano ogni comando. Consigliamo vivamente controlla quelle pagine eseguendo uomo virt-comando.
- L'obiettivo principale di questo articolo è continuare a mostrare all'ampio universo che la virtualizzazione in Linux sta attualmente utilizzando l'hypervisor Qemu-KVM. Sebbene nel titolo scriviamo il nome della distribuzione «Debian«, I principi generali sono applicabili a qualsiasi altra distribuzione attraverso i comandi specifici di ciascuna di esse. Soprattutto quelli relativi alla ricerca, descrizione e installazione di pacchetti, tra gli altri.
Prima di continuare con la lettura, consigliamo la visita l'articolo precedente: Qemu-KVM + Virt-Manager su Debian - Reti di computer per PMI.
Quando utilizzare i comandi?
In molte occasioni gestiamo in remoto un server di supporto per la virtualizzazione con l'estensione Qemu-KVM installato e per qualche motivo non abbiamo l'interfaccia grafica di Virtual Machine Manager - Virt Manager:
- Caso tipico, quando accediamo al server remoto da una stazione Windows tramite PuTTy, o qualsiasi altro dei tanti alternative che esistono per connettersi tramite SSH con un server Debian GNU / Linux, e quest'ultimo non ha alcun supporto installato per «X«, O supporto grafico.
- Vogliamo semplicemente gestire le macchine virtuali sul server locale o remoto utilizzando i comandi della console.
Installato con libvirt-client
Nel precedente articolo installiamo il pacchetto libvirt-bidonee come parte del processo è stato installato client-libvirt. Se eseguiamo in una console:
buzz @ sysadmin: ~ $ sudo dpkg -L libvirt-clients | grep / bin / Usr / bin / usr / bin / virsh / usr / bin / virt-host-validate / usr / bin / virt-login-shell / usr / bin / virt-xml-validate / usr / bin / virt-pki-validate
- vergognoso: il programma virsh è l'interfaccia utente principale per la gestione completa dei domini Ospite - Gli ospiti. Viene utilizzato per elencare, creare, mettere in pausa e chiudere i domini. Questo comando deve essere richiamato con le autorizzazioni di radice. Ha due modalità di esecuzione: in modalità comando e in modalità interattiva. Dedicheremo un prossimo articolo a virsh.
- virt-host-convalida: strumento che permette di validare la configurazione Host - ospite, in modo che sia in grado di supportare tutti i driver Hypervisor - hypervisor. Per ottenere risultati corretti, il comando deve essere eseguito con le autorizzazioni di radice.
- shell-virt-login: comando per eseguire un file conchiglia personalizzato per a utente normale in un contenitore LXC, il cui nome è lo stesso dell'utente che lo invoca. Se il contenitore non è in esecuzione, il comando shell-virt-login proverà ad avviarlo. Questo comando non può essere richiamato con le autorizzazioni dell'utente radice. Il file di configurazione molto esplicito di questo programma è /etc/libvirt/virt-login-shell.conf.
- virt-xml-convalida: convalida i file XML da libvirt confrontandoli con uno schema - schema valido. Otteniamo un elenco di nomi di schemi validi se eseguiamo man virt-xml-validate.
- virt-pki-convalida: utilizzato per convalidare se i file PKI di libvirt Sono configurati correttamente, sia sul lato server sicuro che sul client che utilizzerà il protocollo di crittografia TLS per accedere da remoto al server. La sua esecuzione sarà necessaria se avremo abilitato l'amministrazione remota su TLS e SSL. Capitolo 22.2 del documento Guida alla distribuzione e all'amministrazione della virtualizzazione, è dedicato a questa soluzione. Consigliamo che le nostre reti aziendali utilizzano il amministrazione remota tramite SSH, il metodo più semplice e sicuro per una LAN aziendale, a cui dedicheremo un articolo successivo.
Installato con virtisnt
Nell'articolo precedente, abbiamo anche installato il pacchetto virt manager. Come parte di quel processo, il pacchetto è stato installato vergine. Se vogliamo sapere quali comandi contiene quest'ultimo, eseguiamo:
byzz @ sysadmin: ~ $ sudo dpkg -L virtinst | grep / bin / Usr / bin / usr / bin / virt-convert / usr / bin / virt-image / usr / bin / virt-xml / usr / bin / virt-install / usr / bin / virt-clone
- virt-convertire: comando che converte le definizioni della macchina virtuale in formati VMX y Ovf nel formato libvirt nativo XML. Il formato VMX viene tipicamente utilizzato da VMware, mentre l'OVF «Apri il formato di virtualizzazione»Può essere utilizzato da chiunque hypervisor supportalo.
- immagine virtuale- Crea una macchina virtuale da un file descrittore di immagini in formato XML. Questo particolare strumento verrà rimosso dalle versioni future di vergineQuindi Non suggeriamo il suo utilizzo.
- virt-xml: Consente la modifica dei file XML nativi utilizzati da libvirt, utilizzando le opzioni della riga di comando.
- installazione virtuale: strumento a riga di comando che consente di creare nuove macchine virtuali in Hypervisor come KVM, Xen o Linux Containers che utilizzano la libreria di gestione dell'hypervisor "Libvirt". Questo strumento supporta l'installazione grafica se utilizziamo, ad esempio, il VNC Network Computing virtuale, O SPEZIA. Supporta anche completamente la modalità console o testo. Attraverso il suo utilizzo possiamo creare una macchina virtuale con uno o più dischi rigidi, una o più schede di rete, dispositivi audio, dispositivi fisici USB o PCI e così via. Il supporto di installazione può essere locale, remoto, pubblicato utilizzando il protocollo NFS Network File System nativo di UNIX, HTTP, FTP. eccetera.
- clone-virt- strumento a riga di comando per clonare macchine virtuali esistenti utilizzando la libreria di gestione dell'hypervisor "Libvirt". Fondamentalmente copia l'immagine di una macchina virtuale e crea un nuovo Guest - GUEST con la stessa configurazione hardware. Gli elementi hardware che devono essere univoci, ad esempio l'indirizzo hardware di una scheda di rete, verranno aggiornati per evitare collisioni o rumori tra il vecchio e il nuovo GUEST.
visualizzatore-virt
Questo strumento viene installato anche quando si esegue il file virt manager. visualizzatore-virt è un pacchetto separato.
- visualizzatore-virt: ci permette di mostrare una console grafica, tramite VNC o SPICE, di una specifica macchina virtuale, sia essa localizzata o remota. Possiamo fare riferimento a GUEST che vogliamo visualizzare tramite il suo nome, ID o UUID. Se la macchina virtuale non è in esecuzione, virt-viewer attenderà l'avvio.
Altri comandi "virt-" che possono essere installati da pacchetti separati
- virt-chicche- Una raccolta di strumenti relativi alla virtualizzazione. Include un plugin per «Munin«, E uno script per convertire le macchine virtuali create con VMware Workstation o VMware Server, nel formato utilizzato in Qemu-KVM.
- top virt: Mostra le statistiche dei domini virtualizzati. Un tipo di top o htop per macchine virtuali
Installato con qemu-utils
Sebbene il nome di questi strumenti non inizi con virtùSicuramente dovremo usarne alcuni in un certo momento, soprattutto quello relativo alle immagini dei dischi delle macchine virtuali.
Possiamo invocarli dopo aver installato il Piattaforma di virtualizzazione Qemu-Kvm, come indicato nell'articolo precedente. Se vogliamo sapere quali comandi il pacchetto ha lasciato a nostra disposizione qemu-utils, dobbiamo solo eseguire:
buzz @ sysadmin: ~ $ sudo dpkg -L qemu-utils | grep / bin / Usr / bin / usr / bin / qemu-img / usr / bin / qemu-nbd / usr / bin / qemu-io
Se invece di discriminare /bidone lo avremmo fatto per / sbin, otterremmo un altro risultato che lasciamo alla vostra considerazione.
- qemu-img: ci permette di creare, convertire e / o modificare immagini di dischi che non funzionano o che lo sono Fuori dalle righe.
Consigliamo eseguire il comando uomo qemu-img. Sottolineeremo solo che non dovremmo MAI usare questo comando per modificare qualsiasi immagine che è in uso da qualsiasi macchina virtuale o qualsiasi altro processo, perché può distruggere l'immagine. Né dovremmo consultare i dati di un'immagine che è in fase di modifica, poiché possiamo trovare incongruenze nel suo stato.
Esempi di utilizzo di alcuni comandi
virt-host-convalida
buzz @ sysadmin: ~ $ virt-host-validate QEMU: controllo della virtualizzazione hardware: PASS QEMU: controllo del dispositivo / dev / kvm: PASS QEMU: controllo del dispositivo / dev / vhost-net: WARN (carica il modulo 'vhost_net' per migliorare le prestazioni di virtio networking) QEMU: controllo di dispositivo / dev / net / tun: PASS LXC: controllo per Linux> = 2.6.26: PASS buzz @ sysadmin: ~ $ sudo virt-host-validate [sudo] password per buzz: QEMU: controllo della virtualizzazione hardware: PASS QEMU: controllo del dispositivo / dev / kvm: PASS QEMU: controllo del dispositivo / dev / vhost-net: PASS QEMU: controllo del dispositivo / dev / net / tun : PASS LXC: controllo per Linux> = 2.6.26: PASS
virt-xml-convalida
buzz @ sysadmin: ~ $ sudo virt-xml-validate /etc/libvirt/qemu/dns.xml /etc/libvirt/qemu/dns.xml convalida buzz @ sysadmin: ~ $ sudo virt-xml-validate /etc/libvirt/qemu/networks/default.xml /etc/libvirt/qemu/networks/default.xml convalida
qemu-img
buzz @ sysadmin: ~ $ qemu-img controlla /tera/vmware/omicron/omicron.vmdk Non sono stati trovati errori nell'immagine. buzz @ sysadmin: ~ $ qemu-img info /tera/vmware/omicron/omicron.vmdk immagine: /tera/vmware/omicron/omicron.vmdk formato file: vmdk dimensione virtuale: 20G (21474836480 byte) dimensione disco: 3.6G dimensione_cluster: 65536 Informazioni specifiche sul formato: cid: 1473577509 cid padre: 4294967295 tipo di creazione: monolitico Sparse estensioni: [0]: dimensione virtuale: 21474836480 nome file: / tera / vmware / omicron / omicron.vmdk dimensione del cluster: 65536 formato: buzz @ sysadmin: ~ $ qemu-img info /tera/vms/omicron.raw immagine: /tera/vms/omicron.raw formato file: dimensione virtuale non elaborata: 20G (21474836480 byte) dimensione del disco: 3.4G buzz @ sysadmin: ~ $ qemu-img info /tera/vms/miweb.qcow2 immagine: /tera/vms/miweb.qcow2 formato file: qcow2 dimensione virtuale: 10G (10737418240 byte) dimensione disco: 4.5G dimensione_cluster: 65536 Informazioni specifiche sul formato: compat: 1.1 conteggio lento: false buzz @ sysadmin: ~ $ sudo qemu-img convert -p /tera/vms/omicron.raw -O qcow2 /tera/vms/omicron.qcow2 (27.56 / 100%) buzz @ sysadmin: ~ $ qemu-img info /tera/vms/omicron.qcow2 immagine: /tera/vms/omicron.qcow2 formato file: qcow2 dimensione virtuale: 20G (21474836480 byte) dimensione disco: 3.5G dimensione_cluster: 65536 Informazioni specifiche sul formato: compat: 1.1 conteggio lento: false
buzz @ sysadmin: ~ $ sudo qemu-img create -f qcow2 /tera/vms/hyp2.qcow2 20G Formattazione "/tera/vms/hyp2.qcow2", fmt = qcow2 size = 21474836480 crittografia = off cluster_size = 65536 lazy_refcounts = off buzz @ sysadmin: ~ $ sudo qemu-img info /tera/vms/hyp2.qcow2 immagine: /tera/vms/hyp2.qcow2 formato file: qcow2 dimensione virtuale: 20G (21474836480 byte) dimensione disco: 196K dimensione_cluster: 65536 Informazioni specifiche sul formato: compat: 1.1 conteggio lento: false
virt-xml
Innanzitutto, creiamo un nuovo album:
buzz @ sysadmin: ~ $ sudo qemu-img create -f qcow2 /tera/vms/dns2.qcow2 10G
Quindi lo uniamo al dominio "dns" esistente:
buzz @ sysadmin: ~ $ virt-xml --connect qemu: /// system dns --add-device --disk /tera/vms/dns2.qcow2 --confirm --- XML originale +++ XML modificato @@ -128,5 +128,10 @@ + + + + + Definisci "dns" con l'XML modificato? (y / n): y Dominio "dns" definito correttamente.
Alla fine dell'articolo forniamo la struttura completa del file /etc/libvirt/qemu/dns.xml appena modificato.
virt-convertire
Convertiamo una macchina virtuale creata utilizzando il VMware Workstation verso il formato libvirt, ma non prima di aver specificato che il formato del disco rigido convertito è qcow2e inoltre che la nuova immagine della macchina virtuale viene creata nel repository principale / tera / vms. Vogliamo anche che l'output del comando sia il più esplicito possibile, quindi usiamo l'opzione -d.
buzz @ sysadmin: ~ $ sudo virt-convert -d / tera / vmware / miweb / --disk-format qcow2 --destination / tera / vms
Successivamente, il virt-viewer si connette automaticamente al Guest appena convertito e possiamo vedere il suo intero processo di avvio.
clone-virt
Cloniamo la macchina virtuale «dns":
buzz @ sysadmin: ~ $ virt-clone --connect qemu: /// system -o dns --auto-clone Assegnazione di "dns-clone.qcow2" | 10 GB 00:20 Assegnazione di "dns2-clone.qcow2" | 10 GB 00:01 Il clone "dns-clone" è stato creato con successo.
Controlliamo usando il comando vergognoso, che è un'anteprima del prossimo articolo:
buzz @ sysadmin: ~ $ sudo virsh list Stato nome ID ----------------------------------------------- ----- buzz @ sysadmin: ~ $ sudo virsh list --all Stato nome ID ----------------------------------------------- ----- - dns shut off - dns-clone shut off - miweb si spegne buzz @ sysadmin: ~ $ sudo virsh start dns-clone Dominio dns-clone avviato
buzz @ sysadmin: ~ $ virt-viewer --connect qemu: /// system dns-clone
installazione virtuale
Vogliamo creare una macchina virtuale denominata «WordPress»Per ospitare il sito di Intranet aziendale. Non sarà pubblicato su Internet. Che ha circa 1024 megabyte di RAM, un hard disk da 80 gigabyte di crescita dinamica, basato su Debian Jessie, e connesso alla rete «difetto«.
Per semplificare la nostra vita, creiamo prima l'immagine del disco utilizzando qemu-img:
buzz @ sysadmin: ~ $ sudo qemu-img create -f qcow2 /tera/vms/wordpress.qcow2 80G Formattazione "/tera/vms/wordpress.qcow2", fmt = qcow2 size = 85899345920 crittografia = off cluster_size = 65536 lazy_refcounts = off
Successivamente, creiamo la macchina e iniziamo il processo di installazione:
buzz @ sysadmin: ~ $ sudo virt-install --connect qemu: /// system --virt-type = kvm \ --name wordpress --ram 1024 --vcpus = 1 \ --disk /tera/vms/wordpress.qcow2 \ --cdrom /home/buzz/isos/Linux/debian-8/debian-8.0.0-amd64-CD-1.iso \ --os-type linux --network network = default \ --descrizione wordpress.desdelinux.fan
top virt
buzz @ sysadmin: ~ $ virt-top --connect qemu: /// system virt-top 15:39:21 - x86_64 2 / 2CPU 1600MHz 3863MB 2 domini, 2 attivi, 2 in esecuzione, 0 dormienti, 0 in pausa, 0 inattivi D: 0 O: 0 X: 0 CPU: 0.7% Mem: 768 MB ( 768 MB dai guest) ID S RDRQ WRRQ RXBY TXBY% CPU% MEM TIME NAME 22 R 0 0 104 0 0.3 6.0 0: 11.49 dns 21 R 0 0 104 0 0.3 13.0: 0 miweb
Struttura del file dns.xml
All'inizio può sembrare un po 'difficile capire la struttura del file di definizione di una macchina virtuale o GUEST, come inteso dall'hypervisor Qemu-KVM e dalle librerie correlate come libvirt. Il file è nel formato standard.xml. È strutturato per definizione blocchi, contenuti all'interno del blocco principale «dominio«.
....
All'interno di quel blocco troveremo il file definizioni dell'intera macchina virtuale:
- nome della squadra
- uuid della squadra
- quantità di RAM
- numero di processori
- tipo di sistema operativo e sua architettura. dispositivo di stivale.
- Funzionalità supportate come ACPI "Automatic Control Power Interface", APM "Automatic Power Management" e PAE.
- Modello / i di CPU e loro caratteristiche
- impostazione dell'orologio: se è UTC "United Time Cordinate" o meno.
- risposta a eventi come arresto, riavvio o arresto anomalo del sistema
- se il PM «Power Management» ha abilitato gli eventi «sospendi scrittura in memoria» e «sospendi scrittura su disco rigido»
- tipo di emulatore di dispositivi diversi o Dispositivi KVM
- per tutti i dischi rigidi: driver, tipo di disco, percorso file immagine, dispositivo di destinazione, tipo di bus, slot «fessura»Pci a cui è collegato, ecc., A seconda del disco virtuale: IDE, SATA, SCSI, USB o Virtio.
- dispositivi ottici come CDR
- numero e tipo di connettori USB
- slot PCI per disco IDE
- connettore seriale per comunicazioni
- connettore parallelo per stampanti
- schede di rete con un indirizzo MAC univoco, tipo di scheda di rete, a quale slot pci è collegata ea quale rete virtuale si connetterà
- console della serie pty
- dispositivi di input come pad «di tablet", Tastiera del mouse"mouse", eccetera.
- scheda video e relativa RAM, tipo, modello, slot, bus, ecc.
- e un altro lungo eccetera
Insomma, La Mar Océana di definizioni e dispositivi che sono necessari e supportati dall'hypervisor Qemu-KVM e dalle relative librerie, per avere una macchina virtuale perfettamente funzionante come se fosse una macchina reale.
buzz @ sysadmin: ~ $ sudo cat /etc/libvirt/qemu/dns.xml <!-- ATTENZIONE: QUESTO È UN FILE GENERATO AUTOMATICAMENTE. È probabile che le modifiche ad esso vengano sovrascritte e perdute. Le modifiche a questa configurazione xml dovrebbero essere fatte usando: virsh edit dns o un'altra applicazione usando l'API libvirt.
Prossime consegne
- Comando Virsh
- Gestione remota degli hypervisor e delle loro macchine virtuali tramite SSH
Ricorda che questa sarà una serie di articoli di Reti di computer per le PMI. Ti aspettiamo!
Mi hai chiesto un feedback ed eccolo ... 🙂
La serie è molto interessante, molto completa. Sto imparando molto da questo, anche se non ho ancora provato "in produzione".
Al momento sto terminando un progetto che mi ha molto impegnato, ma userò sicuramente questa serie come riferimento. Grazie per l'enorme sforzo.
Grazie Diego per il feedback. Almeno so che quello che ho pubblicato ti è utile. E hai ragione riguardo al grande sforzo che facciamo DesdeLinux per fornirti articoli di qualità in lingua spagnola. Sappiamo che questo tipo di post non sono abbondanti ed è per questo che li scriviamo.
Articolo esauriente e didattico amigo Fico, che raccoglie in un post i comandi virt- * usati in KVM. È molto difficile trovare materiali come questo in lingua spagnola. Penso che il comando virt-what mancasse. Altrimenti eccellente
Grazie per il commento, amico Zodiac. È vero che mancava il comando virt-what. L'ho consapevolmente omesso perché la raccomandazione sul suo utilizzo secondo il suo manuale mi ha lasciato l'amaro in bocca. Alla fine quello che ho capito è che ne sconsigliano l'uso
Verissimo amico Zodiac. Come dice Diego nel suo commento, è un grande sforzo quello che facciamo DesdeLinux per fornirti articoli di qualità in spagnolo. Altro che il classico copia e incolla dei post sui cd che abbondano nel WWW Village. Che aiutano nella formazione degli Amministratori di Sistema. Coloro che hanno seguito questa serie si saranno resi conto che intendiamo coprire in modo completo e in ordine logico la soluzione per una rete aziendale di piccole e medie dimensioni. Grazie ancora a tutti per i vostri commenti.
Ho fatto qualcosa con gli smartphone Android e non ho avuto la possibilità di leggere un articolo così buono, questa volta voglio solo dire qualcosa. Vai morbido. Una buona comprensione ...
Crespo88, l'articolo potrebbe essere un po 'lungo, ma non sono amico di tagliare un argomento specifico come questo in diversi post, se è questo che intendi. La relativa complessità del contenuto, non lo dico, è il problema della virtualizzazione stessa. 😉
Non mi riferivo, ottimo articolo come sempre. Voglio dire che stai suonando canzoni molto buone, cioè con un'utilità molto utile. Il "Give it soft" significa che stai scappando. Hehehe, un abbraccio fratello.
Grazie fratello per aver commentato
Post molto buono ... Didattico, completo e semplicemente perfetto.
Ora, per chi preferisce utilizzare questo tipo di virtualizzazione, è meglio utilizzare oVirt (http://www.ovirt.org/), un progetto su cui si basano Red Hat Virtualization e Open Source. In questo modo è possibile accedere in modo molto semplice a opzioni molto avanzate, che sono piuttosto complesse nella console :).
http://www.ovirt.org/download/
http://www.ovirt.org/documentation/introduction/about-ovirt/
Saluti :).
Grazie mille, Petercheco per il tuo commento. Nel precedente articolo "Virtualization in Debian: Introduction", in un paragrafo dedicato alla Open Virtualization Alliance, ho citato oVirt come uno dei software promossi dall'OVA. Penso che oVirt sia per grandi implementazioni. Chiede invece una workstation a lui dedicata con 4 giga di RAM come quantità di memoria consigliata. Il mio amico e collega Eduardo Noel "enoel.corebsd@gmail.com" ha installato diversi server di virtualizzazione basati su CentOS 7 e li gestisce meravigliosamente con oVirt.
ottimo articolo il mio partner, un altro esempio della qualità che hai
Grazie, amico Denis, per il tuo commento e per i miei immeritati elogi. Facciamo quello che possiamo.
Nonostante sia in attesa del test dei virt-commands nel mio home-lab, non posso fare a meno di riconoscere che l'articolo è semplicemente fantastico, molto pratico ed estremamente utile visto che è focalizzato sul terminale che è davvero il mio preferito per il mio profilo di sysadmin.
Ottimo tutto ciò che riguarda l'amministrazione locale o remota delle VM senza utilizzare l'interfaccia grafica "Virt-Manager".
Ancora una volta, amico mio Fico, ti ingrandisci condividendo disinteressatamente la tua conoscenza del mondo Linux.
Gli effusivi SLD di Wong e io continuiamo a studiare la serie Virt Qemu-KVM più diligentemente.
Amico Wong: I commenti come i tuoi sono quelli che mi costringono a continuare a scrivere di SME Networks. Molti potrebbero chiedersi perché la mia enfasi su Qemu-KVM e la risposta è nel mio articolo https://blog.desdelinux.net/virtualizacion-debian-introduccion-redes-computadoras-las-pymes/#Open_Virtualization_Alliance_OVA. Meno di lui ovirt, che ritengo opportuno per scenari più grandi di una Rete di PMI, mi sono occupato degli altri programmi promossi dal OVA. Quello semplice
Perché cercare al di fuori dei repository di programma di ogni distribuzione a cui mi iscrivo, se c'è quello che mi serve per virtualizzare a livello aziendale?
I miei sinceri ringraziamenti per i tuoi commenti, amico Wong!