OpenVZ

OpenVZ ( أو Open Virtuozzo ) هي تقنية افتراضية على مستوى نظام التشغيل لنظام لينكس . تتيح هذه التقنية تشغيل عدة نسخ معزولة من نظام التشغيل على خادم فعلي، وتدعم الحاويات والخوادم الافتراضية الخاصة (VPS) والبيئات الافتراضية (VEs). وتشبه OpenVZ تقنيتي Solaris Containers و LXC .

مقارنة بين OpenVZ وتقنيات المحاكاة الافتراضية الأخرى

بينما توفر تقنيات المحاكاة الافتراضية مثل VMware و Xen و KVM محاكاة افتراضية كاملة وتستطيع تشغيل أنظمة تشغيل متعددة وإصدارات نواة مختلفة، يستخدم OpenVZ نواة لينكس واحدة، وبالتالي لا يمكنه تشغيل سوى لينكس. تشترك جميع حاويات OpenVZ في نفس البنية وإصدار النواة. قد يمثل هذا عيبًا في الحالات التي تتطلب فيها الأنظمة الضيفة إصدارات نواة مختلفة عن تلك الخاصة بالنظام المضيف. مع ذلك، ولأنه لا يتحمل عبء برامج المحاكاة الافتراضية التقليدية ، فهو سريع وفعال للغاية. [ 1 ]

يتميز تخصيص الذاكرة في OpenVZ بالمرونة، حيث يمكن استخدام الذاكرة غير المستخدمة في بيئة افتراضية معينة من قبل بيئات أخرى أو لتخزين البيانات مؤقتًا على القرص . في حين أن الإصدارات القديمة من OpenVZ كانت تستخدم نظام ملفات مشتركًا (حيث تمثل كل بيئة افتراضية مجرد دليل ملفات معزول باستخدام chroot )، فإن الإصدارات الحالية من OpenVZ تسمح لكل حاوية بامتلاك نظام ملفات خاص بها. [ 2 ]

النواة

نواة OpenVZ هي نواة لينكس مُعدّلة لإضافة دعم حاويات OpenVZ. توفر النواة المُعدّلة ميزات المحاكاة الافتراضية، والعزل، وإدارة الموارد، وحفظ نقاط التحقق . بدءًا من vzctl 4.0، يمكن لـ OpenVZ العمل مع نواة لينكس 3.x غير المُرقعة، مع مجموعة ميزات مُخفّضة. [ 3 ]

المحاكاة الافتراضية والعزل

كل حاوية كيان منفصل، وتتصرف إلى حد كبير مثل الخادم الفعلي. ولكل منها خصائصها الخاصة:

الملفات
مكتبات النظام ، والتطبيقات ، /procوالأقفال /sysالافتراضية ، وما إلى ذلك .
المستخدمون والمجموعات
يحتوي كل حاوية على مستخدم الجذر الخاص بها ، بالإضافة إلى مستخدمين ومجموعات أخرى .
شجرة العمليات
لا يرى الحاوية إلا عملياتها الخاصة (بدءًا من init). يتم محاكاة معرفات العمليات ، بحيث يكون معرف العملية الأولي هو 1 كما ينبغي.
شبكة
جهاز الشبكة الظاهرية ، الذي يسمح للحاوية بالحصول على عناوين IP الخاصة بها ، بالإضافة إلى مجموعة من netfilter ( iptables) وقواعد التوجيه .
الأجهزة
إذا لزم الأمر، يمكن منح أي حاوية إمكانية الوصول إلى الأجهزة الحقيقية مثل واجهات الشبكة والمنافذ التسلسلية وأقسام القرص وما إلى ذلك.
كائنات IPC
الذاكرة المشتركة ، الإشارات ، الرسائل .

إدارة الموارد

تتألف إدارة موارد OpenVZ من أربعة مكونات: حصة القرص ثنائية المستوى، وجدولة وحدة المعالجة المركزية العادلة، وجدولة إدخال/إخراج القرص، وعدادات موارد المستخدم (انظر أدناه). يمكن تغيير هذه الموارد أثناء تشغيل الحاوية ، مما يلغي الحاجة إلى إعادة التشغيل .

حصة القرص ذات المستويين
يمكن لكل حاوية أن تحتوي على حصص تخزين خاصة بها ، تُقاس بوحدات كتل القرص وعدد الملفات (تقريبًا). داخل الحاوية، يُمكن استخدام الأدوات القياسية لتعيين حصص تخزين خاصة بكل مستخدم ومجموعة في نظام يونكس .
مُجدول وحدة المعالجة المركزية
يُعد مُجدول وحدة المعالجة المركزية في OpenVZ تطبيقًا ثنائي المستوى لاستراتيجية جدولة المشاركة العادلة. في المستوى الأول، يُحدد المُجدول الحاوية التي سيُخصص لها جزء من وقت وحدة المعالجة المركزية، بناءً على قيم cpuunits الخاصة بكل حاوية . في المستوى الثاني، يُحدد مُجدول Linux القياسي العملية التي ستُنفذ في تلك الحاوية، باستخدام أولويات عمليات Linux القياسية. من الممكن تعيين قيم مختلفة لوحدات المعالجة المركزية في كل حاوية، وسيتم توزيع وقت وحدة المعالجة المركزية الفعلي بشكل متناسب مع هذه القيم. بالإضافة إلى ذلك، يوفر OpenVZ طرقًا لتعيين حدود صارمة لوحدة المعالجة المركزية، مثل 10% من إجمالي وقت وحدة المعالجة المركزية --cpulimit، وتحديد عدد أنوية وحدة المعالجة المركزية المتاحة للحاوية --cpus، وربط الحاوية بمجموعة محددة من وحدات المعالجة المركزية --cpumask. [ 4 ]
مُجدول الإدخال/الإخراج
على غرار مُجدول وحدة المعالجة المركزية المذكور أعلاه، فإن مُجدول الإدخال/الإخراج في OpenVZ ثنائي المستوى، حيث يستخدم مُجدول CFQ للإدخال/الإخراج الخاص بـ Jens Axboe في مستواه الثاني. تُخصص لكل حاوية أولوية إدخال/إخراج، ويقوم المُجدول بتوزيع عرض النطاق الترددي المتاح للإدخال/الإخراج وفقًا للأولويات المُخصصة. وبالتالي، لا يُمكن لأي حاوية بمفردها استهلاك كامل قناة الإدخال/الإخراج.
محاسبو المستخدمين
User Beancounters is a set of per-container counters, limits, and guarantees, meant to prevent a single container from monopolizing system resources. In current OpenVZ kernels (RHEL6-based 042stab*) there are two primary parameters, and others are optional.[5] Other resources are mostly memory and various in-kernel objects such as Inter-process communication shared memory segments and network buffers. Each resource can be seen from /proc/user_beancounters and has five values associated with it: current usage, maximum usage (for the lifetime of a container), barrier, limit, and fail counter. The meaning of barrier and limit is parameter-dependent; in short, those can be thought of as a soft limit and a hard limit. If any resource hits the limit, the fail counter for it is increased. This allows the owner to detect problems by monitoring /proc/user_beancounters in the container.

Checkpointing and live migration

A live migration and checkpointing feature was released for OpenVZ in the middle of April 2006. This makes it possible to move a container from one physical server to another without shutting down the container. The process is known as checkpointing: a container is frozen and its whole state is saved to a file on disk. This file can then be transferred to another machine and a container can be unfrozen (restored) there; the delay is roughly a few seconds. Because state is usually preserved completely, this pause may appear to be an ordinary computational delay. The effort is open source: CRIU

Limitations

By default, OpenVZ restricts container access to real physical devices (thus making a container hardware-independent). An OpenVZ administrator can enable container access to various real devices, such as disk drives, USB ports,[6] PCI devices[7] or physical network cards.[8]

/dev/loopN is often restricted in deployments (as loop devices use kernel threads which might be a security issue), which restricts the ability to mount disk images. A work-around is to use FUSE.

OpenVZ is limited to providing only some VPN technologies based on PPP (such as PPTP/L2TP) and TUN/TAP. IPsec is supported inside containers since kernel 2.6.32.

A graphical user interface called EasyVZ was attempted in 2007,[9] but it did not progress beyond version 0.1. Up to version 3.4, Proxmox VE could be used as an OpenVZ-based server virtualization environment with a GUI, although later versions switched to LXC.

See also

References

  1. "تقييم أداء تقنيات المحاكاة الافتراضية لدمج الخوادم" . مؤرشف من الأصل بتاريخ 15-01-2009.
  2. "Ploop - OpenVZ Linux Containers Wiki" . مؤرشف من الأصل بتاريخ 2012-03-26.
  3. كوليشكين، كير (6 أكتوبر 2012). "أوبن في زد يبلغ من العمر 7 سنوات، والهدايا متاحة!" . مدونة أوبن في زد . تم الاطلاع عليه بتاريخ 17 يناير 2013 .
  4. صفحة دليل vzctl(8)، قسم معلمات جدولة وحدة المعالجة المركزية العادلة، http://openvz.org/Man/vzctl.8#CPU_fair_scheduler_parameters مؤرشفة بتاريخ 14 أبريل 2017 في Wayback Machine
  5. "VSwap - OpenVZ Linux Containers Wiki" . مؤرشف من الأصل بتاريخ 2013-02-13.
  6. صفحة دليل vzctl(8)، قسم إدارة الوصول إلى الجهاز، http://wiki.openvz.org/Man/vzctl.8#Device_access_management
  7. صفحة دليل vzctl(8)، قسم إدارة أجهزة PCI، http://wiki.openvz.org/Man/vzctl.8#PCI_device_management
  8. صفحة دليل vzctl(8)، قسم أجهزة الشبكة، http://wiki.openvz.org/Man/vzctl.8#Network_devices_control_parameters
  9. EasyVZ: Grafische Verwaltung für OpenVZ. الواجهة الأمامية لنظام التشغيل Linux الافتراضي المجاني