مقدمة
عندما تعمل مع خادم سحابي عن بُعد، عادةً ما تكون تعمل مع جهاز افتراضي: وهو نسخة منفصلة ومعزولة من نظام التشغيل بأكمله يعمل ضمن مجموعة خوادم أكبر. يمكنك أيضًا العمل مع الأجهزة الافتراضية محليًا على سطح مكتبك، باستخدام برامج مثل 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
:
- brew install qemu
سيوفر ذلك جميع مجموعة أدوات وأوامر QEMU، بما في ذلك qemu-img
، الذي يُستخدم لتحويل صور الآلة الظاهرية عبر سطر الأوامر. تحقق من وجود الأمر qemu-img
عن طريق تشغيل which qemu-img
:
- 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:
- brew install --cask virtualbox
لتثبيت VirtualBox على توزيعات Ubuntu أو Debian المشتقة من Linux (بما في ذلك تحت WSL2)، استخدم أولاً apt update
لتحديث مصادر الحزم الخاصة بك، ثم apt install
:
- sudo apt update
- sudo apt install virtualbox
لتثبيت VirtualBox على نظام Windows دون WSL2، راجع صفحة التنزيل الخاصة به.
بعد تثبيت VirtualBox، تحقق من وجود وصولك إلى أمر vboxmanage
عن طريق تشغيل which vboxmanage
:
- which vboxmanage
Output/usr/local/bin/vboxmanage
هناك بدائل متاحة لـ QEMU و VirtualBox للتخزين الافتراضي. ومع ذلك، معظم هذه البدائل محددة للمنصة (مثل Hyper-V على Windows) أو مصممة للاستخدام في المؤسسات على نطاق واسع (مثل VMware). لن يتم التطرق إليها مباشرة في هذا الدليل، ولكن ستقوم بتحويل تنسيق صورها في الخطوات التالية.
إنشاء صورة آلية افتراضية باستخدام QEMU
لتوضيح تحويل صور الآليات الافتراضية، يمكنك البدء بإنشاء صورة باستخدام QEMU. يمكنك تخطي هذا القسم إذا كنت قد أنشأت بالفعل صورة للتحويل.
استخدم أمر qemu-img create
مع العلامة -f qcow2
لإنشاء صورة في تنسيق qcow2
الافتراضي لـ QEMU:
- qemu-img create -f qcow2 ubuntu-desktop-22.04.qcow2 10G
في هذه النقطة، ستكون قد أنشأت صورة فارغة لآلية افتراضية. على الرغم من أنك قد أطلقت عليها اسم ubuntu-desktop-22.04.qcow2
وقدمت قدرة 10G
، فإنها في هذه النقطة لن تحتوي على تثبيت Ubuntu 22.04 ولن تكون بحجم 10 جيجابايت.
OutputFormatting '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. بشكل افتراضي، لن يتم محو صورة الآلة الافتراضية الأصلية، سيتم فقط إنشاء واحدة جديدة:
- 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
:
- ls ubuntu-desktop-22.04.vdi
Outputubuntu-desktop-22.04.vdi
تنسيقات أخرى شائعة تشمل vmdk
، المستخدمة أساسًا بواسطة VMware، و vhd
، المستخدمة أساسًا بواسطة Microsoft’s Hyper-V. يمكنك أيضًا إنشاء صورة “raw” إذا كان برنامجك يتطلب ذلك، باتباع الخطوة التالية.
تحويل تنسيقات آلة افتراضية أخرى إلى QEMU
إذا كان لديك صورة بتنسيق vdi
، يمكنك استخدام أمر vboxmanage
المقدم من VirtualBox لتحويلها:
- vboxmanage clonemedium ubuntu-desktop-22.04.vdi ubuntu-desktop-22.04.img --format raw
Output0%...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 عن طريق عكس البنية الجملية من الخطوة الأخيرة:
- qemu-img convert -f raw ubuntu-desktop-22.04.img -O qcow2 ubuntu-desktop-22.04-new.qcow2
يمكنك الآن حذف الصورة الخام لاسترداد مساحة القرص:
- rm ubuntu-desktop-22.04.img
وأخيرًا، يمكنك استخدام أوامر qemu-img check
و qemu-img info
لإخراج بعض البيانات الوصفية من صور آلة الافتراضية الخاصة بك:
- qemu-img check ubuntu-desktop-22.04.qcow2
OutputNo errors were found on the image.
Image end offset: 262144
- qemu-img info ubuntu-desktop-22.04.qcow2
Outputimage: 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