Shell virtual, atau virsh, adalah utilitas baris perintah yang fleksibel untuk mengelola mesin virtual (VM) yang dikendalikan oleh libvirt, yang merupakan toolkit dan API untuk mengelola platform virtualisasi. Ini adalah alat manajemen default untuk mesin virtual (KVM) berbasis kernel Linux, dan juga mendukung Xen, VMware, dan platform lainnya.
virsh
perintah memungkinkan Anda untuk mengelola VM secara interaktif atau dalam batch. Ini juga berguna untuk mengontrol VM dari shell Linux dan terintegrasi dengan skrip atau alat otomatisasi. Dengan menggunakan virsh
, Anda dapat dengan cepat terhubung ke server menggunakan secure shell (SSH) dan melakukan operasi pada VM Anda tanpa akses ke antarmuka grafis.
Saat Anda menjalankan virsh
tanpa opsi apa pun, ia mencoba menyambung ke hypervisor lokal. Untuk Linux, koneksi default menunjuk ke sistem QEMU lokal untuk mengelola mesin KVM lokal. Anda juga dapat terhubung ke hypervisor jarak jauh dengan menggunakan opsi -c
atau --connect
dan menentukan Uniform Resource Identifier (URI) dari hypervisor jarak jauh menggunakan sintaks libvirt. Untuk informasi lebih lanjut, lihat spesifikasi URI libvirt.
Secara default, virsh
menyediakan ratusan subperintah dan opsi yang memungkinkan Anda mengelola setiap aspek platform virtualisasi atau VM Anda. Dalam artikel ini, saya akan membagikan delapan virsh
sub-perintah yang paling sering saya gunakan. Karena sifat pekerjaan sehari-hari, sebagian besar subperintah ini berlaku langsung ke VM (atau domain dalam terminologi libvirt) tetapi virsh
juga memiliki perintah untuk mengelola platform itu sendiri, seperti menambahkan kumpulan penyimpanan, jaringan, dan lainnya.
daftar virsh
virsh list
adalah perintah dasar yang mencantumkan semua domain yang berjalan (VM). Anda juga dapat membuat daftar semua VM yang dikonfigurasi dengan menambahkan --all
pilihan. Ini berguna jika Anda ingin melihat semua VM yang dikonfigurasi di hypervisor target yang dapat Anda gunakan pada perintah berikutnya. Misalnya, untuk membuat daftar semua mesin virtual yang tersedia di hypervisor KVM Linux lokal:
# virsh list --all
Id Name State
------------------------------
3 rh8-vm01 running
- crc shut off
- rh8-tower01 shut off
Anda dapat menggunakan ID atau nama domain sebagai input untuk perintah selanjutnya.
virsh start / reboot / shutdown
Meskipun berbeda, saya telah mengelompokkan start
, reboot
, dan shutdown
subperintah karena melakukan operasi dasar yang sama dalam mengelola status daya VM.
Untuk mematikan VM rh8-vm01
(dari list
perintah di atas):
# virsh shutdown rh8-vm01
Domain 'rh8-vm01' is being shutdown
# virsh list
Id Name State
--------------------
Anda dapat memulainya kembali menggunakan start
sub-perintah:
# virsh start rh8-vm01
Domain 'rh8-vm01' started
# virsh list
Id Name State
--------------------------
4 rh8-vm01 running
Dengan menggunakan subperintah ini, Anda dapat dengan cepat memulai, mem-boot ulang, atau mematikan VM tanpa harus menjalankan aplikasi grafis yang berat.
[ Anda mungkin juga tertarik untuk mempelajari cara mengedit sshd_config menggunakan skrip Bash. ]
virsh dumpxml
dumpxml
subcommand membuang konfigurasi XML untuk domain tertentu. Anda dapat menggunakannya untuk mengekspor konfigurasi ke file untuk membuat perubahan pada VM yang ada atau menggunakannya sebagai template untuk membuat VM lain dengan konfigurasi serupa. Secara default, ia membuang konfigurasi ke STDOUT , jadi arahkan ke file menggunakan operator pengalihan shell >
untuk menyimpan ke file:
# virsh dumpxml rh8-vm01
<domain type='kvm' id='4'>
<name>rh8-vm01</name>
<uuid>53b92c48-fce3-4464-95bf-6f442e988c94</uuid>
<metadata>
<libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
<libosinfo:os id="http://redhat.com/rhel/8.4"/>
</libosinfo:libosinfo>
</metadata>
<memory unit='KiB'>4194304</memory>
<currentMemory unit='KiB'>4194304</currentMemory>
<vcpu placement='static'>2</vcpu>
... TRUNCATED OUTPUT ...
</domain>
Anda dapat menggunakan keluaran XML dalam skrip dan alat otomatisasi untuk mengotomatiskan pembuatan VM.
domifaddr virsh
domifaddr
subcommand mencantumkan semua alamat IP yang dikonfigurasi untuk semua antarmuka virtual dalam VM tertentu. Ini berguna jika VM menggunakan alamat IP dinamis, karena memungkinkan Anda melihat alamat IP yang ditetapkan dan terhubung ke VM:
# virsh domifaddr rh8-vm01
Name MAC address Protocol Address
-------------------------------------------------------------------------------
vnet6 52:54:00:c8:17:6e ipv4 192.168.122.19/24
vnet7 52:54:00:04:4d:ac ipv4 192.168.64.210/24
Secara default, ini mencantumkan alamat IP yang disewa oleh server DHCP. Jika hypervisor tidak memberikan informasi ini, Anda juga dapat menggunakan opsi --source agent
untuk menanyakan sistem operasi tamu (OS) secara langsung melalui agen virtualisasi. Ini memerlukan agen virtualisasi yang diinstal di OS tamu.
hasil edit baru
edit
subcommand membuka konfigurasi XML saat ini di $EDITOR
default Anda , memungkinkan Anda membuat modifikasi langsung di VM:
# virsh edit rh8-vm01
<domain type='kvm'>
<name>rh8-vm01</name>
<uuid>53b92c48-fce3-4464-95bf-6f442e988c94</uuid>
<metadata>
... TRUNCATED OUTPUT ...
</domain>
Setelah melakukan modifikasi, simpan file untuk menerapkannya. Beberapa modifikasi mungkin hanya berlaku setelah boot ulang.
edit jaringan baru
net-edit
subcommand memungkinkan Anda untuk membuat modifikasi langsung ke konfigurasi jaringan virtual. Sangat membantu untuk mengubah opsi ke jaringan virtual, seperti mengaitkan alamat MAC yang diberikan ke alamat IP menggunakan libvirt
standar konfigurasi DHCP. Ini adalah perintah yang lebih canggih yang saya gunakan secara teratur. Seperti edit
subcommand, ini membuka file konfigurasi di $EDITOR
default Anda untuk melakukan perubahan. Simpan file untuk menerapkan perubahan:
# virsh net-edit --network hostonly
<network>
<name>hostonly</name>
<uuid>eddd03ff-5825-42ef-bc99-968bddf773c2</uuid>
<bridge name='virbr1' stp='on' delay='0'/>
<mac address='52:54:00:67:75:b1'/>
<domain name='hostonly'/>
<ip address='192.168.64.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.64.128' end='192.168.64.254'/>
</dhcp>
</ip>
</network>
Anda juga dapat menggunakan subperintah terkait jaringan lainnya yang dimulai dengan net-
untuk mengelola berbagai aspek jaringan virtual hypervisor.
[ Unduh sekarang:Panduan sysadmin untuk skrip Bash. ]
Apa selanjutnya?
virsh adalah utilitas yang kuat dan fleksibel yang memungkinkan Anda untuk mengelola setiap aspek virtualisasi Linux dan platform lainnya. Untuk informasi lebih lanjut tentangnya, lihat halaman manual atau periksa dokumentasi online-nya.