GNU/Linux >> Znalost Linux >  >> Linux

Jak exportovat a importovat virtuální stroje KVM v Linuxu

V tomto článku vás provedu kroky k exportu disku a konfigurací virtuálního počítače KVM a jejich pozdějšímu importu do stejného počítače nebo do jiného počítače. Také vám ukážu, jak exportovat a importovat virtuální stroje KVM pomocí skriptu Bash.

Úvod

Nedávno jsem změnil svůj hypervizor z Oracle VirtualBox na KVM pro jeho nativní funkce a výkon. Pokud jsem testoval, virtuální stroje KVM běží rychle ve srovnání s virtuálními počítači Virtualbox.

Vždy je důležité pravidelně zálohovat vaše virtuální počítače. Takže v případě jakékoli nesrovnalosti můžete k obnovení virtuálního stroje použít záložní bitovou kopii. Export a import virtuálních počítačů KVM je dvoufázový proces.

  • Nejprve musíte zkontrolovat, kde jsou uloženy obrazy disku, a zkopírovat obraz disku do umístění zálohy.
  • Zadruhé exportujte konfigurace stroje, aby je bylo možné později použít k vytvoření domény.

Definice virtuálního stroje

Existují dva způsoby, jak získat informace o doméně virtuálního stroje. Buď můžete použít "Virsh" program nebo použijte "Virt-manager" .

Název virtuálního počítače můžete získat od správce Virt nebo spuštěním následujícího virsh příkaz.

$ virsh list --all
 Id   Name                State
------------------------------------
 -    Linux_Mint_20       shut off
 -    mxlinux             shut off
 -    popos_21_10         shut off
 -    rocky_linux_8       shut off
 -    ubuntu20.04         shut off
 -    ubuntu20.04-clone   shut off

Následující příkaz můžete spustit a zobrazit informace o celé doméně (Konfigurace virtuálního počítače) o konkrétním virtuálním počítači. Tím se zobrazí výsledek ve formátu XML.

$ virsh dumpxml vm_name | less
$ virsh dumpxml ubuntu20.04-clone | less

Konkrétní konfiguraci stroje můžete také získat propojením s grep příkaz. Řekněme, že pokud chcete zobrazit přidělení paměti, můžete spustit následující příkaz.

$ virsh dumpxml ubuntu20.04-clone | grep -i "MEMORY"
  <memory unit='KiB'>5632000</memory>
  <currentMemory unit='KiB'>5632000</currentMemory>

Pokud dáváte přednost Virt-manageru, můžete tyto informace získat ve formátu XML stisknutím karty XML v části „zobrazit virtuální hardware“.

Umístění disku virtuálního počítače

Disky virtuálního stroje jsou vytvořeny v qcow2 formát. Ve výchozím nastavení je disk virtuálního počítače uložen v /var/lib/libvirt/images/ adresář, pokud jste disk výslovně neuložili do samostatného adresáře.

Spusťte následující příkaz a získejte cestu k adresáři disku.

$ virsh dumpxml ubuntu20.04-clone | grep -i "source"
      <source file='/var/lib/libvirt/images/ubuntu20.04-clone.qcow2'/>

Ve správci Virt v části Přehled sekce, zkontrolujte <disk> sekce.

Pokud jste k ukládání obrazů disků použili různé cesty a chcete znát všechny cesty k disku VM, můžete spustit následující fragment z terminálu nebo ze skriptu shellu.

VM_NAMES=($(virsh list --all| awk '(NR>2)' | awk '{ print $2 }'))

for VM in ${VM_NAMES[@]}; do
  DISK_PATH=$(virsh dumpxml ${VM} | grep -i "<source file")
  echo "${VM} ${DISK_PATH}"
done | column -t 

Exportovat informace o doméně a zkopírovat disk

Nyní víte, jak získat cestu k disku a informace o doméně, je čas exportovat informace o doméně pro virtuální počítač a zkopírovat obraz disku do jiného umístění.

Chcete-li exportovat informace o doméně, můžete spustit následující "virsh dumpxml “ a uložte výstup do XML soubor.

$ virsh dumpxml vm-name > /path/to/xm_file.xml
$ virsh dumpxml ubuntu20.04-clone > ~/Documents/ubuntu.xml

Nyní zkopírujte obraz disku na jiné místo, které lze použít později.

$ sudo cp /var/lib/libvirt/images/ubuntu20.04-clone.qcow2 ~/Documents/

Proces exportu je dokončen. Je to tak jednoduché!

Pozor: Měli byste použít sudo nebo zkopírujte disk s root uživatel, protože disk je ve vlastnictví uživatele root.

Importovat virtuální stroj KVM

Chcete-li importovat virtuální stroj KVM, musíte definovat doménu z exportovaného souboru XML spuštěním následujícího příkazu.

$ virsh define --file <path-to-xml-file>
$ virsh define –file ~/Documents/ubuntu.xml

Nyní můžete zkontrolovat Virt-manager nebo spustit virsh by měla být doména úspěšně vytvořena. Musíte zkopírovat obraz disku do cesty k adresáři, která je definována v souboru XML. V mém případě je to výchozí umístění /var/lib/libvirt/images/ .

$ sudo cp ~/Documents/ubuntu20.04-clone.qcow2 /var/lib/libvirt/images/

Proces importu je dokončen. Nyní můžete spustit virtuální počítač.

Bash skript pro export a import virtuálních strojů KVM

Vytvořil jsem bash skript, který se postará o export všech konfiguračních a diskových obrazů. Pokud máte zájem, můžete se na tento skript podívat v mém úložišti GitHub . Vaše návrhy na vylepšení tohoto skriptu budou velmi oceněny.

#!/usr/bin/env bash

# ----------------------------------------------------------------------------------------------------
# AUTHOR   : KARTHICK S
# PURPOSE  : THIS SCRIPT WILL EXPORT/IMPORT THE CONFIG AND VM DISK. 
#
# usage: 
# export function will take care of exporting the necessary for all VM. Run as "<scriptname.sh> export"
# import function will take care of importing the necessary for all VM. Run as "<scriptname.sh> import"
#
# NOTE: Do not add trailing / for the directory when giving export and import path.
#------------------------------------------------------------------------------------------------------

# Trigger the script with root user or exit.
if [[ ${UID} -ne 0 ]]; then
  echo -e "[EXIT] - Run the script as root user or with sudo privilege..."
  exit
fi

function export_vm(){
  
  # Get the export location.
  read -p "Provide the directory path where disk and config files to be exported: " EXPORT_LOCATION

  # Create the destination directory if not exists.
  [[ -d ${EXPORT_LOCATION} ]] || mkdir -p ${EXPORT_LOCATION}

  # Exporting the config using virsh dumpxml command.
  VM_NAMES=($(virsh list --all| awk '(NR>2)' | awk '{ print $2 }'))
  for VM in ${VM_NAMES[@]}; do
    virsh dumpxml ${VM} > ${EXPORT_LOCATION}/${VM}.xml
  done

  # Using rsync copy the entire directory from default location.
  echo -e "\n[ Copying disk images ]\n" && sudo rsync -avxp --progress /var/lib/libvirt/images ${EXPORT_LOCATION}

  echo -e "\n[ Exported Files ] \n" && ls -lR ${EXPORT_LOCATION}

} 

function import_vm(){

  # Get the source location.
  read -p "Provide the directory path where disk and config files are stored: " SOURCE_LOCATION

  # Throws error if directory is not available and exit.
  [[ -d ${SOURCE_LOCATION} ]] || { echo "Directory not available"; exit 1 ; }

  # Copy all the files to default disk location.
  echo -e "[ Copying disk images ]\n" && sudo rsync -avxp --progress ${SOURCE_LOCATION}/images /var/lib/libvirt/

  if [[ $? -eq 0 ]]; then
    # Define VM
    echo -e "\n[ Defining VM ]\n"
    for XML_FILE in ${SOURCE_LOCATION}/*.xml; do
      virsh define --file ${XML_FILE} 
    done
    echo -e "\n[ Imported VM List ]\n" && virsh list --all
  fi

}

case $1 in
 export ) export_vm ;;
 import ) import_vm ;;
 *) echo -e "USAGE : 
kvm_export_import.sh export - Export config and disk
kvm_export_import.sh import - Define VM and copy the disk"; exit 
esac

Použití tohoto skriptu je následující.

Ke klonování podstaty z GitHubu můžete spustit následující příkaz.

$ git clone https://gist.github.com/d6c671597592fe5634a39b7974bc8029.git

Skript provádí zálohu (tj. export) i obnovu (tj. obnovení).

Exportujeme virtuální stroj KVM pomocí tohoto skriptu, jak je uvedeno níže.

$ sudo bash kvm_export_import.sh export

Musíte zadat cestu k adresáři, kam se má soubor XML a obraz disku zkopírovat/exportovat. Nepřidávejte koncové / lomítko při zadávání exportního adresáře. Nejprve zkopíruje obraz disku (.qcow2 ) a spusťte soubor "virsh dumpxml " k exportu všech konfigurací.

Níže uvedený obrázek ukazuje, jak export funguje.

Když předáte "import " jako argument nejprve zkopíruje obraz disku do výchozího umístění /var/lib/libvirt/ a spusťte "virsh define " proti všem exportovaným souborům XML.

$ sudo bash kvm_export_import.sh import

Závěr

V tomto článku jsem vám ukázal, jak exportovat virtuální stroj KVM a importovat je do stejného nebo jiného stroje. Vytvoření virtuálního stroje od začátku je časově náročný úkol. Správná strategie, kterou je třeba dodržovat, abyste ochránili snímky před ztrátou v jakékoli situaci. Pokud máte nějaké triky nebo tipy pro tento článek, rádi bychom je od vás slyšeli.

Doufám, že to pomůže.


Linux
  1. Jak odstranit virtuální stroje založené na KVM na Redhat Linuxu

  2. Jak klonovat virtuální stroje založené na KVM na Redhat Linux

  3. Jak exportovat a importovat nastavení DNS v CloudFlare

  1. Jak importovat a exportovat databáze MySQL v Linuxu

  2. Quickemu – Spusťte virtuální stroje Windows, MacOS a Linux

  3. Jak přidat paměť, vCPU, pevný disk do virtuálního počítače Linux KVM

  1. Jak vytvářet a spravovat virtuální stroje KVM pomocí příkazového řádku

  2. Jak nainstalovat Virtual Machine Manager (KVM) v Manjaro a Arch Linux

  3. Jak spravovat virtuální stroje KVM pomocí Virt-Manager