كيفية تحويل تنسيقات صورة الجهاز الظاهري

مقدمة

عندما تعمل مع خادم سحابي عن بُعد، عادةً ما تكون تعمل مع جهاز افتراضي: وهو نسخة منفصلة ومعزولة من نظام التشغيل بأكمله يعمل ضمن مجموعة خوادم أكبر. يمكنك أيضًا العمل مع الأجهزة الافتراضية محليًا على سطح مكتبك، باستخدام برامج مثل QEMU أو VirtualBox. قد تتضمن الأجهزة الافتراضية واجهة سطح المكتب بأكملها، أو قد تقوم فقط بتشغيل خادم SSH للسماح بالاتصالات عبر الطرفية. في كلتا الحالتين، تكون متشابهة تقنيًا وتفترض أشياء مماثلة. بصرف النظر عن أي تحسينات ضخمة على مستوى السحابة، الفرق الوحيد البارز بين بيئات التشغيل الافتراضي هو أن أقراص الأجهزة الافتراضية وخيارات التكوين. يُشار إليها باسم صور الأجهزة الافتراضية، وتتنسق بشكل مختلف بين مقدمي الخدمة.

في هذا البرنامج التعليمي، ستتعلم كيفية التحويل بين تنسيقات صور الأجهزة الافتراضية (بما في ذلك qcow2، vdi، vhd، و vmdk)، بحيث يمكنك نقل بيئاتك الافتراضية من سطح المكتب إلى السحابة والعكس بحاجة.

المتطلبات المسبقة

Translated Text:

الأوامر في هذا الدليل يمكن تشغيلها على نظام التشغيل Windows أو macOS أو Linux، طالما يمكنك تثبيت QEMU و VirtualBox جنبًا إلى جنب مع أدوات سطر الأوامر الخاصة بهم. يوفر هذا الدليل تعليمات التثبيت باستخدام إدار الحزمة Homebrew. يمكنك تثبيت Homebrew على macOS، على Linux، أو على نظام Windows تحت WSL2.

إذا كنت تستخدم Droplet من DigitalOcean ، يجب أن يكون لديك على الأقل 2 وحدة معالجة مركزية و 2 غيغابايت من الذاكرة.

ستحتاج أيضًا إلى 10 غيغابايت على الأقل من المساحة الحرة لتشغيل الأوامر في هذا الدليل.

ملاحظة: إذا كنت تستخدم macOS مع وحدة معالجة Apple Silicon (المصنعة في عام 2020 أو بعد ذلك) ، فستتمكن فقط من استخدام QEMU وليس VirtualBox.

QEMU

QEMU هو أقوى وأوسع برمجيات تجاوز مصدرية للتخزين الظاهري. يعمل على جميع المنصات الرئيسية (بما في ذلك Windows و macOS و Linux، ونظم التشغيل الأخرى مثل Android) وهو قادر على التخزين الظاهري والتقليد حسب الحاجة. على سبيل المثال، إذا كنت تقوم بتشغيل صورة خادم Linux على سطح مكتب Windows (حالة استخدام شائعة)، تشترك كل من تلك المنصات في هندسة معمارية مشتركة (Intel/AMD x86)، لذا يمكن لـ QEMU تحقيق أداء كامل عبر التخزين الظاهري. إذا كنت تستخدم QEMU للجمع بين هندسات مختلفة، على سبيل المثال، من خلال تشغيل x86 Linux أو Windows (كنظام تشغيل “مضيف” أو “ضيف”) مع هندسات ARM من macOS أو Android، ستستخدم QEMU تلقائيًا التقليد لترجمة الهندسات.

بالمقارنة مع التخزين الظاهري، نادراً ما يتم استخدام التقليد في بيئات الإنتاج لأنه يضيف عقوبة أداء كبيرة. ومع ذلك، يوفر لـ QEMU التعامل مع التخزين الظاهري والتقليد كما لو كانتا مكافئتين تقريبًا، مما يوفر مزايا كبيرة من حيث التوافق، حيث يمكن استخدام نفس صيغ الصور ونفس الأدوات في كل سيناريو.

QEMU هو برنامج سطر الأوامر، ولديه منحنى تعلم عالي مقارنة ببرمجيات التخزين الظاهري لسطح المكتب مثل VMware أو VirtualBox بسبب العدد الكبير من الخيارات التي يمكن تكوينها للأجهزة الظاهرية. يمكن استخدامه اختياريًا مع واجهات المستخدم الرسومية مثل QtEmu على Windows أو Linux و UTM على macOS. ستقدم هذه الدورة تعليمات سطر الأوامر للعمل مع QEMU.

تثبيت QEMU

لتثبيت QEMU، استخدم Homebrew’s 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 (أجهزة الكمبيوتر التي تم تصنيعها قبل عام 2020 من Windows و Linux و macOS). لا يدعم المحاكاة أو الهندسة المعمارية غير x86، مما يجعله مفيدًا بشكل أساسي لتشغيل Linux تحت Windows والعكس. ومع ذلك، فإنه أيضًا أسهل في الاستخدام من QEMU، ويوفر إعدادات افتراضية متوافقة بشكل واسع، ويشتمل على واجهة سطح المكتب افتراضيًا.

لا توفر بنية الأوامر القدرة الكافية كما يفعل QEMU، لذلك غالبًا ما يتم استخدامها مع برامج التحكم المخصصة مثل Vagrant لتوجيه وإعادة إنتاج تكوينات الآلة الظاهرية. ومع ذلك، فإنها تشمل أداة سطر الأوامر VBoxManage، التي يمكن استخدامها للتلاعب ببعض صور الآلة الظاهرية.

تثبيت VirtualBox

لتثبيت VirtualBox على macOS، استخدم brew install مع العلم --cask، لأن VirtualBox يتم توزيعها كحزمة تطبيق كاملة، والتي يطلق عليها Homebrew cask:

  1. brew install --cask virtualbox

لتثبيت VirtualBox على توزيعات Ubuntu أو Debian المشتقة من Linux (بما في ذلك تحت 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 ولن تكون بحجم 10 جيجابايت.

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 مساحة أقل ما يمكن على قرصك، بينما تعكس السعة المعلنة القصوى إلى أي برنامج يعمل داخل الآلية الافتراضية. في هذه الحالة، ستكون 10 جيجابايت هي السعة التي تعتقد أن لديها الآلية الافتراضية متاحة، والحجم الأقصى الذي ستقوم الصورة الآلية بالتوسع تلقائيًا إليه.

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 إلى تنسيق آخر

بمجرد أن تقوم بإنشاء صورة لآلة افتراضية، يمكنك استخدام qemu-img convert لتحويلها إلى تنسيقات أخرى. vdi هو تنسيق الصورة الافتراضي لـ VirtualBox. بشكل افتراضي، لن يتم محو صورة الآلة الافتراضية الأصلية، سيتم فقط إنشاء واحدة جديدة:

  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، المستخدمة أساسًا بواسطة Microsoft’s Hyper-V. يمكنك أيضًا إنشاء صورة “raw” إذا كان برنامجك يتطلب ذلك، باتباع الخطوة التالية.

تحويل تنسيقات آلة افتراضية أخرى إلى 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 إذا قمت بتسجيل النسخ المكررة عن غير قصد.

صور الآلة الافتراضية الخام غير مضغوطة على الإطلاق، لذا فإن هذا الأمر سيقوم فعليًا بإنشاء ملف كامل بحجم 10 جيجابايت، على عكس ما كان عليه من قبل. يمكنك تحويله مرة أخرى إلى تنسيق 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