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.