La shell virtuale, o virsh, è un'utilità della riga di comando flessibile per gestire le macchine virtuali (VM) controllate da libvirt, che è un toolkit e un'API per gestire le piattaforme di virtualizzazione. È lo strumento di gestione predefinito per le macchine virtuali (KVM) basate su kernel Linux e supporta anche Xen, VMware e altre piattaforme.
Il virsco
Il comando consente di gestire le VM in modo interattivo o in batch. È anche utile per controllare le VM dalla shell Linux e si integra con script o strumenti di automazione. Usando virsh
, puoi connetterti rapidamente a un server utilizzando Secure Shell (SSH) ed eseguire operazioni sulle tue VM senza accedere a un'interfaccia grafica.
Quando esegui virsh
senza alcuna opzione, tenta di connettersi a un hypervisor locale. Per Linux, la connessione predefinita punta a un sistema QEMU locale per gestire le macchine KVM locali. Puoi anche connetterti a un hypervisor remoto usando l'opzione -c
o --connect
e specificando l'Uniform Resource Identifier (URI) dell'hypervisor remoto utilizzando la sintassi di libvirt. Per ulteriori informazioni, consultare la specifica URI di libvirt.
Per impostazione predefinita, virsh
fornisce centinaia di sottocomandi e opzioni che ti consentono di gestire ogni aspetto della tua piattaforma di virtualizzazione o VM. In questo articolo condividerò gli otto virsh
sottocomandi che uso più spesso. A causa della natura del lavoro quotidiano, la maggior parte di questi sottocomandi si applica direttamente alle macchine virtuali (o domini nella terminologia libvirt) ma virsh
ha anche comandi per gestire la piattaforma stessa, come aggiungere storage pool, reti e altro.
lista virsh
lista virtuale
è un comando di base che elenca tutti i domini in esecuzione (VM). Puoi anche elencare tutte le VM configurate aggiungendo il --all
opzione. Ciò è utile se si desidera visualizzare tutte le macchine virtuali configurate nell'hypervisor di destinazione che è possibile utilizzare sui comandi successivi. Ad esempio, per elencare tutte le macchine virtuali disponibili su un hypervisor KVM Linux locale:
# virsh list --all Id Name Stato-------------------------------------------- 3 rh8-vm01 in esecuzione - crc spegnimento - rh8-tower01 spegnimento
Puoi utilizzare l'ID o il nome di dominio come input per i comandi successivi.
avvio/riavvio/arresto virtuale
Sebbene siano diversi, ho raggruppato il inizio
, riavvia
e spegnimento
sottocomandi perché eseguono la stessa operazione di base della gestione dello stato di alimentazione della VM.
Per spegnere la VM rh8-vm01
(dalla elenco
comando sopra):
# arresto virsh rh8-vm01 Il dominio 'rh8-vm01' è in fase di arresto# elenco virsh Id Nome Stato--------------------
Puoi riavviarlo usando il start
sottocomando:
# virsh start rh8-vm01 Dominio 'rh8-vm01' iniziato# elenco virsh Id Nome Stato-------------------------------------- - 4 rh8-vm01 in esecuzione
Utilizzando questi sottocomandi, puoi avviare, riavviare o arrestare rapidamente una VM senza dover avviare un'applicazione grafica pesante.
[ Potresti anche essere interessato a imparare come modificare sshd_config usando uno script Bash. ]
virsh dumpxml
Il dumpxml
il sottocomando esegue il dump della configurazione XML per un determinato dominio. Puoi usarlo per esportare la configurazione in un file per apportare modifiche a una macchina virtuale esistente o usarlo come modello per creare un'altra macchina virtuale con una configurazione simile. Per impostazione predefinita, scarica la configurazione su STDOUT , quindi reindirizzalo a un file usando gli operatori di reindirizzamento della shell >
per salvare in un file:
Puoi utilizzare l'output XML negli script e negli strumenti di automazione per automatizzare la creazione di macchine virtuali.
dominio virtuale
Il domifaddr
il sottocomando elenca tutti gli indirizzi IP configurati per tutte le interfacce virtuali in una determinata macchina virtuale. È utile se la VM utilizza indirizzi IP dinamici, in quanto consente di vedere l'indirizzo IP assegnato e di connettersi alla VM:
# virsh domifaddr rh8-vm01 Nome Indirizzo MAC Protocollo Indirizzo-------------------------------- ---------------------------------------------- vnet6 52:54 :00:c8:17:6e ipv4 192.168.122.19/24 vnet7 52:54:00:04:4d:ac ipv4 192.168.64.210/24
Per impostazione predefinita, elenca l'indirizzo IP affittato da un server DHCP. Se l'hypervisor non fornisce queste informazioni, puoi anche utilizzare l'opzione --source agent
per interrogare il sistema operativo guest (OS) direttamente tramite l'agente di virtualizzazione. Ciò richiede un agente di virtualizzazione installato nel sistema operativo guest.
Modifica virtuale
La modifica
il sottocomando apre la configurazione XML corrente nel tuo $EDITOR
predefinito , che ti consente di apportare modifiche in tempo reale in una VM:
# virsh edit rh8-vm01 rh8-vm01 53b92c48-fce3-4464-95bf-6f442e988c94 . .. USCITA troncata ...
Dopo aver apportato le modifiche, salva il file per applicarle. Alcune modifiche potrebbero avere effetto solo dopo un riavvio.
Modifica rete virtuale
La modifica in rete
il sottocomando consente di apportare modifiche in tempo reale a una configurazione di rete virtuale. È utile per modificare le opzioni su una rete virtuale, come associare un determinato indirizzo MAC a un indirizzo IP utilizzando libvirt
standard Configurazione DHCP. È un comando più avanzato che uso regolarmente. Come la modifica
sottocomando, apre il file di configurazione nel tuo $EDITOR
predefinito per apportare modifiche. Salva il file per applicare le modifiche:
# virsh net-edit --network hostonly hostonly eddd03ff-5825-42ef-bc99-968bddf773c2
Puoi anche utilizzare altri sottocomandi relativi alla rete che iniziano con net-
per gestire diversi aspetti delle reti virtuali dell'hypervisor.
[ Scarica ora:una guida per l'amministratore di sistema allo scripting Bash. ]
Cosa c'è dopo?
virsh è un'utilità potente e flessibile che ti consente di gestire ogni aspetto della virtualizzazione Linux e di altre piattaforme. Per maggiori informazioni a riguardo, consulta le pagine man o controlla la sua documentazione online.