מכשיר וירטואלי הוא חבילה שמכילה קובצי אימג' של דיסקים והגדרות חומרה של מכונה וירטואלית (VM).
פורמט נפוץ ופופולרי למכשירים וירטואליים הוא פורמט OVF.
כשיוצרים חבילה של מכשירים וירטואליים בפורמט OVF, נוצרת חבילת OVF. חבילת OVF היא תיקייה שמכילה .ovfקובץ תיאור
ואוסף של משאבים אחרים, כמו דיסקים. כשחבילת OVF מאוחסנת בארכיון כקובץ יחיד, היא נקראת קובץ OVA.
בדף הזה מתוארים השלבים שבהם אפשר להשתמש כדי לייבא תמונת מכונה ממכשיר וירטואלי באמצעות Compute Engine.
לפני שמתחילים
- מפעילים את VM Migration API בפרויקט.
- מוודאים שדיסק האתחול מוגדר עם מערכת הפעלה נתמכת.
פורמטים נתמכים של קבצים
אפשר לייבא קבצים של תמונות מכונה בפורמטים הבאים באמצעות Compute Engine:
פורמט וירטואליזציה פתוח (OVF): קובץ OVF אחד וקובצי דיסק של מכונה וירטואלית (VMDK) באותה קטגוריה.
Open Virtual Appliance (OVA): קובץ OVA אחד שמכיל קובץ OVF וקובצי דיסק. Compute Engine תומך בייבוא של קובצי תמונות של מכונות בפורמט OVA, בפורמטים הבאים של קובצי דיסק:
- דיסק של מכונה וירטואלית (VMDK)
- QEMU copy-on-write (QCOW)
- QEMU copy-on-write 2 (QCOW2)
- פורמט דיסק משופר של QEMU (QED)
- VPC
- קובץ אימג' של דיסק וירטואלי (VDI)
- דיסק קשיח וירטואלי גרסה 2 (VHDX)
מגבלות
כשמייבאים תמונות מכונה, חלות המגבלות הבאות:
- אפשר לייבא תמונות של מכונות רק אל אזורים שתומכים במשפחות של מופעי N2.
- אי אפשר לייבא תמונות של מכונות לסדרת מכונות מהדור הרביעי. מידע נוסף זמין במאמר בנושא מגבלות והגבלות על ייבוא תמונות מכונה
- אי אפשר לייבא תמונות מכונה שמבוססות על ארכיטקטורת Arm.
- אי אפשר ליצור תמונות מכונה ממכונות וירטואליות של מקור עם אף אחת מהאפשרויות הבאות:
- דיסקים מצורפים שגדולים מ-200TB
- סוגי מכונות A4, A3, C3D, H3 או Z3
תהליך ייבוא תמונת מכונה
כדי לייבא תמונת מכונה לתמונת מכונה של Compute Engine באמצעות Compute Engine, מבצעים את השלבים הבאים:
הכנת קובץ מכונה לייבוא
כדי לייבא תמונת מכונה לתמונה של Compute Engine, קודם צריך להכין את קובץ תמונת המכונה לייבוא. בקטעים הבאים מוסבר בפירוט איך לבצע את הפעולות האלה.
הוספת קובץ תמונת המכונה ל-Cloud Storage
כדי לייבא תמונת מכונה לתמונת מכונה ב-Compute Engine, קודם צריך להוסיף את קובץ תמונת המכונה ל-Cloud Storage. מידע נוסף מופיע במאמר בנושא העלאת אובייקטים ממערכת קבצים. כדי לשפר את הביצועים, מומלץ להעלות את קובץ האימג' של המכונה לדלי באותו אזור Google Cloud שבו רוצים ליצור את האימג' של המכונה.
מתן ההרשאות הנדרשות
כדי לייבא תמונת מכונה לתמונת מכונה ב-Compute Engine, צריך להעניק הרשאות כמו שמתואר בטבלה הבאה.
| תפקיד | ההרשאות הנדרשות | תיאור |
|---|---|---|
| צפייה באובייקט אחסון | roles/storage.objectViewer |
מקצים לחשבון השירות שמוגדר כברירת מחדל ב-Migrate to Virtual Machines בפרויקט המארח (service-HOST_PROJECT_NUMBER@gcp-sa-vmmigration.iam.gserviceaccount.com) את התפקיד roles/storage.objectViewer בדלי שבו נמצאת התמונה שרוצים לייבא. ההרשאה הזו מאפשרת ל-Migrate to Virtual Machines לגשת לתמונת המקור. |
| מנהל מערכת של VM Migration | roles/vmmigration.admin |
בפרויקט המארח, מעניקים לחשבון המשתמש שרוצים להשתמש בו כדי לייבא את תמונת המקור את התפקיד roles/vmmigration.admin. |
| חשבון שירות של VM Migration | roles/vmmigration.serviceAgent |
מקצים לחשבון השירות שמוגדר כברירת מחדל ב-Migrate to Virtual Machines בפרויקט המארח (service-HOST_PROJECT_NUMBER@gcp-sa-vmmigration.iam.gserviceaccount.com) את התפקיד roles/vmmigration.serviceAgent בפרויקט היעד. לדוגמה, אם service-1234567890@gcp-sa-vmmigration.iam.gserviceaccount.com הוא חשבון השירות של Migrate to Virtual Machines בפרויקט המארח, צריך להעניק לחשבון השירות הזה את התפקיד roles/vmmigration.serviceAgent כדי ליצור את התמונה בפרויקט היעד. |
בחירת פרויקט יעד
כדי לארח את תמונת המכונה, צריך ליצור פרויקט יעד או לבחור פרויקט יעד. פרויקט יעד מגדיר את פרויקט היעד של תמונת מכונה. מידע נוסף על יצירה או בחירה של פרויקט יעד זמין במאמר הוספת פרויקט יעד.
ייבוא תמונת מכונה ל-Compute Engine
אפשר לייבא תמונת מכונה ל-Compute Engine באמצעות פקודות של Google Cloud CLI או של REST API.
כשמייבאים תמונת מכונה, מערכת Compute Engine יוצרת כמה משאבים זמניים, כמו מכונות וירטואליות או דיסקים, בפרויקט היעד. המשאבים הזמניים האלה נמחקים בסיום תהליך הייבוא של תמונת המכונה.
gcloud
כדי לייבא תמונת מכונה ל-Compute Engine באמצעות Google Cloud CLI, משתמשים בבקשה הבאה.
gcloud alpha migration vms machine-image-imports create IMAGE_NAME \ --source-file=SOURCE_FILE \ --location=REGION_ID \ --target-project=projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT
מחליפים את מה שכתוב בשדות הבאים:
-
IMAGE_NAME: השם של תמונת המכונה שרוצים ליצור. מידע נוסף על כללי מתן השמות זמין במאמר בנושא מוסכמות למתן שמות. -
SOURCE_FILE: הקובץ שממנו רוצים לייבא את תמונת המכונה. מזינים את הנתיב בפורמט gs://bucket/folder/file. כדי לקבל את הנתיב של אובייקט בתוך קטגוריה, ראו צפייה במטא-נתונים של אובייקט. הערה: אפשר לייבא תמונות רק מקובצי.ovfו-.ova. -
REGION_ID: האזור שבו רוצים להריץ את תהליך הייבוא של תמונת המכונה. תמונת המכונה נוצרת באזור הקרוב ביותר במספר אזורים. אם רוצים ליצור את תמונת המכונה באזור מסוים, צריך לוודא שהערך שלsingleRegionStorageמוגדר כ-true. כאן תוכלו לראות רשימה של אזורים נתמכים. -
HOST_PROJECT_ID: השם של פרויקט המארח שממנו רוצים להעביר את תמונת המכונה. -
TARGET_PROJECT: פרויקט היעד שבו רוצים ליצור את תמונת המכונה. אם עדיין לא הוספתם פרויקט יעד, תוכלו לעשות זאת באמצעות ההוראות שמפורטות במאמר הוספת פרויקט יעד. -
REGION_ID: האזור שבו רוצים להריץ את תהליך הייבוא של תמונת המכונה. תמונת המכונה נוצרת באזור הקרוב ביותר במספר אזורים. אם רוצים ליצור את תמונת המכונה באזור מסוים, צריך לוודא שהערך שלsingleRegionStorageמוגדר כ-true. כאן תוכלו לראות רשימה של אזורים נתמכים.
מידע נוסף זמין במאמר gcloud compute migration machine-image-imports.
API ל-REST
כדי לייבא תמונת מכונה ל-Compute Engine באמצעות ה-API בארכיטקטורת REST, מבצעים את השלבים הבאים.
יוצרים משאב לייבוא תמונת מכונה באמצעות הבקשה הבאה.
POST https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/imageImports?imageImportId=IMPORT_NAME { "cloudStorageUri": "SOURCE_FILE", "machineImageTargetDefaults": { "imageName": "IMAGE_NAME", "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT", ... } }מחליפים את מה שכתוב בשדות הבאים:
-
HOST_PROJECT_ID: השם של פרויקט המארח שממנו רוצים להעביר את תמונת המכונה. -
REGION_ID: האזור שבו רוצים להריץ את תהליך הייבוא של תמונת המכונה. תמונת המכונה נוצרת באזור הקרוב ביותר שכולל מספר אזורים. אם רוצים ליצור את תמונת המכונה באזור, צריך לוודא שהערך שלsingleRegionStorageמוגדר כ-true. רשימת האזורים הנתמכים זמינה במאמר אזורים ותחומים. -
SOURCE_FILE: הקובץ שממנו רוצים לייבא את תמונת המכונה. מזינים את הנתיב בפורמט gs://bucket/folder/file. כדי לקבל את הנתיב של אובייקט בתוך קטגוריה, ראו צפייה במטא-נתונים של אובייקט. הערה: אפשר לייבא תמונות מכונה רק מקבצים מסוג.ovaו-.ovf. -
IMAGE_NAME: השם של תמונת המכונה שרוצים ליצור. מידע נוסף על כללי מתן השמות זמין במאמר בנושא מוסכמות למתן שמות. -
TARGET_PROJECT: פרויקט היעד שבו רוצים ליצור את תמונת המכונה. אם עדיין לא הוספתם פרויקט יעד, תוכלו לעשות זאת באמצעות ההוראות שמפורטות במאמר הוספת פרויקט יעד.
בדוגמה הזו,
IMPORT_NAMEהוא מזהה שמייצג את משאב הייבוא של תמונת המכונה. כשמייבאים תמונת מכונה ל-Compute Engine, Migrate to Virtual Machines יוצרת קודם משאב לייבוא תמונת מכונה. משאב הייבוא של תמונת המכונה מייצג את תהליך הייבוא של תמונת המכונה. אפשר להשתמש ב-IMPORT_NAMEכדי לקבל את הקישור לתמונת המכונה שיובאה כחלק מתהליך הייבוא של תמונת המכונה.בטבלה הבאה מופיעה רשימה מלאה של השדות הנתמכים בבקשת יצירת ייבוא של תמונת מכונה.
שם השדה תיאור cloudStorageUriהנתיב של הקובץ שממנו רוצים לייבא את תמונת המכונה. מזינים את הנתיב בפורמט gs://bucket/folder/file. כדי לקבל את הנתיב של אובייקט בתוך קטגוריה, אפשר לעיין במאמר צפייה במטא-נתונים של אובייקט.
הערה: אפשר לייבא תמונות מכונה רק מקבצים מסוג.ovfו-.ova.machineImageTargetDefaults.targetProjectפרויקט היעד שבו רוצים ליצור את תמונת המכונה. מידע נוסף זמין במאמר בנושא הפניית API לפרויקט היעד. לדוגמה:
projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT
בדוגמה, מחליפים את הערכים הבאים:-
HOST_PROJECT_ID: השם של פרויקט המארח שממנו רוצים להעביר את תמונת המכונה. -
TARGET_PROJECT: פרויקט היעד שבו רוצים ליצור את התמונה.
machineImageTargetDefaults.machine_image_nameהשם של תמונת המכונה שרוצים ליצור. מידע נוסף על כללי מתן השמות זמין במאמר מוסכמות למתן שמות למשאבים. machineImageTargetDefaults.description(אופציונלי) תיאור של תמונת המכונה. machineImageTargetDefaults.machine_type(אופציונלי) המכונה שבה רוצים ליצור את תמונת המכונה. אם לא מציינים את סוג המכונה, Compute Engine בוחר סוג מכונה רלוונטי על סמך המידע מתמונת המכונה של המקור. machineImageTargetDefaults.labelsכדי לארגן את הפרויקט, מוסיפים תוויות כצמדי מפתח/ערך למשאבים. מידע נוסף על תיוג משאבים machineImageTargetDefaults.tagsמוסיפים תגים שרוצים לצרף לתמונת המכונה. איך מנהלים את התגים של משאבים machineImageTargetDefaults.additionalLicensesאפשר להוסיף עד 10 רישיונות נוספים למופע של מכונה וירטואלית שנוצר מתמונת המכונה המיובאת, באמצעות פורמט כתובת URL תקין. לדוגמה, אפשר להוסיף רישיונות נוספים באמצעות פורמט כתובת ה-URL הבא:
https://www.googleapis.com/compute/beta/projects/windows-sql-cloud/global/licenses/sql-server-2012-enterprise
machineImageTargetDefaults.service_accountמציינים את חשבון השירות בפרויקט היעד שבו נעשה שימוש בתמונת המכונה. כברירת מחדל, לא מוקצה חשבון שירות לתמונת המכונה.
אם יוצרים מכונה ב-Compute Engine מתמונת מכונה ומתכננים להריץ עליה אפליקציה, יכול להיות שהמכונה תצטרך גישה לשירותים ולממשקי API אחרים של ה-CLI של gcloud. יוצרים חשבון שירות בפרויקט היעד עם ההרשאות הנדרשות לגישה לשירותים ולממשקי ה-API האלה לפני שיוצרים את מכונת Compute Engine. לאחר מכן, מציינים כאן את חשבון השירות. מידע נוסף זמין במאמר בנושא הגדרת מכונה וירטואלית להפעלה כחשבון שירות.
כדי לצרף את חשבון השירות למכונה של Compute Engine, לחשבון המשתמש שלכם בפרויקט המארח של Compute Engine צריכות להיות ההרשאות הנדרשות. מידע נוסף זמין במאמר הגדרת הרשאות בחשבון השירות של פרויקט היעד.machineImageTargetDefaults.shielded_instance_config(אופציונלי) מפעילים מכונה וירטואלית מוגנת במכונה הזו. מכונות וירטואליות מוגנות מוקשחות באמצעות קבוצה של אמצעי בקרה לאבטחה שעוזרים להגן מפני ערכות rootkit וערכות bootkit. מהי מכונה וירטואלית מוגנת? machineImageTargetDefaults.singleRegionStorageמגדירים את הדגל הזה ל-true אם רוצים שתמונת המכונה storageLocationsתהיה אזור. אם מגדירים את הדגל הזה כ-false, נבחר האזור הקרוב ביותר עם כמה אזורים.machineImageTargetDefaults.skip_os_adaptationמגדירים את הדגל הזה כ-true אם רוצים לדלג על התאמת מערכת ההפעלה.
כדי שמכונות וירטואליות שנוצרו מתמונות מכונה מיובאות יפעלו בצורה תקינה ב- Google Cloud, צריך לבצע שינויים בהגדרה שלהן. השינויים האלה נקראים התאמות למערכת ההפעלה. מערכת Compute Engine מבצעת התאמות של מערכת ההפעלה באופן אוטומטי בתהליך הייבוא של תמונת המכונה. מידע נוסף זמין במאמר התאמת מכונות וירטואליות להרצה ב- Google Cloud.machineImageTargetDefaults.osAdaptationParameters.licenseTypeסוג הרישיון שבו רוצים להשתמש בתמונת המכונה. Compute Engine תומך ברישיונות בתשלום לפי שימוש (PAYG) וברישיונות מסוג BYOL (הבאת רישיונות משלכם) למכונות וירטואליות שפרסתם. סוג הרישיון שמוקצה למכונה וירטואלית שעברה מיגרציה כברירת מחדל נקבע על ידי Compute Engine על סמך מערכת ההפעלה שעברה מיגרציה, כפי שמתואר במאמר בנושא מערכות הפעלה נתמכות.
אם מערכת ההפעלה תומכת בכמה סוגי רישיונות, אפשר לבטל את ברירת המחדל של סוג הרישיון כדי לציין במפורש סוג רישיון של תשלום לפי שימוש (PAYG) או שימוש ברישיון קיים (BYOL).
machineImageTargetDefaults.osAdaptationParameters.network_interfacesב-Compute Engine יש אפשרות ליצור תמונות של מכונות עם כמה ממשקי רשת (NIC). כל ממשק מצורף לרשת VPC אחרת, וכך תמונת המכונה מקבלת גישה לרשתות VPC שונות ב-ה-CLI של gcloud.
לפני שמוסיפים עוד ממשקי רשת, חשוב לשים לב לשיקולים הבאים:
- אי אפשר לצרף כמה ממשקי רשת לאותה רשת VPC. יכול להיות שההגדרה תישמר, אבל יצירת המופע של המכונה הווירטואלית תיכשל.
- אחרי שמפעילים מופע של Compute Engine מתמונת מכונה באמצעות
test-cloneאוcut-over, אי אפשר להוסיף או להסיר ממשק רשת במופע שנוצר. אפשר לחזור על הפעולהtest-cloneאוcut-overעם פרטי יעד שונים כדי ליצור מחדש את המופע.
כדי להוסיף או להסיר ממשק רשת: - בוחרים באפשרות הוספת ממשק רשת כדי להוסיף ממשק רשת נוסף למופע Compute Engine. אפשר להגדיר את כל האפשרויות כמו בממשק הרשת הראשוני.
machineImageTargetDefaults.osAdaptationParameters.generalizeמגדירים את הדגל הזה לערך true אם רוצים להכליל את תמונת המכונה.
כשיוצרים מכונה מקובץ אימג' של מכונה, Windows מוסיף למכונה מידע ייחודי. הכללה היא תהליך שבו מסירים את המידע הזה כדי ליצור כמה מופעים מאותה תמונת מכונה.machineImageTargetDefaults.encryptionה Google-owned and Google-managed encryption key שבו רוצים להשתמש כדי להצפין את הנתונים במהלך תהליך הייבוא. מידע נוסף זמין במאמר ברירת המחדל של הצפנה במנוחה.
משתמשים במפתחות הצפנה בניהול הלקוח (CMEK) כדי להצפין את הנתונים של תמונת המכונה. אתם יוצרים את מפתחות ההצפנה האלה, מנהלים אותם והם בבעלותכם. מידע נוסף זמין במאמר הגנה על משאבים באמצעות מפתחות Cloud KMS.
הערה: מפתח ההצפנה שתבחרו לשימוש במהלך תהליך הייבוא ישמש גם לתמונת הפלט.
כשמוסיפים מפתח CMEK, צריך להעניק הרשאות כמו שמתואר בטבלה הבאה.תפקיד ההרשאות הנדרשות תיאור חשבון שירות של Cloud VM Migration roles/vmmigration.serviceAgent צריך להעניק את ההרשאה הזו לחשבון השירות של Compute Engine כדי להצפין את הנתונים של תמונת המכונה שנוצרה במהלך תהליך הייבוא. סוכן השירות של Compute Engine roles/compute.serviceAgent צריך להעניק את ההרשאה הזו לסוכן השירות של Compute Engine כדי להצפין את הנתונים במהלך תהליך הייבוא. אמורה להתקבל תגובה שדומה לדוגמה הבאה.
{ "name": "projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID", "metadata": { "createTime": "2023-10-31T09:12:26.94928636Z", "target": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME", "verb": "create", "apiVersion": "v1", "@type": "type.googleapis.com/google.cloud.vmmigration.v1.OperationMetadata" } }-
כדי לבדוק אם משימת הייבוא של תמונת המכונה הושלמה, מריצים את הפקודה הבאה כדי לשלוח שאילתה לגבי הפעולה.
GET https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID
מחליפים את מה שכתוב בשדות הבאים:
-
HOST_PROJECT_ID: השם של פרויקט המארח שממנו מעבירים את תמונת המכונה. -
REGION_ID: האזור שבו רוצים להריץ את תהליך הייבוא של תמונת המכונה. תמונת המכונה נוצרת באזור הקרוב ביותר שכולל מספר אזורים. אם רוצים ליצור את תמונת המכונה באזור, צריך לוודא שהערך שלsingleRegionStorageמוגדר כ-true. רשימת האזורים הנתמכים זמינה במאמר אזורים ותחומים. -
OPERATION_ID: מזהה הפעולה של משימת ההעברה.
אמורה להתקבל תגובה על השלמת הפעולה שדומה לדוגמה הבאה.
{ "done": true, "name": "projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID", "response": { "@type": "type.googleapis.com/google.cloud.vmmigration.v1.ImageImport", "name": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME", "cloudStorageUri": "SOURCE_FILE", "createTime": "2023-10-31T09:04:04.413664947Z", "machineImageTargetDefaults": { "imageName": "IMAGE_NAME", "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT" }, "recentImageImportJobs": [ { "name": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME/imageImportJobs/image-import-job", "diskImageTargetDetails": { "imageName": "IMAGE_NAME", "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT" }, "state": "PENDING" } ] }, "metadata": { "createTime": "2023-10-31T09:04:04.416740716Z", "endTime": "2023-10-31T09:05:36.79987142Z", "target": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME", "verb": "create", "apiVersion": "v1", "@type": "type.googleapis.com/google.cloud.vmmigration.v1.OperationMetadata" } }-
כדי לעקוב אחרי השלמת הייבוא של תמונת המכונה, משתמשים בפקודה הבאה.
GET https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/imageImports/IMPORT_NAME/imageImportJobs/image-import-job
מחליפים את מה שכתוב בשדות הבאים:
-
HOST_PROJECT_ID: השם של פרויקט המארח שממנו מעבירים את תמונת המכונה. -
REGION_ID: האזור שבו רוצים להריץ את תהליך הייבוא של תמונת המכונה. תמונת המכונה נוצרת באזור הקרוב ביותר שכולל מספר אזורים. אם רוצים ליצור את תמונת המכונה באזור, צריך לוודא שהערך שלsingleRegionStorageמוגדר כ-true. רשימת האזורים הנתמכים זמינה במאמר אזורים ותחומים. -
IMPORT_NAME: המזהה שמייצג את משאב הייבוא של תמונת המכונה. כשמייבאים תמונת מכונה ל-Compute Engine, Migrate to Virtual Machines יוצרת קודם משאב לייבוא תמונת מכונה. משאב הייבוא של תמונת המכונה מייצג את תהליך הייבוא של תמונת המכונה. אפשר להשתמש ב-IMPORT_NAMEכדי לקבל את הקישור לתמונת המכונה שיובאה כחלק מתהליך הייבוא של תמונת המכונה.
אמורה להופיע תגובה על סיום העבודה שדומה לדוגמה הבאה.
{ "createTime":"2023-10-31T09:12:27.053788394Z", "createdResources":[ "https://www.googleapis.com/compute/v1/projects/USER_PROJECT/global/images/IMAGE_NAME" ], "diskImageTargetDetails": { "imageName":"IMAGE_NAME", "targetProject":"projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT" }, "endTime":"2023-10-31T09:16:50.224865783Z", "name":"projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME/imageImportJobs/image-import-job", "state":"SUCCEEDED" }-