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:
| Option | Abkürzung | Beschreibung |
|---|---|---|
--help | -h | Zeigt die Hilfeinformationen zum Befehl an |
--version | -v | Zeigt 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.
| Element | Beschreibung |
|---|---|
| CLI-Datei | /Volume1/@apps/VMs/bin/vms |
| Befehlspfad | /usr/local/sbin/vms (bereits im System-PATH enthalten) |
| Kommunikationsmethode | Lokaler unix socket, Standard /var/api/VMs.sock |
| Zielgruppe | Administratoren, 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
codeim 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
--yesausdrücklich übergeben werden.
Befehlsübersichtstabelle
Das Folgende ist eine Schnellreferenz-Zusammenfassung aller vms-Befehle:
| Übergeordneter Befehl | Unterbefehl | Funktionsbeschreibung | Bestätigung erforderlich | Hohes Risiko |
|---|---|---|---|---|
| vms | --version | Zeigt Versionsinformationen an | Nein | Nein |
| vms vm | list | Listet alle virtuellen Maschinen auf | Nein | Nein |
| vms vm | get | Zeigt die Details einer angegebenen virtuellen Maschine an | Nein | Nein |
| vms vm | list-resource | Listet die für die Erstellung einer virtuellen Maschine verfügbaren Ressourcen auf | Nein | Nein |
| vms vm | logs | Zeigt die Betriebsprotokolle einer virtuellen Maschine an | Nein | Nein |
| vms vm | poweron | Startet eine virtuelle Maschine | Nein | Nein |
| vms vm | poweroff | Fährt eine virtuelle Maschine herunter (normales Herunterfahren) | Ja | Nein |
| vms vm | force-poweroff | Erzwingt das Herunterfahren einer virtuellen Maschine | Ja | ✅ |
| vms vm | reboot | Startet eine virtuelle Maschine neu | Nein | Nein |
| vms vm | pause | Pausiert eine virtuelle Maschine | Nein | Nein |
| vms vm | resume | Setzt eine pausierte virtuelle Maschine fort | Nein | Nein |
| vms vm | autorun | Legt den automatischen Start beim Booten fest | Nein | Nein |
| vms vm | clone | Klont eine virtuelle Maschine | Nein | Nein |
| vms vm | export | Exportiert eine virtuelle Maschine als OVA-Datei | Nein | Nein |
| vms vm | delete | Löscht eine virtuelle Maschine | Ja | ✅ |
| vms vm disk | list | Zeigt die virtuellen Festplatten einer virtuellen Maschine an | Nein | Nein |
| vms vm snapshot | list | Listet die Snapshots einer virtuellen Maschine auf | Nein | Nein |
| vms vm snapshot | create | Erstellt einen Snapshot | Nein | Nein |
| vms vm snapshot | edit | Bearbeitet die Snapshot-Beschreibung und den Sperrstatus | Nein | Nein |
| vms vm snapshot | config | Zeigt die im Snapshot gespeicherte Konfiguration der virtuellen Maschine an | Nein | Nein |
| vms vm snapshot | consistency | Zeigt eine Vorschau der Snapshot-Konsistenz an | Nein | Nein |
| vms vm | link | Ruft die VNC-Konsolen-Verbindungsinformationen ab | Nein | Nein |
| vms network | list | Listet virtuelle Netzwerke auf | Nein | Nein |
| vms network | get | Zeigt Details eines virtuellen Netzwerks an | Nein | Nein |
| vms network | create | Erstellt ein virtuelles Netzwerk | Nein | Nein |
| vms network | update | Aktualisiert ein virtuelles Netzwerk | Nein | Nein |
| vms network | delete | Löscht ein virtuelles Netzwerk | Ja | ✅ |
| vms network | list-interfaces | Listet Netzwerkschnittstellen eines angegebenen Typs auf | Nein | Nein |
| vms network | list-vnics | Listet die virtuellen Netzwerkkarten eines Netzwerks auf | Nein | Nein |
| vms network | ovsinfo | Zeigt an, ob OVS aktiviert ist | Nein | Nein |
| vms image | list | Listet Images auf | Nein | Nein |
| vms image | edit | Bearbeitet Image-Informationen | Nein | Nein |
| vms image | delete | Löscht ein Image | Ja | ✅ |
| vms image | list-vms | Zeigt die virtuellen Maschinen an, die das Image verwenden | Nein | Nein |
| vms repo | list | Listet Repositorys auf | Nein | Nein |
| vms repo | get | Zeigt Details eines Repositorys an | Nein | Nein |
| vms repo | update | Aktualisiert die Repository-Konfiguration | Nein | Nein |
| vms repo | delete | Löscht ein Repository | Ja | ✅ |
| vms repo | list-volumes | Listet die verfügbaren Volumes auf | Nein | Nein |
| vms repo | list-vms | Listet die virtuellen Maschinen in einem Repository auf | Nein | Nein |
| vms repo | check-running | Prüft die in einem Repository laufenden virtuellen Maschinen | Nein | Nein |
| vms repo | whether-exist-data | Prüft, ob in einem Repository Daten vorhanden sind | Nein | Nein |
| vms setting | get | Zeigt die globalen Einstellungen an | Nein | Nein |
| vms collectd | hostinfo | Zeigt die Überwachungsinformationen des Hosts an | Nein | Nein |
| vms collectd | vminfo | Zeigt die Überwachungsinformationen der virtuellen Maschine an | Nein | Nein |
| vms collectd | storageinfo | Zeigt die Speicherüberwachungsinformationen an | Nein | Nein |
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
vmskürzt überlange Feldwerte auf eine feste Breite (endet mit Auslassungspunkten und ist unabhängig von der Terminalbreite), zum BeispielVDISKS,VNICS,ISO IMAGESin 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--jsonzu 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]
--limitund--offsetsind 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:
| Status | Beschreibung |
|---|---|
| running | In Betrieb |
| shutdown | Heruntergefahren |
| saved | Pausiert (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]
--limitgibt die Anzahl der zurückgegebenen Einträge an, Standard 50--descsortiert 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
--yeshinzugefü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
--yeshinzugefü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
savedangezeigt - 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
trueoderfalsesein - 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>oderAuto-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_iddie ID der Quell-VM undname(oderguest_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--fileliest 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_iddie ID der Quell-VM,target_ova_pathder Ziel-Dateipfad undova_modeein 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
--yeshinzugefü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 MODEist die Typennummer des Controllers der virtuellen Festplatte;1steht für IDE- Eine unbenannte virtuelle Festplatte wird in der Spalte
NAMEals-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 STATEist der Betriebszustand der virtuellen Maschine zum Zeitpunkt der Snapshot-ErstellungACTUAL CONSISTENCYist der Konsistenztyp des Snapshots;filesystemsteht für Dateisystemkonsistenz undcrashfü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:
descriptionist die Snapshot-Beschreibung undlockedgibt 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
vms vm link – VNC-Verbindungsinformationen abrufen
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
}
urlist der Konsolenpfad relativ zur NAS-Verwaltungsadresse,portist der Konsolendienst-Port undhttpsgibt an, ob der Zugriff über HTTPS erfolgen muss- In der JSON-Ausgabe wird das
&in der URL als\u0026maskiert
VII. Verwaltung virtueller Netzwerke
Die Netzwerktypen werden in zwei Arten unterteilt:
| Typ | Beschreibung |
|---|---|
| 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 GUESTSist die Anzahl der an das Netzwerk angeschlossenen virtuellen Maschinen undNUM INTERFACESdie 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
}
interfacessind die an das Netzwerk gebundenen Netzwerkkarteninformationen, organisiert nach Host-ID, undcheckedgibt an, ob die Netzwerkkarte ausgewählt istmetadatazeichnet 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) undhost_nameoderhost_identhalten und angeben, auf welchem Host das Netzwerk erstellt wird - Vor der Erstellung können die verfügbaren Hosts über
vms network list-interfaces privateangezeigt werden
Ein externes Netzwerk erstellen:
- Der Anforderungskörper muss
name,type(external) undvlan_identhalten, und es muss mindestens eine physische Netzwerkkarte angegeben werden - Die Netzwerkkarte kann über
interface_name(wieLAN 1) oderinterface_idangegeben werden; wenn der Netzwerkkartenname hostübergreifend nicht eindeutig ist, muss er zusammen mithost_nameverwendet werden - Vor der Erstellung können die verfügbaren Netzwerkkarten über
vms network list-interfaces externalangezeigt 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_identhalten - 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
--yeshinzugefü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]
externalgibt die auf dem Host verfügbaren physischen Netzwerkkarten zurückprivategibt 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_nameist der Image-Name undfile_nameder entsprechende Dateinametypeist das Image-Format, wieisooderqcow2statusist der Image-Status;availablebedeutet verfügbarreposist das Repository, in dem sich das Image befindetprogressist der Fortschritt der Image-Verarbeitungsaufgabe;0bedeutet, 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_idundreposenthalten;reposist die vollständige Liste der Ziel-Repositorys des Images und darf nicht leer sein image_name,file_name,typeundfile_sizesind optionale Felder; wenn sie nicht angegeben werden, werden die aktuellen Werte verwendet- Ein leeres
reposwü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-idist erforderlich- Dies ist ein Vorgang mit hohem Risiko: Der interaktive Modus fragt nach einer Bestätigung, im nicht interaktiven Modus muss
--yeshinzugefü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 VOLUMEist das Volume, in dem sich das Repository befindetSOFT LIMITundHARD LIMITsind Schwellenwerte für Kapazitätswarnungen (Prozent)ENABLE LOWER NOTIFYgibt 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_idoderrepoIdü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:truebedeutet, die Datendateien auf der Festplatte zu behalten, undfalsebedeutet, 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
--yeshinzugefü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-runningundvms repo whether-exist-dataauszufü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_idoderrepoIdü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 BEHAVIORgibt an, wie virtuelle Maschinen beim Herunterfahren des Hosts behandelt werdenKB LAYOUTist 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
yoderYein, um die Ausführung fortzusetzen, undnoder die Eingabetaste, um abzubrechen - Beim Abbruch eines Vorgangs wird
Operation cancelledausgegeben, der Exit-Code ist 99
Nicht interaktiver Modus (Skript/Automatisierung)
- Gefährliche Vorgänge müssen
--yesverwenden, 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-Code | Bedeutung | Typisches Szenario |
|---|---|---|
| 0 | Erfolg | Der Befehl wird normal abgeschlossen |
| 1 | Parameterfehler | Fehlender erforderlicher Parameter, falsches Parameterformat oder --yes nicht hinzugefügt |
| 3 | Ressource nicht gefunden | Die Vorprüfung des Befehls schlägt fehl, zum Beispiel existiert das angegebene Image nicht |
| 4 | Statuskonflikt | Der aktuelle Status der virtuellen Maschine erlaubt den Vorgang nicht (z. B. Herunterfahren einer bereits heruntergefahrenen virtuellen Maschine) |
| 6 | Verbindungsfehler | Verbindung zum VMs-Dienst nicht möglich oder der socket-Pfad ist falsch |
| 7 | Zeitüberschreitung | Die Anforderung ist abgelaufen; dies kann über --timeout angepasst werden |
| 9 | Ausführungsfehler | Das Backend gibt einen Fehler zurück (die Fehlermeldung enthält code_num und die Fehlerbeschreibung) |
| 99 | Benutzerabbruch | Auswahl 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