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 vm | list | מציג את כל המכונות הווירטואליות | לא | לא |
| vms vm | get | מציג פרטים של מכונה וירטואלית מסוימת | לא | לא |
| vms vm | list-resource | מציג משאבים זמינים ליצירת מכונה וירטואלית | לא | לא |
| vms vm | logs | מציג את יומני הפעולות של המכונה הווירטואלית | לא | לא |
| vms vm | poweron | מפעיל את המכונה הווירטואלית | לא | לא |
| vms vm | poweroff | מכבה את המכונה הווירטואלית (כיבוי רגיל) | כן | לא |
| vms vm | force-poweroff | מכבה את המכונה הווירטואלית בכוח | כן | ✅ |
| vms vm | reboot | מפעיל מחדש את המכונה הווירטואלית | לא | לא |
| vms vm | pause | משהה את המכונה הווירטואלית | לא | לא |
| vms vm | resume | ממשיך מכונה וירטואלית מושהית | לא | לא |
| vms vm | autorun | מגדיר הפעלה אוטומטית בעת עליית המערכת | לא | לא |
| vms vm | clone | משכפל את המכונה הווירטואלית | לא | לא |
| vms vm | export | מייצא את המכונה הווירטואלית כקובץ OVA | לא | לא |
| vms vm | delete | מוחק את המכונה הווירטואלית | כן | ✅ |
| vms vm disk | list | מציג את הכוננים הקשיחים הווירטואליים של המכונה הווירטואלית | לא | לא |
| vms vm snapshot | list | מציג את תמונות המצב של המכונה הווירטואלית | לא | לא |
| vms vm snapshot | create | יוצר תמונת מצב | לא | לא |
| vms vm snapshot | edit | עורך את תיאור תמונת המצב ומצב הנעילה | לא | לא |
| vms vm snapshot | config | מציג את תצורת המכונה הווירטואלית השמורה בתמונת המצב | לא | לא |
| vms vm snapshot | consistency | מציג תצוגה מקדימה של עקביות תמונת המצב | לא | לא |
| vms vm | link | מקבל מידע חיבור למסוף VNC | לא | לא |
| vms network | list | מציג את הרשתות הווירטואליות | לא | לא |
| vms network | get | מציג פרטים של רשת וירטואלית | לא | לא |
| vms network | create | יוצר רשת וירטואלית | לא | לא |
| vms network | update | מעדכן את הרשת הווירטואלית | לא | לא |
| vms network | delete | מוחק את הרשת הווירטואלית | כן | ✅ |
| vms network | list-interfaces | מציג ממשקי רשת מסוג מסוים | לא | לא |
| vms network | list-vnics | מציג כרטיסי רשת וירטואליים ברשת | לא | לא |
| vms network | ovsinfo | מציג אם OVS מופעל | לא | לא |
| vms image | list | מציג תמונות | לא | לא |
| vms image | edit | עורך מידע על תמונה | לא | לא |
| vms image | delete | מוחק תמונה | כן | ✅ |
| vms image | list-vms | מציג מכונות וירטואליות המשתמשות בתמונה זו | לא | לא |
| vms repo | list | מציג מרחבי אחסון | לא | לא |
| vms repo | get | מציג פרטים של מרחב אחסון | לא | לא |
| vms repo | update | מעדכן את תצורת מרחב האחסון | לא | לא |
| vms repo | delete | מוחק את מרחב האחסון | כן | ✅ |
| vms repo | list-volumes | מציג כרכים זמינים | לא | לא |
| vms repo | list-vms | מציג את המכונות הווירטואליות במרחב האחסון | לא | לא |
| vms repo | check-running | בודק מכונות וירטואליות פועלות במרחב האחסון | לא | לא |
| vms repo | whether-exist-data | בודק אם קיימים נתונים במרחב האחסון | לא | לא |
| vms setting | get | מציג את ההגדרות הגלובליות | לא | לא |
| vms collectd | hostinfo | מציג מידע ניטור של המארח | לא | לא |
| vms collectd | vminfo | מציג מידע ניטור של המכונות הווירטואליות | לא | לא |
| vms collectd | storageinfo | מציג מידע ניטור של האחסון | לא | לא |
מראי פקודות
<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. מסוף מרוחק
vms vm link – קבלת מידע חיבור VNC
מקבל את מידע החיבור של מסוף ה-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,qcow2statusהוא מצב התמונה, ו-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