GNU/Linux >> Belajar Linux >  >> Linux

Cara Mengekspor Dan Mengimpor Mesin Virtual KVM Di Linux

Pada artikel ini, saya akan memandu Anda melalui langkah-langkah untuk mengekspor disk dan konfigurasi mesin virtual KVM dan kemudian mengimpornya ke mesin yang sama atau ke mesin yang berbeda. Saya juga akan menunjukkan cara mengekspor dan mengimpor mesin virtual KVM dengan skrip Bash.

Pengantar

Baru-baru ini saya mengganti hypervisor saya dari Oracle VirtualBox ke KVM untuk fitur dan kinerja aslinya. Sejauh yang saya uji, mesin virtual KVM berjalan lebih cepat dibandingkan dengan VM Virtualbox.

Selalu penting untuk mencadangkan VM Anda secara berkala. Jadi jika ada perbedaan, Anda dapat menggunakan gambar cadangan untuk memulihkan mesin virtual. Mengekspor dan Mengimpor mesin virtual KVM adalah proses dua langkah.

  • Pertama, Anda harus memeriksa di mana disk image disimpan dan menyalin disk image ke lokasi cadangan.
  • Kedua, ekspor konfigurasi mesin, sehingga nantinya dapat digunakan untuk membuat domain.

Definisi Mesin Virtual

Ada dua cara untuk mendapatkan informasi domain mesin virtual. Anda dapat menggunakan "Virsh" program atau gunakan "Manajer Virt" .

Anda bisa mendapatkan nama VM dari Virt-manager atau dengan menjalankan virsh berikut perintah.

$ 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

Anda dapat menjalankan perintah berikut untuk melihat seluruh informasi domain (Konfigurasi VM) tentang mesin virtual tertentu. Ini akan menampilkan hasilnya dalam format XML.

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

Anda juga dapat mengambil konfigurasi mesin tertentu dengan menyalurkannya ke grep memerintah. Katakanlah jika Anda ingin melihat alokasi memori, maka Anda dapat menjalankan perintah berikut.

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

Jika Anda lebih suka Virt-manager, maka Anda dapat mengambil informasi ini dalam format XML dengan menekan tab XML di bawah bagian "tampilkan perangkat keras virtual".

Lokasi Disk Mesin Virtual

Disk mesin virtual dibuat di qcow2 format. Secara default, disk mesin virtual disimpan di /var/lib/libvirt/images/ direktori kecuali Anda secara eksplisit menyimpan disk di direktori terpisah.

Jalankan perintah berikut untuk mendapatkan jalur direktori disk.

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

Dari Manajer Virt, di bawah Ringkasan bagian, periksa <disk> bagian.

Jika Anda telah menggunakan jalur yang berbeda untuk menyimpan image disk dan jika Anda ingin mengetahui semua jalur disk VM, Anda dapat menjalankan cuplikan berikut dari terminal atau dari skrip shell.

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 

Ekspor Informasi Domain Dan Salin Disk

Sekarang Anda tahu cara mendapatkan jalur disk dan informasi domain, saatnya mengekspor informasi domain untuk VM dan menyalin citra disk ke lokasi lain.

Untuk mengekspor informasi domain, Anda dapat menjalankan "virsh dumpxml . berikut ini " dan simpan hasilnya dalam XML berkas.

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

Sekarang salin image disk ke tempat lain yang dapat digunakan nanti.

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

Proses ekspor selesai. Sesederhana itu!

Perhatian: Anda harus menggunakan sudo atau salin disk dengan root pengguna karena disk dimiliki oleh pengguna root.

Impor Mesin Virtual KVM

Untuk mengimpor mesin virtual KVM, Anda harus menentukan domain dari file XML yang diekspor dengan menjalankan perintah berikut.

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

Sekarang Anda dapat memeriksa Virt-manager atau menjalankan virsh perintah, domain harus berhasil dibuat. Anda harus menyalin gambar disk ke jalur direktori yang ditentukan dalam file XML. Dalam kasus saya ini adalah lokasi default /var/lib/libvirt/images/ .

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

Proses impor selesai. Sekarang Anda dapat memulai mesin virtual.

Skrip Bash Untuk Mengekspor Dan Mengimpor Mesin Virtual KVM

Saya telah membuat skrip bash yang akan menangani ekspor semua konfigurasi dan gambar disk. Jika Anda tertarik, Anda dapat melihat skrip ini di repositori GitHub saya . Saran Anda untuk meningkatkan skrip ini akan sangat kami hargai.

#!/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

Penggunaan script ini adalah sebagai berikut.

Anda dapat menjalankan perintah berikut untuk mengkloning intisari dari GitHub.

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

Skrip melakukan pencadangan (yaitu mengekspor) serta memulihkan (yaitu memulihkan).

Mari kita ekspor mesin virtual KVM menggunakan skrip ini seperti di bawah ini.

$ sudo bash kvm_export_import.sh export

Anda harus menyediakan jalur direktori tempat file XML dan gambar disk akan disalin/diekspor. Jangan tambahkan / di akhir garis miring saat memberikan direktori ekspor. Ini pertama-tama akan menyalin gambar disk (.qcow2 ) dan jalankan "virsh dumpxml " perintah untuk mengekspor semua konfigurasi.

Gambar di bawah menunjukkan cara kerja ekspor.

Saat Anda melewati "import " sebagai argumen, pertama-tama akan menyalin gambar disk ke lokasi default /var/lib/libvirt/ dan jalankan "virsh define " perintah terhadap semua file XML ekspor.

$ sudo bash kvm_export_import.sh import

Kesimpulan

Pada artikel ini saya telah menunjukkan kepada Anda cara mengekspor mesin virtual KVM dan mengimpornya ke mesin yang sama atau berbeda. Membangun mesin virtual dari awal adalah tugas yang memakan waktu. Jadi strategi yang tepat harus diikuti untuk melindungi gambar agar tidak hilang karena situasi apa pun. Jika Anda memiliki trik atau tip untuk artikel ini, kami akan senang mendengarnya dari Anda.

Semoga membantu.


Linux
  1. Bagaimana menghapus Mesin Virtual berbasis KVM di Redhat Linux

  2. Cara mengkloning Mesin Virtual berbasis KVM di Redhat Linux

  3. Cara Mengekspor dan Mengimpor pengaturan DNS di CloudFlare

  1. Cara Mengimpor dan Mengekspor Database MySQL di Linux

  2. Quickemu – Jalankan Mesin Virtual Windows, macOS, dan Linux

  3. Cara Menambahkan Memori, vCPU, Hard Disk ke Mesin Virtual KVM Linux

  1. Cara Membuat dan Mengelola Mesin Virtual KVM melalui Command Line

  2. Cara menginstal Virtual Machine Manager (KVM) di Manjaro dan Arch Linux

  3. Cara Mengelola Mesin Virtual KVM Dengan Virt-Manager