Skip to main content
Version: TOS 7

VMs CLI

Einführung​

VMs CLI ist das Kommandozeilen-Verwaltungswerkzeug der TerraMaster VMs-Virtualisierungsanwendung und bietet Abfrage- und Betriebsfunktionen, die mit der Web-Verwaltungsoberfläche übereinstimmen. Die CLI kommuniziert über einen lokalen unix socket mit dem VMs-Dienst, verwendet eine standardisierte Befehlsschnittstelle und ein JSON-Ausgabeformat und lässt sich in Skripte, automatisierte Abläufe und Workflows zur Sekundärentwicklung integrieren.

Hauptmerkmale​

  • Sofort einsatzbereit: wird zusammen mit der VMs-Anwendung installiert, keine zusätzliche Installation erforderlich
  • Flexible Aufrufmöglichkeiten: unterstützt lokale Terminals, entferntes SSH, Skripte, KI-Werkzeuge und viele weitere Aufrufwege
  • Zweifacher Modus, interaktiv und nicht interaktiv: geeignet sowohl für die tägliche Wartung durch Administratoren als auch für Skripte und automatisierte Aufgaben
  • JSON-Ausgabeunterstützung: praktisch für die Programmauswertung und die automatisierte Integration
  • Lokale Kommunikation: kommuniziert nur über einen lokalen unix socket mit dem VMs-Dienst und öffnet keine Ports nach außen
  • Sekundäre Bestätigung gefährlicher Vorgänge: Vorgänge wie das Löschen einer virtuellen Maschine oder das Löschen eines Netzwerks erfordern standardmäßig eine Bestätigung

Schnellstart​

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

# 查看虚拟机列表
vms vm list

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

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

Ausgabebeispiel für 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 -

Globale Optionen​

Die folgenden Optionen gelten für alle Befehle:

OptionAbkürzungBeschreibung
--help-hZeigt die Hilfeinformationen zum Befehl an
--version-vZeigt die Versionsnummer an (kann mit --json kombiniert werden, um strukturierte Informationen auszugeben)
--json-Gibt die Ausgabe im JSON-Format aus
--yes-yÜberspringt die Bestätigungsaufforderung für gefährliche Vorgänge (im nicht interaktiven Modus erforderlich)
--debug-Aktiviert die Debug-Ausgabe und zeigt den detaillierten Ausführungsablauf an
--socket <path>-Pfad des VMs unix socket, Standard /var/api/VMs.sock
--timeout <duration>-Anforderungs-Zeitüberschreitung, Standard 30s

Beispiel für Versionsinformationen​

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

Laufzeitumgebung​

VMs CLI wird zusammen mit der VMs-Anwendung installiert. Wenn die Anwendung aktiviert wird, verlinkt sie die CLI in das Standard-PATH-Verzeichnis des Systems, sodass sie nach der Anmeldung über SSH direkt verwendet werden kann.

ElementBeschreibung
CLI-Datei/Volume1/@apps/VMs/bin/vms
Befehlspfad/usr/local/sbin/vms (bereits im System-PATH enthalten)
KommunikationsmethodeLokaler unix socket, Standard /var/api/VMs.sock
ZielgruppeAdministratoren, die am lokalen Gerät angemeldet sind

Hinweise:

  • Die CLI dient der Verwaltung virtueller Maschinen auf dem lokalen Gerät und unterstützt nicht die entfernte Verwaltung anderer Geräte über die CLI.
  • Das Backend gibt stets HTTP 200 zurück; ob ein Befehl erfolgreich ist, wird anhand des Felds code im Antwortkörper bestimmt, und die CLI wandelt dies entsprechend in einen Exit-Code um.
  • Gefährliche Vorgänge (Löschen einer virtuellen Maschine, Löschen eines Netzwerks, Löschen eines Images, Löschen eines Repositorys) fordern im interaktiven Modus eine Bestätigung an; im nicht interaktiven Modus muss --yes ausdrücklich übergeben werden.

Befehlsübersichtstabelle​

Das Folgende ist eine Schnellreferenz-Zusammenfassung aller vms-Befehle:

Übergeordneter BefehlUnterbefehlFunktionsbeschreibungBestätigung erforderlichHohes Risiko
vms--versionZeigt Versionsinformationen anNeinNein
vms vmlistListet alle virtuellen Maschinen aufNeinNein
vms vmgetZeigt die Details einer angegebenen virtuellen Maschine anNeinNein
vms vmlist-resourceListet die für die Erstellung einer virtuellen Maschine verfügbaren Ressourcen aufNeinNein
vms vmlogsZeigt die Betriebsprotokolle einer virtuellen Maschine anNeinNein
vms vmpoweronStartet eine virtuelle MaschineNeinNein
vms vmpoweroffFährt eine virtuelle Maschine herunter (normales Herunterfahren)JaNein
vms vmforce-poweroffErzwingt das Herunterfahren einer virtuellen MaschineJa✅
vms vmrebootStartet eine virtuelle Maschine neuNeinNein
vms vmpausePausiert eine virtuelle MaschineNeinNein
vms vmresumeSetzt eine pausierte virtuelle Maschine fortNeinNein
vms vmautorunLegt den automatischen Start beim Booten festNeinNein
vms vmcloneKlont eine virtuelle MaschineNeinNein
vms vmexportExportiert eine virtuelle Maschine als OVA-DateiNeinNein
vms vmdeleteLöscht eine virtuelle MaschineJa✅
vms vm disklistZeigt die virtuellen Festplatten einer virtuellen Maschine anNeinNein
vms vm snapshotlistListet die Snapshots einer virtuellen Maschine aufNeinNein
vms vm snapshotcreateErstellt einen SnapshotNeinNein
vms vm snapshoteditBearbeitet die Snapshot-Beschreibung und den SperrstatusNeinNein
vms vm snapshotconfigZeigt die im Snapshot gespeicherte Konfiguration der virtuellen Maschine anNeinNein
vms vm snapshotconsistencyZeigt eine Vorschau der Snapshot-Konsistenz anNeinNein
vms vmlinkRuft die VNC-Konsolen-Verbindungsinformationen abNeinNein
vms networklistListet virtuelle Netzwerke aufNeinNein
vms networkgetZeigt Details eines virtuellen Netzwerks anNeinNein
vms networkcreateErstellt ein virtuelles NetzwerkNeinNein
vms networkupdateAktualisiert ein virtuelles NetzwerkNeinNein
vms networkdeleteLöscht ein virtuelles NetzwerkJa✅
vms networklist-interfacesListet Netzwerkschnittstellen eines angegebenen Typs aufNeinNein
vms networklist-vnicsListet die virtuellen Netzwerkkarten eines Netzwerks aufNeinNein
vms networkovsinfoZeigt an, ob OVS aktiviert istNeinNein
vms imagelistListet Images aufNeinNein
vms imageeditBearbeitet Image-InformationenNeinNein
vms imagedeleteLöscht ein ImageJa✅
vms imagelist-vmsZeigt die virtuellen Maschinen an, die das Image verwendenNeinNein
vms repolistListet Repositorys aufNeinNein
vms repogetZeigt Details eines Repositorys anNeinNein
vms repoupdateAktualisiert die Repository-KonfigurationNeinNein
vms repodeleteLöscht ein RepositoryJa✅
vms repolist-volumesListet die verfügbaren Volumes aufNeinNein
vms repolist-vmsListet die virtuellen Maschinen in einem Repository aufNeinNein
vms repocheck-runningPrüft die in einem Repository laufenden virtuellen MaschinenNeinNein
vms repowhether-exist-dataPrüft, ob in einem Repository Daten vorhanden sindNeinNein
vms settinggetZeigt die globalen Einstellungen anNeinNein
vms collectdhostinfoZeigt die Überwachungsinformationen des Hosts anNeinNein
vms collectdvminfoZeigt die Überwachungsinformationen der virtuellen Maschine anNeinNein
vms collectdstorageinfoZeigt die Speicherüberwachungsinformationen anNeinNein

Befehlsreferenz​

In den Befehlen ist <id> die ID der virtuellen Maschine, die der GUEST ID in der Ausgabe der Liste virtueller Maschinen entspricht; <network_id>, <image_id> und <repo_id> sind analog und können jeweils über vms network list, vms image list und vms repo list abgerufen werden.

Zu den Ausgabebeispielen: Die Tabellenausgabe von vms kürzt überlange Feldwerte auf eine feste Breite (endet mit Auslassungspunkten und ist unabhängig von der Terminalbreite), zum Beispiel VDISKS, VNICS, ISO IMAGES in der Konfiguration der virtuellen Maschine sowie Image-Namen. Daher werden in diesem Dokument für Befehle mit langen Feldern einheitlich vollständige --json-Ausgabebeispiele angegeben, während für die übrigen Befehle Tabellenausgabebeispiele angegeben werden. Bei der Verarbeitung mit Skripten wird ebenfalls empfohlen, einheitlich --json zu verwenden.

I. Abfrage virtueller Maschinen​

vms vm list – Virtuelle Maschinen auflisten​

Listet alle virtuellen Maschinen auf dem lokalen Gerät und ihren grundlegenden Status auf.

vms vm list [--limit N] [--offset N] [--json]
  • --limit und --offset sind Paginierungsparameter
  • Ausgabespalten: Name, ID der virtuellen Maschine, Betriebsstatus, Anzahl der CPU-Kerne, Speichergröße (in KB), IP-Adresse

Ausgabebeispiel:

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 -

Häufige STATUS-Werte:

StatusBeschreibung
runningIn Betrieb
shutdownHeruntergefahren
savedPausiert (der Betriebszustand wurde auf die Festplatte gespeichert)

vms vm get – Details einer virtuellen Maschine anzeigen​

Zeigt die vollständige Konfiguration und den Betriebsstatus einer angegebenen virtuellen Maschine an.

vms vm get <id> --json
  • Die Ausgabe enthält alle Konfigurations- und Betriebsstatus-Felder der virtuellen Maschine
  • Leere Werte wie keine Beschreibung oder keine IP werden als leere Zeichenfolge angezeigt
  • Wenn die virtuelle Maschine nicht existiert, gibt der Befehl einen Fehler zurück und gibt Fehlerinformationen aus

Ausgabebeispiel:

{
"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 – Für die Erstellung einer virtuellen Maschine verfügbare Ressourcen auflisten​

Zeigt die Ressourcen an, die der Host bereitstellen kann, wie Firmware-Typen, Images, CPU, Speicher, Netzwerke, Repositorys und durchleitungsfähige Geräte, zur Bewertung vor der Erstellung einer virtuellen Maschine.

vms vm list-resource --json

Zurückgegebene Felder: max_cpu_num, max_ram_size, usbs, pci_devices, networks, repos, images, video_cards, firmware, keyboard_layout.

Ausgabebeispiel:

{
"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 – Betriebsprotokolle einer virtuellen Maschine anzeigen​

Zeigt die Betriebsprotokolle im Zusammenhang mit einer angegebenen virtuellen Maschine an (Ein-/Ausschalten, Snapshots, Bearbeiten, Import/Export usw.).

vms vm logs <id> --json [--limit N] [--desc]
  • --limit gibt die Anzahl der zurückgegebenen Einträge an, Standard 50
  • --desc sortiert in umgekehrter zeitlicher Reihenfolge (standardmäßig aktiviert)
  • Jeder Protokolleintrag enthält Zeit, Stufe, Kategorie, bedienenden Benutzer und Ereignisbeschreibung; die Ereignisbeschreibung ist der vollständige Text
  • Die Ereignisbeschreibung (event) wird vom VMs-Dienst entsprechend der Systemsprache des Geräts lokalisiert ausgegeben; die Beispiele in diesem Dokument verwenden einheitlich Englisch

Ausgabebeispiel:

[
{
"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. Energieverwaltung virtueller Maschinen​

vms vm poweron – Eine virtuelle Maschine starten​

vms vm poweron <id>
  • Die virtuelle Maschine muss sich im heruntergefahrenen Zustand befinden, andernfalls wird ein Statuskonfliktfehler zurückgegeben
  • Ausgabe: VM powered on: <id>

vms vm poweroff – Eine virtuelle Maschine herunterfahren​

Sendet eine normale Herunterfahren-Anforderung an die virtuelle Maschine, damit das System ordnungsgemäß heruntergefahren wird.

vms vm poweroff <id> [--yes]
  • Dies ist ein gefährlicher Vorgang: Der interaktive Modus fragt nach einer Bestätigung, im nicht interaktiven Modus muss --yes hinzugefügt werden
  • Die virtuelle Maschine muss sich im Betriebszustand befinden, andernfalls wird ein Statuskonfliktfehler zurückgegeben

Bestätigungsaufforderung im interaktiven Modus:

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

vms vm force-poweroff – Eine virtuelle Maschine zwangsweise herunterfahren (hohes Risiko)​

Erzwingt das Herunterfahren der virtuellen Maschine, gleichbedeutend mit direktem Abschalten der Stromversorgung.

vms vm force-poweroff <id> [--yes]
  • Dies ist ein Vorgang mit hohem Risiko: Der interaktive Modus fragt nach einer Bestätigung, im nicht interaktiven Modus muss --yes hinzugefügt werden
  • Er kann zu Datenverlust innerhalb der virtuellen Maschine führen; es wird empfohlen, ihn nur zu verwenden, wenn die virtuelle Maschine nicht reagiert

Bestätigungsaufforderung im interaktiven Modus:

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

vms vm reboot – Eine virtuelle Maschine neu starten​

vms vm reboot <id>
  • Ausgabe: VM rebooted: <id>

vms vm pause – Eine virtuelle Maschine pausieren​

Friert den Betriebszustand der virtuellen Maschine ein und speichert den aktuellen Zustand auf die Festplatte.

vms vm pause <id>
  • Die virtuelle Maschine muss sich im Betriebszustand befinden, andernfalls wird ein Statuskonfliktfehler zurückgegeben
  • Nach dem Pausieren wird der Status der virtuellen Maschine als saved angezeigt
  • Ausgabe: VM paused: <id>

vms vm resume – Eine virtuelle Maschine fortsetzen​

Setzt die virtuelle Maschine aus dem pausierten Zustand in den Betriebszustand zurück.

vms vm resume <id>
  • Die virtuelle Maschine muss sich im pausierten Zustand befinden, andernfalls wird ein Statuskonfliktfehler zurückgegeben
  • Ausgabe: VM resumed: <id>

vms vm autorun – Automatischen Start beim Booten festlegen​

Legt fest, ob die virtuelle Maschine beim Start des Hosts automatisch hochfährt.

vms vm autorun <id> <true|false>
  • Der zweite Parameter muss true oder false sein
  • Der Befehl liest die aktuelle Konfiguration und ändert nur den Schalter für den automatischen Start; andere Konfigurationen sind nicht betroffen
  • Ausgabe: Auto-start enabled for VM <id> oder Auto-start disabled for VM <id>

III. Klonen, Exportieren und Löschen virtueller Maschinen​

vms vm clone – Eine virtuelle Maschine klonen​

Erstellt eine neue virtuelle Maschine, indem eine vorhandene virtuelle Maschine als Vorlage kopiert wird.

vms vm clone --body '{"guest_id":"<source_id>","name":"my-clone"}'
vms vm clone --file clone.json
  • Im Anforderungskörper ist guest_id die ID der Quell-VM und name (oder guest_name) der Name der neuen virtuellen Maschine
  • Die Quell-VM muss sich im heruntergefahrenen Zustand befinden
  • --body übergibt den Anforderungskörper direkt als JSON-Zeichenfolge, und --file liest den Anforderungskörper aus einer Datei

vms vm export – Eine virtuelle Maschine exportieren​

Exportiert die virtuelle Maschine als OVA-Datei, zur Sicherung oder Migration auf andere Virtualisierungsplattformen.

vms vm export --body '{"guest_id":"<source_id>","target_ova_path":"/Volume1/export/my-vm.ova"}'
vms vm export --file export.json
  • Im Anforderungskörper ist guest_id die ID der Quell-VM, target_ova_path der Ziel-Dateipfad und ova_mode ein optionaler VMware-Kompatibilitätsmodus
  • Die Quell-VM muss sich im heruntergefahrenen Zustand befinden
  • Der Export ist eine zeitaufwändige Aufgabe; der Export einer virtuellen Maschine mit großer Kapazität dauert lange

vms vm delete – Eine virtuelle Maschine löschen (hohes Risiko)​

Löscht eine virtuelle Maschine dauerhaft.

vms vm delete <id> [--yes]
  • Dies ist ein Vorgang mit hohem Risiko: Der interaktive Modus fragt nach einer Bestätigung, im nicht interaktiven Modus muss --yes hinzugefügt werden
  • Nach dem Löschen kann nicht wiederhergestellt werden; bitte bestätigen Sie vorab, dass die Daten innerhalb der virtuellen Maschine gesichert wurden

Bestätigungsaufforderung im interaktiven Modus:

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

IV. Virtuelle Festplatten​

vms vm disk list – Virtuelle Festplatten anzeigen​

Listet alle virtuellen Festplatten einer angegebenen virtuellen Maschine auf.

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

Ausgabebeispiel:

NAME  VDISK ID                              VDISK SIZE  VDISK MODE  IDX
- f4ed4eae-1512-4273-963b-79ebd93a0932 1024 1 0
  • VDISK MODE ist die Typennummer des Controllers der virtuellen Festplatte; 1 steht für IDE
  • Eine unbenannte virtuelle Festplatte wird in der Spalte NAME als - angezeigt

V. Snapshot-Verwaltung​

vms vm snapshot list – Snapshots auflisten​

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

Ausgabebeispiel:

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 ist der Betriebszustand der virtuellen Maschine zum Zeitpunkt der Snapshot-Erstellung
  • ACTUAL CONSISTENCY ist der Konsistenztyp des Snapshots; filesystem steht für Dateisystemkonsistenz und crash für Absturzkonsistenz

vms vm snapshot create – Einen Snapshot erstellen​

Erstellt einen Snapshot für eine virtuelle Maschine, um schnell zum aktuellen Zustand zurückzukehren oder ihn zu sichern.

vms vm snapshot create <id>
vms vm snapshot create <id> --body '{"description":"before-upgrade","locked":false}'
  • Der Anforderungskörper ist optional: description ist die Snapshot-Beschreibung und locked gibt an, ob gesperrt wird
  • Der Snapshot-Name wird vom System anhand der Erstellungszeit automatisch generiert
  • Snapshots belegen Speicherplatz; wenn sie lange nicht bereinigt werden, können sie den Speicherplatz füllen, daher wird eine regelmäßige Bereinigung empfohlen

vms vm snapshot edit – Einen Snapshot bearbeiten​

Ändert die Beschreibung oder den Sperrstatus eines Snapshots.

vms vm snapshot edit <id> <snapshot_name> --body '{"description":"updated description"}'
vms vm snapshot edit <id> <snapshot_name> --body '{"locked":true}'
  • Nur die im Anforderungskörper vorhandenen Felder werden geändert; nicht vorhandene Felder behalten ihren ursprünglichen Wert; das Ändern nur der Beschreibung ändert nicht den Sperrstatus und umgekehrt

Ausgabebeispiel:

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 – Die Konfiguration der virtuellen Maschine eines Snapshots anzeigen​

Zeigt die im Snapshot gespeicherte Konfiguration der virtuellen Maschine an.

vms vm snapshot config <id> <snapshot_name>

<id> ist die ID der virtuellen Maschine und <snapshot_name> der Snapshot-Name, der über vms vm snapshot list <id> abgerufen werden kann.

Ausgabebeispiel:

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 – Snapshot-Konsistenz in der Vorschau anzeigen​

Zeigt vor der Erstellung eines Snapshots den möglicherweise erzielten Konsistenztyp in der Vorschau an und hilft bei der Beurteilung, ob der aktuelle Zeitpunkt für die Erstellung eines Snapshots geeignet ist.

vms vm snapshot consistency <id>

Ausgabebeispiel:

PROPERTY          VALUE
CONSISTENCY TYPE filesystem
REASON vm_shutdown
VM STATE shutdown

Wird ein Snapshot bei heruntergefahrener virtueller Maschine erstellt, erhält man einen dateisystemkonsistenten Snapshot; im Betriebszustand lässt sich üblicherweise nur ein absturzkonsistenter Snapshot erhalten.

VI. Remote-Konsole​

Ruft die Verbindungsinformationen der VNC-Konsole der virtuellen Maschine ab, um die Remote-Konsole im Browser zu öffnen.

vms vm link <id> --json
  • Die virtuelle Maschine muss sich im Betriebs- oder pausierten Zustand befinden, andernfalls wird ein Statuskonfliktfehler zurückgegeben

Ausgabebeispiel:

{
"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 ist der Konsolenpfad relativ zur NAS-Verwaltungsadresse, port ist der Konsolendienst-Port und https gibt an, ob der Zugriff über HTTPS erfolgen muss
  • In der JSON-Ausgabe wird das & in der URL als \u0026 maskiert

VII. Verwaltung virtueller Netzwerke​

Die Netzwerktypen werden in zwei Arten unterteilt:

TypBeschreibung
Privat (private)Ein internes Netzwerk nur für die Kommunikation zwischen virtuellen Maschinen auf dem lokalen Gerät, nicht an eine physische Netzwerkkarte gebunden
Extern (external)Ein an eine physische Netzwerkkarte gebundenes Netzwerk, über das virtuelle Maschinen mit der Außenwelt kommunizieren können

vms network list – Virtuelle Netzwerke auflisten​

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

Ausgabebeispiel:

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 ist die Anzahl der an das Netzwerk angeschlossenen virtuellen Maschinen und NUM INTERFACES die Anzahl der ausgewählten physischen Netzwerkkarten

vms network get – Details eines virtuellen Netzwerks anzeigen​

vms network get <network_id> --json

Ausgabebeispiel:

{
"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 sind die an das Netzwerk gebundenen Netzwerkkarteninformationen, organisiert nach Host-ID, und checked gibt an, ob die Netzwerkkarte ausgewählt ist
  • metadata zeichnet die Erstellungs- und Aktualisierungszeiten des Netzwerks auf

vms network create – Ein virtuelles Netzwerk erstellen​

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

Ein privates Netzwerk erstellen:

  • Der Anforderungskörper muss name, type (private) und host_name oder host_id enthalten und angeben, auf welchem Host das Netzwerk erstellt wird
  • Vor der Erstellung können die verfügbaren Hosts über vms network list-interfaces private angezeigt werden

Ein externes Netzwerk erstellen:

  • Der Anforderungskörper muss name, type (external) und vlan_id enthalten, und es muss mindestens eine physische Netzwerkkarte angegeben werden
  • Die Netzwerkkarte kann über interface_name (wie LAN 1) oder interface_id angegeben werden; wenn der Netzwerkkartenname hostübergreifend nicht eindeutig ist, muss er zusammen mit host_name verwendet werden
  • Vor der Erstellung können die verfügbaren Netzwerkkarten über vms network list-interfaces external angezeigt werden

Die Ausgabe sind die Netzwerkinformationen nach der Erstellung, konsistent mit der Struktur von 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
}

Wenn keine Netzwerkkarte angegeben wird, gibt der Befehl einen Hinweis aus:

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 – Ein virtuelles Netzwerk aktualisieren​

Es werden nur die zu ändernden Felder übermittelt; nicht übermittelte Felder behalten ihren ursprünglichen Wert.

vms network update --body '{"network_id":"<network_id>","name":"renamed"}'
vms network update --body '{"network_id":"<network_id>","vlan_id":200}'
  • Der Anforderungskörper muss network_id enthalten
  • Der Befehl liest zunächst die aktuelle Netzwerkkonfiguration und führt die übermittelten Felder zusammen; der Netzwerkname und die ausgewählten Netzwerkkarten werden nicht geleert
  • Die Ausgabe sind die aktualisierten Netzwerkinformationen

vms network delete – Ein virtuelles Netzwerk löschen (hohes Risiko)​

vms network delete <network_id> [--yes]
  • Dies ist ein Vorgang mit hohem Risiko: Der interaktive Modus fragt nach einer Bestätigung, im nicht interaktiven Modus muss --yes hinzugefügt werden
  • Das Löschen eines Netzwerks trennt alle an dieses Netzwerk angeschlossenen virtuellen Maschinen
  • Es wird empfohlen, zunächst über vms network list-vnics <network_id> die angeschlossenen virtuellen Maschinen zu bestätigen

Bestätigungsaufforderung im interaktiven Modus:

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

vms network list-interfaces – Netzwerkschnittstellen auflisten​

Listet Netzwerkschnittstellen eines angegebenen Typs auf.

vms network list-interfaces external [--limit N] [--offset N]
vms network list-interfaces private [--limit N] [--offset N]
  • external gibt die auf dem Host verfügbaren physischen Netzwerkkarten zurück
  • private gibt die zur Erstellung eines privaten Netzwerks verfügbaren Hostinformationen zurück

Ausgabebeispiel (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

Ausgabebeispiel (private):

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

vms network list-vnics – Die virtuellen Netzwerkkarten eines Netzwerks auflisten​

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

Ausgabebeispiel:

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-Status anzeigen​

Bestätigt, ob der virtuelle Switch Open vSwitch aktiviert ist.

vms network ovsinfo [--json]

Ausgabebeispiel:

PROPERTY  VALUE
RESULT true

Ein VALUE von true bedeutet, dass OVS aktiviert ist.

VIII. Image-Verwaltung​

vms image list – Images auflisten​

Listet die zur Erstellung virtueller Maschinen verfügbaren System-Image-Dateien auf.

vms image list --json
  • image_name ist der Image-Name und file_name der entsprechende Dateiname
  • type ist das Image-Format, wie iso oder qcow2
  • status ist der Image-Status; available bedeutet verfügbar
  • repos ist das Repository, in dem sich das Image befindet
  • progress ist der Fortschritt der Image-Verarbeitungsaufgabe; 0 bedeutet, dass keine Aufgabe läuft

Ausgabebeispiel:

{
"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 – Ein Image bearbeiten​

Ändert den Image-Namen oder passt das Repository an, in dem sich das Image befindet.

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"}'
  • Der Anforderungskörper muss image_id und repos enthalten; repos ist die vollständige Liste der Ziel-Repositorys des Images und darf nicht leer sein
  • image_name, file_name, type und file_size sind optionale Felder; wenn sie nicht angegeben werden, werden die aktuellen Werte verwendet
  • Ein leeres repos würde dazu führen, dass das Image aus allen Repositorys entfernt wird; der Befehl lehnt die Anforderung vor der Ausführung ab
  • Ausgabe: Image updated

vms image delete – Ein Image löschen (hohes Risiko)​

vms image delete --image-id <image_id> [--yes]
  • --image-id ist erforderlich
  • Dies ist ein Vorgang mit hohem Risiko: Der interaktive Modus fragt nach einer Bestätigung, im nicht interaktiven Modus muss --yes hinzugefügt werden
  • Das Löschen eines Images wirkt sich nicht auf bereits erstellte virtuelle Maschinen aus, beeinflusst aber die spätere Erstellung virtueller Maschinen auf Basis dieses Images
  • Es wird empfohlen, zunächst die Verwendung über vms image list-vms --image-id <image_id> zu bestätigen

Bestätigungsaufforderung im interaktiven Modus:

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

vms image list-vms – Die virtuellen Maschinen anzeigen, die das Image verwenden​

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

Ausgabebeispiel:

GUEST NAME
1454486

Vor dem Löschen eines Images kann dieser Befehl ausgeführt werden, um den Auswirkungsumfang zu bestätigen; wenn keine virtuelle Maschine das Image verwendet, ist die Ausgabe leer.

IX. Repository-Verwaltung​

vms repo list – Repositorys auflisten​

vms repo list [--json]

Ausgabebeispiel:

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 – Details eines Repositorys anzeigen​

vms repo get <repo_id> [--json]

Ausgabebeispiel:

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 ist das Volume, in dem sich das Repository befindet
  • SOFT LIMIT und HARD LIMIT sind Schwellenwerte für Kapazitätswarnungen (Prozent)
  • ENABLE LOWER NOTIFY gibt an, ob die Erinnerung bei geringer Kapazität aktiviert ist

vms repo update – Ein Repository aktualisieren​

Es werden nur die zu ändernden Felder übermittelt; nicht übermittelte Felder behalten ihren ursprünglichen Wert.

vms repo update --body '{"repo_id":"<repo_id>","name":"new-name"}'
vms repo update --body '{"repoId":"<repo_id>","enable_lower_notify":true}'
  • Die Repository-ID kann über repo_id oder repoId übergeben werden
  • Der Befehl liest zunächst die aktuelle Konfiguration und führt die übermittelten Felder zusammen; andere Einstellungen gehen nicht verloren
  • Die Ausgabe sind die aktualisierten Repository-Informationen

vms repo delete – Ein Repository löschen (hohes Risiko)​

vms repo delete <repo_id> <true|false> [--yes]
  • Der zweite Parameter ist need_save_data: true bedeutet, die Datendateien auf der Festplatte zu behalten, und false bedeutet, sie zusammen mit den Daten zu löschen
  • Dies ist ein Vorgang mit hohem Risiko: Der interaktive Modus fragt nach einer Bestätigung, im nicht interaktiven Modus muss --yes hinzugefügt werden
  • Beim Löschen eines Repositorys werden gleichzeitig die darin enthaltenen virtuellen Maschinen und Images entfernt; es wird empfohlen, zunächst vms repo check-running und vms repo whether-exist-data auszuführen, um den Auswirkungsumfang zu bestätigen

Bestätigungsaufforderung im interaktiven Modus:

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

vms repo list-volumes – Die verfügbaren Volumes auflisten​

Listet die zur Erstellung eines Repositorys verfügbaren Volumes auf.

vms repo list-volumes [--json]

Ausgabebeispiel:

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 – Die virtuellen Maschinen in einem Repository auflisten​

vms repo list-vms --body '{"repo_id":"<repo_id>"}'
  • Die Repository-ID kann über repo_id oder repoId übergeben werden
  • Der Befehl ruft zunächst das Repository-Objekt ab und fragt dann dessen virtuelle Maschinen ab, wodurch das Ergebnis zuverlässiger wird

vms repo check-running – Die in einem Repository laufenden virtuellen Maschinen prüfen​

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

Vor dem Löschen eines Repositorys ausführen, um zu bestätigen, dass keine virtuelle Maschine läuft; wenn keine virtuelle Maschine läuft, ist die Ausgabe leer.

vms repo whether-exist-data – Prüfen, ob in einem Repository Daten vorhanden sind​

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

Vor dem Löschen eines Repositorys ausführen, um zu bestätigen, ob noch Daten im Repository vorhanden sind; konsistent mit der Vorprüfung vor dem Löschen eines Repositorys in der Web-Oberfläche.

X. Globale Einstellungen​

vms setting get – Globale Einstellungen anzeigen​

Zeigt die globale Konfiguration der VMs-Anwendung an.

vms setting get [--json]

Ausgabebeispiel:

PROPERTY                VALUE
HOST SHUTDOWN BEHAVIOR 1
KB LAYOUT en-us
SHOW VIRTIO BLK VDISK false
  • HOST SHUTDOWN BEHAVIOR gibt an, wie virtuelle Maschinen beim Herunterfahren des Hosts behandelt werden
  • KB LAYOUT ist das Tastaturlayout der virtuellen Maschine

XI. Abfrage von Überwachungsinformationen​

vms collectd hostinfo – Überwachungsinformationen des Hosts anzeigen​

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

Ausgabebeispiel:

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

vms collectd vminfo – Überwachungsinformationen der virtuellen Maschine anzeigen​

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

Ausgabebeispiel:

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 – Speicherüberwachungsinformationen anzeigen​

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

Ausgabebeispiel:

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

Interaktiver Modus und nicht interaktiver Modus​

Die CLI ermittelt, ob sie aktuell in einer Terminalumgebung ausgeführt wird, und verhält sich entsprechend unterschiedlich:

Interaktiver Modus (Terminalumgebung)​

  • Gefährliche Vorgänge zeigen eine Bestätigungsaufforderung an, wobei die Standardoption Nein ist
  • Geben Sie y oder Y ein, um die Ausführung fortzusetzen, und n oder die Eingabetaste, um abzubrechen
  • Beim Abbruch eines Vorgangs wird Operation cancelled ausgegeben, der Exit-Code ist 99

Nicht interaktiver Modus (Skript/Automatisierung)​

  • Gefährliche Vorgänge müssen --yes verwenden, um die Bestätigung zu überspringen, andernfalls meldet der Befehl direkt einen Fehler und gibt den Exit-Code 1 zurück
  • Ohne Terminalumgebung wird nicht auf Eingaben gewartet, geeignet für Skripte und geplante Aufgabenaufrufe
  • Es wird empfohlen, Exit-Codes in Skripten explizit zu behandeln, um Erfolg, Fehler und Statuskonflikt zu unterscheiden

JSON-Ausgabeformat​

Abfragebefehle unterstützen den Parameter --json und geben normalisierte JSON-Daten aus, die für die Programmauswertung praktisch sind.

Formatkonventionen:

  • Feldnamen verwenden snake_case
  • Boolesche Werte sind true/false
  • Die Zeit verwendet das ISO 8601-Format, einschließlich Nanosekunden-Genauigkeit und UTC+8-Verschiebung (wie 2026-09-02T11:43:51.176535374+08:00)
  • JSON wird nach stdout ausgegeben, Fehlerinformationen nach stderr
  • Lange Felder, die in der Tabellenausgabe abgeschnitten werden, liegen in der JSON-Ausgabe als vollständige Werte vor

Beispiel:

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

Die JSON-Strukturen verschiedener Befehle unterscheiden sich leicht: vms vm list, vms vm snapshot list und vms vm logs geben direkt Arrays aus; die übrigen Listenbefehle geben Objekte mit totalCount und einem Datenfeld aus, wobei der Name des Datenfelds je nach Ressource variiert (wie items, hosts, vms, storage). Zum Beispiel 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"
}
}
}

Die JSON-Ausgabe einiger Befehle ist ein einfacher Wert, zum Beispiel gibt vms network ovsinfo --json true aus und vms vm pause --json gibt null aus.

Beschreibung der Exit-Codes​

Exit-CodeBedeutungTypisches Szenario
0ErfolgDer Befehl wird normal abgeschlossen
1ParameterfehlerFehlender erforderlicher Parameter, falsches Parameterformat oder --yes nicht hinzugefügt
3Ressource nicht gefundenDie Vorprüfung des Befehls schlägt fehl, zum Beispiel existiert das angegebene Image nicht
4StatuskonfliktDer aktuelle Status der virtuellen Maschine erlaubt den Vorgang nicht (z. B. Herunterfahren einer bereits heruntergefahrenen virtuellen Maschine)
6VerbindungsfehlerVerbindung zum VMs-Dienst nicht möglich oder der socket-Pfad ist falsch
7ZeitüberschreitungDie Anforderung ist abgelaufen; dies kann über --timeout angepasst werden
9AusführungsfehlerDas Backend gibt einen Fehler zurück (die Fehlermeldung enthält code_num und die Fehlerbeschreibung)
99BenutzerabbruchAuswahl von Nein oder direktes Drücken der Eingabetaste bei der interaktiven Bestätigung

Beispiel:

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

Anwendungsbeispiele​

Täglicher Betrieb​

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

Batch-Verarbeitung per Skript​

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

Sicherung und Inspektion​

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

Prüfungen vor dem Löschen​

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

Aufruf durch KI-Werkzeuge​

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

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

Interne Entwicklung und Systemintegration​

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

Häufig gestellte Fragen​

F: Muss die CLI zusätzlich installiert werden?

Nein. Die CLI wird zusammen mit der VMs-Anwendung installiert; nach dem Aktivieren der Anwendung genügt die Ausführung des Befehls vms.

F: Muss die CLI über SSH verwendet werden?

Nein. Die CLI kann über jedes Kommandozeilen-Terminal aufgerufen werden, einschließlich lokalem Terminal, entferntem SSH, Skripten, KI-Werkzeugen usw.

F: Kann die CLI virtuelle Maschinen auf anderen Geräten verwalten?

Nein. Die CLI kommuniziert über einen lokalen unix socket mit dem VMs-Dienst und dient nur der Verwaltung virtueller Maschinen auf dem lokalen Gerät.

F: Warum fordern manche Befehle eine Bestätigung an und andere nicht?

Vorgänge wie das Löschen einer virtuellen Maschine, das Löschen eines Netzwerks, das Löschen eines Images, das Löschen eines Repositorys sowie das Herunterfahren (poweroff, force-poweroff) wirken sich auf Daten oder Dienste aus und erfordern daher standardmäßig eine Bestätigung; Start-, Neustart-, Pause-, Fortsetzungs- und Abfragebefehle unterliegen keinen derartigen Einschränkungen.

F: Wie bestätige ich gefährliche Vorgänge im nicht interaktiven Modus?

Alle gefährlichen Vorgänge müssen den Parameter --yes hinzufügen, andernfalls meldet der Befehl einen Fehler und beendet sich (Exit-Code 1).

F: Wie stelle ich in einem Skript fest, ob ein Befehl erfolgreich ausgeführt wurde?

Anhand des Exit-Codes: 0 bedeutet Erfolg und ein von 0 abweichender Wert bedeutet Fehler. Sie können auch die Ausgabe von --json auswerten.

F: Warum ist die von --json ausgegebene Liste ein Objekt?

Die JSON-Ausgabe einiger Befehle ist als Objekt nach ID organisiert, mit einem angehängten Feld totalCount, sodass direkt nach ID darauf zugegriffen werden kann.

Weitere Hilfe​

Jeder Befehl unterstützt --help zur Anzeige der detaillierten Verwendung:

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