VMs CLI
Pendahuluan
VMs CLI adalah alat manajemen baris perintah untuk aplikasi virtualisasi VMs TerraMaster, menyediakan kemampuan kueri dan operasional yang konsisten dengan antarmuka manajemen web. CLI berkomunikasi dengan layanan VMs melalui unix socket lokal, menggunakan antarmuka perintah yang terstandardisasi dan format keluaran JSON, dan dapat diintegrasikan ke dalam skrip, operasi otomatis, serta alur kerja pengembangan sekunder.
Fitur Utama
- Siap pakai: diinstal bersama aplikasi VMs, tanpa perlu instalasi tambahan
- Cara pemanggilan fleksibel: mendukung berbagai jalur pemanggilan seperti terminal lokal, SSH jarak jauh, skrip, dan alat AI
- Mode interaktif dan non-interaktif: cocok untuk pemeliharaan harian administrator maupun skrip dan tugas otomatis
- Dukungan keluaran JSON: memudahkan penguraian oleh program dan integrasi otomatis
- Komunikasi lokal: hanya berkomunikasi dengan layanan VMs melalui unix socket lokal, tidak membuka port ke luar
- Konfirmasi kedua untuk operasi berbahaya: operasi seperti menghapus mesin virtual dan menghapus jaringan secara bawaan memerlukan konfirmasi
Mulai Cepat
# 在终端中执行(可通过本地终端、SSH、脚本、AI 工具等任意命令行途径)
vms --help
# 查看虚拟机列表
vms vm list
# 查看虚拟机详情
vms vm get <id>
# 以 JSON 格式输出(便于脚本解析)
vms vm list --json
Contoh keluaran vms vm list:
NAME GUEST ID STATUS VCPU NUM VRAM SIZE IP
145 09fd98ee-4e2d-4c7a-a95c-8bacab80d322 shutdown 4 2097152 -
win10 9c7078ab-a1e7-4bc0-819f-6ac83e24cfc1 shutdown 4 2097152 -
1454486 5a0391f2-c545-45eb-8eed-0a104972229b shutdown 4 2097152 -
win101 32ee5a74-de8b-47a9-959d-1725c881ceab shutdown 4 2097152 -
Opsi Global
Opsi berikut berlaku untuk semua perintah:
| Opsi | Singkatan | Keterangan |
|---|---|---|
--help | -h | Menampilkan informasi bantuan perintah |
--version | -v | Menampilkan nomor versi (dapat digabungkan dengan --json untuk mengeluarkan informasi terstruktur) |
--json | - | Mengeluarkan dalam format JSON |
--yes | -y | Melewati perintah konfirmasi untuk operasi berbahaya (wajib digunakan dalam mode non-interaktif) |
--debug | - | Mengaktifkan keluaran debug, menampilkan proses eksekusi secara rinci |
--socket <path> | - | Jalur unix socket VMs, bawaan /var/api/VMs.sock |
--timeout <duration> | - | Waktu tunggu permintaan, bawaan 30s |
Contoh Informasi Versi
vms --version
vms CLI v1.0.058
vms --version --json
{
"build": "20260911",
"cli_version": "v1.0.058"
}
Lingkungan Runtime
VMs CLI diinstal bersama aplikasi VMs. Saat aplikasi diaktifkan, CLI akan ditautkan ke direktori PATH bawaan sistem, sehingga dapat langsung digunakan setelah masuk melalui SSH.
| Item | Keterangan |
|---|---|
| Berkas CLI | /Volume1/@apps/VMs/bin/vms |
| Jalur perintah | /usr/local/sbin/vms(sudah ada di PATH sistem) |
| Metode komunikasi | unix socket lokal, bawaan /var/api/VMs.sock |
| Sasaran penggunaan | Administrator yang masuk ke mesin lokal |
Catatan:
- CLI digunakan untuk mengelola mesin virtual pada mesin lokal, tidak mendukung pengelolaan jarak jauh perangkat lain melalui CLI.
- Backend selalu mengembalikan HTTP 200; keberhasilan perintah ditentukan oleh bidang
codedalam isi respons, dan CLI akan mengonversinya menjadi kode keluar berdasarkan hal tersebut. - Operasi berbahaya (menghapus mesin virtual, menghapus jaringan, menghapus image, menghapus ruang penyimpanan) akan meminta konfirmasi dalam mode interaktif, dan dalam mode non-interaktif harus secara eksplisit meneruskan
--yes.
Tabel Ringkasan Perintah
Berikut adalah ringkasan referensi cepat untuk semua perintah vms:
| Perintah induk | Subperintah | Keterangan fungsi | Perlu konfirmasi | Risiko tinggi |
|---|---|---|---|---|
| vms | --version | Menampilkan informasi versi | Tidak | Tidak |
| vms vm | list | Menampilkan semua mesin virtual | Tidak | Tidak |
| vms vm | get | Melihat detail mesin virtual yang ditentukan | Tidak | Tidak |
| vms vm | list-resource | Menampilkan sumber daya yang tersedia untuk membuat mesin virtual | Tidak | Tidak |
| vms vm | logs | Melihat log operasi mesin virtual | Tidak | Tidak |
| vms vm | poweron | Menyalakan mesin virtual | Tidak | Tidak |
| vms vm | poweroff | Mematikan mesin virtual (pematian normal) | Ya | Tidak |
| vms vm | force-poweroff | Memaksa mematikan mesin virtual | Ya | ✅ |
| vms vm | reboot | Memulai ulang mesin virtual | Tidak | Tidak |
| vms vm | pause | Menjeda mesin virtual | Tidak | Tidak |
| vms vm | resume | Memulihkan mesin virtual yang dijeda | Tidak | Tidak |
| vms vm | autorun | Mengatur mulai otomatis saat boot | Tidak | Tidak |
| vms vm | clone | Mengkloning mesin virtual | Tidak | Tidak |
| vms vm | export | Mengekspor mesin virtual sebagai berkas OVA | Tidak | Tidak |
| vms vm | delete | Menghapus mesin virtual | Ya | ✅ |
| vms vm disk | list | Melihat disk virtual mesin virtual | Tidak | Tidak |
| vms vm snapshot | list | Menampilkan snapshot mesin virtual | Tidak | Tidak |
| vms vm snapshot | create | Membuat snapshot | Tidak | Tidak |
| vms vm snapshot | edit | Mengedit deskripsi dan status kunci snapshot | Tidak | Tidak |
| vms vm snapshot | config | Melihat konfigurasi mesin virtual yang tersimpan dalam snapshot | Tidak | Tidak |
| vms vm snapshot | consistency | Pratinjau konsistensi snapshot | Tidak | Tidak |
| vms vm | link | Mendapatkan informasi koneksi konsol VNC | Tidak | Tidak |
| vms network | list | Menampilkan jaringan virtual | Tidak | Tidak |
| vms network | get | Melihat detail jaringan virtual | Tidak | Tidak |
| vms network | create | Membuat jaringan virtual | Tidak | Tidak |
| vms network | update | Memperbarui jaringan virtual | Tidak | Tidak |
| vms network | delete | Menghapus jaringan virtual | Ya | ✅ |
| vms network | list-interfaces | Menampilkan antarmuka jaringan dari jenis yang ditentukan | Tidak | Tidak |
| vms network | list-vnics | Menampilkan kartu jaringan virtual pada jaringan | Tidak | Tidak |
| vms network | ovsinfo | Melihat apakah OVS diaktifkan | Tidak | Tidak |
| vms image | list | Menampilkan image | Tidak | Tidak |
| vms image | edit | Mengedit informasi image | Tidak | Tidak |
| vms image | delete | Menghapus image | Ya | ✅ |
| vms image | list-vms | Melihat mesin virtual yang menggunakan image tersebut | Tidak | Tidak |
| vms repo | list | Menampilkan ruang penyimpanan | Tidak | Tidak |
| vms repo | get | Melihat detail ruang penyimpanan | Tidak | Tidak |
| vms repo | update | Memperbarui konfigurasi ruang penyimpanan | Tidak | Tidak |
| vms repo | delete | Menghapus ruang penyimpanan | Ya | ✅ |
| vms repo | list-volumes | Menampilkan volume yang tersedia | Tidak | Tidak |
| vms repo | list-vms | Menampilkan mesin virtual dalam ruang penyimpanan | Tidak | Tidak |
| vms repo | check-running | Memeriksa mesin virtual yang sedang berjalan pada ruang penyimpanan | Tidak | Tidak |
| vms repo | whether-exist-data | Memeriksa apakah ada data dalam ruang penyimpanan | Tidak | Tidak |
| vms setting | get | Melihat pengaturan global | Tidak | Tidak |
| vms collectd | hostinfo | Melihat informasi pemantauan host | Tidak | Tidak |
| vms collectd | vminfo | Melihat informasi pemantauan mesin virtual | Tidak | Tidak |
| vms collectd | storageinfo | Melihat informasi pemantauan penyimpanan | Tidak | Tidak |
Referensi Perintah
Dalam perintah, <id> adalah ID mesin virtual, yang sesuai dengan GUEST ID pada keluaran daftar mesin virtual; <network_id>, <image_id>, <repo_id> serupa, masing-masing dapat diperoleh melalui vms network list, vms image list, vms repo list.
Tentang contoh keluaran: Keluaran tabel dari
vmsakan memotong nilai bidang yang terlalu panjang pada lebar tetap (diakhiri dengan elipsis, dan tidak terkait dengan lebar terminal), misalnyaVDISKS,VNICS,ISO IMAGESdalam konfigurasi mesin virtual, serta nama image. Oleh karena itu, dalam dokumen ini perintah yang melibatkan bidang panjang secara seragam memberikan contoh keluaran--jsonyang lengkap, sedangkan perintah lainnya memberikan contoh keluaran tabel. Saat memproses dengan skrip, disarankan juga menggunakan--jsonsecara seragam.
I. Kueri Mesin Virtual
vms vm list – Menampilkan mesin virtual
Menampilkan semua mesin virtual di mesin lokal beserta status dasarnya.
vms vm list [--limit N] [--offset N] [--json]
--limitdan--offsetadalah parameter penomoran halaman- Kolom keluaran: nama, ID mesin virtual, status berjalan, jumlah inti CPU, ukuran memori (satuan KB), alamat IP
Contoh keluaran:
NAME GUEST ID STATUS VCPU NUM VRAM SIZE IP
145 09fd98ee-4e2d-4c7a-a95c-8bacab80d322 shutdown 4 2097152 -
win10 9c7078ab-a1e7-4bc0-819f-6ac83e24cfc1 shutdown 4 2097152 -
1454486 5a0391f2-c545-45eb-8eed-0a104972229b shutdown 4 2097152 -
win101 32ee5a74-de8b-47a9-959d-1725c881ceab shutdown 4 2097152 -
Nilai STATUS yang umum:
| Status | Keterangan |
|---|---|
| running | Sedang berjalan |
| shutdown | Sudah dimatikan |
| saved | Dijeda (status berjalan telah disimpan ke disk) |
vms vm get – Melihat detail mesin virtual
Melihat konfigurasi lengkap dan status berjalan mesin virtual yang ditentukan.
vms vm get <id> --json
- Keluaran mencakup semua bidang konfigurasi dan status berjalan mesin virtual
- Nilai kosong seperti tanpa deskripsi, tanpa IP ditampilkan sebagai string kosong
- Saat mesin virtual tidak ada, perintah mengembalikan kesalahan dan mengeluarkan informasi kesalahan
Contoh keluaran:
{
"iso_images": [
"c93083a5-2b39-4f32-b19f-1ad97c6b4de4",
"9b3f2fdd-9173-4611-a84c-0cc9ce88293c"
],
"image_paths": [
"",
""
],
"autorun": 0,
"boot_from": "cdrom",
"bios": "bios",
"kb_layout": "en-us",
"serial_console": true,
"usb_version": 2,
"usb_device_name": [
"USB - Integrated Technology Express, Inc. Disk 2.0"
],
"usbs": [
":3:3:048d:1234"
],
"use_ovmf": false,
"vnics": [
{
"prefer_sriov": false,
"vnic_type": 3,
"mac": "1a:e2:ae:95:4a:51",
"network_id": "b364a1ec-f60c-4971-9ea2-f7a002f09fa3",
"virtual_interface_id": "fe972ef5-b066-4967-89fa-8e85e43c8808"
}
],
"operating_system_type": 0,
"vdisks": [
{
"vdisk_mode": 1,
"name": "",
"unmap": false,
"iops_enable": false,
"dev_limit": 0,
"dev_reservation": 0,
"dev_weight": 3,
"vdisk_size": 1024,
"idx": 0,
"vdisk_id": "f4ed4eae-1512-4273-963b-79ebd93a0932",
"disk_image_type": "",
"disk_image_id": ""
}
],
"name": "win10",
"vcpu_num": 4,
"vcpu_usage": 0,
"vram_size": 2097152,
"video_card": "vga",
"machine_type": "1",
"cpu_weight": 3,
"ip": "",
"desc": "",
"cpu_passthru": false,
"hyperv_enlighten": true,
"cpu_pin_num": 0,
"repo_id": "735ef7f7-5d8d-4102-9377-8a7b8c33cda6",
"repo_name": "VM-Storage01",
"poweron_after_create": false,
"guest_id": "9c7078ab-a1e7-4bc0-819f-6ac83e24cfc1",
"increaseAllocatedSize": 0,
"host_id": "15341593-7f43-49f4-9523-6ac750a63a8a",
"host_name": "",
"snap_num": 0,
"has_guest_agent": false,
"status": "shutdown",
"status_code": 0,
"status_desc": "",
"host_ram_size": 0,
"total_throughput": 0,
"total_iops": 0,
"total_io_latency": 0,
"total_rx_bytes": 0,
"total_tx_bytes": 0,
"memory_usage": 0,
"cpu_usage": 0,
"vm_status_progress": 0
}
vms vm list-resource – Menampilkan sumber daya yang tersedia untuk membuat mesin virtual
Melihat sumber daya yang dapat disediakan host seperti jenis firmware, image, CPU, memori, jaringan, ruang penyimpanan, perangkat yang dapat di-passthrough, untuk evaluasi sebelum membuat mesin virtual.
vms vm list-resource --json
Bidang yang dikembalikan: max_cpu_num, max_ram_size, usbs, pci_devices, networks, repos, images, video_cards, firmware, keyboard_layout.
Contoh keluaran:
{
"max_cpu_num": 4,
"max_ram_size": 16503336960,
"usbs": [
{
"product_name": "4-Port USB 2.0 Hub",
"usb_id": ":3:3:0x0bda:0x5423",
"version": ""
},
{
"product_name": "4-Port USB 3.2 Hub",
"usb_id": ":4:2:0x0bda:0x0423",
"version": ""
},
{
"product_name": "Flash Drive",
"usb_id": ":3:2:0x058f:0x6387",
"version": ""
}
],
"pci_devices": [
{
"device_name": "",
"bdf": "0000:02:00.0",
"vendor_id": "0x10ec",
"product_id": "0x8126",
"class_id": "0x020000",
"iommu_group": 13,
"iommu_group_bdfs": [
"0x0000:0x02:0x00.0x0"
],
"driver": "r8169",
"type": "Network Controller"
},
{
"device_name": "",
"bdf": "0000:00:0d.0",
"vendor_id": "0x8086",
"product_id": "0x464e",
"class_id": "0x0c0330",
"iommu_group": 2,
"iommu_group_bdfs": [
"0x0000:0x00:0x0d.0x0"
],
"driver": "xhci_hcd",
"type": "USB Controller"
},
{
"device_name": "",
"bdf": "0000:03:00.0",
"vendor_id": "0x10ec",
"product_id": "0x8126",
"class_id": "0x020000",
"iommu_group": 14,
"iommu_group_bdfs": [
"0x0000:0x03:0x00.0x0"
],
"driver": "r8169",
"type": "Network Controller"
},
{
"device_name": "",
"bdf": "0000:00:14.0",
"vendor_id": "0x8086",
"product_id": "0x54ed",
"class_id": "0x0c0330",
"iommu_group": 3,
"iommu_group_bdfs": [
"0x0000:0x00:0x14.0x2",
"0x0000:0x00:0x14.0x0"
],
"driver": "xhci_hcd",
"type": "USB Controller"
},
{
"device_name": "",
"bdf": "0000:00:14.2",
"vendor_id": "0x8086",
"product_id": "0x54ef",
"class_id": "0x050000",
"iommu_group": 3,
"iommu_group_bdfs": [
"0x0000:0x00:0x14.0x2",
"0x0000:0x00:0x14.0x0"
],
"driver": "",
"type": "IOMMU Group Device"
}
],
"networks": [
{
"name": "VM-Network04",
"network_id": "ce9807c9-47b3-4258-9a80-ea8db1fd785d",
"support_sriov": false
},
{
"name": "VM-Network05",
"network_id": "b56c2f7b-e3f0-4b68-8a3b-245c90a8f8b5",
"support_sriov": false
},
{
"name": "VM-Network01",
"network_id": "b364a1ec-f60c-4971-9ea2-f7a002f09fa3",
"support_sriov": false
},
{
"name": "VM-Network02",
"network_id": "6c9fffd8-c7c4-4968-9b50-6890a640ec94",
"support_sriov": false
},
{
"name": "VM-Network03",
"network_id": "4c05b2a2-dd49-4588-ac5c-64975c92d2d3",
"support_sriov": false
}
],
"repos": [
{
"name": "VM-Storage01",
"free_size": 941970767872,
"repo_id": "735ef7f7-5d8d-4102-9377-8a7b8c33cda6",
"volume_size": 1099511627776,
"file_system": "btrfs",
"status": ""
},
{
"name": "VM-Storage02",
"free_size": 445785296896,
"repo_id": "517571ba-f7f7-49e1-9a62-7eb6ddfd9c78",
"volume_size": 536870912000,
"file_system": "btrfs",
"status": ""
}
],
"images": [
{
"id": "c93083a5-2b39-4f32-b19f-1ad97c6b4de4",
"name": "cn_windows_10_consumer_editions_version_1909_updated_jan_2020_x86_dvd_9c50652f",
"status": "available",
"type": "iso",
"used_size": 3884539904
},
{
"id": "9b3f2fdd-9173-4611-a84c-0cc9ce88293c",
"name": "virtio-win-0.1.285pro",
"status": "available",
"type": "iso",
"used_size": 789645312
},
{
"id": "efd6da18-9475-44cf-8fb0-e2513421e68a",
"name": "haos_ova-18.2",
"status": "available",
"type": "qcow2",
"used_size": 1091698688,
"virtual_size": 34359738368
},
{
"id": "cb9d929a-d673-4e46-ac86-9488bbef19b9",
"name": "cn_windows_11_consumer_editions_version_21h2_updated_july_2022_x64_dvd_50ad4acf",
"status": "available",
"type": "iso",
"used_size": 5858816000
}
],
"video_cards": [
"cirrus",
"vga",
"vmvga"
],
"firmware": [
"Legacy BIOS",
"UEFI"
],
"keyboard_layout": [
"fr-be",
"ar",
"bepo",
"cz",
"da",
"de",
"de-ch",
"en-gb",
"en-us",
"es",
"et",
"fo",
"fr",
"fr-be",
"fr-ca",
"fr-ch",
"hr",
"hu",
"is",
"it",
"ja",
"lt",
"lv",
"mk",
"nl",
"nl-be",
"no",
"pl",
"pt",
"pt-br",
"ru",
"sl",
"sv",
"th",
"tr"
]
}
vms vm logs – Melihat log operasi mesin virtual
Melihat log operasi yang terkait dengan mesin virtual yang ditentukan (menyalakan/mematikan, snapshot, pengeditan, impor/ekspor, dll.).
vms vm logs <id> --json [--limit N] [--desc]
--limitmenentukan jumlah entri yang dikembalikan, bawaan 50--descmengurutkan menurut waktu menurun (aktif secara bawaan)- Setiap entri log mencakup waktu, tingkat, kategori, pengguna operasi, dan deskripsi peristiwa; deskripsi peristiwa adalah teks lengkap
- Deskripsi peristiwa (
event) dilokalkan oleh layanan VMs sesuai bahasa sistem perangkat; contoh dalam dokumen ini seragam menggunakan bahasa Inggris
Contoh keluaran:
[
{
"id": 0,
"level": "Info",
"time": "2026-09-02T11:44:09.176535374+08:00",
"category": "vm",
"user": "system",
"event": "Virtual machine(win10) shutdown successfully"
},
{
"id": 0,
"level": "Info",
"time": "2026-09-02T11:43:10.597187659+08:00",
"category": "vm",
"user": "system",
"event": "Virtual machine(win10) started successfully"
},
{
"id": 0,
"level": "Info",
"time": "2026-09-02T11:40:32.74904922+08:00",
"category": "vm",
"user": "system",
"event": "Virtual machine(win10) shutdown successfully"
},
{
"id": 0,
"level": "Info",
"time": "2026-09-02T11:39:55.916718004+08:00",
"category": "vm",
"user": "system",
"event": "Virtual machine(win10) started successfully"
},
{
"id": 0,
"level": "Info",
"time": "2026-09-02T11:39:43.341421576+08:00",
"category": "vm",
"user": "system",
"event": "Virtual machine(win10) shutdown successfully"
},
{
"id": 0,
"level": "Info",
"time": "2026-09-02T11:38:31.518259486+08:00",
"category": "vm",
"user": "system",
"event": "Virtual machine(win10) shutdown successfully"
},
{
"id": 0,
"level": "Info",
"time": "2026-09-02T11:38:07.98065689+08:00",
"category": "vm",
"user": "system",
"event": "Virtual machine(win10) started successfully"
},
{
"id": 0,
"level": "Error",
"time": "2026-09-02T11:32:35.01952111+08:00",
"category": "vm",
"user": "system",
"event": "Virtual machine (win10) export failed (Error:stat : no such file or directory)"
}
]
II. Manajemen Daya Mesin Virtual
vms vm poweron – Menyalakan mesin virtual
vms vm poweron <id>
- Mesin virtual harus dalam status sudah dimatikan, jika tidak akan mengembalikan kesalahan konflik status
- Keluaran:
VM powered on: <id>
vms vm poweroff – Mematikan mesin virtual
Mengirim permintaan pematian normal ke mesin virtual, agar sistem dimatikan dengan baik.
vms vm poweroff <id> [--yes]
- Termasuk operasi berbahaya: mode interaktif akan menanyakan konfirmasi, mode non-interaktif harus menambahkan
--yes - Mesin virtual harus dalam status sedang berjalan, jika tidak akan mengembalikan kesalahan konflik status
Perintah konfirmasi mode interaktif:
This action will powered off VM "9c7078ab-a1e7-4bc0-819f-6ac83e24cfc1". Do you want to continue? [y/N]:
- Keluaran:
VM powered off: <id>
vms vm force-poweroff – Memaksa mematikan mesin virtual (risiko tinggi)
Memaksa mematikan mesin virtual, setara dengan memutus daya secara langsung.
vms vm force-poweroff <id> [--yes]
- Termasuk operasi risiko tinggi: mode interaktif akan menanyakan konfirmasi, mode non-interaktif harus menambahkan
--yes - Dapat menyebabkan kehilangan data di dalam mesin virtual, disarankan hanya digunakan saat mesin virtual tidak merespons
Perintah konfirmasi mode interaktif:
This action will force powered off VM "9c7078ab-a1e7-4bc0-819f-6ac83e24cfc1". Do you want to continue? [y/N]:
- Keluaran:
VM force powered off: <id>
vms vm reboot – Memulai ulang mesin virtual
vms vm reboot <id>
- Keluaran:
VM rebooted: <id>
vms vm pause – Menjeda mesin virtual
Membekukan status berjalan mesin virtual dan menyimpan status saat ini ke disk.
vms vm pause <id>
- Mesin virtual harus dalam status sedang berjalan, jika tidak akan mengembalikan kesalahan konflik status
- Setelah dijeda, status mesin virtual ditampilkan sebagai
saved - Keluaran:
VM paused: <id>
vms vm resume – Memulihkan mesin virtual
Memulihkan mesin virtual dari status dijeda ke status berjalan.
vms vm resume <id>
- Mesin virtual harus dalam status dijeda, jika tidak akan mengembalikan kesalahan konflik status
- Keluaran:
VM resumed: <id>
vms vm autorun – Mengatur mulai otomatis saat boot
Mengatur apakah mesin virtual secara otomatis menyala saat host dinyalakan.
vms vm autorun <id> <true|false>
- Parameter kedua harus
trueataufalse - Perintah akan membaca konfigurasi saat ini dan hanya mengubah sakelar mulai otomatis, konfigurasi lain tidak terpengaruh
- Keluaran:
Auto-start enabled for VM <id>atauAuto-start disabled for VM <id>
III. Kloning, Ekspor, dan Penghapusan Mesin Virtual
vms vm clone – Mengkloning mesin virtual
Membuat mesin virtual baru dengan menyalin mesin virtual yang ada sebagai templat.
vms vm clone --body '{"guest_id":"<source_id>","name":"my-clone"}'
vms vm clone --file clone.json
- Dalam isi permintaan,
guest_idadalah ID mesin virtual sumber,name(atauguest_name) adalah nama mesin virtual baru - Mesin virtual sumber harus dalam status sudah dimatikan
--bodymeneruskan isi permintaan langsung sebagai string JSON,--filemembaca isi permintaan dari berkas
vms vm export – Mengekspor mesin virtual
Mengekspor mesin virtual sebagai berkas OVA, memudahkan pencadangan atau migrasi ke platform virtualisasi lain.
vms vm export --body '{"guest_id":"<source_id>","target_ova_path":"/Volume1/export/my-vm.ova"}'
vms vm export --file export.json
- Dalam isi permintaan,
guest_idadalah ID mesin virtual sumber,target_ova_pathadalah jalur berkas tujuan,ova_modeadalah mode kompatibilitas VMware opsional - Mesin virtual sumber harus dalam status sudah dimatikan
- Ekspor adalah tugas yang memakan waktu; mesin virtual berkapasitas besar memerlukan waktu lama untuk diekspor
vms vm delete – Menghapus mesin virtual (risiko tinggi)
Menghapus mesin virtual secara permanen.
vms vm delete <id> [--yes]
- Termasuk operasi risiko tinggi: mode interaktif akan menanyakan konfirmasi, mode non-interaktif harus menambahkan
--yes - Setelah dihapus tidak dapat dipulihkan, harap pastikan terlebih dahulu bahwa data di dalam mesin virtual telah dicadangkan
Perintah konfirmasi mode interaktif:
This action will permanently delete VM "5a0391f2-c545-45eb-8eed-0a104972229b". Do you want to continue? [y/N]:
- Keluaran:
VM deleted: <id>
IV. Disk Virtual
vms vm disk list – Melihat disk virtual
Menampilkan semua disk virtual dari mesin virtual yang ditentukan.
vms vm disk list <id> [--json]
Contoh keluaran:
NAME VDISK ID VDISK SIZE VDISK MODE IDX
- f4ed4eae-1512-4273-963b-79ebd93a0932 1024 1 0
VDISK MODEadalah nomor jenis pengontrol disk virtual,1berarti IDE- Disk virtual tanpa nama ditampilkan sebagai
-pada kolomNAME
V. Manajemen Snapshot
vms vm snapshot list – Menampilkan snapshot
vms vm snapshot list <id> [--json]
Contoh keluaran:
NAME GUEST ID DESCRIPTION LOCKED CREATED AT VM STATE ACTUAL CONSISTENCY
snapshot_2026-09-02T11-43-51.183703274 9c7078ab-a1e7-4bc0-819f-6ac83e24cfc1 cli-test-edited false 2026-09-02T11:43:51+08:00 running crash
snapshot_2026-05-15T17-13-48.986448711 9c7078ab-a1e7-4bc0-819f-6ac83e24cfc1 - false 2026-05-15T17:13:48+08:00 shutdown filesystem
VM STATEadalah status berjalan mesin virtual saat snapshot dibuatACTUAL CONSISTENCYadalah jenis konsistensi snapshot;filesystemberarti konsisten sistem berkas,crashberarti konsisten saat crash
vms vm snapshot create – Membuat snapshot
Membuat snapshot untuk mesin virtual, digunakan untuk rollback cepat atau mencadangkan status saat ini.
vms vm snapshot create <id>
vms vm snapshot create <id> --body '{"description":"before-upgrade","locked":false}'
- Isi permintaan opsional:
descriptionadalah deskripsi snapshot,lockedadalah apakah dikunci - Nama snapshot dibuat otomatis oleh sistem berdasarkan waktu pembuatan
- Snapshot menempati ruang penyimpanan; jika lama tidak dibersihkan dapat memenuhi ruang penyimpanan, disarankan untuk membersihkan secara berkala
vms vm snapshot edit – Mengedit snapshot
Mengubah deskripsi atau status kunci snapshot.
vms vm snapshot edit <id> <snapshot_name> --body '{"description":"updated description"}'
vms vm snapshot edit <id> <snapshot_name> --body '{"locked":true}'
- Hanya mengubah bidang yang muncul dalam isi permintaan; bidang yang tidak muncul tetap mempertahankan nilai aslinya; hanya mengubah deskripsi tidak akan mengubah status kunci, dan sebaliknya
Contoh keluaran:
PROPERTY VALUE
ACTUAL CONSISTENCY crash
CREATED AT 2026-09-02T11:43:51+08:00
DESCRIPTION cli-test-edited
GUEST ID 9c7078ab-a1e7-4bc0-819f-6ac83e24cfc1
LOCKED false
NAME snapshot_2026-09-02T11-43-51.183703274
VM STATE running
vms vm snapshot config – Melihat konfigurasi mesin virtual snapshot
Melihat konfigurasi mesin virtual yang tersimpan dalam snapshot.
vms vm snapshot config <id> <snapshot_name>
<id> adalah ID mesin virtual, <snapshot_name> adalah nama snapshot, dapat diperoleh melalui vms vm snapshot list <id>.
Contoh keluaran:
PROPERTY VALUE
CPU COMPATIBILITY MODE true
CPU PASSTHRU false
HYPERV ENLIGHTEN true
REPO NAME VM-Storage01
USB DEVICE NAME ["USB - Integrated Technology Express, Inc. Disk 2.0"]
USB VERSION 2
USBS [":3:3:048d:1234"]
VCPU NUM 4
VDISK NUM 1
VDISK TOTAL SIZE 1024
VDISKS [{"name":"disk1","type":"ide","vdisk_size":1024}]
VIDEO CARD vga
VRAM SIZE 2097152
vms vm snapshot consistency – Pratinjau konsistensi snapshot
Pratinjau jenis konsistensi yang mungkin diperoleh sebelum membuat snapshot, membantu menilai apakah saat ini cocok untuk membuat snapshot.
vms vm snapshot consistency <id>
Contoh keluaran:
PROPERTY VALUE
CONSISTENCY TYPE filesystem
REASON vm_shutdown
VM STATE shutdown
Membuat snapshot saat mesin virtual dimatikan akan menghasilkan snapshot yang konsisten sistem berkas; saat berjalan biasanya hanya dapat memperoleh snapshot yang konsisten saat crash.
VI. Konsol Jarak Jauh
vms vm link – Mendapatkan informasi koneksi VNC
Mendapatkan informasi koneksi konsol VNC mesin virtual, digunakan untuk membuka konsol jarak jauh di peramban.
vms vm link <id> --json
- Mesin virtual harus dalam status berjalan atau dijeda, jika tidak akan mengembalikan kesalahan konflik status
Contoh keluaran:
{
"url": "VMs/noVNC/vnc.html?autoconnect=true\u0026reconnect=true\u0026path=utils/websockify/?token=09fd98ee-4e2d-4c7a-a95c-8bacab80d322\u0026title=145",
"port": 8181,
"https": false
}
urladalah jalur konsol relatif terhadap alamat manajemen NAS,portadalah port layanan konsol,httpsmenunjukkan apakah perlu diakses melalui HTTPS- Dalam keluaran JSON, karakter
&dalam URL akan di-escape menjadi\u0026
VII. Manajemen Jaringan Virtual
Jenis jaringan dibagi menjadi dua:
| Jenis | Keterangan |
|---|---|
| Privat (private) | Jaringan internal yang hanya untuk komunikasi antara mesin virtual di mesin lokal, tidak terikat pada kartu jaringan fisik |
| Eksternal (external) | Jaringan yang terikat pada kartu jaringan fisik, mesin virtual dapat berkomunikasi dengan luar melalui jaringan ini |
vms network list – Menampilkan jaringan virtual
vms network list [--limit N] [--offset N] [--json]
Contoh keluaran:
NAME NETWORK ID TYPE VLAN ID NUM GUESTS NUM HOSTS NUM INTERFACES HOST NAME
VM-Network04 ce9807c9-47b3-4258-9a80-ea8db1fd785d external 0 0 1 1 A-eae4
VM-Network01 b364a1ec-f60c-4971-9ea2-f7a002f09fa3 external 0 2 1 1 A-eae4
NUM GUESTSadalah jumlah mesin virtual yang terhubung ke jaringan tersebut,NUM INTERFACESadalah jumlah kartu jaringan fisik yang dipilih
vms network get – Melihat detail jaringan virtual
vms network get <network_id> --json
Contoh keluaran:
{
"metadata": {
"createdAt": "2026-05-15T16:46:08.415062294+08:00",
"updatedAt": "2026-05-15T16:46:08.415062415+08:00"
},
"network_id": "b364a1ec-f60c-4971-9ea2-f7a002f09fa3",
"name": "VM-Network01",
"host_id": "15341593-7f43-49f4-9523-6ac750a63a8a",
"host_name": "A-eae4",
"interfaces": {
"15341593-7f43-49f4-9523-6ac750a63a8a": {
"totalCount": 1,
"items": [
{
"checked": false,
"host_id": "15341593-7f43-49f4-9523-6ac750a63a8a",
"host_name": "A-eae4",
"interface_id": "/00000000-0000-0000-0000-6cbfb504eae5",
"interface_name": "LAN 2",
"ip": [
"192.168.2.121"
],
"mask": [
"ffffff00"
],
"speed_mbs": 1000,
"status": "connected",
"tx_kbps": 0,
"rx_kbps": 0
},
{
"checked": true,
"host_id": "15341593-7f43-49f4-9523-6ac750a63a8a",
"host_name": "A-eae4",
"interface_id": "/00000000-0000-0000-0000-6cbfb504eae4",
"interface_name": "LAN 1",
"ip": [
"10.18.8.95"
],
"mask": [
"ffffff00"
],
"speed_mbs": 1000,
"status": "connected",
"tx_kbps": 2.5458984375,
"rx_kbps": 11.45458984375
}
]
}
},
"num_guests": 0,
"num_hosts": 1,
"num_interfaces": 1,
"type": "external",
"vlan_id": 0
}
interfacesadalah informasi kartu jaringan yang terikat pada jaringan ini, disusun berdasarkan ID host,checkedmenunjukkan apakah kartu jaringan tersebut telah dipilihmetadatamencatat waktu pembuatan dan pembaruan jaringan
vms network create – Membuat jaringan virtual
vms network create --body '{"name":"net1","type":"private","host_name":"TNAS"}' --json
vms network create --body '{"name":"net1","type":"external","vlan_id":100,"host_name":"TNAS","interface_name":"LAN 1"}' --json
Membuat jaringan privat:
- Isi permintaan harus berisi
name,type(private),host_nameatauhost_id, menentukan jaringan dibuat pada host yang mana - Sebelum membuat, host yang tersedia dapat dilihat melalui
vms network list-interfaces private
Membuat jaringan eksternal:
- Isi permintaan harus berisi
name,type(external),vlan_id, dan menentukan setidaknya satu kartu jaringan fisik - Kartu jaringan dapat ditentukan melalui
interface_name(sepertiLAN 1) atauinterface_id; saat nama kartu jaringan tidak unik antar host maka perlu digunakan bersamahost_name - Sebelum membuat, kartu jaringan yang tersedia dapat dilihat melalui
vms network list-interfaces external
Keluaran adalah informasi jaringan setelah dibuat, konsisten dengan struktur vms network get:
{
"metadata": {
"createdAt": "2026-09-17T16:57:32.064720576+08:00",
"updatedAt": "2026-09-17T16:57:32.064720634+08:00"
},
"network_id": "27047bd1-eeeb-4762-82ae-45094dea4854",
"name": "cli-demo-net",
"host_id": "15341593-7f43-49f4-9523-6ac750a63a8a",
"host_name": "A-eae4",
"interfaces": {
"15341593-7f43-49f4-9523-6ac750a63a8a": {
"totalCount": 1,
"items": [
{
"checked": true,
"host_id": "15341593-7f43-49f4-9523-6ac750a63a8a",
"host_name": "A-eae4",
"interface_id": "",
"interface_name": "PNdea4854",
"ip": null,
"mask": null,
"speed_mbs": 0,
"status": ""
}
]
}
},
"num_guests": 0,
"num_hosts": 1,
"num_interfaces": 1,
"type": "private",
"vlan_id": 0
}
Saat tidak menentukan kartu jaringan, perintah akan memberikan petunjuk:
network create (type "external") requires selecting at least one interface; add "interface_name" (optionally scoped with "host_name") or "interface_id" to the body, e.g. {"name":"net1","type":"external","vlan_id":100,"host_name":"TNAS","interface_name":"LAN 1"}. Run "vms network list-interfaces external" to see available interfaces. Example available interface: LAN 2 on A-eae4 (host_id=15341593-7f43-49f4-9523-6ac750a63a8a, interface_id=/00000000-0000-0000-0000-6cbfb504eae5)
vms network update – Memperbarui jaringan virtual
Hanya mengirimkan bidang yang perlu diubah; bidang yang tidak dikirim tetap mempertahankan nilai aslinya.
vms network update --body '{"network_id":"<network_id>","name":"renamed"}'
vms network update --body '{"network_id":"<network_id>","vlan_id":200}'
- Isi permintaan harus berisi
network_id - Perintah akan membaca konfigurasi jaringan saat ini terlebih dahulu lalu menggabungkan bidang yang dikirim; nama jaringan dan kartu jaringan yang dipilih tidak akan dihapus
- Keluaran adalah informasi jaringan setelah pembaruan
vms network delete – Menghapus jaringan virtual (risiko tinggi)
vms network delete <network_id> [--yes]
- Termasuk operasi risiko tinggi: mode interaktif akan menanyakan konfirmasi, mode non-interaktif harus menambahkan
--yes - Menghapus jaringan akan memutuskan semua mesin virtual yang terhubung ke jaringan tersebut
- Disarankan untuk terlebih dahulu memastikan mesin virtual yang terhubung melalui
vms network list-vnics <network_id>
Perintah konfirmasi mode interaktif:
This action will delete network "b364a1ec-f60c-4971-9ea2-f7a002f09fa3". Do you want to continue? [y/N]:
- Keluaran:
Network deleted: <network_id>
vms network list-interfaces – Menampilkan antarmuka jaringan
Menampilkan antarmuka jaringan dari jenis yang ditentukan.
vms network list-interfaces external [--limit N] [--offset N]
vms network list-interfaces private [--limit N] [--offset N]
externalmengembalikan kartu jaringan fisik yang tersedia pada hostprivatemengembalikan informasi host yang tersedia untuk membuat jaringan privat
Contoh keluaran (external):
INTERFACE NAME INTERFACE ID HOST NAME STATUS IP SPEED MBS
LAN 2 /00000000-0000-0000-0000-6cbfb504eae5 A-eae4 disconnected - -1
LAN 1 /00000000-0000-0000-0000-6cbfb504eae4 A-eae4 connected ["10.18.8.73"] 1000
Contoh keluaran (private):
INTERFACE NAME INTERFACE ID HOST NAME STATUS IP SPEED MBS
- - A-eae4 - - 0
vms network list-vnics – Menampilkan kartu jaringan virtual pada jaringan
vms network list-vnics <network_id> [--limit N] [--offset N] [--json]
Contoh keluaran:
GUEST NAME GUEST ID MAC ADDRESS VIRTUAL INTERFACE ID NETWORK NAME STATUS PREFER SRIOV
win10 9c7078ab-a1e7-4bc0-819f-6ac83e24cfc1 1a:e2:ae:95:4a:51 fe972ef5-b066-4967-89fa-8e85e43c8808 VM-Network01 - false
win101 32ee5a74-de8b-47a9-959d-1725c881ceab 1a:f6:db:fb:3d:79 f93bf16c-01ca-4b60-b164-8a3083fb5f03 VM-Network01 - false
vms network ovsinfo – Melihat status OVS
Memastikan apakah sakelar virtual Open vSwitch telah diaktifkan.
vms network ovsinfo [--json]
Contoh keluaran:
PROPERTY VALUE
RESULT true
VALUE bernilai true berarti OVS telah diaktifkan.
VIII. Manajemen Image
vms image list – Menampilkan image
Menampilkan berkas image sistem yang tersedia untuk membuat mesin virtual.
vms image list --json
image_nameadalah nama image,file_nameadalah nama berkas yang sesuaitypeadalah format image, sepertiiso,qcow2statusadalah status image,availableberarti tersediareposadalah ruang penyimpanan tempat image tersebut beradaprogressadalah kemajuan tugas pemrosesan image,0berarti tidak ada tugas yang sedang berjalan
Contoh keluaran:
{
"totalCount": 4,
"items": [
{
"image_name": "cn_windows_10_consumer_editions_version_1909_updated_jan_2020_x86_dvd_9c50652f",
"image_id": "c93083a5-2b39-4f32-b19f-1ad97c6b4de4",
"file_name": "cn_windows_10_consumer_editions_version_1909_updated_jan_2020_x86_dvd_9c50652f.iso",
"type": "iso",
"file_size": 3884539904,
"status": "available",
"status_code": 0,
"status_reason": "",
"create_time": 1778835784,
"repos": [
{
"repo_name": "VM-Storage01",
"repo_id": "735ef7f7-5d8d-4102-9377-8a7b8c33cda6"
}
],
"progress": 0,
"task_id": 0,
"virtual_size": 0
},
{
"image_name": "cn_windows_11_consumer_editions_version_21h2_updated_july_2022_x64_dvd_50ad4acf",
"image_id": "cb9d929a-d673-4e46-ac86-9488bbef19b9",
"file_name": "cn_windows_11_consumer_editions_version_21h2_updated_july_2022_x64_dvd_50ad4acf.iso",
"type": "iso",
"file_size": 5858816000,
"status": "available",
"status_code": 0,
"status_reason": "",
"create_time": 1778835784,
"repos": [
{
"repo_name": "VM-Storage01",
"repo_id": "735ef7f7-5d8d-4102-9377-8a7b8c33cda6"
}
],
"progress": 0,
"task_id": 0,
"virtual_size": 0
},
{
"image_name": "virtio-win-0.1.285pro",
"image_id": "9b3f2fdd-9173-4611-a84c-0cc9ce88293c",
"file_name": "virtio-win-0.1.285.iso",
"type": "iso",
"file_size": 789645312,
"status": "available",
"status_code": 0,
"status_reason": "",
"create_time": 1778836128,
"repos": [
{
"repo_name": "VM-Storage01",
"repo_id": "735ef7f7-5d8d-4102-9377-8a7b8c33cda6"
}
],
"progress": 0,
"task_id": 0,
"virtual_size": 0
},
{
"image_name": "haos_ova-18.2",
"image_id": "efd6da18-9475-44cf-8fb0-e2513421e68a",
"file_name": "haos_ova-18.2.qcow2",
"type": "qcow2",
"file_size": 1091698688,
"status": "available",
"status_code": 0,
"status_reason": "",
"create_time": 1787191833,
"repos": [
{
"repo_name": "VM-Storage02",
"repo_id": "517571ba-f7f7-49e1-9a62-7eb6ddfd9c78"
}
],
"progress": 0,
"task_id": 0,
"virtual_size": 0
}
]
}
vms image edit – Mengedit image
Mengubah nama image, atau menyesuaikan ruang penyimpanan tempat image berada.
vms image edit --body '{"image_id":"<image_id>","repos":["<repo_id>"]}'
vms image edit --body '{"image_id":"<image_id>","repos":["<repo_id_1>","<repo_id_2>"],"image_name":"renamed.iso"}'
- Isi permintaan harus berisi
image_iddanrepos;reposadalah daftar lengkap ruang penyimpanan tujuan image tersebut, tidak boleh kosong image_name,file_name,type,file_sizeadalah bidang opsional; jika tidak diberikan akan menggunakan nilai saat inireposyang kosong akan menyebabkan image dihapus dari semua ruang penyimpanan; perintah akan menolak permintaan tersebut sebelum eksekusi- Keluaran:
Image updated
vms image delete – Menghapus image (risiko tinggi)
vms image delete --image-id <image_id> [--yes]
--image-idadalah wajib- Termasuk operasi risiko tinggi: mode interaktif akan menanyakan konfirmasi, mode non-interaktif harus menambahkan
--yes - Menghapus image tidak memengaruhi mesin virtual yang sudah dibuat, tetapi akan memengaruhi pembuatan mesin virtual berikutnya berdasarkan image tersebut
- Disarankan untuk terlebih dahulu memastikan penggunaan melalui
vms image list-vms --image-id <image_id>
Perintah konfirmasi mode interaktif:
This action will permanently delete image "efd6da18-9475-44cf-8fb0-e2513421e68a". Do you want to continue? [y/N]:
- Keluaran:
Image deleted: <image_id>
vms image list-vms – Melihat mesin virtual yang menggunakan image tersebut
vms image list-vms --image-id <image_id> [--json]
Contoh keluaran:
GUEST NAME
1454486
Sebelum menghapus image, jalankan perintah ini terlebih dahulu untuk memastikan cakupan dampaknya; saat tidak ada mesin virtual yang menggunakan image tersebut, keluarannya kosong.
IX. Manajemen Ruang Penyimpanan
vms repo list – Menampilkan ruang penyimpanan
vms repo list [--json]
Contoh keluaran:
NAME REPO ID STATUS USED PERCENT USED TOTAL SIZE FILE SYSTEM HOST NAME
VM-Storage01 735ef7f7-5d8d-4102-9377-8a7b8c33cda6 - 155583651840 14.150249481201172 1097552691200 btrfs -
VM-Storage02 517571ba-f7f7-49e1-9a62-7eb6ddfd9c78 normal 89361494016 16.64487648010254 535146790912 btrfs A-eae4
vms repo get – Melihat detail ruang penyimpanan
vms repo get <repo_id> [--json]
Contoh keluaran:
PROPERTY VALUE
ENABLE LOWER NOTIFY false
FILE SYSTEM btrfs
HARD LIMIT 2
HOST ID 15341593-7f43-49f4-9523-6ac750a63a8a
HOST NAME A-eae4
LAST NOTIFY TRESHOLD -
LOCATION VOLUME /Volume2
NAME VM-Storage02
REPO ID 517571ba-f7f7-49e1-9a62-7eb6ddfd9c78
SOFT LIMIT 10
STATUS normal
TOTAL SIZE 534760128512
LOCATION VOLUMEadalah volume tempat ruang penyimpanan beradaSOFT LIMIT,HARD LIMITadalah ambang peringatan kapasitas (persentase)ENABLE LOWER NOTIFYadalah apakah pengingat kapasitas rendah diaktifkan
vms repo update – Memperbarui ruang penyimpanan
Hanya mengirimkan bidang yang perlu diubah; bidang yang tidak dikirim tetap mempertahankan nilai aslinya.
vms repo update --body '{"repo_id":"<repo_id>","name":"new-name"}'
vms repo update --body '{"repoId":"<repo_id>","enable_lower_notify":true}'
- ID ruang penyimpanan dapat diteruskan melalui
repo_idataurepoId - Perintah akan membaca konfigurasi saat ini terlebih dahulu lalu menggabungkan bidang yang dikirim; pengaturan lain tidak akan hilang
- Keluaran adalah informasi ruang penyimpanan setelah pembaruan
vms repo delete – Menghapus ruang penyimpanan (risiko tinggi)
vms repo delete <repo_id> <true|false> [--yes]
- Parameter kedua adalah
need_save_data:trueberarti mempertahankan berkas data pada disk,falseberarti menghapusnya bersama data - Termasuk operasi risiko tinggi: mode interaktif akan menanyakan konfirmasi, mode non-interaktif harus menambahkan
--yes - Menghapus ruang penyimpanan akan sekaligus menghapus mesin virtual dan image di dalamnya; disarankan untuk menjalankan terlebih dahulu
vms repo check-runningdanvms repo whether-exist-datauntuk memastikan cakupan dampaknya
Perintah konfirmasi mode interaktif:
This action will delete repository "735ef7f7-5d8d-4102-9377-8a7b8c33cda6" (save data: true). Do you want to continue? [y/N]:
- Keluaran:
Repository deleted: <repo_id>
vms repo list-volumes – Menampilkan volume yang tersedia
Menampilkan volume yang tersedia untuk membuat ruang penyimpanan.
vms repo list-volumes [--json]
Contoh keluaran:
NAME UUID DEVICE FILESYSTEM STATUS VOLUME TYPE TOTAL USED AVAILABLE USAGE
lv3 00000004-2608-1311-3025-6cbfb504eae4 /dev/mapper/vg0-lv3 ext4 - - {"unit":"KB","value":102626232} {"unit":"KB","value":52} {"unit":"KB","value":101561220} 0.000051200619070623694
lv2 00000003-2606-2215-3256-6cbfb504eae4 /dev/mapper/vg0-lv2 btrfs - - {"unit":"KB","value":104857600} {"unit":"KB","value":9715824} {"unit":"KB","value":93096464} 9.450061066630479
vms repo list-vms – Menampilkan mesin virtual dalam ruang penyimpanan
vms repo list-vms --body '{"repo_id":"<repo_id>"}'
- ID ruang penyimpanan dapat diteruskan melalui
repo_idataurepoId - Perintah akan memperoleh objek ruang penyimpanan terlebih dahulu lalu mengueri mesin virtualnya, hasilnya lebih andal
vms repo check-running – Memeriksa mesin virtual yang berjalan pada ruang penyimpanan
vms repo check-running <repo_id> [--json]
Jalankan sebelum menghapus ruang penyimpanan untuk memastikan tidak ada mesin virtual yang sedang berjalan; saat tidak ada mesin virtual yang berjalan, keluarannya kosong.
vms repo whether-exist-data – Memeriksa apakah ada data dalam ruang penyimpanan
vms repo whether-exist-data --body '{"repo_id":"<repo_id>"}'
Jalankan sebelum menghapus ruang penyimpanan untuk memastikan apakah masih ada data dalam ruang penyimpanan; konsisten dengan pemeriksaan awal sebelum menghapus ruang penyimpanan di antarmuka web.
X. Pengaturan Global
vms setting get – Melihat pengaturan global
Melihat konfigurasi global aplikasi VMs.
vms setting get [--json]
Contoh keluaran:
PROPERTY VALUE
HOST SHUTDOWN BEHAVIOR 1
KB LAYOUT en-us
SHOW VIRTIO BLK VDISK false
HOST SHUTDOWN BEHAVIORadalah cara penanganan mesin virtual saat host dimatikanKB LAYOUTadalah tata letak papan ketik mesin virtual
XI. Kueri Informasi Pemantauan
vms collectd hostinfo – Melihat informasi pemantauan host
vms collectd hostinfo [--limit N] [--offset N] [--json]
Contoh keluaran:
NAME ID STATUS TYPE CPU USAGE RAM USAGE DESC
A-eae4 - running healthy 2.53 15.66 Info
vms collectd vminfo – Melihat informasi pemantauan mesin virtual
vms collectd vminfo [--limit N] [--offset N] [--json]
Contoh keluaran:
NAME ID STATUS TYPE CPU USAGE RAM USAGE DESC
145 09fd98ee-4e2d-4c7a-a95c-8bacab80d322 shutdown healthy 0 0 info
win10 9c7078ab-a1e7-4bc0-819f-6ac83e24cfc1 shutdown healthy 0 0 info
win101 32ee5a74-de8b-47a9-959d-1725c881ceab shutdown healthy 0 0 info
vms collectd storageinfo – Melihat informasi pemantauan penyimpanan
vms collectd storageinfo [--limit N] [--offset N] [--json]
Contoh keluaran:
NAME ID HOST NAME STATUS TYPE SIZE USED PERCENT USED PERCENT FREE
VM-Storage01 735ef7f7-5d8d-4102-9377-8a7b8c33cda6 A-eae4 none healthy 1097552691200 155583651840 14.328414916992188 85.67158508300781
VM-Storage02 517571ba-f7f7-49e1-9a62-7eb6ddfd9c78 A-eae4 none healthy 535146790912 89361494016 16.966018676757812 83.03398132324219
Mode Interaktif dan Mode Non-interaktif
CLI akan menentukan apakah saat ini berjalan di lingkungan terminal dan menerapkan perilaku yang berbeda:
Mode Interaktif (lingkungan terminal)
- Operasi berbahaya menampilkan perintah konfirmasi, opsi bawaannya adalah No
- Masukkan
yatauYuntuk melanjutkan eksekusi, masukkannatau tekan Enter langsung untuk membatalkan - Saat operasi dibatalkan akan mengeluarkan
Operation cancelled, kode keluar adalah 99
Mode Non-interaktif (skrip/otomatisasi)
- Operasi berbahaya harus menggunakan
--yesuntuk melewati konfirmasi, jika tidak perintah akan langsung error dan mengembalikan kode keluar 1 - Saat tidak ada lingkungan terminal tidak akan menunggu masukan, cocok untuk skrip dan tugas terjadwal
- Disarankan untuk menangani kode keluar secara eksplisit dalam skrip untuk membedakan keberhasilan, kegagalan, dan konflik status
Format Keluaran JSON
Perintah kueri mendukung parameter --json, mengeluarkan data JSON yang telah dinormalisasi, memudahkan penguraian oleh program.
Konvensi format:
- Nama bidang menggunakan snake_case
- Nilai boolean adalah true/false
- Waktu menggunakan format ISO 8601, mencakup presisi nanodetik dan offset UTC+8 (seperti 2026-09-02T11:43:51.176535374+08:00)
- JSON dikeluarkan ke stdout, informasi kesalahan dikeluarkan ke stderr
- Bidang panjang yang terpotong dalam keluaran tabel adalah nilai lengkap dalam keluaran JSON
Contoh:
vms setting get --json
{
"host_shutdown_behavior": 1,
"kb_layout": "en-us",
"show_virtio_blk_vdisk": false
}
Struktur JSON antar perintah sedikit berbeda: vms vm list, vms vm snapshot list, vms vm logs langsung mengeluarkan array; perintah daftar lainnya mengeluarkan objek yang berisi totalCount dan bidang data, dan nama bidang data berbeda-beda menurut sumber daya (seperti items, hosts, vms, storage). Misalnya vms repo list --json:
{
"totalCount": 2,
"items": {
"517571ba-f7f7-49e1-9a62-7eb6ddfd9c78": {
"name": "VM-Storage02",
"repo_id": "517571ba-f7f7-49e1-9a62-7eb6ddfd9c78",
"status": "normal",
"used": 89361494016,
"percent_used": 16.64487648010254,
"location_volume": "/Volume2",
"total_size": 535146790912,
"hard_limit": 2,
"soft_limit": 10,
"enable_lower_notify": false,
"file_system": "btrfs"
}
}
}
Keluaran JSON beberapa perintah adalah nilai sederhana, misalnya vms network ovsinfo --json mengeluarkan true, vms vm pause --json mengeluarkan null.
Keterangan Kode Keluar
| Kode keluar | Arti | Skenario umum |
|---|---|---|
| 0 | Berhasil | Perintah selesai secara normal |
| 1 | Kesalahan parameter | Parameter wajib hilang, format parameter salah, --yes tidak ditambahkan |
| 3 | Sumber daya tidak ada | Pemeriksaan prasyarat perintah tidak lolos, misalnya image yang ditentukan tidak ada |
| 4 | Konflik status | Status mesin virtual saat ini tidak mengizinkan operasi tersebut (seperti mematikan mesin virtual yang sudah dimatikan) |
| 6 | Kesalahan koneksi | Tidak dapat terhubung ke layanan VMs, atau jalur socket tidak benar |
| 7 | Waktu habis | Permintaan melebihi waktu tunggu, dapat disesuaikan melalui --timeout |
| 9 | Kesalahan eksekusi | Backend mengembalikan kesalahan (informasi kesalahan mencakup code_num dan deskripsi kesalahan) |
| 99 | Dibatalkan pengguna | Memilih No atau menekan Enter langsung pada konfirmasi interaktif |
Contoh:
# 退出码 1(参数错误)
vms vm poweroff <id>
# Confirmation required. Re-run with --yes to continue.
# 退出码 4(状态冲突)
vms vm pause <id>
# cannot pause a virtual machine: VM must be running (current status: shutdown)
# 退出码 9(执行错误)
vms vm get <id>
# vm check configure error: vdisk check - vm not exist: key not found (code_num=2001, vm check configure error)
# 退出码 6(连接错误)
vms vm list --socket /tmp/nope.sock
# failed to connect to VMs daemon (socket /tmp/nope.sock): dial unix /tmp/nope.sock: connect: no such file or directory
Contoh Skenario Penggunaan
Operasi Harian
# 查看所有虚拟机状态
vms vm list
# 查看某台虚拟机的配置与运行状态
vms vm get <id>
# 查看虚拟机的操作日志
vms vm logs <id> --limit 20
# 开机、关机与重启
vms vm poweron <id>
vms vm poweroff <id> --yes
vms vm reboot <id>
Operasi Massal dengan Skrip
# 批量启动所有已关机的虚拟机
vms vm list --json | jq -r '.[] | select(.status == "shutdown") | .guest_id' | while read -r id; do
vms vm poweron "$id"
done
# 批量关闭所有运行中的虚拟机
vms vm list --json | jq -r '.[] | select(.status == "running") | .guest_id' | while read -r id; do
vms vm poweroff "$id" --yes
done
# 存储空间容量检查,超过 80% 时输出告警
vms collectd storageinfo --json | jq -r '.storage[] | select(.percent_used > 80) | .name'
Pencadangan dan Inspeksi
# 关机后为虚拟机创建快照
vms vm poweroff <id> --yes
vms vm snapshot consistency <id>
vms vm snapshot create <id> --body '{"description":"weekly-backup"}'
# 查看快照列表与详情
vms vm snapshot list <id>
vms vm snapshot config <id> <snapshot_name>
# 导出虚拟机为 OVA 文件,用于异地备份
vms vm export --body '{"guest_id":"<id>","target_ova_path":"/Volume1/backup/my-vm.ova"}'
Pemeriksaan Sebelum Penghapusan
# 删除存储空间前,先确认是否有虚拟机正在运行、是否存在数据
vms repo check-running <repo_id>
vms repo whether-exist-data --body '{"repo_id":"<repo_id>"}'
# 删除映像前,先确认有哪些虚拟机在使用
vms image list-vms --image-id <image_id>
# 删除网络前,先确认接入的虚拟机
vms network list-vnics <network_id>
Pemanggilan oleh Alat AI
# AI 工具可通过命令行调用 vms 命令
# 例如:获取虚拟机与宿主机状态供 AI 分析
vms vm list --json
vms collectd hostinfo --json
# AI 可解析 JSON 输出并作出决策
vms vm list-resource --json
Pengembangan Internal dan Integrasi Sistem
# 开发人员可通过 CLI 封装内部运维工具
# 示例:封装虚拟机健康检查函数
check_vm_health() {
vms collectd vminfo --json | jq -r '.vms[] | select(.status != "running") | .name'
}
# 将 CLI 集成到内部监控平台
vms collectd storageinfo --json | curl -X POST https://monitor.example.com/api/report -d @-
Tanya Jawab Umum
T: Apakah CLI memerlukan instalasi tambahan?
Tidak. CLI diinstal bersama aplikasi VMs; setelah aplikasi diaktifkan, cukup jalankan perintah vms untuk menggunakannya.
T: Apakah CLI harus digunakan melalui SSH?
Tidak. CLI dapat dipanggil melalui terminal baris perintah apa pun, termasuk terminal lokal, SSH jarak jauh, skrip, alat AI, dan lain-lain.
T: Dapatkah CLI mengelola mesin virtual pada perangkat lain?
Tidak bisa. CLI berkomunikasi dengan layanan VMs melalui unix socket lokal, hanya digunakan untuk mengelola mesin virtual pada mesin lokal.
T: Mengapa beberapa perintah meminta konfirmasi sementara yang lain tidak?
Operasi seperti menghapus mesin virtual, menghapus jaringan, menghapus image, menghapus ruang penyimpanan, dan mematikan (poweroff, force-poweroff) memengaruhi data atau layanan, sehingga secara bawaan memerlukan konfirmasi; perintah menyalakan, memulai ulang, menjeda, memulihkan, dan jenis kueri tidak memiliki batasan tersebut.
T: Bagaimana cara mengonfirmasi operasi berbahaya dalam mode non-interaktif?
Semua operasi berbahaya harus menambahkan parameter --yes, jika tidak perintah akan error dan keluar (kode keluar 1).
T: Bagaimana cara menentukan dalam skrip apakah perintah berhasil dijalankan?
Tentukan melalui kode keluar: 0 berarti berhasil, selain 0 berarti gagal. Anda juga dapat mengurai isi keluaran --json.
T: Mengapa daftar yang dikeluarkan oleh --json berupa objek?
Keluaran JSON beberapa perintah disusun sebagai objek berdasarkan ID, dengan bidang totalCount, memudahkan pengambilan langsung berdasarkan ID.
Bantuan Lebih Lanjut
Setiap perintah mendukung --help untuk melihat cara penggunaan secara rinci:
vms --help
vms vm --help
vms vm poweroff --help
vms network create --help