דלג לתוכן הראשי
Version: TOS 7

VMs CLI

מבוא​

VMs CLI הוא כלי ניהול משורת הפקודה של אפליקציית הווירטואליזציה TerraMaster VMs, ומספק יכולות שאילתה ותפעול זהות לממשק הניהול האינטרנטי. ה-CLI מתקשר עם שירות VMs דרך unix socket מקומי, ומשתמש בממשק פקודות מתוקנן ובתבנית פלט JSON, כך שניתן לשלבו בסקריפטים, בתפעול אוטומטי ובזרימות עבודה של פיתוח משני.

מאפיינים עיקריים​

  • מוכן לשימוש מיידי: מותקן יחד עם אפליקציית VMs, ללא צורך בהתקנה נוספת
  • דרכי קריאה גמישות: תומך במסוף מקומי, SSH מרחוק, סקריפטים, כלי AI ועוד דרכי קריאה רבות
  • מצב כפול אינטראקטיבי ולא־אינטראקטיבי: מתאים הן לתחזוקה שוטפת של מנהל והן למשימות סקריפט ואוטומציה
  • תמיכה בפלט JSON: נוח לניתוח תוכנתי ולשילוב באוטומציה
  • תקשורת מקומית: מתקשר עם שירות VMs רק דרך unix socket מקומי, ואינו פותח פורטים כלפי חוץ
  • אישור משני לפעולות מסוכנות: פעולות כגון מחיקת מכונה וירטואלית ומחיקת רשת דורשות אישור כברירת מחדל

התחלה מהירה​

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

# 查看虚拟机列表
vms vm list

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

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

דוגמת פלט של 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 -

אפשרויות גלובליות​

האפשרויות הבאות חלות על כל הפקודות:

אפשרותקיצורתיאור
--help-hמציג מידע עזרה לפקודה
--version-vמציג מספר גרסה (ניתן לשלב עם --json לפלט מובנה)
--json-מפיק פלט בתבנית JSON
--yes-yמדלג על בקשת האישור של פעולות מסוכנות (חובה במצב לא־אינטראקטיבי)
--debug-מפעיל פלט ניפוי שגיאות ומציג את תהליך הביצוע המפורט
--socket <path>-נתיב ה-unix socket של VMs, ברירת מחדל /var/api/VMs.sock
--timeout <duration>-זמן קצוב לבקשה, ברירת מחדל 30s

דוגמת מידע גרסה​

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

סביבת הפעלה​

VMs CLI מותקן יחד עם אפליקציית VMs. כאשר האפליקציה מופעלת היא מקשרת את ה-CLI לספריית ה-PATH המוגדרת כברירת מחדל במערכת, וניתן להשתמש בו ישירות לאחר התחברות ב-SSH.

פריטתיאור
קובץ CLI/Volume1/@apps/VMs/bin/vms
נתיב הפקודה/usr/local/sbin/vms (נמצא ב-PATH של המערכת)
דרך תקשורתunix socket מקומי, ברירת מחדל /var/api/VMs.sock
קהל יעדמנהל המחובר למחשב זה

הערות חשובות:

  • ה-CLI מיועד לניהול מכונות וירטואליות מקומיות, ואינו תומך בניהול מרחוק של התקנים אחרים דרך ה-CLI.
  • הקצה האחורי תמיד מחזיר HTTP 200, והצלחת הפקודה נקבעת לפי השדה code בגוף התגובה, וה-CLI ממיר אותו לקוד יציאה בהתאם.
  • פעולות מסוכנות (מחיקת מכונה וירטואלית, מחיקת רשת, מחיקת תמונה, מחיקת מרחב אחסון) מבקשות אישור במצב אינטראקטיבי, ובמצב לא־אינטראקטיבי יש להעביר במפורש --yes.

טבלת סיכום פקודות​

להלן סיכום עזר מהיר של כל פקודות vms:

פקודת אבפקודת משנהתיאור הפונקציהדורש אישורסיכון גבוה
vms--versionמציג מידע גרסהלאלא
vms vmlistמציג את כל המכונות הווירטואליותלאלא
vms vmgetמציג פרטים של מכונה וירטואלית מסוימתלאלא
vms vmlist-resourceמציג משאבים זמינים ליצירת מכונה וירטואליתלאלא
vms vmlogsמציג את יומני הפעולות של המכונה הווירטואליתלאלא
vms vmpoweronמפעיל את המכונה הווירטואליתלאלא
vms vmpoweroffמכבה את המכונה הווירטואלית (כיבוי רגיל)כןלא
vms vmforce-poweroffמכבה את המכונה הווירטואלית בכוחכן✅
vms vmrebootמפעיל מחדש את המכונה הווירטואליתלאלא
vms vmpauseמשהה את המכונה הווירטואליתלאלא
vms vmresumeממשיך מכונה וירטואלית מושהיתלאלא
vms vmautorunמגדיר הפעלה אוטומטית בעת עליית המערכתלאלא
vms vmcloneמשכפל את המכונה הווירטואליתלאלא
vms vmexportמייצא את המכונה הווירטואלית כקובץ OVAלאלא
vms vmdeleteמוחק את המכונה הווירטואליתכן✅
vms vm disklistמציג את הכוננים הקשיחים הווירטואליים של המכונה הווירטואליתלאלא
vms vm snapshotlistמציג את תמונות המצב של המכונה הווירטואליתלאלא
vms vm snapshotcreateיוצר תמונת מצבלאלא
vms vm snapshoteditעורך את תיאור תמונת המצב ומצב הנעילהלאלא
vms vm snapshotconfigמציג את תצורת המכונה הווירטואלית השמורה בתמונת המצבלאלא
vms vm snapshotconsistencyמציג תצוגה מקדימה של עקביות תמונת המצבלאלא
vms vmlinkמקבל מידע חיבור למסוף VNCלאלא
vms networklistמציג את הרשתות הווירטואליותלאלא
vms networkgetמציג פרטים של רשת וירטואליתלאלא
vms networkcreateיוצר רשת וירטואליתלאלא
vms networkupdateמעדכן את הרשת הווירטואליתלאלא
vms networkdeleteמוחק את הרשת הווירטואליתכן✅
vms networklist-interfacesמציג ממשקי רשת מסוג מסויםלאלא
vms networklist-vnicsמציג כרטיסי רשת וירטואליים ברשתלאלא
vms networkovsinfoמציג אם OVS מופעללאלא
vms imagelistמציג תמונותלאלא
vms imageeditעורך מידע על תמונהלאלא
vms imagedeleteמוחק תמונהכן✅
vms imagelist-vmsמציג מכונות וירטואליות המשתמשות בתמונה זולאלא
vms repolistמציג מרחבי אחסוןלאלא
vms repogetמציג פרטים של מרחב אחסוןלאלא
vms repoupdateמעדכן את תצורת מרחב האחסוןלאלא
vms repodeleteמוחק את מרחב האחסוןכן✅
vms repolist-volumesמציג כרכים זמיניםלאלא
vms repolist-vmsמציג את המכונות הווירטואליות במרחב האחסוןלאלא
vms repocheck-runningבודק מכונות וירטואליות פועלות במרחב האחסוןלאלא
vms repowhether-exist-dataבודק אם קיימים נתונים במרחב האחסוןלאלא
vms settinggetמציג את ההגדרות הגלובליותלאלא
vms collectdhostinfoמציג מידע ניטור של המארחלאלא
vms collectdvminfoמציג מידע ניטור של המכונות הווירטואליותלאלא
vms collectdstorageinfoמציג מידע ניטור של האחסוןלאלא

מראי פקודות​

<id> בפקודות הוא מזהה המכונה הווירטואלית, המתאים ל-GUEST ID בפלט רשימת המכונות הווירטואליות; <network_id>, <image_id>, <repo_id> בדומה, וניתן לקבל אותם בהתאמה דרך vms network list, vms image list, vms repo list.

לגבי דוגמאות פלט: פלט הטבלה של vms מבצע חיתוך ברוחב קבוע של ערכי שדות ארוכים מדי (בסיום בשלוש נקודות, ובלתי תלוי ברוחב המסוף), לדוגמה VDISKS, VNICS, ISO IMAGES בתצורת המכונה הווירטואלית, וכן שמות תמונות. לכן, במסמך זה פקודות הכוללות שדות ארוכים מסופקות באופן אחיד עם דוגמת פלט --json מלאה, ושאר הפקודות מסופקות עם דוגמת פלט טבלה. בעת עיבוד בסקריפטים מומלץ גם כן להשתמש באופן אחיד ב---json.

1. שאילתת מכונות וירטואליות​

vms vm list – הצגת מכונות וירטואליות​

מציג את כל המכונות הווירטואליות במחשב זה ואת מצבן הבסיסי.

vms vm list [--limit N] [--offset N] [--json]
  • --limit, --offset הם פרמטרים לעימוד
  • עמודות הפלט: שם, מזהה מכונה וירטואלית, מצב הפעלה, מספר ליבות CPU, גודל זיכרון (ביחידות KB), כתובת IP

דוגמת פלט:

NAME     GUEST ID                              STATUS    VCPU NUM  VRAM SIZE  IP
145 09fd98ee-4e2d-4c7a-a95c-8bacab80d322 shutdown 4 2097152 -
win10 9c7078ab-a1e7-4bc0-819f-6ac83e24cfc1 shutdown 4 2097152 -
1454486 5a0391f2-c545-45eb-8eed-0a104972229b shutdown 4 2097152 -
win101 32ee5a74-de8b-47a9-959d-1725c881ceab shutdown 4 2097152 -

ערכים נפוצים של STATUS:

מצבתיאור
runningפועל
shutdownכבוי
savedמושהה (מצב ההפעלה נשמר לדיסק)

vms vm get – הצגת פרטי מכונה וירטואלית​

מציג את התצורה המלאה ואת מצב ההפעלה של מכונה וירטואלית מסוימת.

vms vm get <id> --json
  • הפלט כולל את כל שדות התצורה ומצב ההפעלה של המכונה הווירטואלית
  • ערכים ריקים כגון אין תיאור ואין IP מוצגים כמחרוזת ריקה
  • אם המכונה הווירטואלית אינה קיימת, הפקודה מחזירה שגיאה ומפיקה הודעת שגיאה

דוגמת פלט:

{
"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 – הצגת משאבים זמינים ליצירת מכונה וירטואלית​

מציג את המשאבים שהמארח יכול לספק, כגון סוגי קושחה, תמונות, CPU, זיכרון, רשת, מרחבי אחסון והתקנים הניתנים להעברה ישירה, לצורך הערכה לפני יצירת מכונה וירטואלית.

vms vm list-resource --json

שדות מוחזרים: max_cpu_num, max_ram_size, usbs, pci_devices, networks, repos, images, video_cards, firmware, keyboard_layout.

דוגמת פלט:

{
"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 – הצגת יומני הפעולות של המכונה הווירטואלית​

מציג את יומני הפעולות הקשורים למכונה וירטואלית מסוימת (הפעלה/כיבוי, תמונות מצב, עריכה, ייבוא/ייצוא וכדומה).

vms vm logs <id> --json [--limit N] [--desc]
  • --limit מגדיר את מספר הרשומות המוחזרות, ברירת מחדל 50
  • --desc ממיין לפי זמן בסדר יורד (מופעל כברירת מחדל)
  • כל רשומת יומן כוללת זמן, רמה, קטגוריה, משתמש מבצע ותיאור אירוע, ותיאור האירוע הוא טקסט מלא
  • תיאור האירוע (event) מסופק על ידי שירות VMs באופן מתורגם לפי שפת המערכת של ההתקן; דוגמאות במסמך זה משתמשות באופן אחיד באנגלית

דוגמת פלט:

[
{
"id": 0,
"level": "Info",
"time": "2026-09-02T11:44:09.176535374+08:00",
"category": "vm",
"user": "system",
"event": "Virtual machine(win10) shutdown successfully"
},
{
"id": 0,
"level": "Info",
"time": "2026-09-02T11:43:10.597187659+08:00",
"category": "vm",
"user": "system",
"event": "Virtual machine(win10) started successfully"
},
{
"id": 0,
"level": "Info",
"time": "2026-09-02T11:40:32.74904922+08:00",
"category": "vm",
"user": "system",
"event": "Virtual machine(win10) shutdown successfully"
},
{
"id": 0,
"level": "Info",
"time": "2026-09-02T11:39:55.916718004+08:00",
"category": "vm",
"user": "system",
"event": "Virtual machine(win10) started successfully"
},
{
"id": 0,
"level": "Info",
"time": "2026-09-02T11:39:43.341421576+08:00",
"category": "vm",
"user": "system",
"event": "Virtual machine(win10) shutdown successfully"
},
{
"id": 0,
"level": "Info",
"time": "2026-09-02T11:38:31.518259486+08:00",
"category": "vm",
"user": "system",
"event": "Virtual machine(win10) shutdown successfully"
},
{
"id": 0,
"level": "Info",
"time": "2026-09-02T11:38:07.98065689+08:00",
"category": "vm",
"user": "system",
"event": "Virtual machine(win10) started successfully"
},
{
"id": 0,
"level": "Error",
"time": "2026-09-02T11:32:35.01952111+08:00",
"category": "vm",
"user": "system",
"event": "Virtual machine (win10) export failed (Error:stat : no such file or directory)"
}
]

2. ניהול הספק של מכונות וירטואליות​

vms vm poweron – הפעלת מכונה וירטואלית​

vms vm poweron <id>
  • המכונה הווירטואלית חייבת להיות במצב כבוי, אחרת מוחזרת שגיאת התנגשות מצב
  • פלט: VM powered on: <id>

vms vm poweroff – כיבוי מכונה וירטואלית​

שולח בקשת כיבוי רגילה למכונה הווירטואלית, כדי שהמערכת תיסגר בצורה מסודרת.

vms vm poweroff <id> [--yes]
  • פעולה מסוכנת: במצב אינטראקטיבי נשאלת שאלת אישור, ובמצב לא־אינטראקטיבי חובה להוסיף --yes
  • המכונה הווירטואלית חייבת להיות במצב פועל, אחרת מוחזרת שגיאת התנגשות מצב

בקשת אישור במצב אינטראקטיבי:

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

vms vm force-poweroff – כיבוי כפוי של מכונה וירטואלית (סיכון גבוה)​

מכבה את המכונה הווירטואלית בכוח, וזהה לניתוק החשמל ישירות.

vms vm force-poweroff <id> [--yes]
  • פעולה בסיכון גבוה: במצב אינטראקטיבי נשאלת שאלת אישור, ובמצב לא־אינטראקטיבי חובה להוסיף --yes
  • עלולה לגרום לאובדן נתונים בתוך המכונה הווירטואלית; מומלץ להשתמש בה רק כאשר המכונה הווירטואלית אינה מגיבה

בקשת אישור במצב אינטראקטיבי:

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

vms vm reboot – הפעלה מחדש של מכונה וירטואלית​

vms vm reboot <id>
  • פלט: VM rebooted: <id>

vms vm pause – השהיית מכונה וירטואלית​

מקפיא את מצב ההפעלה של המכונה הווירטואלית ושומר את המצב הנוכחי לדיסק.

vms vm pause <id>
  • המכונה הווירטואלית חייבת להיות במצב פועל, אחרת מוחזרת שגיאת התנגשות מצב
  • לאחר ההשהיה מצב המכונה הווירטואלית מוצג כ-saved
  • פלט: VM paused: <id>

vms vm resume – המשכת מכונה וירטואלית​

מחזיר את המכונה הווירטואלית ממצב מושהה למצב פועל.

vms vm resume <id>
  • המכונה הווירטואלית חייבת להיות במצב מושהה, אחרת מוחזרת שגיאת התנגשות מצב
  • פלט: VM resumed: <id>

vms vm autorun – הגדרת הפעלה אוטומטית בעת עליית המערכת​

מגדיר אם המכונה הווירטואלית תופעל אוטומטית עם עליית המארח.

vms vm autorun <id> <true|false>
  • הפרמטר השני חייב להיות true או false
  • הפקודה קוראת את התצורה הנוכחית ומשנה רק את מתג ההפעלה האוטומטית; שאר התצורות אינן מושפעות
  • פלט: Auto-start enabled for VM <id> או Auto-start disabled for VM <id>

3. שכפול, ייצוא ומחיקה של מכונות וירטואליות​

vms vm clone – שכפול מכונה וירטואלית​

יוצר מכונה וירטואלית חדשה בהעתקה של מכונה וירטואלית קיימת כתבנית.

vms vm clone --body '{"guest_id":"<source_id>","name":"my-clone"}'
vms vm clone --file clone.json
  • בגוף הבקשה guest_id הוא מזהה המכונה הווירטואלית המקורית, ו-name (או guest_name) הוא שם המכונה הווירטואלית החדשה
  • המכונה הווירטואלית המקורית חייבת להיות במצב כבוי
  • --body מעביר את גוף הבקשה ישירות כמחרוזת JSON, ו---file קורא את גוף הבקשה מקובץ

vms vm export – ייצוא מכונה וירטואלית​

מייצא את המכונה הווירטואלית כקובץ OVA, לנוחות גיבוי או העברה לפלטפורמת וירטואליזציה אחרת.

vms vm export --body '{"guest_id":"<source_id>","target_ova_path":"/Volume1/export/my-vm.ova"}'
vms vm export --file export.json
  • בגוף הבקשה guest_id הוא מזהה המכונה הווירטואלית המקורית, target_ova_path הוא נתיב הקובץ היעד, ו-ova_mode הוא מצב תאימות VMware אופציונלי
  • המכונה הווירטואלית המקורית חייבת להיות במצב כבוי
  • הייצוא הוא משימה ארוכה; ייצוא מכונות וירטואליות בנפח גדול אורך זמן רב

vms vm delete – מחיקת מכונה וירטואלית (סיכון גבוה)​

מוחק את המכונה הווירטואלית לצמיתות.

vms vm delete <id> [--yes]
  • פעולה בסיכון גבוה: במצב אינטראקטיבי נשאלת שאלת אישור, ובמצב לא־אינטראקטיבי חובה להוסיף --yes
  • לא ניתן לשחזר לאחר המחיקה; יש לוודא מראש שהנתונים במכונה הווירטואלית גובו

בקשת אישור במצב אינטראקטיבי:

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

4. כוננים קשיחים וירטואליים​

vms vm disk list – הצגת כוננים קשיחים וירטואליים​

מציג את כל הכוננים הקשיחים הווירטואליים של מכונה וירטואלית מסוימת.

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

דוגמת פלט:

NAME  VDISK ID                              VDISK SIZE  VDISK MODE  IDX
- f4ed4eae-1512-4273-963b-79ebd93a0932 1024 1 0
  • VDISK MODE הוא מספר סוג בקר הכונן הקשיח הווירטואלי, ו-1 מציין IDE
  • כוננים קשיחים וירטואליים ללא שם מוצגים כ-- בעמודה NAME

5. ניהול תמונות מצב​

vms vm snapshot list – הצגת תמונות מצב​

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

דוגמת פלט:

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 הוא מצב ההפעלה של המכונה הווירטואלית בעת יצירת תמונת המצב
  • ACTUAL CONSISTENCY הוא סוג העקביות של תמונת המצב; filesystem מציין עקביות מערכת קבצים, ו-crash מציין עקביות קריסה

vms vm snapshot create – יצירת תמונת מצב​

יוצר תמונת מצב עבור המכונה הווירטואלית, לשחזור מהיר או לגיבוי המצב הנוכחי.

vms vm snapshot create <id>
vms vm snapshot create <id> --body '{"description":"before-upgrade","locked":false}'
  • גוף הבקשה אופציונלי: description הוא תיאור תמונת המצב, ו-locked מציין אם לנעול
  • שם תמונת המצב נוצר אוטומטית על ידי המערכת לפי זמן היצירה
  • תמונות מצב תופסות מקום אחסון; אי־ניקוי לאורך זמן עלול למלא את מרחב האחסון, ומומלץ לסדר אותן מעת לעת

vms vm snapshot edit – עריכת תמונת מצב​

משנה את התיאור או מצב הנעילה של תמונת המצב.

vms vm snapshot edit <id> <snapshot_name> --body '{"description":"updated description"}'
vms vm snapshot edit <id> <snapshot_name> --body '{"locked":true}'
  • משתנים רק השדות המופיעים בגוף הבקשה, ושדות שאינם מופיעים שומרים על ערכם המקורי; שינוי התיאור בלבד אינו משנה את מצב הנעילה, ולהיפך

דוגמת פלט:

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 – הצגת תצורת המכונה הווירטואלית בתמונת המצב​

מציג את תצורת המכונה הווירטואלית השמורה בתמונת המצב.

vms vm snapshot config <id> <snapshot_name>

<id> הוא מזהה המכונה הווירטואלית, ו-<snapshot_name> הוא שם תמונת המצב, וניתן לקבלו דרך vms vm snapshot list <id>.

דוגמת פלט:

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 – תצוגה מקדימה של עקביות תמונת המצב​

מציג תצוגה מקדימה של סוג העקביות האפשרי לפני יצירת תמונת המצב, ועוזר לקבוע אם המצב הנוכחי מתאים ליצירת תמונת מצב.

vms vm snapshot consistency <id>

דוגמת פלט:

PROPERTY          VALUE
CONSISTENCY TYPE filesystem
REASON vm_shutdown
VM STATE shutdown

יצירת תמונת מצב כאשר המכונה הווירטואלית כבויה מספקת תמונת מצב עם עקביות מערכת קבצים; במצב פועל בדרך כלל ניתן לקבל רק תמונת מצב עם עקביות קריסה.

6. מסוף מרוחק​

מקבל את מידע החיבור של מסוף ה-VNC של המכונה הווירטואלית, ומשמש לפתיחת המסוף המרוחק בדפדפן.

vms vm link <id> --json
  • המכונה הווירטואלית חייבת להיות במצב פועל או מושהה, אחרת מוחזרת שגיאת התנגשות מצב

דוגמת פלט:

{
"url": "VMs/noVNC/vnc.html?autoconnect=true\u0026reconnect=true\u0026path=utils/websockify/?token=09fd98ee-4e2d-4c7a-a95c-8bacab80d322\u0026title=145",
"port": 8181,
"https": false
}
  • url הוא נתיב המסוף ביחס לכתובת ניהול ה-NAS, port הוא פורט שירות המסוף, ו-https מציין אם נדרשת גישה דרך HTTPS
  • בפלט JSON התו & בתוך ה-URL מותמר ל-\u0026

7. ניהול רשתות וירטואליות​

סוגי הרשת נחלקים לשניים:

סוגתיאור
פרטי (private)רשת פנימית לתקשורת בין מכונות וירטואליות במחשב זה בלבד, אינה נקשרת לכרטיס רשת פיזי
חיצוני (external)רשת הנקשרת לכרטיס רשת פיזי; המכונות הווירטואליות יכולות לתקשר עם החוץ דרך רשת זו

vms network list – הצגת רשתות וירטואליות​

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

דוגמת פלט:

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 הוא מספר המכונות הווירטואליות המחוברות לרשת זו, ו-NUM INTERFACES הוא מספר כרטיסי הרשת הפיזיים הנבחרים

vms network get – הצגת פרטי רשת וירטואלית​

vms network get <network_id> --json

דוגמת פלט:

{
"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 הוא מידע כרטיסי הרשת המשויכים לרשת זו, מאורגן לפי מזהה מארח, ו-checked מציין אם כרטיס הרשת נבחר
  • metadata רושם את זמן היצירה והעדכון של הרשת

vms network create – יצירת רשת וירטואלית​

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

יצירת רשת פרטית:

  • גוף הבקשה חייב לכלול name, type (private), host_name או host_id, כדי לציין על איזה מארח ליצור את הרשת
  • לפני היצירה ניתן להציג את המארחים הזמינים דרך vms network list-interfaces private

יצירת רשת חיצונית:

  • גוף הבקשה חייב לכלול name, type (external), vlan_id, ולציין לפחות כרטיס רשת פיזי אחד
  • ניתן לציין כרטיס רשת דרך interface_name (כגון LAN 1) או interface_id; כאשר שם כרטיס הרשת אינו ייחודי בין מארחים יש להשתמש בו יחד עם host_name
  • לפני היצירה ניתן להציג את כרטיסי הרשת הזמינים דרך vms network list-interfaces external

הפלט הוא מידע הרשת לאחר היצירה, וזהה למבנה של 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
}

כאשר לא צוין כרטיס רשת הפקודה מציגה הודעה:

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 – עדכון רשת וירטואלית​

יש לשלוח רק את השדות שיש לשנות; שדות שלא נשלחו שומרים על ערכם המקורי.

vms network update --body '{"network_id":"<network_id>","name":"renamed"}'
vms network update --body '{"network_id":"<network_id>","vlan_id":200}'
  • גוף הבקשה חייב לכלול network_id
  • הפקודה קוראת תחילה את תצורת הרשת הנוכחית וממזגת את השדות שנשלחו; שם הרשת וכרטיסי הרשת הנבחרים אינם מתרוקנים
  • הפלט הוא מידע הרשת לאחר העדכון

vms network delete – מחיקת רשת וירטואלית (סיכון גבוה)​

vms network delete <network_id> [--yes]
  • פעולה בסיכון גבוה: במצב אינטראקטיבי נשאלת שאלת אישור, ובמצב לא־אינטראקטיבי חובה להוסיף --yes
  • מחיקת הרשת תנתק את כל המכונות הווירטואליות המחוברות אליה
  • מומלץ תחילה לוודא את המכונות הווירטואליות המחוברות דרך vms network list-vnics <network_id>

בקשת אישור במצב אינטראקטיבי:

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

vms network list-interfaces – הצגת ממשקי רשת​

מציג ממשקי רשת מסוג מסוים.

vms network list-interfaces external [--limit N] [--offset N]
vms network list-interfaces private [--limit N] [--offset N]
  • external מחזיר את כרטיסי הרשת הפיזיים הזמינים במארח
  • private מחזיר מידע על מארחים הזמינים ליצירת רשת פרטית

דוגמת פלט (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

דוגמת פלט (private):

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

vms network list-vnics – הצגת כרטיסי רשת וירטואליים ברשת​

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

דוגמת פלט:

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​

בודק אם מתג Open vSwitch הווירטואלי מופעל.

vms network ovsinfo [--json]

דוגמת פלט:

PROPERTY  VALUE
RESULT true

VALUE השווה ל-true מציין ש-OVS מופעל.

8. ניהול תמונות​

vms image list – הצגת תמונות​

מציג את קובצי תמונות המערכת הזמינים ליצירת מכונות וירטואליות.

vms image list --json
  • image_name הוא שם התמונה, ו-file_name הוא שם הקובץ המתאים
  • type הוא תבנית התמונה, כגון iso, qcow2
  • status הוא מצב התמונה, ו-available מציין זמינה
  • repos הם מרחבי האחסון שבהם נמצאת התמונה
  • progress הוא התקדמות משימת עיבוד התמונה, ו-0 מציין שאין משימה פעילה

דוגמת פלט:

{
"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 – עריכת תמונה​

משנה את שם התמונה, או מתאים את מרחב האחסון שבו נמצאת התמונה.

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"}'
  • גוף הבקשה חייב לכלול image_id ו-repos; repos היא רשימת מרחבי האחסון היעד המלאה של התמונה, ואינה יכולה להיות ריקה
  • image_name, file_name, type, file_size הם שדות אופציונליים; כאשר אינם מסופקים משתמשים בערכים הנוכחיים
  • repos ריקה תגרום להוצאת התמונה מכל מרחבי האחסון; הפקודה דוחה בקשה זו לפני הביצוע
  • פלט: Image updated

vms image delete – מחיקת תמונה (סיכון גבוה)​

vms image delete --image-id <image_id> [--yes]
  • --image-id הוא שדה חובה
  • פעולה בסיכון גבוה: במצב אינטראקטיבי נשאלת שאלת אישור, ובמצב לא־אינטראקטיבי חובה להוסיף --yes
  • מחיקת התמונה אינה משפיעה על מכונות וירטואליות שכבר נוצרו, אך משפיעה על יצירת מכונות וירטואליות עתידיות המבוססות על תמונה זו
  • מומלץ תחילה לוודא את השימוש דרך vms image list-vms --image-id <image_id>

בקשת אישור במצב אינטראקטיבי:

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

vms image list-vms – הצגת מכונות וירטואליות המשתמשות בתמונה זו​

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

דוגמת פלט:

GUEST NAME
1454486

לפני מחיקת התמונה ניתן להריץ פקודה זו כדי לוודא את היקף ההשפעה; כאשר אין מכונות וירטואליות המשתמשות בתמונה הפלט ריק.

9. ניהול מרחבי אחסון​

vms repo list – הצגת מרחבי אחסון​

vms repo list [--json]

דוגמת פלט:

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 – הצגת פרטי מרחב אחסון​

vms repo get <repo_id> [--json]

דוגמת פלט:

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 הוא הכרך שבו נמצא מרחב האחסון
  • SOFT LIMIT, HARD LIMIT הם ספי התראת קיבולת (באחוזים)
  • ENABLE LOWER NOTIFY מציין אם תזכורת על קיבולת לא מספקת מופעלת

vms repo update – עדכון מרחב אחסון​

יש לשלוח רק את השדות שיש לשנות; שדות שלא נשלחו שומרים על ערכם המקורי.

vms repo update --body '{"repo_id":"<repo_id>","name":"new-name"}'
vms repo update --body '{"repoId":"<repo_id>","enable_lower_notify":true}'
  • ניתן להעביר את מזהה מרחב האחסון דרך repo_id או repoId
  • הפקודה קוראת תחילה את התצורה הנוכחית וממזגת את השדות שנשלחו; הגדרות אחרות אינן הולכות לאיבוד
  • הפלט הוא מידע מרחב האחסון לאחר העדכון

vms repo delete – מחיקת מרחב אחסון (סיכון גבוה)​

vms repo delete <repo_id> <true|false> [--yes]
  • הפרמטר השני הוא need_save_data: true מציין שמירת קובצי הנתונים בדיסק, ו-false מציין מחיקה יחד עם הנתונים
  • פעולה בסיכון גבוה: במצב אינטראקטיבי נשאלת שאלת אישור, ובמצב לא־אינטראקטיבי חובה להוסיף --yes
  • מחיקת מרחב האחסון תסיר גם את המכונות הווירטואליות והתמונות שבו; מומלץ תחילה להריץ vms repo check-running ו-vms repo whether-exist-data כדי לוודא את היקף ההשפעה

בקשת אישור במצב אינטראקטיבי:

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

vms repo list-volumes – הצגת כרכים זמינים​

מציג את הכרכים הזמינים ליצירת מרחבי אחסון.

vms repo list-volumes [--json]

דוגמת פלט:

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 – הצגת המכונות הווירטואליות במרחב האחסון​

vms repo list-vms --body '{"repo_id":"<repo_id>"}'
  • ניתן להעביר את מזהה מרחב האחסון דרך repo_id או repoId
  • הפקודה מקבלת תחילה את אובייקט מרחב האחסון ואז שואלת על המכונות הווירטואליות שבו; התוצאה מהימנה יותר

vms repo check-running – בדיקת מכונות וירטואליות פועלות במרחב האחסון​

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

מבוצע לפני מחיקת מרחב האחסון, כדי לוודא שאין מכונות וירטואליות פועלות; כאשר אין מכונות וירטואליות פועלות הפלט ריק.

vms repo whether-exist-data – בדיקה אם קיימים נתונים במרחב האחסון​

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

מבוצע לפני מחיקת מרחב האחסון, כדי לוודא אם עדיין קיימים נתונים במרחב האחסון; זהה לבדיקה המקדימה לפני מחיקת מרחב אחסון בממשק האינטרנטי.

10. הגדרות גלובליות​

vms setting get – הצגת ההגדרות הגלובליות​

מציג את התצורה הגלובלית של אפליקציית VMs.

vms setting get [--json]

דוגמת פלט:

PROPERTY                VALUE
HOST SHUTDOWN BEHAVIOR 1
KB LAYOUT en-us
SHOW VIRTIO BLK VDISK false
  • HOST SHUTDOWN BEHAVIOR הוא אופן הטיפול במכונות הווירטואליות בעת כיבוי המארח
  • KB LAYOUT הוא פריסת המקלדת של המכונה הווירטואלית

11. שאילת מידע ניטור​

vms collectd hostinfo – הצגת מידע ניטור של המארח​

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

דוגמת פלט:

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

vms collectd vminfo – הצגת מידע ניטור של המכונות הווירטואליות​

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

דוגמת פלט:

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 – הצגת מידע ניטור של האחסון​

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

דוגמת פלט:

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

מצב אינטראקטיבי ומצב לא־אינטראקטיבי​

ה-CLI קובע אם הוא פועל בסביבת מסוף, ונוקט התנהגויות שונות:

מצב אינטראקטיבי (סביבת מסוף)​

  • פעולות מסוכנות מציגות בקשת אישור, כאשר אפשרות ברירת המחדל היא No
  • יש להזין y או Y להמשך, ו-n או Enter ישירות לביטול
  • בעת ביטול הפעולה מופק Operation cancelled, וקוד היציאה הוא 99

מצב לא־אינטראקטיבי (סקריפט/אוטומציה)​

  • פעולות מסוכנות חייבות להשתמש ב---yes כדי לדלג על האישור, אחרת הפקודה מחזירה שגיאה ישירות עם קוד יציאה 1
  • ללא סביבת מסוף הפקודה אינה ממתינה לקלט, ומתאימה לסקריפטים ולמשימות מתוזמנות
  • מומלץ לטפל במפורש בקוד היציאה בסקריפט, כדי להבחין בין הצלחה, כשל והתנגשות מצב

תבנית פלט JSON​

פקודות שאילתה תומכות בפרמטר --json, ומפיקות נתוני JSON מתוקננים לנוחות ניתוח תוכנתי.

כללי התבנית:

  • שמות שדות משתמשים ב-snake_case
  • ערכים בוליאניים הם true/false
  • הזמן משתמש בתבנית ISO 8601, עם דיוק ננו־שנייה והיסט UTC+8 (כגון 2026-09-02T11:43:51.176535374+08:00)
  • פלט JSON נכתב ל-stdout, והודעות שגיאה נכתבות ל-stderr
  • שדות ארוכים שנחתכו בפלט הטבלה מופיעים בערכם המלא בפלט ה-JSON

דוגמה:

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

מבנה ה-JSON שונה במקצת בין פקודות שונות: vms vm list, vms vm snapshot list, vms vm logs מפיקות מערך ישירות; שאר פקודות הרשימה מפיקות אובייקט הכולל totalCount ושדות נתונים, ושם שדה הנתונים משתנה לפי המשאב (כגון items, hosts, vms, storage). לדוגמה 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"
}
}
}

בחלק מהפקודות פלט ה-JSON הוא ערך פשוט, לדוגמה vms network ovsinfo --json מפיק true, ו-vms vm pause --json מפיק null.

הסבר קודי יציאה​

קוד יציאהמשמעותמקרה טיפוסי
0הצלחההפקודה הושלמה כרגיל
1שגיאת פרמטרחסר פרמטר חובה, תבנית פרמטר שגויה, לא נוסף --yes
3המשאב אינו קייםהבדיקה המקדימה של הפקודה לא עברה, לדוגמה התמונה שצוינה אינה קיימת
4התנגשות מצבמצב המכונה הווירטואלית הנוכחי אינו מאפשר פעולה זו (כגון ביצוע כיבוי על מכונה וירטואלית שכבר כבויה)
6שגיאת חיבורלא ניתן להתחבר לשירות VMs, או נתיב ה-socket שגוי
7פסק זמןהבקשה חרגה מזמן קצוב, וניתן להתאים דרך --timeout
9שגיאת ביצועהקצה האחורי החזיר שגיאה (הודעת השגיאה כוללת code_num ותיאור שגיאה)
99ביטול משתמשבחירת No באישור האינטראקטיבי או לחיצה ישירה על Enter

דוגמה:

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

דוגמאות תרחישי שימוש​

תחזוקה שוטפת​

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

פעולות מרובות בסקריפט​

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

גיבוי וסקירה​

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

בדיקה לפני מחיקה​

# 删除存储空间前,先确认是否有虚拟机正在运行、是否存在数据
vms repo check-running <repo_id>
vms repo whether-exist-data --body '{"repo_id":"<repo_id>"}'

# 删除映像前,先确认有哪些虚拟机在使用
vms image list-vms --image-id <image_id>

# 删除网络前,先确认接入的虚拟机
vms network list-vnics <network_id>

קריאה מכלי AI​

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

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

פיתוח פנימי ואינטגרציה עם מערכות​

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

שאלות נפוצות​

ש: האם ה-CLI דורש התקנה נוספת?

לא. ה-CLI מותקן יחד עם אפליקציית VMs, ולאחר הפעלת האפליקציה ניתן להשתמש בו ישירות בהרצת הפקודה vms.

ש: האם חובה להשתמש ב-CLI דרך SSH?

לא. ניתן לקרוא ל-CLI מכל מסוף שורת פקודה, כולל מסוף מקומי, SSH מרחוק, סקריפטים, כלי AI ועוד.

ש: האם ה-CLI יכול לנהל מכונות וירטואליות בהתקנים אחרים?

לא. ה-CLI מתקשר עם שירות VMs דרך unix socket מקומי, ומשמש רק לניהול מכונות וירטואליות מקומיות.

ש: מדוע חלק מהפקודות מבקשות אישור וחלק לא?

פעולות כגון מחיקת מכונה וירטואלית, מחיקת רשת, מחיקת תמונה, מחיקת מרחב אחסון וכיבוי (poweroff, force-poweroff) משפיעות על נתונים או שירותים, ולכן דורשות אישור כברירת מחדל; פקודות הפעלה, הפעלה מחדש, השהיה, המשכה ושאילתה אינן כוללות הגבלה כזו.

ש: כיצד מאשרים פעולות מסוכנות במצב לא־אינטראקטיבי?

יש להוסיף את הפרמטר --yes לכל הפעולות המסוכנות, אחרת הפקודה מחזירה שגיאה ויוצאת (קוד יציאה 1).

ש: כיצד בסקריפט קובעים אם הפקודה בוצעה בהצלחה?

נקבע לפי קוד היציאה: 0 מציין הצלחה, וכל ערך שאינו 0 מציין כשל. ניתן גם לנתח את תוכן פלט --json.

ש: מדוע הרשימה בפלט --json היא אובייקט?

פלט ה-JSON של חלק מהפקודות מאורגן כאובייקט לפי מזהה, ונוסף לו שדה totalCount, לנוחות שימוש ישיר לפי מזהה.

עזרה נוספת​

כל פקודה תומכת ב---help לצפייה בשימוש המפורט:

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