Lewati ke konten utama
Version: TOS 7

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:

OpsiSingkatanKeterangan
--help-hMenampilkan informasi bantuan perintah
--version-vMenampilkan nomor versi (dapat digabungkan dengan --json untuk mengeluarkan informasi terstruktur)
--json-Mengeluarkan dalam format JSON
--yes-yMelewati 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.

ItemKeterangan
Berkas CLI/Volume1/@apps/VMs/bin/vms
Jalur perintah/usr/local/sbin/vms(sudah ada di PATH sistem)
Metode komunikasiunix socket lokal, bawaan /var/api/VMs.sock
Sasaran penggunaanAdministrator 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 code dalam 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 indukSubperintahKeterangan fungsiPerlu konfirmasiRisiko tinggi
vms--versionMenampilkan informasi versiTidakTidak
vms vmlistMenampilkan semua mesin virtualTidakTidak
vms vmgetMelihat detail mesin virtual yang ditentukanTidakTidak
vms vmlist-resourceMenampilkan sumber daya yang tersedia untuk membuat mesin virtualTidakTidak
vms vmlogsMelihat log operasi mesin virtualTidakTidak
vms vmpoweronMenyalakan mesin virtualTidakTidak
vms vmpoweroffMematikan mesin virtual (pematian normal)YaTidak
vms vmforce-poweroffMemaksa mematikan mesin virtualYa✅
vms vmrebootMemulai ulang mesin virtualTidakTidak
vms vmpauseMenjeda mesin virtualTidakTidak
vms vmresumeMemulihkan mesin virtual yang dijedaTidakTidak
vms vmautorunMengatur mulai otomatis saat bootTidakTidak
vms vmcloneMengkloning mesin virtualTidakTidak
vms vmexportMengekspor mesin virtual sebagai berkas OVATidakTidak
vms vmdeleteMenghapus mesin virtualYa✅
vms vm disklistMelihat disk virtual mesin virtualTidakTidak
vms vm snapshotlistMenampilkan snapshot mesin virtualTidakTidak
vms vm snapshotcreateMembuat snapshotTidakTidak
vms vm snapshoteditMengedit deskripsi dan status kunci snapshotTidakTidak
vms vm snapshotconfigMelihat konfigurasi mesin virtual yang tersimpan dalam snapshotTidakTidak
vms vm snapshotconsistencyPratinjau konsistensi snapshotTidakTidak
vms vmlinkMendapatkan informasi koneksi konsol VNCTidakTidak
vms networklistMenampilkan jaringan virtualTidakTidak
vms networkgetMelihat detail jaringan virtualTidakTidak
vms networkcreateMembuat jaringan virtualTidakTidak
vms networkupdateMemperbarui jaringan virtualTidakTidak
vms networkdeleteMenghapus jaringan virtualYa✅
vms networklist-interfacesMenampilkan antarmuka jaringan dari jenis yang ditentukanTidakTidak
vms networklist-vnicsMenampilkan kartu jaringan virtual pada jaringanTidakTidak
vms networkovsinfoMelihat apakah OVS diaktifkanTidakTidak
vms imagelistMenampilkan imageTidakTidak
vms imageeditMengedit informasi imageTidakTidak
vms imagedeleteMenghapus imageYa✅
vms imagelist-vmsMelihat mesin virtual yang menggunakan image tersebutTidakTidak
vms repolistMenampilkan ruang penyimpananTidakTidak
vms repogetMelihat detail ruang penyimpananTidakTidak
vms repoupdateMemperbarui konfigurasi ruang penyimpananTidakTidak
vms repodeleteMenghapus ruang penyimpananYa✅
vms repolist-volumesMenampilkan volume yang tersediaTidakTidak
vms repolist-vmsMenampilkan mesin virtual dalam ruang penyimpananTidakTidak
vms repocheck-runningMemeriksa mesin virtual yang sedang berjalan pada ruang penyimpananTidakTidak
vms repowhether-exist-dataMemeriksa apakah ada data dalam ruang penyimpananTidakTidak
vms settinggetMelihat pengaturan globalTidakTidak
vms collectdhostinfoMelihat informasi pemantauan hostTidakTidak
vms collectdvminfoMelihat informasi pemantauan mesin virtualTidakTidak
vms collectdstorageinfoMelihat informasi pemantauan penyimpananTidakTidak

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 vms akan memotong nilai bidang yang terlalu panjang pada lebar tetap (diakhiri dengan elipsis, dan tidak terkait dengan lebar terminal), misalnya VDISKS, VNICS, ISO IMAGES dalam konfigurasi mesin virtual, serta nama image. Oleh karena itu, dalam dokumen ini perintah yang melibatkan bidang panjang secara seragam memberikan contoh keluaran --json yang lengkap, sedangkan perintah lainnya memberikan contoh keluaran tabel. Saat memproses dengan skrip, disarankan juga menggunakan --json secara 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]
  • --limit dan --offset adalah 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:

StatusKeterangan
runningSedang berjalan
shutdownSudah dimatikan
savedDijeda (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]
  • --limit menentukan jumlah entri yang dikembalikan, bawaan 50
  • --desc mengurutkan 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 true atau false
  • Perintah akan membaca konfigurasi saat ini dan hanya mengubah sakelar mulai otomatis, konfigurasi lain tidak terpengaruh
  • Keluaran: Auto-start enabled for VM <id> atau Auto-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_id adalah ID mesin virtual sumber, name (atau guest_name) adalah nama mesin virtual baru
  • Mesin virtual sumber harus dalam status sudah dimatikan
  • --body meneruskan isi permintaan langsung sebagai string JSON, --file membaca 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_id adalah ID mesin virtual sumber, target_ova_path adalah jalur berkas tujuan, ova_mode adalah 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 MODE adalah nomor jenis pengontrol disk virtual, 1 berarti IDE
  • Disk virtual tanpa nama ditampilkan sebagai - pada kolom NAME

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 STATE adalah status berjalan mesin virtual saat snapshot dibuat
  • ACTUAL CONSISTENCY adalah jenis konsistensi snapshot; filesystem berarti konsisten sistem berkas, crash berarti 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: description adalah deskripsi snapshot, locked adalah 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​

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
}
  • url adalah jalur konsol relatif terhadap alamat manajemen NAS, port adalah port layanan konsol, https menunjukkan 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:

JenisKeterangan
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 GUESTS adalah jumlah mesin virtual yang terhubung ke jaringan tersebut, NUM INTERFACES adalah 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
}
  • interfaces adalah informasi kartu jaringan yang terikat pada jaringan ini, disusun berdasarkan ID host, checked menunjukkan apakah kartu jaringan tersebut telah dipilih
  • metadata mencatat 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_name atau host_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 (seperti LAN 1) atau interface_id; saat nama kartu jaringan tidak unik antar host maka perlu digunakan bersama host_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]
  • external mengembalikan kartu jaringan fisik yang tersedia pada host
  • private mengembalikan 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_name adalah nama image, file_name adalah nama berkas yang sesuai
  • type adalah format image, seperti iso, qcow2
  • status adalah status image, available berarti tersedia
  • repos adalah ruang penyimpanan tempat image tersebut berada
  • progress adalah kemajuan tugas pemrosesan image, 0 berarti 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_id dan repos; repos adalah daftar lengkap ruang penyimpanan tujuan image tersebut, tidak boleh kosong
  • image_name, file_name, type, file_size adalah bidang opsional; jika tidak diberikan akan menggunakan nilai saat ini
  • repos yang 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-id adalah 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 VOLUME adalah volume tempat ruang penyimpanan berada
  • SOFT LIMIT, HARD LIMIT adalah ambang peringatan kapasitas (persentase)
  • ENABLE LOWER NOTIFY adalah 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_id atau repoId
  • 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: true berarti mempertahankan berkas data pada disk, false berarti 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-running dan vms repo whether-exist-data untuk 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_id atau repoId
  • 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 BEHAVIOR adalah cara penanganan mesin virtual saat host dimatikan
  • KB LAYOUT adalah 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 y atau Y untuk melanjutkan eksekusi, masukkan n atau 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 --yes untuk 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 keluarArtiSkenario umum
0BerhasilPerintah selesai secara normal
1Kesalahan parameterParameter wajib hilang, format parameter salah, --yes tidak ditambahkan
3Sumber daya tidak adaPemeriksaan prasyarat perintah tidak lolos, misalnya image yang ditentukan tidak ada
4Konflik statusStatus mesin virtual saat ini tidak mengizinkan operasi tersebut (seperti mematikan mesin virtual yang sudah dimatikan)
6Kesalahan koneksiTidak dapat terhubung ke layanan VMs, atau jalur socket tidak benar
7Waktu habisPermintaan melebihi waktu tunggu, dapat disesuaikan melalui --timeout
9Kesalahan eksekusiBackend mengembalikan kesalahan (informasi kesalahan mencakup code_num dan deskripsi kesalahan)
99Dibatalkan penggunaMemilih 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