Saat mengelola server virtual berbasis KVM, banyak administrator membutuhkan cara yang cepat dan efisien untuk mengatur VPS tanpa bergantung pada tampilan grafis. Virsh adalah salah satu tools penting yang sering digunakan karena mampu menjalankan berbagai perintah manajemen virtualisasi langsung melalui terminal.
Selain itu, Virsh merupakan utilitas command line yang menjadi bagian dari libvirt dan digunakan untuk mengelola virtual machine, jaringan virtual, storage, hingga status hypervisor pada sistem Linux.
Di artikel ini, kita akan membahas pengertian Virsh, fungsi utamanya, serta contoh cara menggunakannya agar lebih mudah dipahami, baik oleh pemula maupun administrator server.
Apa itu Virsh?
Virsh adalah utilitas berbasis command line yang digunakan untuk mengelola lingkungan virtualisasi melalui libvirt di sistem Linux. Tool ini memungkinkan administrator server menjalankan berbagai perintah untuk membuat, menyalakan, mematikan, memantau, hingga mengatur konfigurasi mesin virtual (virtual machine / VM) langsung dari terminal.
Selain itu, Virsh berfungsi sebagai interface teks untuk berkomunikasi dengan layanan libvirt. Karena itu, Virsh banyak digunakan pada server berbasis KVM (Kernel-based Virtual Machine), meskipun juga dapat mendukung teknologi virtualisasi lain yang kompatibel dengan libvirt.
Penjelasan sederhana tentang Virsh adalah sebagai berikut:
Virsh > Libvirt > KVM > VM
- Virsh = Tool CLI untuk akses libvirt
- Libvirt = Engine untuk mengelola KVM
- KVM = Teknologi Virtualisasi
- VM = Virtual Machine (VPS)
Bagi pengguna VPS KVM atau dedicated server, Virsh menjadi pilihan populer karena ringan, cepat, dan tidak membutuhkan interface grafis. Tool ini sangat cocok digunakan untuk pengelolaan server jarak jauh melalui SSH, terutama pada lingkungan produksi yang mengutamakan efisiensi resource.
Fungsi Utama Virsh
Sebagai tool manajemen virtualisasi berbasis command line, Virsh memiliki banyak fungsi penting untuk membantu administrator mengelola VM dengan lebih efisien. Hampir seluruh aktivitas dasar hingga lanjutan pada lingkungan KVM dapat dilakukan langsung melalui terminal.
Berikut beberapa fungsi utama Virsh:
- Mengelola Status Virtual Machine: Virsh dapat digunakan untuk menyalakan, mematikan, restart, suspend, maupun melanjutkan kembali VM yang sedang berjalan.
- Melihat Daftar dan Informasi VM: Anda bisa menampilkan daftar seluruh VM aktif maupun nonaktif, lengkap dengan status masing-masing.
- Membuat dan Menghapus Virtual Machine: Virsh mendukung proses pembuatan VM baru dari file konfigurasi XML, serta menghapus VM yang sudah tidak digunakan lagi.
- Mengelola Snapshot dan Backup: Virsh memungkinkan Anda membuat snapshot backup sebelum update sistem atau perubahan besar.
- Mengatur Resource Server: Administrator dapat mengubah alokasi CPU, RAM, storage, maupun network interface pada VM sesuai kebutuhan workload yang berjalan.
- Monitoring dan Troubleshooting: Virsh menyediakan informasi penggunaan resource, log status, serta koneksi hypervisor sehingga memudahkan proses analisis saat terjadi kendala.
- Otomasi Melalui Script: Karena berbasis command line, Virsh sangat cocok digunakan dalam script Bash, cron job, maupun sistem automasi untuk mengelola banyak VM sekaligus.

Dengan berbagai fungsi tersebut, Virsh menjadi tool penting bagi administrator yang ingin mengelola virtualisasi Linux secara cepat, ringan, dan fleksibel tanpa bergantung pada panel grafis.
Cara Install Virsh
Sebelum menggunakan Virsh, Anda perlu memasang paket libvirt-client atau paket sejenis yang menyediakan utilitas command line Virsh. Proses instalasinya cukup mudah dan dapat dilakukan sesuai distribusi Linux yang digunakan.
Install Virsh di Ubuntu / Debian
Jalankan perintah berikut:
sudo apt update
sudo apt install libvirt-clients -ySetelah proses selesai, cek apakah Virsh sudah terpasang:
virsh --versionJika berhasil, sistem akan menampilkan versi Virsh yang terinstal.
Install Virsh di CentOS / AlmaLinux / Rocky Linux
Gunakan perintah berikut:
sudo dnf install libvirt-client -yPada versi lama CentOS, Anda juga bisa menggunakan:
sudo yum install libvirt-client -yLalu cek versinya:
virsh --versionMenjalankan Service Libvirt
Agar Virsh dapat terhubung ke hypervisor lokal, pastikan layanan libvirt aktif:
sudo systemctl enable --now libvirtdPada beberapa distro terbaru, nama servicenya bisa berbeda, misalnya:
sudo systemctl enable --now virtqemudVerifikasi Koneksi Virsh
Setelah instalasi selesai, uji koneksi dengan perintah:
virsh list --allJika berhasil, sistem akan menampilkan daftar virtual machine yang tersedia, atau tabel kosong jika belum ada VM.
Cara Menggunakan Virsh
Sebelum menggunakan Virsh, pastikan server telah terinstall KVM dan Libvirt dengan status aktif.
Setelah itu, install Virsh menggunakan perintah :
sudo apt-get install virshHubungkan ke kvm. Ini bisa lokal, atau bahkan jauh (remote). Dalam kebanyakan kasus, jika ingin mengelola VM yang berjalan di KVM lokal maka perintahnya :
$ virsh connect qemu:///system
Connecting to uri: qemu:///systemSetelah terhubung ke kvm, tes perintah virsh seperti contoh dibawah ini :
$ virsh list
Id Name State
----------------------------------
1 foo runningPada contoh diatas, terdapat satu VM dengan nama foo dengan status running.
Contoh Perintah Virsh Untuk Mengelola KVM
Berikut beberapa perintah virsh yang berguna dan harus diketahui oleh setiap administrator sistem.
1. Manajemen VM
Melihat daftar VM yang aktif
virsh list
virsh list --all# virsh list
Id Name State
--------------------------
1 VM1 running
2 VM2 running
12 VM3 running
# virsh list --all
Id Name State
--------------------------
84 VM1 running
85 VM2 running
- VM3 shut off
- VM4 shut offTambahkan –all untuk melihat semua VM termasuk yang tidak aktif
Menjalankan / menghentikan VM
virsh start vm1
virsh shutdown vm1
virsh reboot vm1
virsh reset vm1
virsh destroy vm1# virsh shutdown VM1
Domain 'VM1' is being shutdown
# virsh list --all | grep VM1
- VM1 shut off
# virsh start VM1
Domain 'VM1' started
# virsh list --all | grep VM1
2216 VM1 running
# virsh reboot VM1
Domain 'VM1' is being rebootedPenjelasan sederhana untuk perintah-perintah diatas.
- shutdown = seperti klik Shutdown pada PC, menghentikan/stop vm dengan aman
- reboot = seperti klik Restart pada PC, menghentikan/stop vm dengan aman dan melakukan start
- reset = seperti tekan tombol Reset pada PC, bertujuan untuk melakukan stop vm dengan paksa dengan resiko kehilangan data/korup. Perintah ini disarankan hanya dilakukan ketika vm mengalami hang dan tidak bisa dilakukan shutdown/reboot
- destroy = cabut kabel listrik langsung. Perintah ini untuk memaksa mematikan/stop vm. mirip dengan perintah reset tetapi vm tidak dinyalakan lagi.
Suspend / Resume VM
virsh suspend vm1
virsh resume vm1# virsh suspend VM1
Domain 'VM1' suspended
# virsh list --all | grep VM1
2216 VM1 paused
# virsh resume VM1
Domain 'VM1' resumed
# virsh list --all | grep VM1
2216 VM1 runningAutostart VM
virsh autostart vm1
virsh autostart vm1 --disable# virsh autostart VM1
Domain 'VM1' marked as autostarted
# virsh autostart VM1 --disable
Domain 'MV1' unmarked as autostartedPerintah autostart digunakan untuk mengatur apakah sebuah VM akan otomatis menyala saat host (server) booting
2. Monitoring & Informasi VM
Info umum VM
virsh dominfo vm1# virsh dominfo VM1
Id: 2216
Name: VM1
UUID: b0170c7f-723d-443c-9695-xxxxxxxx
OS Type: hvm
State: running
CPU(s): 2
CPU time: 734.8s
Max memory: 4194304 KiB
Used memory: 4194304 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: none
Security DOI: 0Perintah dominfo digunakan untuk melihat informasi detail sebuah VM seperti status VM, CPU, RAM, dan konfigurasi lain seperti Autostart.
Statistik VM
virsh domstate vm1
# virsh domstate VM1
runningDigunakan untuk melihat status (state) VM secara singkat
virsh domstats vm1# virsh domstats VM1
Domain: 'VM1'
state.state=1
state.reason=5
cpu.time=930232274665
cpu.user=629660000000
cpu.system=300560000000
cpu.cache.monitor.count=0
cpu.haltpoll.success.time=976711656
cpu.haltpoll.fail.time=8409214271
balloon.current=4194304
balloon.maximum=4194304
balloon.swap_in=0
balloon.swap_out=0
balloon.major_fault=0
balloon.minor_fault=0
balloon.unused=3740976
balloon.available=3904340
balloon.usable=3627616
balloon.last-update=1776140516
balloon.disk_caches=134000
balloon.hugetlb_pgalloc=0
balloon.hugetlb_pgfail=0
balloon.rss=1283764
vcpu.current=2
vcpu.maximum=2
vcpu.0.state=1
vcpu.0.time=144470000000
vcpu.0.wait=0Digunakan untuk melihat statistik performa VM secara detail (lebih teknis dibanding dominfo)
virsh cpu-stats vm1# virsh cpu-stats VM1
CPU0:
cpu_time 32.964561065 seconds
vcpu_time 26.069632448 seconds
CPU1:
cpu_time 7.527186122 seconds
vcpu_time 6.974434889 seconds
CPU2:
cpu_time 34.620942406 seconds
vcpu_time 27.784880035 seconds
CPU3:
cpu_time 6.202301868 seconds
vcpu_time 5.585880040 seconds
CPU4:
cpu_time 24.501090288 seconds
vcpu_time 18.939569736 seconds
CPU5:
cpu_time 4.373740198 seconds
vcpu_time 3.793086923 seconds
CPU6:
cpu_time 34.335071667 seconds
vcpu_time 27.429221376 secondsDigunakan untuk melihat statistik penggunaan CPU dari sebuah VM secara lebih spesifik per vCPU.
virsh dommemstat vm1# virsh dommemstat VM1
actual 4194304
swap_in 0
swap_out 0
major_fault 0
minor_fault 0
unused 3740976
available 3904340
usable 3627616
last_update 1776140516
disk_caches 134000
hugetlb_pgalloc 0
hugetlb_pgfail 0
rss 1287876Digunakan untuk melihat statistik penggunaan memori (RAM) pada VM
Resource VM
virsh domblkinfo vm1 vda
# virsh domblkinfo v20587 vda
Capacity: 85899345920
Allocation: 10413273088
Physical: 10412490752Digunakan untuk melihat informasi disk (block device) yang terpasang pada VM.
3. Konfigurasi VM
Definisi VM
- virsh define vm.xml : Digunakan untuk mendaftarkan (define) VM ke dalam libvirt dari file konfigurasi XML
- virsh undefine vm1 : digunakan untuk menghapus definisi (konfigurasi) VM dari libvirt.
Edit konfigurasi VM
- virsh edit vm1 : Digunakan untuk mengedit konfigurasi VM (domain) dalam format XML secara langsung (dengan default menggunakan editor vi).
Dump XML config
- virsh dumpxml vm1 > vm1.xml : Digunakan untuk menyimpan konfigurasi VM ke file XML.
4. Misc / Utility
virsh help
Digunakan untuk menampilkan daftar semua perintah yang tersedia beserta deskripsinya.
virsh uri# virsh uri
qemu:///systemvirsh uri digunakan untuk menampilkan URI (Uniform Resource Identifier) dari koneksi libvirt yang sedang digunakan.
Dari contoh diatas menandakan :
- qemu > hypervisor yang digunakan (KVM/QEMU)
- system > koneksi ke level system (butuh root)
Penutup
Virsh adalah tool command line yang sangat membantu administrator server dalam mengelola mesin virtual berbasis libvirt secara lebih cepat dan efisien. Melalui satu interface CLI, Anda dapat menjalankan berbagai kebutuhan virtualisasi mulai dari monitoring, konfigurasi, kontrol VM, hingga automasi pengelolaan server.
Dengan memahami cara kerja dan penggunaan virsh, proses manajemen virtualisasi dapat menjadi lebih sederhana, fleksibel, dan mudah dikontrol, terutama pada lingkungan server Linux dan VPS yang membutuhkan efisiensi serta stabilitas tinggi.


