Skip to main content
Version: TOS 7

VMs CLI

Giriş​

VMs CLI, TerraMaster VMs sanallaştırma uygulamasının komut satırı yönetim aracıdır ve Web yönetim arayüzüyle tutarlı sorgulama ve işletim yetenekleri sunar. CLI, yerel unix socket üzerinden VMs servisiyle iletişim kurar; standartlaştırılmış komut arayüzü ve JSON çıktı biçimi sayesinde betiklere, otomatikleştirilmiş operasyonlara ve ikincil geliştirme iş akışlarına entegre edilebilir.

Temel Özellikler​

  • Kutudan çıktığı gibi kullanıma hazır: VMs uygulamasıyla birlikte kurulur, ek kurulum gerektirmez
  • Esnek çağrı yöntemleri: yerel terminal, uzak SSH, betik, AI aracı gibi çeşitli çağrı yollarını destekler
  • Etkileşimli ve etkileşimsiz çift mod: hem yöneticinin günlük bakımına hem de betik ve otomasyon görevlerine uygundur
  • JSON çıktı desteği: programatik ayrıştırma ve otomasyon entegrasyonu için uygundur
  • Yerel iletişim: yalnızca yerel unix socket üzerinden VMs servisiyle iletişim kurar, dışa port açmaz
  • Tehlikeli işlemler için ikincil onay: sanal makine silme, ağ silme gibi işlemler varsayılan olarak onay gerektirir

Hızlı Başlangıç​

# 在终端中执行(可通过本地终端、SSH、脚本、AI 工具等任意命令行途径)
vms --help

# 查看虚拟机列表
vms vm list

# 查看虚拟机详情
vms vm get <id>

# 以 JSON 格式输出(便于脚本解析)
vms vm list --json

vms vm list çıktı örneği:

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 -

Genel Seçenekler​

Aşağıdaki seçenekler tüm komutlar için geçerlidir:

SeçenekKısaAçıklama
--help-hKomut yardım bilgisini gösterir
--version-vSürüm numarasını gösterir (--json ile yapılandırılmış bilgi çıktısı verilebilir)
--json-JSON biçiminde çıktı verir
--yes-yTehlikeli işlemlerin onay istemini atlar (etkileşimsiz modda mutlaka kullanılmalıdır)
--debug-Hata ayıklama çıktısını etkinleştirir, ayrıntılı yürütme sürecini gösterir
--socket <path>-VMs unix socket yolu, varsayılan /var/api/VMs.sock
--timeout <duration>-İstek zaman aşımı süresi, varsayılan 30s

Sürüm Bilgisi Örneği​

vms --version
vms CLI v1.0.058
vms --version --json
{
"build": "20260911",
"cli_version": "v1.0.058"
}

Çalışma Ortamı​

VMs CLI, VMs uygulamasıyla birlikte kurulur. Uygulama etkinleştirildiğinde CLI'yi sistemin varsayılan PATH dizinine bağlar; SSH ile giriş yaptıktan sonra doğrudan kullanılabilir.

ÖğeAçıklama
CLI dosyası/Volume1/@apps/VMs/bin/vms
Komut yolu/usr/local/sbin/vms (sistem PATH'inde)
İletişim yöntemiYerel unix socket, varsayılan /var/api/VMs.sock
Hedef kullanıcıBu makineye giriş yapan yönetici

Dikkat edilmesi gerekenler:

  • CLI, yerel sanal makineleri yönetmek içindir; CLI ile diğer cihazların uzaktan yönetimi desteklenmez.
  • Arka uç her zaman HTTP 200 döndürür; komutun başarılı olup olmadığı yanıt gövdesindeki code alanına göre belirlenir ve CLI bunu çıkış koduna dönüştürür.
  • Tehlikeli işlemler (sanal makine silme, ağ silme, imaj silme, depolama alanı silme) etkileşimli modda onay ister; etkileşimsiz modda açıkça --yes geçirilmelidir.

Komut Özet Tablosu​

Aşağıda tüm vms komutlarının hızlı başvuru özeti yer alır:

Üst komutAlt komutİşlev açıklamasıOnay gerekliYüksek risk
vms--versionSürüm bilgisini gösterirHayırHayır
vms vmlistTüm sanal makineleri listelerHayırHayır
vms vmgetBelirtilen sanal makinenin ayrıntılarını görüntülerHayırHayır
vms vmlist-resourceSanal makine oluşturmak için kullanılabilir kaynakları listelerHayırHayır
vms vmlogsSanal makinenin işlem günlüklerini görüntülerHayırHayır
vms vmpoweronSanal makineyi başlatırHayırHayır
vms vmpoweroffSanal makineyi kapatır (normal kapatma)EvetHayır
vms vmforce-poweroffSanal makineyi zorla kapatırEvet✅
vms vmrebootSanal makineyi yeniden başlatırHayırHayır
vms vmpauseSanal makineyi duraklatırHayırHayır
vms vmresumeDuraklatılmış sanal makineyi sürdürürHayırHayır
vms vmautorunOtomatik başlatmayı ayarlarHayırHayır
vms vmcloneSanal makineyi klonlarHayırHayır
vms vmexportSanal makineyi OVA dosyası olarak dışa aktarırHayırHayır
vms vmdeleteSanal makineyi silerEvet✅
vms vm disklistSanal makinenin sanal sabit disklerini görüntülerHayırHayır
vms vm snapshotlistSanal makinenin anlık görüntülerini listelerHayırHayır
vms vm snapshotcreateAnlık görüntü oluştururHayırHayır
vms vm snapshoteditAnlık görüntü açıklamasını ve kilit durumunu düzenlerHayırHayır
vms vm snapshotconfigAnlık görüntüde kayıtlı sanal makine yapılandırmasını görüntülerHayırHayır
vms vm snapshotconsistencyAnlık görüntü tutarlılığını önizlerHayırHayır
vms vmlinkVNC konsol bağlantı bilgilerini alırHayırHayır
vms networklistSanal ağları listelerHayırHayır
vms networkgetSanal ağ ayrıntılarını görüntülerHayırHayır
vms networkcreateSanal ağ oluştururHayırHayır
vms networkupdateSanal ağı güncellerHayırHayır
vms networkdeleteSanal ağı silerEvet✅
vms networklist-interfacesBelirtilen türdeki ağ arayüzlerini listelerHayırHayır
vms networklist-vnicsAğdaki sanal ağ kartlarını listelerHayırHayır
vms networkovsinfoOVS'nin etkin olup olmadığını görüntülerHayırHayır
vms imagelistİmajları listelerHayırHayır
vms imageeditİmaj bilgilerini düzenlerHayırHayır
vms imagedeleteİmajı silerEvet✅
vms imagelist-vmsBu imajı kullanan sanal makineleri görüntülerHayırHayır
vms repolistDepolama alanlarını listelerHayırHayır
vms repogetDepolama alanı ayrıntılarını görüntülerHayırHayır
vms repoupdateDepolama alanı yapılandırmasını güncellerHayırHayır
vms repodeleteDepolama alanını silerEvet✅
vms repolist-volumesKullanılabilir birimleri listelerHayırHayır
vms repolist-vmsDepolama alanındaki sanal makineleri listelerHayırHayır
vms repocheck-runningDepolama alanında çalışan sanal makineleri kontrol ederHayırHayır
vms repowhether-exist-dataDepolama alanında veri olup olmadığını kontrol ederHayırHayır
vms settinggetGenel ayarları görüntülerHayırHayır
vms collectdhostinfoAna makine izleme bilgilerini görüntülerHayırHayır
vms collectdvminfoSanal makine izleme bilgilerini görüntülerHayırHayır
vms collectdstorageinfoDepolama izleme bilgilerini görüntülerHayırHayır

Komut Referansı​

Komutlardaki <id> sanal makine ID'sidir ve sanal makine listesi çıktısındaki GUEST ID'ye karşılık gelir; <network_id>, <image_id>, <repo_id> de aynı şekilde sırasıyla vms network list, vms image list, vms repo list ile alınabilir.

Çıktı örnekleri hakkında: vms tablo çıktısı, çok uzun alan değerlerini sabit genişlikte keser (üç nokta ile biter ve terminal genişliğinden bağımsızdır); örneğin sanal makine yapılandırmasındaki VDISKS, VNICS, ISO IMAGES ile imaj adları. Bu nedenle, bu belgede uzun alan içeren komutlar için birörnek olarak tam --json çıktı örneği, diğer komutlar için tablo çıktı örneği verilmiştir. Betik işlemlerinde de birörnek olarak --json kullanmanız önerilir.

1. Sanal Makine Sorgulama​

vms vm list – Sanal makineleri listele​

Bu makinedeki tüm sanal makineleri ve temel durumlarını listeler.

vms vm list [--limit N] [--offset N] [--json]
  • --limit, --offset sayfalama parametreleridir
  • Çıktı sütunları: ad, sanal makine ID, çalışma durumu, CPU çekirdek sayısı, bellek boyutu (birim KB), IP adresi

Çıktı örneği:

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 -

STATUS yaygın değerleri:

DurumAçıklama
runningÇalışıyor
shutdownKapatıldı
savedDuraklatıldı (çalışma durumu diske kaydedildi)

vms vm get – Sanal makine ayrıntılarını görüntüle​

Belirtilen sanal makinenin tüm yapılandırmasını ve çalışma durumunu görüntüler.

vms vm get <id> --json
  • Çıktı, sanal makinenin tüm yapılandırma ve çalışma durumu alanlarını içerir
  • Açıklama yok, IP yok gibi boş değerler boş dize olarak gösterilir
  • Sanal makine mevcut değilse komut hata döndürür ve hata bilgisi verir

Çıktı örneği:

{
"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 – Sanal makine oluşturmak için kullanılabilir kaynakları listele​

Ana makinenin sunabileceği firmware türleri, imajlar, CPU, bellek, ağ, depolama alanları, doğrudan geçirilebilir cihazlar gibi kaynakları görüntüler; sanal makine oluşturmadan önce değerlendirme için kullanılır.

vms vm list-resource --json

Dönen alanlar: max_cpu_num, max_ram_size, usbs, pci_devices, networks, repos, images, video_cards, firmware, keyboard_layout.

Çıktı örneği:

{
"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 – Sanal makine işlem günlüklerini görüntüle​

Belirtilen sanal makineyle ilgili işlem günlüklerini görüntüler (açma/kapama, anlık görüntü, düzenleme, içe/dışa aktarma vb.).

vms vm logs <id> --json [--limit N] [--desc]
  • --limit döndürülecek kayıt sayısını belirtir, varsayılan 50
  • --desc zamana göre ters sıralar (varsayılan olarak açık)
  • Her günlük kaydı zaman, düzey, kategori, işlem kullanıcısı ve olay açıklamasını içerir; olay açıklaması tam metindir
  • Olay açıklaması (event), VMs servisi tarafından cihazın sistem diline göre yerelleştirilmiş olarak verilir; bu belgedeki örnekler birörnek olarak İngilizce kullanır

Çıktı örneği:

[
{
"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)"
}
]

2. Sanal Makine Güç Yönetimi​

vms vm poweron – Sanal makineyi başlat​

vms vm poweron <id>
  • Sanal makine kapatılmış durumda olmalıdır, aksi halde durum çakışması hatası döner
  • Çıktı: VM powered on: <id>

vms vm poweroff – Sanal makineyi kapat​

Sanal makineye normal kapatma isteği gönderir ve sistemin düzgün şekilde kapanmasını sağlar.

vms vm poweroff <id> [--yes]
  • Tehlikeli işlemdir: etkileşimli modda onay istenir, etkileşimsiz modda mutlaka --yes eklenmelidir
  • Sanal makine çalışır durumda olmalıdır, aksi halde durum çakışması hatası döner

Etkileşimli modda onay istemi:

This action will powered off VM "9c7078ab-a1e7-4bc0-819f-6ac83e24cfc1". Do you want to continue? [y/N]: 
  • Çıktı: VM powered off: <id>

vms vm force-poweroff – Sanal makineyi zorla kapat (yüksek risk)​

Sanal makineyi zorla kapatır; doğrudan güç kesmeye eşdeğerdir.

vms vm force-poweroff <id> [--yes]
  • Yüksek riskli işlemdir: etkileşimli modda onay istenir, etkileşimsiz modda mutlaka --yes eklenmelidir
  • Sanal makine içindeki veri kaybına yol açabilir; yalnızca sanal makine yanıt vermediğinde kullanılması önerilir

Etkileşimli modda onay istemi:

This action will force powered off VM "9c7078ab-a1e7-4bc0-819f-6ac83e24cfc1". Do you want to continue? [y/N]: 
  • Çıktı: VM force powered off: <id>

vms vm reboot – Sanal makineyi yeniden başlat​

vms vm reboot <id>
  • Çıktı: VM rebooted: <id>

vms vm pause – Sanal makineyi duraklat​

Sanal makinenin çalışma durumunu dondurur ve mevcut durumu diske kaydeder.

vms vm pause <id>
  • Sanal makine çalışır durumda olmalıdır, aksi halde durum çakışması hatası döner
  • Duraklatmadan sonra sanal makine durumu saved olarak gösterilir
  • Çıktı: VM paused: <id>

vms vm resume – Sanal makineyi sürdür​

Sanal makineyi duraklatılmış durumdan çalışır durumuna döndürür.

vms vm resume <id>
  • Sanal makine duraklatılmış durumda olmalıdır, aksi halde durum çakışması hatası döner
  • Çıktı: VM resumed: <id>

vms vm autorun – Otomatik başlatmayı ayarla​

Sanal makinenin ana makineyle birlikte otomatik başlatılıp başlatılmayacağını ayarlar.

vms vm autorun <id> <true|false>
  • İkinci parametre true veya false olmalıdır
  • Komut mevcut yapılandırmayı okur ve yalnızca otomatik başlatma anahtarını değiştirir; diğer yapılandırmalar etkilenmez
  • Çıktı: Auto-start enabled for VM <id> veya Auto-start disabled for VM <id>

3. Sanal Makine Kopyalama, Dışa Aktarma ve Silme​

vms vm clone – Sanal makineyi klonla​

Mevcut bir sanal makineyi şablon olarak kullanarak yeni bir sanal makine oluşturur.

vms vm clone --body '{"guest_id":"<source_id>","name":"my-clone"}'
vms vm clone --file clone.json
  • İstek gövdesinde guest_id kaynak sanal makine ID'sidir, name (veya guest_name) yeni sanal makinenin adıdır
  • Kaynak sanal makine kapatılmış durumda olmalıdır
  • --body istek gövdesini doğrudan JSON dizesi olarak geçirir, --file istek gövdesini dosyadan okur

vms vm export – Sanal makineyi dışa aktar​

Sanal makineyi OVA dosyası olarak dışa aktarır; yedekleme veya başka sanallaştırma platformlarına taşıma için uygundur.

vms vm export --body '{"guest_id":"<source_id>","target_ova_path":"/Volume1/export/my-vm.ova"}'
vms vm export --file export.json
  • İstek gövdesinde guest_id kaynak sanal makine ID'sidir, target_ova_path hedef dosya yoludur, ova_mode isteğe bağlı VMware uyumluluk modudur
  • Kaynak sanal makine kapatılmış durumda olmalıdır
  • Dışa aktarma zaman alan bir görevdir; büyük kapasiteli sanal makinelerin dışa aktarımı uzun sürer

vms vm delete – Sanal makineyi sil (yüksek risk)​

Sanal makineyi kalıcı olarak siler.

vms vm delete <id> [--yes]
  • Yüksek riskli işlemdir: etkileşimli modda onay istenir, etkileşimsiz modda mutlaka --yes eklenmelidir
  • Silme işleminden sonra geri alınamaz; sanal makine içindeki verilerin yedeklendiğini önceden doğrulayın

Etkileşimli modda onay istemi:

This action will permanently delete VM "5a0391f2-c545-45eb-8eed-0a104972229b". Do you want to continue? [y/N]: 
  • Çıktı: VM deleted: <id>

4. Sanal Sabit Diskler​

vms vm disk list – Sanal sabit diskleri görüntüle​

Belirtilen sanal makinenin tüm sanal sabit disklerini listeler.

vms vm disk list <id> [--json]

Çıktı örneği:

NAME  VDISK ID                              VDISK SIZE  VDISK MODE  IDX
- f4ed4eae-1512-4273-963b-79ebd93a0932 1024 1 0
  • VDISK MODE sanal sabit disk denetleyici türü numarasıdır, 1 IDE'yi ifade eder
  • Adlandırılmamış sanal sabit diskler NAME sütununda - olarak gösterilir

5. Anlık Görüntü Yönetimi​

vms vm snapshot list – Anlık görüntüleri listele​

vms vm snapshot list <id> [--json]

Çıktı örneği:

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 anlık görüntü oluşturulduğunda sanal makinenin çalışma durumudur
  • ACTUAL CONSISTENCY anlık görüntünün tutarlılık türüdür; filesystem dosya sistemi tutarlılığını, crash çökme tutarlılığını ifade eder

vms vm snapshot create – Anlık görüntü oluştur​

Sanal makine için anlık görüntü oluşturur; hızlı geri alma veya mevcut durumu yedekleme için kullanılır.

vms vm snapshot create <id>
vms vm snapshot create <id> --body '{"description":"before-upgrade","locked":false}'
  • İstek gövdesi isteğe bağlıdır: description anlık görüntü açıklamasıdır, locked kilitli olup olmadığıdır
  • Anlık görüntü adı sistem tarafından oluşturulma zamanına göre otomatik oluşturulur
  • Anlık görüntüler depolama alanı kaplar; uzun süre temizlenmezse depolama alanını doldurabilir, düzenli olarak temizlenmesi önerilir

vms vm snapshot edit – Anlık görüntüyü düzenle​

Anlık görüntünün açıklamasını veya kilit durumunu değiştirir.

vms vm snapshot edit <id> <snapshot_name> --body '{"description":"updated description"}'
vms vm snapshot edit <id> <snapshot_name> --body '{"locked":true}'
  • Yalnızca istek gövdesinde yer alan alanlar değiştirilir, yer almayan alanlar mevcut değerini korur; yalnızca açıklamayı değiştirmek kilit durumunu değiştirmez, tersi de geçerlidir

Çıktı örneği:

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 – Anlık görüntüdeki sanal makine yapılandırmasını görüntüle​

Anlık görüntüde kayıtlı sanal makine yapılandırmasını görüntüler.

vms vm snapshot config <id> <snapshot_name>

<id> sanal makine ID'sidir, <snapshot_name> anlık görüntü adıdır ve vms vm snapshot list <id> ile alınabilir.

Çıktı örneği:

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 – Anlık görüntü tutarlılığını önizle​

Anlık görüntü oluşturmadan önce elde edilebilecek tutarlılık türünü önizler; mevcut durumun anlık görüntü oluşturmaya uygun olup olmadığını değerlendirmeye yardımcı olur.

vms vm snapshot consistency <id>

Çıktı örneği:

PROPERTY          VALUE
CONSISTENCY TYPE filesystem
REASON vm_shutdown
VM STATE shutdown

Sanal makine kapatılmış durumdayken oluşturulan anlık görüntü dosya sistemi tutarlı olur; çalışır durumdayken genellikle yalnızca çökme tutarlı anlık görüntü elde edilebilir.

6. Uzak Konsol​

Sanal makinenin VNC konsol bağlantı bilgilerini alır; uzak konsolu tarayıcıda açmak için kullanılır.

vms vm link <id> --json
  • Sanal makine çalışıyor veya duraklatılmış durumda olmalıdır, aksi halde durum çakışması hatası döner

Çıktı örneği:

{
"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 NAS yönetim adresine göre konsol yoludur, port konsol servis portudur, https HTTPS üzerinden erişim gerekip gerekmediğini belirtir
  • JSON çıktısında URL içindeki & karakteri \u0026 olarak kaçışlanır

7. Sanal Ağ Yönetimi​

Ağ türleri ikiye ayrılır:

TürAçıklama
Özel (private)Yalnızca bu makinedeki sanal makineler arası iletişim için dahili ağ; fiziksel ağ kartına bağlanmaz
Harici (external)Fiziksel ağ kartına bağlanan ağ; sanal makineler bu ağ üzerinden dış dünyayla iletişim kurabilir

vms network list – Sanal ağları listele​

vms network list [--limit N] [--offset N] [--json]

Çıktı örneği:

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 bu ağa bağlı sanal makine sayısıdır, NUM INTERFACES seçilmiş fiziksel ağ kartı sayısıdır

vms network get – Sanal ağ ayrıntılarını görüntüle​

vms network get <network_id> --json

Çıktı örneği:

{
"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 bu ağa bağlı ağ kartı bilgileridir ve ana makine ID'sine göre düzenlenir; checked ilgili ağ kartının seçilip seçilmediğini gösterir
  • metadata ağın oluşturulma ve güncellenme zamanını kaydeder

vms network create – Sanal ağ oluştur​

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

Özel ağ oluşturma:

  • İstek gövdesi name, type (private), host_name veya host_id içermelidir; ağın hangi ana makinede oluşturulacağını belirtir
  • Oluşturmadan önce vms network list-interfaces private ile kullanılabilir ana makineleri görüntüleyebilirsiniz

Harici ağ oluşturma:

  • İstek gövdesi name, type (external), vlan_id içermeli ve en az bir fiziksel ağ kartı belirtmelidir
  • Ağ kartı interface_name (örn. LAN 1) veya interface_id ile belirtilebilir; ağ kartı adı ana makineler arasında benzersiz değilse host_name ile birlikte kullanılmalıdır
  • Oluşturmadan önce vms network list-interfaces external ile kullanılabilir ağ kartlarını görüntüleyebilirsiniz

Çıktı, oluşturulmuş ağ bilgisidir ve vms network get yapısıyla aynıdır:

{
"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
}

Ağ kartı belirtilmediğinde komut bir uyarı verir:

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 – Sanal ağı güncelle​

Yalnızca değiştirilmesi gereken alanları gönderin; gönderilmeyen alanlar mevcut değerini korur.

vms network update --body '{"network_id":"<network_id>","name":"renamed"}'
vms network update --body '{"network_id":"<network_id>","vlan_id":200}'
  • İstek gövdesi network_id içermelidir
  • Komut önce mevcut ağ yapılandırmasını okur ve gönderilen alanları birleştirir; ağ adı ve seçilmiş ağ kartları temizlenmez
  • Çıktı, güncellenmiş ağ bilgisidir

vms network delete – Sanal ağı sil (yüksek risk)​

vms network delete <network_id> [--yes]
  • Yüksek riskli işlemdir: etkileşimli modda onay istenir, etkileşimsiz modda mutlaka --yes eklenmelidir
  • Ağı silmek, bu ağa bağlı tüm sanal makinelerin bağlantısını keser
  • Önce vms network list-vnics <network_id> ile bağlı sanal makineleri doğrulamanız önerilir

Etkileşimli modda onay istemi:

This action will delete network "b364a1ec-f60c-4971-9ea2-f7a002f09fa3". Do you want to continue? [y/N]: 
  • Çıktı: Network deleted: <network_id>

vms network list-interfaces – Ağ arayüzlerini listele​

Belirtilen türdeki ağ arayüzlerini listeler.

vms network list-interfaces external [--limit N] [--offset N]
vms network list-interfaces private [--limit N] [--offset N]
  • external ana makinede kullanılabilir fiziksel ağ kartlarını döndürür
  • private özel ağ oluşturmak için kullanılabilir ana makine bilgilerini döndürür

Çıktı örneği (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

Çıktı örneği (private):

INTERFACE NAME  INTERFACE ID  HOST NAME  STATUS  IP  SPEED MBS
- - A-eae4 - - 0

vms network list-vnics – Ağdaki sanal ağ kartlarını listele​

vms network list-vnics <network_id> [--limit N] [--offset N] [--json]

Çıktı örneği:

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 – OVS durumunu görüntüle​

Open vSwitch sanal anahtarının etkin olup olmadığını doğrular.

vms network ovsinfo [--json]

Çıktı örneği:

PROPERTY  VALUE
RESULT true

VALUE değerinin true olması OVS'nin etkin olduğunu gösterir.

8. İmaj Yönetimi​

vms image list – İmajları listele​

Sanal makine oluşturmak için kullanılabilir sistem imaj dosyalarını listeler.

vms image list --json
  • image_name imaj adıdır, file_name ilgili dosya adıdır
  • type imaj biçimidir, örneğin iso, qcow2
  • status imaj durumudur, available kullanılabilir anlamına gelir
  • repos imajın bulunduğu depolama alanlarıdır
  • progress imaj işleme görevinin ilerlemesidir, 0 devam eden görev olmadığını gösterir

Çıktı örneği:

{
"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 – İmajı düzenle​

İmaj adını değiştirir veya imajın bulunduğu depolama alanını ayarlar.

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"}'
  • İstek gövdesi image_id ve repos içermelidir; repos imajın tam hedef depolama alanı listesidir ve boş olamaz
  • image_name, file_name, type, file_size isteğe bağlı alanlardır; sağlanmadığında mevcut değerler kullanılır
  • repos boş olması imajın tüm depolama alanlarından çıkarılmasına yol açar; komut yürütmeden önce bu isteği reddeder
  • Çıktı: Image updated

vms image delete – İmajı sil (yüksek risk)​

vms image delete --image-id <image_id> [--yes]
  • --image-id zorunludur
  • Yüksek riskli işlemdir: etkileşimli modda onay istenir, etkileşimsiz modda mutlaka --yes eklenmelidir
  • İmajı silmek oluşturulmuş sanal makineleri etkilemez, ancak bu imaja dayalı sonraki sanal makine oluşturma işlemlerini etkiler
  • Önce vms image list-vms --image-id <image_id> ile kullanım durumunu doğrulamanız önerilir

Etkileşimli modda onay istemi:

This action will permanently delete image "efd6da18-9475-44cf-8fb0-e2513421e68a". Do you want to continue? [y/N]: 
  • Çıktı: Image deleted: <image_id>

vms image list-vms – Bu imajı kullanan sanal makineleri görüntüle​

vms image list-vms --image-id <image_id> [--json]

Çıktı örneği:

GUEST NAME
1454486

İmajı silmeden önce bu komutu çalıştırarak etki alanını doğrulayabilirsiniz; imajı kullanan sanal makine yoksa çıktı boştur.

9. Depolama Alanı Yönetimi​

vms repo list – Depolama alanlarını listele​

vms repo list [--json]

Çıktı örneği:

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 – Depolama alanı ayrıntılarını görüntüle​

vms repo get <repo_id> [--json]

Çıktı örneği:

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 depolama alanının bulunduğu birimdir
  • SOFT LIMIT, HARD LIMIT kapasite uyarı eşikleridir (yüzde)
  • ENABLE LOWER NOTIFY yetersiz kapasite hatırlatmasının etkin olup olmadığıdır

vms repo update – Depolama alanını güncelle​

Yalnızca değiştirilmesi gereken alanları gönderin; gönderilmeyen alanlar mevcut değerini korur.

vms repo update --body '{"repo_id":"<repo_id>","name":"new-name"}'
vms repo update --body '{"repoId":"<repo_id>","enable_lower_notify":true}'
  • Depolama alanı ID'si repo_id veya repoId ile geçirilebilir
  • Komut önce mevcut yapılandırmayı okur ve gönderilen alanları birleştirir; diğer ayarlar kaybolmaz
  • Çıktı, güncellenmiş depolama alanı bilgisidir

vms repo delete – Depolama alanını sil (yüksek risk)​

vms repo delete <repo_id> <true|false> [--yes]
  • İkinci parametre need_save_data şeklindedir: true diskteki veri dosyalarının korunacağını, false verilerle birlikte silineceğini belirtir
  • Yüksek riskli işlemdir: etkileşimli modda onay istenir, etkileşimsiz modda mutlaka --yes eklenmelidir
  • Depolama alanı silme, içindeki sanal makineleri ve imajları da kaldırır; önce vms repo check-running ve vms repo whether-exist-data çalıştırarak etki alanını doğrulamanız önerilir

Etkileşimli modda onay istemi:

This action will delete repository "735ef7f7-5d8d-4102-9377-8a7b8c33cda6" (save data: true). Do you want to continue? [y/N]: 
  • Çıktı: Repository deleted: <repo_id>

vms repo list-volumes – Kullanılabilir birimleri listele​

Depolama alanı oluşturmak için kullanılabilir birimleri listeler.

vms repo list-volumes [--json]

Çıktı örneği:

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 – Depolama alanındaki sanal makineleri listele​

vms repo list-vms --body '{"repo_id":"<repo_id>"}'
  • Depolama alanı ID'si repo_id veya repoId ile geçirilebilir
  • Komut önce depolama alanı nesnesini alır, ardından sanal makinelerini sorgular; sonuç daha güvenilirdir

vms repo check-running – Depolama alanında çalışan sanal makineleri kontrol et​

vms repo check-running <repo_id> [--json]

Depolama alanını silmeden önce çalıştırılır; çalışan sanal makine olmadığını doğrular. Çalışan sanal makine yoksa çıktı boştur.

vms repo whether-exist-data – Depolama alanında veri olup olmadığını kontrol et​

vms repo whether-exist-data --body '{"repo_id":"<repo_id>"}'

Depolama alanını silmeden önce çalıştırılır; depolama alanında hâlâ veri olup olmadığını doğrular. Web arayüzünde depolama alanı silmeden önce yapılan ön kontrolle aynıdır.

10. Genel Ayarlar​

vms setting get – Genel ayarları görüntüle​

VMs uygulamasının genel yapılandırmasını görüntüler.

vms setting get [--json]

Çıktı örneği:

PROPERTY                VALUE
HOST SHUTDOWN BEHAVIOR 1
KB LAYOUT en-us
SHOW VIRTIO BLK VDISK false
  • HOST SHUTDOWN BEHAVIOR ana makine kapanırken sanal makinelere uygulanacak işlem yöntemidir
  • KB LAYOUT sanal makinenin klavye düzenidir

11. İzleme Bilgisi Sorgulama​

vms collectd hostinfo – Ana makine izleme bilgilerini görüntüle​

vms collectd hostinfo [--limit N] [--offset N] [--json]

Çıktı örneği:

NAME    ID  STATUS   TYPE     CPU USAGE  RAM USAGE  DESC
A-eae4 - running healthy 2.53 15.66 Info

vms collectd vminfo – Sanal makine izleme bilgilerini görüntüle​

vms collectd vminfo [--limit N] [--offset N] [--json]

Çıktı örneği:

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 – Depolama izleme bilgilerini görüntüle​

vms collectd storageinfo [--limit N] [--offset N] [--json]

Çıktı örneği:

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

Etkileşimli Mod ve Etkileşimsiz Mod​

CLI, geçerli ortamın bir terminal olup olmadığını belirler ve farklı davranışlar uygular:

Etkileşimli Mod (Terminal Ortamı)​

  • Tehlikeli işlemler onay istemi gösterir, varsayılan seçenek Hayır'dır
  • Devam etmek için y veya Y, iptal etmek için n veya doğrudan Enter girin
  • İşlem iptal edildiğinde Operation cancelled çıktısı verilir ve çıkış kodu 99 olur

Etkileşimsiz Mod (Betik/Otomasyon)​

  • Tehlikeli işlemler onayı atlamak için mutlaka --yes kullanmalıdır, aksi halde komut doğrudan hata verir ve çıkış kodu 1 döner
  • Terminal ortamı yoksa giriş beklemez; betikler ve zamanlanmış görevler için uygundur
  • Başarı, hata ve durum çakışmasını ayırt etmek için betiklerde çıkış kodunu açıkça ele almanız önerilir

JSON Çıktı Biçimi​

Sorgulama komutları --json parametresini destekler ve programatik ayrıştırmayı kolaylaştırmak için standartlaştırılmış JSON verisi verir.

Biçim kuralları:

  • Alan adları snake_case kullanır
  • Boolean değerler true/false şeklindedir
  • Zaman, ISO 8601 biçiminde nanosaniye hassasiyeti ve UTC+8 ofsetiyle kullanılır (örn. 2026-09-02T11:43:51.176535374+08:00)
  • JSON çıktısı stdout'a, hata bilgileri stderr'e yazılır
  • Tablo çıktısında kesilen uzun alanlar JSON çıktısında tam değer olarak yer alır

Örnek:

vms setting get --json
{
"host_shutdown_behavior": 1,
"kb_layout": "en-us",
"show_virtio_blk_vdisk": false
}

Farklı komutların JSON yapıları biraz farklılık gösterir: vms vm list, vms vm snapshot list, vms vm logs doğrudan dizi verir; diğer liste komutları totalCount ve veri alanları içeren bir nesne verir; veri alanı adı kaynağa göre değişir (örn. items, hosts, vms, storage). Örneğin 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"
}
}
}

Bazı komutların JSON çıktısı basit bir değerdir; örneğin vms network ovsinfo --json true verir, vms vm pause --json null verir.

Çıkış Kodu Açıklaması​

Çıkış koduAnlamıTipik durum
0BaşarılıKomut normal şekilde tamamlandı
1Parametre hatasıZorunlu parametre eksik, parametre biçimi hatalı, --yes eklenmemiş
3Kaynak mevcut değilKomutun ön doğrulaması geçilemedi, örneğin belirtilen imaj mevcut değil
4Durum çakışmasıSanal makinenin mevcut durumu bu işleme izin vermiyor (örn. kapatılmış sanal makinede kapatma işlemi)
6Bağlantı hatasıVMs servisine bağlanılamıyor veya socket yolu doğru değil
7Zaman aşımıİstek zaman aşımına uğradı, --timeout ile ayarlanabilir
9Yürütme hatasıArka uç hata döndürdü (hata mesajı code_num ve hata açıklaması içerir)
99Kullanıcı iptaliEtkileşimli onayda Hayır seçildi veya doğrudan Enter basıldı

Örnek:

# 退出码 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

Kullanım Senaryosu Örnekleri​

Günlük Operasyon ve Bakım​

# 查看所有虚拟机状态
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>

Betikle Toplu İşlemler​

# 批量启动所有已关机的虚拟机
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'

Yedekleme ve Denetim​

# 关机后为虚拟机创建快照
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"}'

Silmeden Önce Kontrol​

# 删除存储空间前,先确认是否有虚拟机正在运行、是否存在数据
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>

AI Aracı Çağrısı​

# AI 工具可通过命令行调用 vms 命令
# 例如:获取虚拟机与宿主机状态供 AI 分析
vms vm list --json
vms collectd hostinfo --json

# AI 可解析 JSON 输出并作出决策
vms vm list-resource --json

Dahili Geliştirme ve Sistem Entegrasyonu​

# 开发人员可通过 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 @-

Sık Sorulan Sorular​

S: CLI için ek kurulum gerekir mi?

Gerekmez. CLI, VMs uygulamasıyla birlikte kurulur; uygulama etkinleştirildikten sonra doğrudan vms komutunu çalıştırarak kullanabilirsiniz.

S: CLI mutlaka SSH üzerinden mi kullanılmalıdır?

Hayır. CLI herhangi bir komut satırı terminalinden çağrılabilir; yerel terminal, uzak SSH, betik, AI aracı vb. dahil.

S: CLI diğer cihazlardaki sanal makineleri yönetebilir mi?

Hayır. CLI, yerel unix socket üzerinden VMs servisiyle iletişim kurar ve yalnızca yerel sanal makineleri yönetmek içindir.

S: Neden bazı komutlar onay isterken bazıları istemiyor?

Sanal makine silme, ağ silme, imaj silme, depolama alanı silme ve kapatma (poweroff, force-poweroff) gibi işlemler veriyi veya servisleri etkilediğinden varsayılan olarak onay gerektirir; başlatma, yeniden başlatma, duraklatma, sürdürme ve sorgulama komutlarında böyle bir kısıtlama yoktur.

S: Etkileşimsiz modda tehlikeli işlemler nasıl onaylanır?

Tüm tehlikeli işlemlere --yes parametresi eklenmelidir, aksi halde komut hata vererek çıkar (çıkış kodu 1).

S: Betikte komutun başarıyla yürütülüp yürütülmediği nasıl anlaşılır?

Çıkış koduyla belirlenir: 0 başarılı, 0 dışındaki değerler başarısız anlamına gelir. Ayrıca --json çıktı içeriği ayrıştırılabilir.

S: --json çıktısındaki liste neden bir nesnedir?

Bazı komutların JSON çıktısı ID'ye göre nesne olarak düzenlenir ve totalCount alanı eklenir; ID'ye göre doğrudan kullanımı kolaylaştırır.

Daha Fazla Yardım​

Her komut, ayrıntılı kullanımı görüntülemek için --help destekler:

vms --help
vms vm --help
vms vm poweroff --help
vms network create --help