איך להמיר פורמטים של דיסק וירטואלי

הקדמה

כאשר אתה עובד עם שרת ענן רחוק, ייתכן ואתה עובד עם מכונה וירטואלית: מקום ייחודי ומוגן תוך שימוש במערכת הפעלה שלמה הרצה בתוך קבוצת שרתים גדולה יותר. בנוסף, ניתן לעבוד עם מכונות וירטואליות מקומיות על שולחן העבודה שלך, באמצעות תוכנות כמו QEMU או VirtualBox. מכונות וירטואליות עשויות לכלול ממשק שולחן עבודה שלם, או שהן עשויות להריץ רק שרת SSH כדי לאפשר חיבורים לטרמינל. בשני המקרים, הן דומות מבחינה טכנית ועושות דרישות דומות. במלבד אופטימיזציות ענן בגודל רב, ההבדל היחיד בין סביבות הווירטואליזציה הוא הכוננים הקשיחים של המכונה הוירטואלית והאפשרויות להגדרה. אלו מופנים כתמונות מכונה וירטואליות, והם עומדים בפורמטים שונים במספקים.תמונות מכונה וירטואליות, והן מעוצבות בצורה שונה בין ספקים.

במדריך זה, תלמד כיצד להמיר בין פורמטים של תמונות מכונות וירטואליות (כולל qcow2, vdi, vhd, ו־vmdk), כך שתוכל לקחת את הסביבות הוירטואליות שלך משולחן העבודה שלך לענן וחזרה לפי הצורך.

דרישות מוקדמות

הפקודות במדריך זה ניתנות להרצה ב- Windows, macOS, או Linux, כל עוד תוכל להתקין את QEMU ו-VirtualBox יחד עם כלי השורת פקודה שלהם. מדריך זה מספק הוראות התקנה באמצעות מנהל החבילות Homebrew. ניתן להתקין את Homebrew על macOS, על Linux, או על Windows בקרבת WSL2.

אם אתה מריץ ב droplet של DigitalOcean, יש לך לפחות 2 יחידות מעבד ו-2GB של זיכרון.

תצטרך גם לפחות 10GB של מקום פנוי כדי להריץ את הפקודות במדריך זה.

הערה: אם אתה משתמש ב- macOS עם מעבד Apple Silicon (ייצור משנת 2020 ואילך), תוכל רק להשתמש ב-QEMU ולא ב-VirtualBox.

QEMU

QEMU הוא התוכנה לוירטואליזציה בקוד פתוח החזקה והנתמכת ביותר. הוא פועל על כל הפלטפורמות העיקריות (כולל Windows, macOS, Linux ומערכות הפעלה אחרות כמו Android) ויכול לבצע גם וירטואליזציה וגם הדמיה כפי שנדרש. לדוגמה, אם אתה מפעיל תמונת שרת Linux על שולחן עבודה של Windows (מקרה שימוש נפוץ), שתי אלו פלטפורמות משתפות ארכיטקטורה תחתונה משותפת (Intel/AMD x86), כך ש-QEMU יכול להשיג ביצועים מלאים דרך הוירטואליזציה. אם אתה משתמש ב-QEMU כדי לשלב ולהתאים ארכיטקטורות, לדוגמה על ידי הפעלת Linux או Windows ב-x86 (כשמערכת ההפעלה היא ה"מארחת" או ה"אורח") עם ארכיטקטורות ARM של macOS או Android, QEMU ישתמש באופן אוטומטי בהדמיה כדי לתרגם ארכיטקטורות.

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

QEMU היא תוכנה לשורת הפקודות, ויש לה היקף למידה גבוה בהשוואה לתוכנות וירטואליזציה לשולחן עבודה כמו VMware או VirtualBox בשל מספר האפשרויות הגדול שבהן ניתן להגדיר מכונות וירטואליות. ניתן להשתמש ב-QEMU באופן אופציונלי עם ממשקי משתמש גרפיים כמו QtEmu ב-Windows או Linux ו-UTM ב-macOS. מדריך זה יספק הוראות לשורת הפקודות לעבודה עם QEMU.

התקנת QEMU

כדי להתקין את QEMU, השתמש ב־Homebrew עם brew install:

  1. brew install qemu

זה יספק את כל אביזרי הכלים והפקודות של QEMU, כולל qemu-img, המשמש להמרת תמונות מכונה וירטואלית בקו הפקודה. ודא שיש לך גישה לפקודת qemu-img על ידי הפעלת which qemu-img:

  1. which qemu-img
Output
/usr/local/bin/qemu-img

הערה: ניתן גם להתקין את QEMU ב-Windows באמצעות מתקין המקומי שלו, אם אתה מעדיף לעבוד במערכת הפעלה Windows ללא WSL2.

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

VirtualBox

VirtualBox היא תוכנה לווירטואליזציה מקורית שסופקה על ידי Oracle. היא תומכת בכל מערכות ההפעלה x86 (Windows, Linux ו-macOS לפני 2020). היא אינה תומכת בהדמיה או בארכיטקטורות שאינן x86, ולכן בעיקר ניתן להשתמש בה להפעלת Linux תחת Windows ולהפך. עם זאת, היא גם פשוטה יותר לשימוש מאשר QEMU, מספקת הגדרות ברירת המחדל התואמות רחבות יותר, וכוללת ממשק משתמש גרפי כברירת מחדל.

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

התקנת VirtualBox

כדי להתקין את VirtualBox ב macOS, השתמש ב-brew install עם הדגל --cask, מאחר ו-VirtualBox משוכפל בתור אפליקציית אפליקציית מלאה, שההומברוו קוראת ל-cask:

  1. brew install --cask virtualbox

כדי להתקין את VirtualBox ב Ubuntu או בהפצות Linux שנובעות מ-Debian (כולל תחת WSL2), השתמש תחילה ב-apt update כדי לרענן את מקורות החבילות שלך, ואז apt install:

  1. sudo apt update
  2. sudo apt install virtualbox

כדי להתקין את VirtualBox ב- Windows ללא WSL2, הפנה אל דף הורדות.

לאחר התקנת VirtualBox, ודא שיש לך גישה לפקודת השורת vboxmanage על ידי הרצת which vboxmanage:

  1. which vboxmanage
Output
​​/usr/local/bin/vboxmanage

ישנן אלטרנטיבות זמינות ל־QEMU וְל־VirtualBox לווּוּירטואליזציה. עם זאת, רובן מיועדות עבור פלטפורמה ספציפית (כגון Hyper-V ב־Windows) או מיועדות לשימוש בתעשיית הארגון בגדלים גדולים (כמו VMware). לא נעסוק בהן ישירות בתרגום הזה, אך תצטרך להמיר את פורמטי התמונה שלהן בשלבים הבאים.

יצירת תמונת מכונה וירטואלית באמצעות QEMU

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

יש להשתמש בפקודת qemu-img create עם הדגל -f qcow2 כדי ליצור תמונה בפורמט qcow2 המוגדר כברירת מחדל של QEMU:

  1. qemu-img create -f qcow2 ubuntu-desktop-22.04.qcow2 10G

בנקודה זו, תהיה לך תמונת מכונה וירטואלית ריקה. למרות שקראת לה ubuntu-desktop-22.04.qcow2 והקצית נפח של 10G, בנקודה זו היא לא תכיל את Ubuntu 22.04 ולא תהיה בגודל של 10GB.

Output
Formatting 'ubuntu-desktop-22.04.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=10737418240 lazy_refcounts=off refcount_bits=16

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

A typical next step would be to install Ubuntu 22.04 onto the virtual machine, using a Ubuntu 22.04 ISO. However, you can skip this step for this tutorial, as you won’t actually be working directly with this virtual machine. An ISO is another type of disk image that is usually read-only, and was historically written onto CD and DVD installation media, rather than an image of a writable hard disk. Other software exists for manipulating ISO images, such as mkisofs and dd. To learn more about installing Linux using QEMU, refer to the QEMU documentation.

המרת תמונת QEMU לפורמט אחר

ברגע שיצרת תמונת VM, תוכל להשתמש ב- qemu-img convert כדי להמיר אותה לפורמטים אחרים. vdi הוא הפורמט הברירת מחדל של תמונת VirtualBox. ברירת המחדל היא שזה לא ימחק את תמונת ה-VM המקורית, רק ייצור חדשה:

  1. qemu-img convert -f qcow2 ubuntu-desktop-22.04.qcow2 -O vdi ubuntu-desktop-22.04.vdi

הדגל -f משמש לציון פורמט הקלט ושם הקובץ הקלט. הדגל -O משמש לציון פורמט הפלט ושם הקובץ הפלט. תוכל גם לכלול את הדגל -p כדי להציג אפילו סרגל התקדמות, שימושי בעת המרת תמונות גדולות מאוד. התמונה שיצרת בשלב האחרון תתמרה מיידית, מכיוון שאין בה עדיין תוכן. תוכל לוודא שיצרת את ubuntu-desktop-22.04.vdi באמצעות ls:

  1. ls ubuntu-desktop-22.04.vdi
Output
ubuntu-desktop-22.04.vdi

פורמטים נפוצים נוספים כוללים vmdk, המשמש בעיקר על ידי VMware, ו- vhd, המשמש בעיקר על ידי Hyper-V של Microsoft. תוכל גם ליצור תמונה "גולמית" אם התוכנה שלך מחייבת זאת, באמצעות השלב הבא.

המרת פורמטים אחרים של מכונות וירטואליות ל-QEMU

אם יש לך תמונה בתבנית vdi, תוכל להשתמש בפקודה vboxmanage שסופקת על ידי VirtualBox כדי להמיר אותה:

  1. vboxmanage clonemedium ubuntu-desktop-22.04.vdi ubuntu-desktop-22.04.img --format raw
Output
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Clone medium created in format 'raw'. UUID: 0501e707-c94e-4103-9069-d7b64a933d78

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

תמונות של מכונה וירטואלית גולמיות אינן דחוסות כלל, כך שהפקודה הזו תיצור בעצם קובץ שלם בגודל של 10GB, להבחנה מהמצב הקודם. תוכל להמיר אותו בחזרה לתבנית qcow2 לשימוש עם QEMU על ידי היפוך התחביר מהשלב האחרון:

  1. qemu-img convert -f raw ubuntu-desktop-22.04.img -O qcow2 ubuntu-desktop-22.04-new.qcow2

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

  1. rm ubuntu-desktop-22.04.img

לבסוף, תוכל להשתמש בפקודות qemu-img check ו-qemu-img info כדי להוציא מטה מספר נתונים מתמונות מכונה וירטואלית שלך:

  1. qemu-img check ubuntu-desktop-22.04.qcow2
Output
No errors were found on the image. Image end offset: 262144
  1. qemu-img info ubuntu-desktop-22.04.qcow2
Output
image: ubuntu-desktop-22.04.qcow2 file format: qcow2 virtual size: 10 GiB (10737418240 bytes) disk size: 196 KiB cluster_size: 65536 Format specific information: compat: 1.1 compression type: zlib lazy refcounts: false refcount bits: 16 corrupt: false extended l2: false

למידע נוסף על המרת תמונות עם qemu-img, הסתכל על עמוד המדריך של qemu-img או על התיעוד הרשמי.

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

סיכום

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

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

Source:
https://www.digitalocean.com/community/tutorials/how-to-convert-virtual-machine-image-formats