एक वर्चुअल मशीन (VM) कई वर्चुअलाइजेशन तकनीकों के लिए एक सामान्य शब्द है।
वर्चुअलाइजेशन तकनीकों पर कई विविधताएं हैं, लेकिन मुख्य हैं:
- हार्डवेयर स्तर वर्चुअलाइजेशन
- ऑपरेटिंग सिस्टम स्तर वर्चुअलाइजेशन
qemu-kvm
और VMWare
पहले के उदाहरण हैं। वे आभासी वातावरण का प्रबंधन करने के लिए एक हाइपरविजर को नियुक्त करते हैं जिसमें एक पूर्ण ऑपरेटिंग सिस्टम चलता है। उदाहरण के लिए, एक qemu-kvm
सिस्टम पर आपके पास एक वीएम चल रहा है फ्रीबीएसडी, दूसरा रनिंग विंडोज, और दूसरा रनिंग लिनक्स।
इन तकनीकों द्वारा बनाई गई आभासी मशीनें अतिथि को अलग-थलग कंप्यूटर की तरह व्यवहार करती हैं। इनमें एक वर्चुअल सीपीयू, रैम, एनआईसी, ग्राफिक्स आदि हैं, जो अतिथि का मानना है कि यह वास्तविक लेख है। इस वजह से, कई अलग-अलग ऑपरेटिंग सिस्टम वीएम पर स्थापित किए जा सकते हैं और वे "बॉक्स से बाहर" काम करते हैं जिसमें कोई संशोधन की आवश्यकता नहीं होती है।
जबकि यह बहुत सुविधाजनक है, इसमें बहुत से ओएस बहुत प्रयास किए बिना स्थापित हो जाएंगे, इसमें एक खामी है कि हाइपरविजर को सभी हार्डवेयर का अनुकरण करना होगा, जो चीजों को धीमा कर सकता है। एक विकल्प पैरा-वर्चुअलाइज्ड हार्डवेयर है, जिसमें एक नए वर्चुअल डिवाइस और ड्राइवर को उस अतिथि के लिए विकसित किया जाता है जिसे वर्चुअल वातावरण में प्रदर्शन के लिए डिज़ाइन किया गया है। qemu-kvm
इसके लिए virtio
उपकरणों और ड्राइवरों की श्रेणी प्रदान करें। इसका नकारात्मक पक्ष यह है कि अतिथि OS का समर्थन किया जाना चाहिए; लेकिन अगर समर्थित है, तो प्रदर्शन लाभ महान हैं।
lxc
ऑपरेटिंग सिस्टम स्तर वर्चुअलाइजेशन, या कंटेनरों का एक उदाहरण है। इस प्रणाली के तहत, केवल एक कर्नेल स्थापित है - मेजबान कर्नेल। प्रत्येक कंटेनर उपयोगकर्ता की प्रक्रियाओं का केवल एक अलगाव है। उदाहरण के लिए, एक वेब सर्वर (उदाहरण के लिए apache
) एक कंटेनर में स्थापित किया गया है। जहां तक उस वेब-सर्वर का संबंध है, केवल स्थापित सर्वर ही है। एक अन्य कंटेनर में एफ़टीपी सर्वर चल सकता है। एफ़टीपी सर्वर को वेब-सर्वर इंस्टॉलेशन की जानकारी नहीं है - केवल यह स्वयं का है। एक अन्य कंटेनर में लिनक्स डिस्ट्रो की पूरी उपयोगकर्ता स्थापना हो सकती है (जब तक कि होस्ट सिस्टम के कर्नेल के साथ चलने में सक्षम है)।
हालांकि, कंटेनरों का उपयोग करते समय कोई अलग ऑपरेटिंग सिस्टम इंस्टॉलेशन नहीं हैं - केवल उपयोगकर्ता सेवाओं के पृथक उदाहरण हैं। इसके कारण, आप कंटेनर में अलग-अलग प्लेटफ़ॉर्म स्थापित नहीं कर सकते हैं - लिनक्स पर कोई विंडोज नहीं।
कंटेनर आमतौर पर एक का उपयोग करके बनाया जाता है chroot
। इसके /
साथ काम करने के लिए एक अलग निजी रूट ( ) बनाता है । कई अलग-अलग निजी जड़ें, प्रक्रियाएं (वेब-सर्वर, या एक लिनक्स डिस्ट्रो, आदि) बनाकर अपने स्वयं के अलग-अलग फाइल सिस्टम में चलते हैं। अधिक उन्नत तकनीकें, cgroups
जैसे कि नेटवर्क और रैम जैसे अन्य संसाधनों को अलग कर सकती हैं।
दोनों के लिए पेशेवरों और विपक्ष हैं और कई लंबी बहस चल रही है जो सबसे अच्छा है।
- कंटेनर हल्के होते हैं, जिसमें प्रत्येक के लिए एक पूर्ण ओएस स्थापित नहीं होता है; हाइपरवाइजर्स के लिए यह मामला है। इसलिए वे कम ऐन्टेना हार्डवेयर पर चल सकते हैं। हालांकि, वे केवल लिनक्स मेहमान (लिनक्स होस्ट पर) चला सकते हैं। इसके अलावा, क्योंकि वे कर्नेल साझा करते हैं, इस बात की संभावना है कि एक समझौता कंटेनर दूसरे को प्रभावित कर सकता है।
- हाइपरविजर अधिक सुरक्षित हैं और विभिन्न OS चला सकते हैं क्योंकि प्रत्येक VM में एक पूर्ण OS स्थापित है और मेहमानों को अन्य VM के बारे में पता नहीं है। हालांकि, यह मेजबान पर अधिक संसाधनों का उपयोग करता है, जो अपेक्षाकृत शक्तिशाली होना चाहिए।