ओपनवीजेड

OpenVZ (Open Virtuozzo) लिनक्स के लिए एक ऑपरेटिंग-सिस्टम-स्तरीय वर्चुअलाइजेशन तकनीक है। यह एक भौतिक सर्वर को कई अलग-अलग ऑपरेटिंग सिस्टम इंस्टेंस चलाने की अनुमति देता है, जिन्हें कंटेनर, आभासी निजी सर्वर (वीपीएस), या वर्चुअल वातावरण (वीई) कहा जाता है। ओपनवीजेड सोलारिस कंटेनर और एलएक्ससी के समान है।

अन्य वर्चुअलाइजेशन तकनीकों की तुलना में OpenVZ
जबकि VMware, Xen और कर्नेल-आधारित वर्चुअल मशीन जैसी वर्चुअलाइजेशन तकनीकें पूर्ण वर्चुअलाइजेशन प्रदान करती हैं और कई ऑपरेटिंग सिस्टम और विभिन्न कर्नेल संस्करण चला सकती हैं, OpenVZ एक लिनक्स कर्नेल का उपयोग करता है और इसलिए केवल लिनक्स चला सकता है। सभी OpenVZ कंटेनर समान आर्किटेक्चर और कर्नेल संस्करण साझा करते हैं। यह उन स्थितियों में एक नुकसान हो सकता है जहां अतिथि को होस्ट के कर्नेल संस्करण से भिन्न कर्नेल संस्करण की आवश्यकता होती है। हालाँकि, क्योंकि इसमें एक सच्चे सूत्र का ओवरहेड नहीं है, यह बहुत तेज़ और कुशल है। ओपनवीजेड के साथ मेमोरी आवंटन उस मेमोरी में नरम है जो एक आभासी वातावरण में उपयोग नहीं किया जाता है या डिस्क बफर के लिए उपयोग किया जा सकता है। जबकि OpenVZ के पुराने संस्करण एक सामान्य फ़ाइल सिस्टम का उपयोग करते थे (जहाँ प्रत्येक आभासी वातावरण फ़ाइलों की एक निर्देशिका है जो कि चेरोट का उपयोग करके अलग किया जाता है), OpenVZ के वर्तमान संस्करण प्रत्येक कंटेनर को अपनी फ़ाइल प्रणाली रखने की अनुमति देते हैं।

कर्नेल
OpenVZ कर्नेल एक Linux कर्नेल है, जिसे OpenVZ कंटेनरों के लिए समर्थन जोड़ने के लिए संशोधित किया गया है। संशोधित कर्नेल वर्चुअलाइजेशन, अलगाव, संसाधन प्रबंधन और आवेदन चेकपॉइंटिंग प्रदान करता है। vzctl 4.0 के रूप में, OpenVZ कम फीचर सेट के साथ, अनपैच्ड Linux 3.x कर्नेल के साथ काम कर सकता है।

वर्चुअलाइजेशन और अलगाव
प्रत्येक कंटेनर एक अलग इकाई है, और बड़े पैमाने पर एक भौतिक सर्वर के रूप में व्यवहार करता है। प्रत्येक का अपना है: फाइलें: सिस्टम पुस्तकालय (कम्प्यूटिंग), अनुप्रयोग प्रक्रिया सामग्री, वर्चुअलाइज्ड  और , वर्चुअलाइज्ड लॉक (कंप्यूटर साइंस), आदि।

उपयोगकर्ता और समूह: प्रत्येक कंटेनर का अपना सुपर उपयोगकर्ता होता है, साथ ही अन्य उपयोगकर्ता (कंप्यूटिंग) और समूह (कंप्यूटिंग)।

प्रोसेस ट्री: एक कंटेनर केवल अपनी प्रक्रिया (कंप्यूटिंग) देखता है (से शुरू होता है ). प्रक्रिया पहचानकर्ताओं का वर्चुअलाइजेशन किया जाता है, ताकि init PID 1 जैसा होना चाहिए।


 * नेटवर्क: वर्चुअल कंप्यूटर नेटवर्किंग डिवाइस, जो एक कंटेनर को अपना आईपी पता रखने की अनुमति देता है, साथ ही नेटफिल्टर/आईपीटेबल्स|नेटफिल्टर, और मार्ग नियम।

उपकरण: यदि आवश्यक हो, तो किसी भी कंटेनर को वास्तविक उपकरणों जैसे नेटवर्क इंटरफ़ेस नियंत्रक, आनुक्रमिक द्वार, डिस्क विभाजन आदि तक पहुंच प्रदान की जा सकती है।

आईपीसी ऑब्जेक्ट्स: साझा मेमोरी (इंटरप्रोसेस कम्युनिकेशन), सेमाफोर (प्रोग्रामिंग), संदेश देना

संसाधन प्रबंधन
OpenVZ संसाधन प्रबंधन में चार घटक होते हैं: दो-स्तरीय डिस्क कोटा, उचित CPU अनुसूचक, डिस्क I/O अनुसूचक, और उपयोगकर्ता बीन काउंटर (नीचे देखें)। इन संसाधनों को कंटेनर रन टाइम (प्रोग्राम जीवनचक्र चरण) के दौरान बदला जा सकता है, जिससे बूटिंग की आवश्यकता समाप्त हो जाती है।

दो-स्तरीय डिस्क कोटा
प्रत्येक कंटेनर का अपना डिस्क कोटा हो सकता है, जिसे डिस्क ब्लॉक और इनोड्स (मोटे तौर पर फाइलों की संख्या) के संदर्भ में मापा जाता है। कंटेनर के भीतर, UNIX प्रति-उपयोगकर्ता और प्रति-समूह डिस्क कोटा सेट करने के लिए मानक टूल का उपयोग करना संभव है।

सीपीयू अनुसूचक
OpenVZ में CPU शेड्यूलर फेयर-शेयर शेड्यूलिंग रणनीति का दो-स्तरीय कार्यान्वयन है।

पहले स्तर पर, प्रति-कंटेनर cpuunits मानों के आधार पर, अनुसूचक यह तय करता है कि किस कंटेनर को CPU टाइम स्लाइस देना है। दूसरे स्तर पर मानक लिनक्स अनुसूचक निर्धारित करता है कि मानक लिनक्स प्रक्रिया प्राथमिकताओं का उपयोग करके उस कंटेनर में कौन सी प्रक्रिया को चलाना है।

प्रत्येक कंटेनर में सीपीयू के लिए अलग-अलग मान निर्धारित करना संभव है। वास्तविक CPU समय इन मानों के अनुपात में वितरित किया जाएगा।

उपरोक्त के अलावा, OpenVZ प्रदान करता है के तरीके:
 * सख़्त CPU सीमा निर्धारित करें, जैसे कि कुल CPU समय का 10% ;
 * कंटेनर के लिए उपलब्ध CPU कोर की संख्या सीमित करें ;
 * एक कंटेनर को सीपीयू के एक विशिष्ट सेट से बांधें.

आई/ओ अनुसूचक
ऊपर वर्णित CPU अनुसूचक के समान, OpenVZ में I/O अनुसूचक|I/O अनुसूचक भी दो-स्तरीय है, जेन्स एक्सबो के CFQ I/O अनुसूचक का इसके दूसरे स्तर पर उपयोग करता है।

प्रत्येक कंटेनर को I/O प्राथमिकता दी जाती है, और अनुसूचक निर्दिष्ट प्राथमिकताओं के अनुसार उपलब्ध I/O बैंडविड्थ वितरित करता है। इस प्रकार कोई एकल कंटेनर I/O चैनल को संतृप्त नहीं कर सकता है।

उपयोगकर्ता बीन काउंटर
उपयोगकर्ता बीनकाउंटर्स प्रति-कंटेनर काउंटरों, सीमाओं और गारंटी का एक सेट है, जिसका उद्देश्य एकल कंटेनर को सिस्टम संसाधनों पर एकाधिकार करने से रोकना है। वर्तमान OpenVZ कर्नेल (RHEL6-आधारित 042stab*) में दो प्राथमिक पैरामीटर (रैम और स्वैप, a.k.a. physpages और swappages) हैं, और अन्य वैकल्पिक हैं। अन्य संसाधन ज्यादातर मेमोरी और विभिन्न इन-कर्नेल ऑब्जेक्ट हैं जैसे कि शेयर्ड मेमोरी (इंटरप्रोसेस कम्युनिकेशन) | इंटर-प्रोसेस कम्युनिकेशन शेयर्ड मेमोरी सेगमेंट और नेटवर्क बफ़र्स। प्रत्येक संसाधन से देखा जा सकता है  और इसके साथ जुड़े पांच मूल्य हैं: वर्तमान उपयोग, अधिकतम उपयोग (कंटेनर के जीवनकाल के लिए), बाधा, सीमा और असफल काउंटर। बाधा और सीमा का अर्थ पैरामीटर-निर्भर है; संक्षेप में, उन्हें सॉफ्ट लिमिट और हार्ड लिमिट के रूप में माना जा सकता है। यदि कोई संसाधन सीमा तक पहुँचता है, तो उसके लिए विफल काउंटर बढ़ा दिया जाता है। यह मालिक को कंटेनर में /proc/user_beancounters की निगरानी करके समस्याओं का पता लगाने की अनुमति देता है।

चेकपॉइंटिंग और लाइव माइग्रेशन
अप्रैल 2006 के मध्य में OpenVZ के लिए एक लाइव माइग्रेशन और एप्लिकेशन चेकपॉइंटिंग सुविधा जारी की गई थी। यह कंटेनर को बंद किए बिना एक भौतिक सर्वर से दूसरे भौतिक सर्वर पर ले जाना संभव बनाता है। प्रक्रिया को चेकपॉइंटिंग के रूप में जाना जाता है: एक कंटेनर जमे हुए है और इसकी पूरी स्थिति डिस्क पर फ़ाइल में सहेजी जाती है। इस फाइल को फिर दूसरी मशीन में स्थानांतरित किया जा सकता है और एक कंटेनर को वहां अनफ्रीज (रिस्टोर) किया जा सकता है; देरी लगभग कुछ सेकंड है। क्योंकि स्थिति आमतौर पर पूरी तरह से संरक्षित होती है, यह विराम सामान्य कम्प्यूटेशनल विलंब प्रतीत हो सकता है।

सीमाएं
डिफ़ॉल्ट रूप से, OpenVZ वास्तविक भौतिक उपकरणों तक कंटेनर की पहुंच को प्रतिबंधित करता है (इस प्रकार एक कंटेनर को हार्डवेयर-स्वतंत्र बनाता है)। एक OpenVZ व्यवस्थापक विभिन्न वास्तविक उपकरणों, जैसे डिस्क ड्राइव, USB पोर्ट, के लिए कंटेनर एक्सेस को सक्षम कर सकता है। पीसीआई डिवाइस या भौतिक नेटवर्क कार्ड।

अक्सर तैनाती में प्रतिबंधित होता है (चूंकि लूप डिवाइस कर्नेल थ्रेड्स का उपयोग करते हैं जो एक सुरक्षा समस्या हो सकती है), जो डिस्क छवियों को माउंट करने की क्षमता को प्रतिबंधित करता है। वर्क-अराउंड यूजरस्पेस में फाइलसिस्टम का उपयोग करना है।

OpenVZ PPP (जैसे PPTP/L2TP) और TUN/TAP पर आधारित केवल कुछ VPN तकनीक प्रदान करने तक सीमित है। IPsec कर्नेल 2.6.32 के बाद से कंटेनरों के अंदर समर्थित है।

2007 में EasyVZ नामक एक ग्राफिकल यूज़र इंटरफ़ेस का प्रयास किया गया था, लेकिन यह संस्करण 0.1 से आगे नहीं बढ़ा। संस्करण 3.4 तक, प्रॉक्समॉक्स वर्चुअल एनवायरनमेंट को एक जीयूआई के साथ ओपनवीजेड-आधारित सर्वर वर्चुअलाइजेशन वातावरण के रूप में इस्तेमाल किया जा सकता है, हालांकि बाद के संस्करण एलएक्ससी में बदल गए।

यह भी देखें

 * प्लेटफॉर्म वर्चुअलाइजेशन सॉफ्टवेयर की तुलना
 * ऑपरेटिंग-सिस्टम-लेवल वर्चुअलाइजेशन
 * प्रॉक्समॉक्स वर्चुअल एनवायरनमेंट