
لدى QEMU عدة طرق لتوصيل جهاز كتلة بجهاز افتراضي. في البداية ، تم تنفيذ ذلك بالطريقة التالية:
-hda /dev/sda1
وهكذا ، كانت الأقراص الافتراضية متصلة في الأيام القديمة للمحاكاة الافتراضية. يمكن استخدامه اليوم إذا أردنا فقط اختبار بعض الأقراص الحية. لسوء الحظ ، لها عيوبها. :
- عند توصيل الأقراص الافتراضية ، من الممكن استخدام الواجهة التي تعتبر
/dev/hda
(hda ، hdb ، hdc ، ..) فقط على الجهاز الظاهري ؛ بالنسبة للقرص المضغوط ، يتم -cdrom
الخيار -cdrom
- عند توصيل ملف (أو جهاز) بجهاز افتراضي ، يستخدم QEMU الإعدادات الافتراضية فقط.
قيادة
لتعيين معلمات أخرى (نوع الناقل ، واستخدام ذاكرة التخزين المؤقت ، وما إلى ذلك) ، تمت إضافة خيار -drive
إلى -drive
. على الرغم من أنه تم استخدامه في الأصل لتعيين المعلمات لكل من الواجهة الخلفية والواجهة الأمامية ، إلا أنه في الوقت الحاضر يتم استخدامه فقط لتعيين معلمات الواجهة الخلفية ، أي المعلمات التي تؤثر على اتصال الجهاز الظاهري داخل الجهاز الظاهري
-drive file=/dev/sda1,if=ide,cache=writeback,aio=threads
الجهاز
تبين أن تعيين جميع معلمات جهاز الحظر بخيار واحد بمرور الوقت أمر غير معقول. لذلك ، تم تقسيم الخيارات إلى قسمين. معلمات الخلفية ، أي تلك المستخدمة لتكوين بيئة المحاكاة الافتراضية. والواجهة الأمامية ، التي تؤثر على كيفية توصيل الجهاز في الجهاز الظاهري. بالنسبة لمجموعة المعلمات هذه ، تم تقديم خيار جديد - -device
، والذي يحتوي على معرف معرف محرك الأقراص المحدد بواسطة المعلمة -drive
.
سيقوم مثال التكوين التالي بتوصيل محرك الأقراص بمعرف ide0-hd0 ، وتكون النتيجة مماثلة لتوصيل محرك أقراص افتراضي ، كما هو موضح في المقدمة.
-drive file=/dev/sda1,id=ide0-hd0,if=none,cache=writeback,aio=threads \ -device ide-drive,bus=ide.0,drive=ide0-hd0
أجهزة الحظر المحلية في جهاز افتراضي

إن استخدام أجهزة المنع المادي للأجهزة الافتراضية ليس واسع الانتشار اليوم في ضوء الاستخدام الواسع للأقراص الافتراضية. من الناحية الفنية ، نحن قادرون على تشغيل جهاز افتراضي مع بعض النظام الخاص من محرك أقراص ثابت قديم. ومع ذلك ، في هذه الحالة ، من الأفضل أولاً عمل صورة قرص (صورة) باستخدام dd وبدء تشغيل النظام منها بالفعل.
مثل جهاز البلوك المحلي ، يمكن توصيله بجهاز افتراضي ..
- صفيف RAID محلي - جهاز من النوع MD
- DRBD الرئيسي (شبكة RAID1) - جهاز من نوع drbd
- قسم القرص الذي تم إنشاؤه في مجموعة LVM - جهاز من نوع dm
- الملف العادي المتصل عبر الحلقة هو جهاز حلقة
تم حظر جهاز من كمبيوتر آخر تم تصديره عبر خادم NBD - جهاز من نوع nbd
(هنا تجدر الإشارة أيضًا إلى نوع جهاز Ceph rbd و ZFS نوع الجهاز zvol - تقريبًا لكل)
بنك دبي الوطني
ضع في اعتبارك مفهوم توصيل جهاز كتلة من كمبيوتر بعيد عبر شبكة. انظر دليل منفصل لبنك دبي الوطني .
يحتوي QEMU على واجهة برمجة تطبيقات NBD مدمجة ، بحيث يمكن توصيل جهاز حظر بعيد موسع بخادم NBD مباشرةً بالجهاز الظاهري عبر QEMU - انظر الشكل على اليسار.
ومع ذلك ، NBD هو بروتوكول بسيط إلى حد ما لا يستخدم المصادقة على خادم بعيد ولا يتحكم في حالة الاتصال. يفترض بروتوكول NBD أنه يمكن للعميل إعادة الاتصال إذا انقطع الاتصال بالخادم ، ولكن للأسف لا يقوم QEMU بذلك.
جزئيًا ، يمكن حل الموقف عن طريق توصيل العديد من أجهزة NBD وإنشاء صفيف RAID افتراضي بداخلها. هذا النهج له عدة مزايا وعيوب قاتلة. إذا تم إيقاف تشغيل أحد الأجهزة ، فلن يحدث شيء سيئ. ولكن إذا طاروا مرة واحدة فسيكون ذلك سيئًا. ستكون عمليات الإدخال / الإخراج في بيئة افتراضية أسرع بكثير ، حيث سيتم تنفيذ الطلبات بالتوازي مع العديد من الأجهزة المادية (خوادم NBD) في وقت واحد. ولكن من ناحية أخرى ، سوف يتطلب المزيد من موارد المعالج الظاهري والذاكرة الافتراضية.
العيب الرئيسي لبناء صفيف RAID من أجهزة NBD في جهاز ظاهري هو جهاز QEMU ، إذا تعطل جهاز NBD ، فلن تتم إعادة توصيله إلا بعد إعادة تشغيل الجهاز بالكامل ، بينما لن تكون إعادة التشغيل الداخلية لنظام التشغيل داخل الجهاز الظاهري كافية. ولكن يمكنك إنشاء جهاز افتراضي بدون أقراص يمكنها الوصول بشكل مستقل إلى خادم NBD وتوصيل أجهزة NBD اللازمة. بالإضافة إلى ذلك ، يجب إعادة إضافة الأجهزة الفاشلة إلى الصفيف وإعادة مزامنتها ، ويمكن القيام بذلك إما يدويًا أو باستخدام البرامج النصية داخل الجهاز الظاهري.
من الأفضل الوصول إلى خادم NBD باستخدام جهاز الجهاز الظاهري NBD. جيد بشكل خاص ، من حيث أداء الإدخال / الإخراج ، هو بناء مجموعة RAID من أجهزة NBD.
تبين أن هذا الحل هو الأكثر إنتاجية على الإطلاق. وكانت الآلة الافتراضية قادرة على مواصلة العملية دون انقطاع حتى في حالة انقطاع اتصال خادم (NBD) (أو فشله) بمرور الوقت.
وبالتالي ، كان من الممكن تنظيم بيئة افتراضية مستقرة نسبيًا وفي نفس الوقت إنتاجية على معدات غير مستقرة.
تكمن المشكلة الرئيسية في صفائف RAID في أعلى أجهزة NBD في أنك تحتاج إلى توخي الحذر الشديد عند توصيل جهاز يمثل جزءًا من مجموعة RAID من خادم NBD. هذه عملية دقيقة إلى حد ما مع احتمال كبير لخطأ فادح ، والذي يمكن أن يؤدي إلى فقدان البيانات. خطأ مطبعي صغير يكفي. انظر 21 يوليو 2012 وصف حادث تحطم سيارة فادح على صفحة الفول السوداني .
العيب هو أنه لا يمكن توصيل جهاز كتلة يتم تشغيل جهاز ظاهري به بالفعل في مكان آخر إذا كان نظام الملفات الخاص به لا يسمح بذلك - وهذا مشابه لـ iSCSI ( i nternet S mall C omputer S usterm I nterface - إصدار شبكة SCSI) أو AoE ( A TA o ver E thernet).
أقراص افتراضية

لا يمكن لـ QEMU توصيل الأجهزة المحظورة بالجهاز الظاهري فحسب ، بل أيضًا باستخدام واجهة برمجة تطبيقات مختلفة ، يمكن أيضًا توصيل ملف عادي ، والذي سيبدو وكأنه جهاز كتلة داخل الجهاز.
يمكن أن يعمل Qemu مع أقراص افتراضية بتنسيقات مختلفة. بالنسبة للأقراص الافتراضية التي يتم تقديمها في شكل ملفات عادية ، هناك أداة مساعدة qemu-img قياسية يمكن استخدامها للتحويل على حد سواء وذلك لتحديد التنسيق المستخدم ومعلماته.
استرداد معلومات القرص الظاهري المحفوظة كملف عادي. بنفس الطريقة ، يمكنك الحصول على معلومات حول قرص افتراضي مخزن على GlusterFS:
root@stroj~# qemu-img info /path_to_file/soubor.img
ومع ذلك ، للحصول على معلومات حول قرص افتراضي باستخدام GlusterFS API ، تحتاج إلى استخدام نفس المعلمات المستخدمة لتوصيل القرص الظاهري بالجهاز الظاهري. حتى تتمكن من تحديد القرص الداخلي على الجهاز حيث تم تثبيت واستخدام عميل GlusterFS:
root@stroj~# qemu-img info gluster+tcp://192.168.0.2/volume_name/soubor.img
لا يمكن تحديد القرص الظاهري VDI إلا من خلال Sheepdog API:
root@stroj~# qemu-img info sheepdog:192.168.0.2:8000:vdi_name
بالنسبة للقرص الظاهري الذي تم تصديره من خادم NBD ، من الضروري التأكد من تحديد الخادم الصحيح والمنفذ الصحيح ، لأن NBD لا يستخدم أي آلية تعريف أو مصادقة أخرى من شأنها القضاء على الارتباك مع الأقراص الافتراضية الأخرى (يستخدم الإصدار الجديد من خادم nbd منفذ واحد فقط ويحدد الجهاز بالاسم - تقريبا) :
root@stroj~# qemu-img info nbd:192.168.0.2:8000
192.168.0.2
عنوان IP للمضيف الذي يتصل منه الجهاز الظاهري. إذا كان هذا هو نفس معلومات المضيف qemu-img قيد التشغيل ، فيمكن استخدام مضيف محلي بدلاً من عنوان IP
8000
رقم المنفذ الذي يستمع عليه البرنامج الخفي أو الخادم. بشكل افتراضي ، يستخدم Sheepdog المنفذ 7000 ، ولكن يمكن تشغيله أيضًا على منفذ مختلف لتجنب التعارضات مع تطبيق آخر. يمكن لخادم NBD الاستماع على منافذ مختلفة إذا تم تصدير أكثر من جهاز واحد.
خام
بشكل عام ، إنها ببساطة مجموعة من البيانات المسجلة بنفس التنسيق على جهاز البلوك التقليدي. سيشغل ملف 5G هذا المكان بالكامل ، بغض النظر عما إذا كان يحتوي على بيانات مفيدة أو مساحة فارغة فقط. (والذي لا ينطبق على الملفات المتفرقة - تقريبا لكل)
qcow
وهو يختلف عن التنسيق الأولي من حيث أنه يمكن أن يكون متزايدًا ، لأنه ينمو تدريجيًا - وهذا مناسب لأنظمة الملفات التي لا تدعم الملفات المتفرقة ، على سبيل المثال FAT32. يسمح لك هذا التنسيق أيضًا بإنشاء نسخ إضافية منفصلة من قرص أساسي واحد. استخدام مثل هذا "القالب" يوفر الوقت ومساحة القرص. بالإضافة إلى ذلك ، يدعم تشفير AES وضغط zlib. العيب هو أنه ، على عكس الأقراص الخام ، لا يمكن تحميل هذا الملف على الجهاز الذي يوجد عليه. لحسن الحظ ، هناك أداة مساعدة qemu-nbd يمكنها تصدير هذا الملف كجهاز لحجب الشبكة ثم توصيله بجهاز NBD.
qcow2
هو نسخة محدثة من تنسيق qcow. والفرق الرئيسي هو أنه يدعم اللقطات. خلاف ذلك ، فهي ليست مختلفة جذريا. من الممكن أيضًا مقابلة qcow2 ، التي تم تعريفها داخليًا على أنها QCOW الإصدار 3 ، بمجرد تضمينها في تنسيق qcow2 منذ فترة طويلة. في الواقع ، هذا هو qcow2 المعدل مع المعلمة lazy_refcounts ، والذي يستخدم في اللقطات. نظرًا لأن الاختلاف هو بت واحد فقط ، فإن qemu-img من الإصدار 1.7 به خيار "تعديل" لتغييره. لا تفعل الإصدارات السابقة من qemu-img . إذا كنت ترغب في تغيير إصدار التنسيق ، كان من الضروري تحويل القرص الظاهري إلى ملف جديد ، أثناء التحويل ، تم تثبيت المعلمة المتوافقة مع المعلمة المتوافقة ، والتي كان من الضروري تقليل "1.1" إلى 0.10 "بدلاً من ذلك. إن وجود خيار "تعديل" ملائم لأنه لا حاجة للكتابة فوق البيانات بسبب هذه التغييرات الطفيفة.
qemu-img create -f qcow2 -o compat=1.1 test.qcow2 8G
http://blog.wikichoon.com/2014/12/virt-manager-10-creates-qcow2-images.html
Qed
هذا هو تنسيق COW تزايدي للقرص الظاهري الذي يخلق أقل تحميل على المضيف. لا يدعم أي ضغط ويستخدم جدولين متوازيين لمعالجة كتل البيانات (المجموعات). لسوء الحظ ، لم يكن هناك مطور واحد مهتم بتطويره لفترة طويلة ، لذلك فإن استخدامه يجلب بعض المشاكل التي سيتم ذكرها.
vdi
تنسيق القرص الظاهري المستخدم بواسطة نظام المحاكاة الافتراضية Oracle Virtualbox.
فمدك
تنسيق القرص الظاهري المستخدم بواسطة منتجات VMware. هذا أيضًا تنسيق يسمح بنمو الملف تدريجيًا. ومع ذلك ، فإنه يتمتع بميزة كبيرة على تنسيقات qcow2 و qed ، والتي يمكن استخدامها أيضًا مع الحلول الخالية من الأقراص أو مع أنظمة ملفات الشبكة. يتيح لك الحصول على ملف قرص افتراضي مقسم إلى عدة ملفات صغيرة بأحجام 2 جيجابايت. يبقى هذا من الوقت الذي تعذر فيه على أنظمة الملفات إنشاء ملفات أكبر من 2 غيغابايت. الميزة هي أنه إذا تم نسخ مثل هذا القرص الافتراضي عبر الشبكة ، يتم نقل بيانات أقل ، وتكون المزامنة أسرع بكثير (على سبيل المثال ، في حالة GlusterFS). في حالة حل بدون قرص ، يتم استخدامه أيضًا لتخزين الملفات الصغيرة فقط مع وجود اختلافات لكل لقطة
vhdx
تنسيق القرص الظاهري المستخدم من قبل نظام Microsoft Hyper-V Virtualization
VPC
تنسيق القرص الظاهري المستخدم من قبل نظام Microsoft VirtualPC الظاهري.
| Incre مينتي متجذر أي
| التشفير التجديد
| كوم بري هذا
| وجبة الموقع
| شبل عنيز أمة
| دعامة ابن عرس
| القسم الصورة
| بالداخل لقطات انت
| تمت الموافقة على التحقق نستي
| ملاحظة
|
---|
خام | لا | لا | لا | نعم | لا | لا | لا | لا | لا | يمكن تركيبه عبر حلقة
|
ملف | نعم | لا | لا | الخيار شخصيا | لا | لا | لا | لا | لا | بالنسبة إلى Btrfs ، يجب عليك تعطيل النسخ عند الكتابة
|
qcow | نعم | نعم | نعم | لا | نعم | نعم | لا | لا | لا | |
qcow2 | نعم | نعم | نعم | الخيار شخصيا | نعم | نعم | لا | نعم | نعم | |
Qed | نعم | لا | لا | لا | نعم | لا | لا | لا | لا | |
فمدك | نعم | لا | لا | الخيار شخصيا | نعم | هاه ؟ | نعم | لا | لا | |
vdi | نعم | لا | لا | الخيار ثابت (ثابت) | لا | لا | لا | لا | نعم | |
vhdx | نعم | لا | لا | الخيار ثابت (ثابت) | لا | نعم 1 | لا | لا | لا | |
VPC | نعم | لا | لا | الخيار ثابت (ثابت) | لا | لا | لا | لا | لا | |
- possible يمكن استخدامه فقط على الصور المثبتة مسبقًا (ثابت)
تستخدم واجهات برمجة التطبيقات
بالإضافة إلى تنسيقات الملفات ، يعمل qemu-img أيضًا مع "التنسيقات" التي يتم توفيرها باستخدام واجهة برمجة التطبيقات التي يمكن من خلالها الوصول إلى أجهزة الحظر هذه عن بُعد.
نففس
ملف قرص افتراضي متصل بـ QEMU عبر بروتوكول NFS
iscsi
يتم الاتصال بجهاز الحظر عبر iSCSI. لا يمكن استخدام جهاز واحد في وقت واحد على أكثر من عميل.
نبض
يمكن أن يكون الوصول عبر NBD سريعًا جدًا. هذا لأن البروتوكول بسيط للغاية. هذه ميزة ، ولكن في نفس الوقت عيب. يمكن أن يكون ذلك مناسبًا عندما يتمكن العديد من العملاء من الاتصال بنفس خادم NBD إذا كانوا يستخدمون اتصالًا محليًا من خلال خادم xnbd. ومع ذلك ، نظرًا لأن nbd لا يحتوي على آليات أمان أو مصادقة ، يمكن أن تنشأ الحالة بسهولة عندما يتصل العميل عن طريق الخطأ بالجهاز الخاطئ ، والذي قد يكون مستخدمًا في وقت معين بالفعل ويتلفه.
ssh
يتم الاتصال بالخادم البعيد عبر sshfs
بريق
يستخدم نظام الملفات GlusterFS API للوصول إلى ملف القرص الظاهري. إذا كان الملف جزءًا من وحدة تخزين منسوخة أو موزعة ، فسيوزع البيانات المخزنة بين العقد الأخرى. هذا يسمح له ، في حالة الفشل ، أن يكون متاحًا على العقد الأخرى.
كلب الراعي
هو أيضًا نظام ملفات موزعة ممكّن للنسخ المتماثل. على عكس GlusterFS ، يتوفر قرص افتراضي عبر واجهة برمجة التطبيقات ليس كملف ، ولكن كجهاز كتلة. هذا مفيد من حيث الأداء ، ولكنه غير ملائم إذا كنا بحاجة إلى تجاوز بيئة Sheepdog.
متوازيات
محركات الأقراص الافتراضية على التخزين المرفق بالشبكة
تكمن ميزة حظر الأجهزة الموجودة خارج نظام المحاكاة الافتراضية في أنها محصنة ضد أعطال الأجهزة الافتراضية.
في هذه الحالة ، يتوفر أيضًا توفر كبير وحجم كافٍ للتخزين عن بُعد.
باستخدام NFS

كلب الراعي

GlusterFS

أجهزة افتراضية أقل كتلة
بدون أجهزة الحظر ، يمكن أن تعمل أنظمة التشغيل التي يمكنها التمهيد عبر NFS أو مع نظام ملفات مضيف يتم طرحه باستخدام Plan9.