GNU/Linux >> Belajar Linux >  >> Linux

Kelola Mesin Virtual KVM Dengan Program Virsh

Virsh , kependekan dari Vir sebenarnya Sh ell, adalah antarmuka pengguna baris perintah untuk mengelola mesin tamu virtual. Virsh memungkinkan Anda untuk membuat, membuat daftar, mengedit, memulai, memulai kembali, menghentikan, menangguhkan, melanjutkan, mematikan, dan menghapus VM. Saat ini mendukung KVM, LXC, Xen, QEMU, OpenVZ, VirtualBox dan VMware ESX. Dalam panduan ini, kita akan membahas cara mengelola KVM mesin virtual dengan antarmuka pengguna manajemen Virsh di Linux.

Pastikan Anda telah menginstal utilitas KVM dan Virsh di mesin Linux Anda. Panduan berikut menjelaskan cara menginstal KVM pada sistem berbasis DEB dan RPM.

  • Instal Dan Konfigurasi KVM Di Server Tanpa Kepala Ubuntu 20.04
  • Instal Dan Konfigurasi KVM Di Server CentOS 8
  • Instal Dan Konfigurasi KVM Di OpenSUSE Tumbleweed

1. Kelola Mesin Virtual KVM Dengan perintah Virsh

Jika Anda baru mengenal Virsh dan KVM, lebih baik mulai dengan membaca manual bantuan. Ini akan memberikan ide dasar tentang cara menggunakan Virsh.

1.1. Mendapatkan bantuan

Masukkan perintah berikut untuk melihat daftar perintah yang tersedia beserta deskripsi singkatnya:

$ virsh help

Anda akan melihat daftar lengkap perintah virsh yang tersedia untuk mengelola mesin virtual KVM dari baris perintah.

Anda tidak harus menghafal semuanya. Cukup baca deskripsi perintah yang ingin Anda jalankan dan gunakan.

Perintah dikelompokkan ke dalam bagian berikut:

  • Pengelolaan Domain,
  • Pemantauan Domain,
  • Host dan Hypervisor,
  • Pos pemeriksaan,
  • Antarmuka,
  • Filter Jaringan,
  • Jaringan,
  • Perangkat Node,
  • Rahasia,
  • Snapshot,
  • Cadangan,
  • Kolam Penyimpanan,
  • Volume Penyimpanan,
  • Virsh itu sendiri.

Setiap bagian berisi perintah yang terkait untuk melakukan serangkaian tugas tertentu. Anda dapat melihat bagian bantuan grup, misalnya Jaringan , seperti di bawah ini:

$ virsh help Networking

Anda akan melihat perintah yang terkait untuk melakukan tugas jaringan:

 Networking (help keyword 'network'):
    net-autostart                  autostart a network
    net-create                     create a network from an XML file
    net-define                     define an inactive persistent virtual network or modify an existing persistent one from an XML file
    net-destroy                    destroy (stop) a network
    net-dhcp-leases                print lease info for a given network
    net-dumpxml                    network information in XML
    net-edit                       edit XML configuration for a network
    net-event                      Network Events
    net-info                       network information
    net-list                       list networks
    net-name                       convert a network UUID to network name
    net-start                      start a (previously defined) inactive network
    net-undefine                   undefine a persistent network
    net-update                     update parts of an existing network's configuration
    net-uuid                       convert a network name to network UUID
    net-port-list                  list network ports
    net-port-create                create a network port from an XML file
    net-port-dumpxml               network port information in XML
    net-port-delete                delete the specified network port

Anda selanjutnya dapat menampilkan bagian bantuan dari perintah tertentu juga. Misalnya, saya akan menampilkan bagian bantuan "net-name" perintah:

$ virsh help net-name
  NAME
    net-name - convert a network UUID to network name

  SYNOPSIS
    net-name <network>

  OPTIONS
    [--network] <string>  network uuid

1.2. Daftar mesin virtual

Untuk melihat daftar mesin virtual tamu dalam mode run atau suspend, jalankan perintah berikut:

$ virsh list
Id Name State
--------------------

Seperti yang Anda lihat, tidak ada tamu dalam mode run atau suspend.

Anda dapat menggunakan --tidak aktif opsi untuk mencantumkan tamu yang tidak aktif.

Untuk melihat semua mesin tamu, jalankan:

$ virsh list --all
 Id   Name            State
--------------------------------
 -    centos8-uefi    shut off
 -    nginx_centos8   shut off

Seperti yang Anda lihat pada output di atas, saya memiliki dua mesin virtual yaitu "centos8-uefi" dan "nginx_centos8". Keduanya dimatikan.

1.3. Mulai mesin virtual

Untuk memulai mesin virtual, misalnya "centos8-uefi", jalankan:

$ virsh start centos8-uefi

Anda akan melihat output seperti di bawah ini:

Domain centos8-uefi started

Untuk memverifikasi apakah VM berjalan, gunakan "list" perintah:

$ virsh list
 Id   Name           State
------------------------------
 1    centos8-uefi   running

1.4. Hemat mesin virtual

Untuk menyimpan status VM yang sedang berjalan saat ini, jalankan:

$ virsh save centos8-uefi centos8-save

Domain centos8-uefi saved to centos8-save

Perintah ini menghentikan tamu bernama "centos8-uefi" dan menyimpan data ke file bernama "centos8-save". Ini akan memakan waktu beberapa saat tergantung pada jumlah memori yang digunakan oleh mesin tamu Anda.

1.5. Pulihkan mesin Virtual

Untuk mengembalikan status VM yang disimpan sebelumnya, cukup tentukan nama file seperti di bawah ini:

$ virsh restore centos8-save 
Domain restored from centos8-save

Verifikasi apakah VM dipulihkan menggunakan perintah "daftar":

$ virsh list
 Id   Name           State
------------------------------
 4    centos8-uefi   running

1.6. Mulai ulang mesin Virtual

Untuk memulai ulang VM yang sedang berjalan, jalankan:

$ virsh reboot centos8-uefi
Domain centos8-uefi is being rebooted

1.7. Tangguhkan/Jeda Mesin virtual

Untuk menangguhkan VM yang sedang berjalan, lakukan:

$ virsh suspend centos8-uefi 
Domain centos8-uefi suspended

Verifikasi dengan perintah "daftar":

$ virsh list
 Id   Name           State
-----------------------------
 1    centos8-uefi   paused

1.8. Lanjutkan Mesin virtual

Untuk melanjutkan VM yang dijeda, jalankan:

$ virsh resume centos8-uefi 
Domain centos8-uefi resumed

1.9. Hentikan mesin Virtual yang aktif

Untuk menghentikan paksa VM yang aktif, dan membiarkannya dalam status tidak aktif, jalankan:

$ virsh destroy centos8-uefi
Domain centos8-uefi destroyed

Anda juga dapat menghentikan VM dengan anggun alih-alih memaksanya seperti di bawah ini:

$ virsh destroy centos8-uefi --graceful
Domain centos8-uefi destroyed

1,10. Matikan mesin virtual

Untuk mematikan VM yang sedang berjalan, lakukan:

$ virsh shutdown centos8-uefi
Domain centos8-uefi is being shutdown

1.11. Ambil XML dump mesin virtual

Untuk menampilkan file konfigurasi XML VM dalam output standar, jalankan:

$ virsh dumpxml centos8-uefi

Perintah ini akan menampilkan detail konfigurasi lengkap (software dan hardware) dari mesin virtual:

Anda juga dapat mengekspor dump XML ke file alih-alih hanya menampilkannya dalam output standar seperti di bawah ini:

$ virsh dumpxml centos8-uefi > centos8.xml

Perintah ini akan membuang file XML "centos8-uefi" ke dalam file bernama "centos8.xml" dan menyimpannya di direktori kerja saat ini.

1.12. Buat mesin virtual dengan XML dump

Anda dapat membuat mesin tamu virtual baru menggunakan XML yang ada dari tamu yang dibuat sebelumnya. Pertama, buat XML dump seperti gambar di atas lalu buat VM baru menggunakan file XML seperti di bawah ini:

$ virsh create centos8.xml 
Domain centos8-uefi created from centos8.xml

Perintah ini akan membuat VM baru dan segera memulainya. Anda dapat memverifikasinya menggunakan perintah:

1.13. Edit file konfigurasi XML mesin virtual

Jika Anda ingin membuat perubahan apa pun di mesin tamu, Anda cukup mengedit file konfigurasinya dan melakukan perubahan sesuai keinginan. Para tamu dapat diedit baik saat mereka berlari atau saat mereka offline.

$ virsh edit centos8-uefi

Perintah ini akan membuka file di editor default yang Anda atur dengan variabel $EDITOR.

1.14. Aktifkan akses konsol untuk mesin Virtual

Setelah membuat mesin tamu KVM, Anda dapat mengaksesnya melalui SSH, klien VNC, Virt-viewer, Virt-manager dan konsol web Cockpit dll. Namun, Anda tidak dapat mengaksesnya menggunakan perintah "virsh console". Perintah konsol digunakan untuk menghubungkan konsol serial virtual untuk tamu. Untuk mengakses tamu KVM menggunakan perintah "virsh console", Anda harus mengaktifkan akses konsol serial di mesin tamu. Lihat panduan berikut untuk mengaktifkan akses konsol virsh:

  • Cara Mengaktifkan Akses Konsol Virsh Untuk Tamu KVM

1,15. Ganti nama mesin Virtual

Jika Anda ingin mengganti nama mesin virtual, lihat panduan berikut.

  • Cara Mengganti Nama Mesin Virtual Tamu KVM

1,16. Tampilkan ID Domain mesin virtual

Untuk menemukan id domain dari mesin virtual tamu yang sedang berjalan, jalankan:

$ virsh domid centos8-uefi
2

Harap dicatat bahwa tamu harus menjalankan untuk mendapatkan id domainnya.

1.17. Tampilkan Nama domain mesin virtual

Untuk mendapatkan nama domain VM yang sedang berjalan, jalankan:

$ virsh domname <domain-id or domain-uuid>

Contoh:

$ virsh domname 2
centos8-uefi

Di sini, 2 adalah id domain.

1,18. Tampilkan UUID mesin Virtual

Untuk menemukan UUID mesin tamu, jalankan:

$ virsh domuuid <domain-name or domain-id>

Contoh:

$ virsh domuuid centos8-uefi

Atau,

$  virsh domuuid 2

Contoh keluaran:

de4100c4-632e-4c09-8dcf-bbde29170268

1.19. Menampilkan detail mesin virtual

Untuk menampilkan informasi mesin tamu, gunakan nama domain, id domain atau uuid domain seperti di bawah ini:

$ virsh dominfo centos8-uefi

Atau,

$ virsh dominfo 2

Atau,

$ virsh dominfo de4100c4-632e-4c09-8dcf-bbde29170268

Contoh keluaran:

Id:             -
Name:           centos8-uefi
UUID:           de4100c4-632e-4c09-8dcf-bbde29170268
OS Type:        hvm
State:          shut off
CPU(s):         2
Max memory:     2097152 KiB
Used memory:    2097152 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: apparmor
Security DOI:   0

1,20. Tampilkan informasi host KVM

Untuk mendapatkan informasi sistem host Anda, jalankan:

$ virsh nodeinfo

Contoh keluaran:

CPU model:           x86_64
CPU(s):              4
CPU frequency:       1167 MHz
CPU socket(s):       1
Core(s) per socket:  2
Thread(s) per core:  2
NUMA cell(s):        1
Memory size:         8058840 KiB

1.21. Menampilkan informasi CPU Virtual

Untuk menampilkan informasi CPU virtual, jalankan:

$ virsh vcpuinfo <domain-id or domain-name or domain-uuid>

Contoh:

$ virsh vcpuinfo centos8-uefi
VCPU: 0
CPU: 3
State: running
CPU time: 5.6s
CPU Affinity: yyyy

VCPU: 1
CPU: 1
State: running
CPU time: 0.0s
CPU Affinity: yyyy

1.22. Temukan alamat IP mesin virtual

Menemukan alamat IP mesin virtual bukanlah masalah besar. Jika Anda memiliki akses konsol ke mesin virtual, Anda dapat dengan mudah menemukan alamat IP-nya menggunakan perintah "ip". Namun, Anda juga dapat mengidentifikasi alamat IP VM KVM tanpa harus mengakses konsolnya. Panduan berikut menjelaskan cara menemukan alamat IP mesin virtual KVM.

  • Cara Menemukan Alamat IP Mesin Virtual KVM

1,23. Hapus mesin Virtual

Jika Anda tidak menginginkan VM lagi, cukup hapus seperti di bawah ini:

$ virsh destroy centos8-uefi
$ virsh undefine centos8-uefi

Perintah pertama akan secara paksa menghentikan VM jika sudah berjalan. Dan perintah kedua akan menghapus definisi dan menghapusnya sepenuhnya.

Anda selanjutnya dapat menggunakan opsi berikut untuk menghapus volume penyimpanan dan snapshot juga.

--managed-save remove domain managed state file
--storage remove associated storage volumes (comma separated list of targets or source paths) (see domblklist)
--remove-all-storage remove all associated storage volumes (use with caution)
--delete-storage-volume-snapshots delete snapshots associated with volume(s)
--wipe-storage wipe data on the removed volumes
--snapshots-metadata remove all domain snapshot metadata (vm must be inactive)

2. Kelola jaringan Virtual

Semoga Anda belajar cara mengelola mesin virtual KVM dengan perintah Virsh di Linux. Bagian ini mencantumkan perintah penting untuk mengelola jaringan virtual KVM di Linux menggunakan utilitas baris perintah virsh.

2.1. Mencantumkan jaringan virtual

Untuk melihat daftar jaringan virtual yang tersedia, jalankan:

$ virsh net-list 
 Name      State    Autostart   Persistent
--------------------------------------------
 default   active   yes         yes

Seperti yang Anda lihat, saya hanya memiliki satu jaringan virtual yang merupakan jaringan default.

2.2. Tampilkan detail jaringan virtual

Untuk melihat detail jaringan virtual, jalankan:

$ virsh net-dumpxml default

Ganti "default" dengan nama jaringan Anda pada perintah di atas.

Contoh keluaran:

<network connections='1'>
  <name>default</name>
  <uuid>ce25d978-e455-47a6-b545-51d01bcb9e6f</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:ee:35:49'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>

2.3. Mulai jaringan virtual

Untuk memulai jaringan yang tidak aktif, jalankan:

$ virsh net-start <Name-Of-Inactive-Network>

Untuk memulai jaringan secara otomatis:

$ virsh net-autostart <network-name>

2.4. Buat jaringan virtual XML dump

Untuk membuat file konfigurasi XML dari jaringan virtual yang ada, jalankan:

$ virsh net-dumpxml default > default.xml

Perintah di atas akan membuat konfigurasi XML dari jaringan "default" dan menyimpannya dalam file bernama "default.xml" di direktori saat ini.

Anda dapat melihat file XML menggunakan perintah cat:

$ cat default.xml 
<network connections='1'>
  <name>default</name>
  <uuid>ce25d978-e455-47a6-b545-51d01bcb9e6f</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:ee:35:49'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>

2.5. Buat jaringan virtual baru dari file XML

Untuk membuat jaringan virtual baru menggunakan file XML yang ada dan segera memulainya, jalankan:

$ virsh net-create <Name-of-XMLfile>

Jika Anda ingin membuat jaringan dari file XML tetapi tidak ingin memulainya secara otomatis, jalankan:

$ virsh net-define <Name-of-XMLfile>

2.6. Nonaktifkan jaringan virtual

Untuk menonaktifkan jaringan yang aktif, jalankan:

$ virsh net-destroy <network-name>

2.7. Hapus jaringan virtual

Untuk menghapus jaringan virtual, nonaktifkan terlebih dahulu seperti gambar di atas lalu jalankan:

$ virsh net-undefine <Name-Of-Inactive-Network>

Virsh memiliki banyak perintah dan opsi. Belajar menggunakan alat baris perintah Virsh secara menyeluruh sudah cukup untuk menyiapkan lingkungan Virtual lengkap di Linux. Anda tidak memerlukan aplikasi GUI apa pun.

Untuk detail lebih lanjut, lihat halaman manual virsh.

$ man virsh

3. Kelola tamu KVM secara grafis

Mengingat semua perintah virsh hampir tidak mungkin dan juga tidak perlu. Jika Anda merasa sulit untuk melakukan semua tugas manajemen KVM dari baris perintah, Anda dapat mencoba alat manajemen KVM grafis seperti Virt-manager dan Cockpit.

  • Mengelola Mesin Virtual KVM Menggunakan Cockpit Web Console
  • Cara Mengelola Mesin Virtual KVM Dengan Virt-Manager

Kesimpulan

Jika Anda tahu cara mengelola mesin virtual KVM dengan antarmuka pengguna manajemen Virsh di Linux, Anda sudah setengah jalan untuk mengelola lingkungan virtualisasi tingkat perusahaan. Menyiapkan KVM dan mengelola mesin virtual KVM menggunakan perintah virsh sangat penting untuk semua administrator Linux.

Gambar unggulan oleh Elias Sch. dari Pixabay.


Linux
  1. Kelola KVM (QEMU) dengan Kimchi (antarmuka web)

  2. Mesin Virtual Mingguan, dengan Skrip Build

  3. Cara Mengganti Nama KVM VM dengan virsh

  1. Cara Membuat Snapshot Mesin Virtual KVM dengan Perintah Virsh

  2. Cara Mengelola Mesin Virtual KVM dengan Cockpit Web Console

  3. Bagaimana mengelola jaringan perusahaan mesin Linux?

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

  2. Kelola keamanan jaringan dengan Firewalld menggunakan baris perintah

  3. Cara Mengelola Mesin Virtual KVM Dengan Virt-Manager