काफी समय हो गया है जब मैंने KVM के साथ किसी बड़ी समस्या का सामना किया है। फिर भी, निष्पक्ष होने के लिए, मैंने पिछले कुछ वर्षों में इसका बड़े पैमाने पर उपयोग नहीं किया है। लेकिन हाल ही में, मुझे इस वर्चुअलाइजेशन तकनीक के साथ गतिविधि का एक दौर था, और उत्पादकता कुछ परेशानियों के साथ टॉपिंग के रूप में आई।
जैसा कि होता है, मैंने एक वर्चुअल मशीन लॉन्च करने की कोशिश की - कुछ खास नहीं, सिर्फ kvm xyz और क्या नहीं। मुझे निम्न त्रुटि संदेश मिला: Could not access KVM kernel module: Permission denied। और इस प्रकार यह छोटा ट्यूटोरियल शुरू होता है, जो उन सभी विभिन्न चीजों को दिखाता है जो आप यह जांचने के लिए कर सकते हैं कि क्या गलत हो सकता है, और मुद्दे को कैसे हल किया जाए। मेरा अनुसरण करें।
समस्या का विस्तार
पूरा त्रुटि संदेश:
Could not access KVM kernel module: Permission denied qemu-system-x86_64: failed to initialize KVM: Permission denied
यह इंगित करता है कि - सबसे अधिक संभावना है - KVM यूजरस्पेस घटक KVM ड्राइवर तक नहीं पहुंच सकता। यह आमतौर पर गलत अनुमतियों से उपजा है।
समाधान
आप जो पहली चीज करना चाहते हैं वह यह जांचना है कि आपका उपयोगकर्ता KVM और libvirt समूहों का सदस्य है। एक बार जब आप ये परिवर्तन कर लेते हैं, तो आपको एक नया शेल लॉन्च करना होगा ताकि समूह सदस्यता परिवर्तन प्रभावी हों। सबसे सरल तरीका है अपने उपयोगकर्ता सत्र में फिर से लॉग इन करना।
sudo usermod -G -a kvm "username" sudo usermod -G -a libvirtd "username"
डिवाइस नोड अनुमतियाँ
इसके अलावा, आप /dev/kvm डिवाइस पर अनुमतियों की जांच करना चाहते हैं। सही डिफ़ॉल्ट अनुमतियाँ डिवाइस फ़ाइल के लिए 660 और root:kvm स्वामित्व होनी चाहिए। जैसा कि आप देख सकते हैं, यदि आप रूट या kvm समूह के सदस्य नहीं हैं, तो आपके पास पहुंच नहीं होगी।
ls -ld /dev/kvm crw-rw---- 1 root kvm 10, 232 May 27 10:43 /dev/kvm
Udev नियम
एक और चीज जो आप जांचना चाहेंगे वह यह है कि क्या सही udev नियम लागू हैं। यदि आप सोच रहे हैं, udevd एक डिवाइस फाइल सिस्टम प्रबंधन सेवा है, जो /dev के तहत प्रविष्टियों के लिए सही अनुमतियां सेट करती है। आमतौर पर, जब आप KVM सॉफ्टवेयर इंस्टॉल करते हैं, तो बंडल में पैकेज में से एक आवश्यक नियम प्रदान करेगा। यदि यह नियम मौजूद नहीं है, और पहले बग रहे हैं, तो आप नियम को स्वयं बनाना चाह सकते हैं।
/etc/udev/rules.d/ के तहत, XX-kvm.rules नामक एक फाइल बनाएं। XX एक नंबर के लिए खड़ा है, जो उस शब्दकोष क्रम को निर्धारित करता है जिसके द्वारा नियमों को पार्स और निष्पादित किया जाएगा, GRUB2 नियमों के समान। कुछ मामलों में, विभिन्न नियमों का क्रम महत्वपूर्ण हो सकता है। यदि आप अनिश्चित हैं, और ऐसा कुछ भी नहीं है जिसे आप जानते हैं कि KVM कार्यक्षमता को चलाने के लिए निर्भर करता है, तो आप 99-kvm.rules का उपयोग कर सकते हैं।
इस फाइल के अंदर, निम्नलिखित लाइन जोड़ें:
KERNEL=="kvm", GROUP="kvm", MODE="0660"
यहां हमारे पास क्या है? यदि आप udev नियम लिखने के TL;DR संस्करण में हैं, तो योनडर पढ़ें। सरल शब्दों में:
- KERNEL - डिवाइस का कर्नेल नाम
- GROUP - वह UNIX समूह जिसके पास डिवाइस का स्वामित्व होना चाहिए
- MODE - डिवाइस के लिए बिटवाइज़ अनुमतियाँ
एक बार नियम लागू हो जाने पर, रीबूट किए बिना नियमों को रीलोड करें:
udevadm control --reload-rules
और सुरक्षित पक्ष पर होने के लिए, आप libvirt सेवा को भी पुनरारंभ करना चाह सकते हैं:
systemctl restart libvirtd
डिवाइस नोड अनुमतियाँ - फिर से
इस समीकरण का अंतिम टुकड़ा - यदि उपरोक्त समाधानों में से कोई भी काम नहीं करता है, तो आप बस /dev/kvm पर अनुमतियों को अधिक ढीले सेट में बदल सकते हैं। 660 के बजाय, आप 666 का उपयोग कर सकते हैं - इसका मतलब है कि सिस्टम पर कोई भी उपयोगकर्ता KVM वर्चुअलाइजेशन को प्रबंधित करने में सक्षम होगा। होम सेटअप में, यह इतना बड़ा सौदा नहीं है।
sudo chmod +666 /dev/kvm
और अब आप KVM को शानदार ढंग से चलाने में सक्षम होना चाहिए।
निष्कर्ष
यहां हम जाते हैं। यह ट्यूटोरियल बहुत लंबा नहीं है, लेकिन यह काफी कुछ क्षेत्रों को कवर करता है। अब, यह KVM से संबंधित किसी भी और सभी मुद्दों के लिए एक सामान्य डीबगिंग लेख नहीं है। उसके लिए, आपके पास मेरा पुराना KVM समस्या निवारण गाइड है, साथ ही ईमेल, ताकि आप नए सुझाव और समाधान मांग सकें। हम विशेष रूप से KVM स्टार्टअप अनुमति मुद्दे के बारे में बात कर रहे हैं, और आपके पास इसका विश्लेषण और समाधान करने के तीन या चार अलग-अलग तरीके हैं।
कुल मिलाकर, KVM एक शक्तिशाली, लचीला वर्चुअलाइजेशन सॉफ्टवेयर है - एक नकारात्मक पक्ष के साथ कि यह काफी नर्डी हो सकता है, और इस प्रकार कुछ अन्य, अधिक फ्रंटएंड-अनुकूल टूल की तुलना में कम सुलभ। ऐसा नहीं है कि वर्चुअलाइजेशन नर्डी सामान नहीं है, लेकिन हे। खैर, यदि आप गलत अनुमतियों के कारण अपने VMs को बनाने या शुरू करने में किसी बाधा का सामना करते हैं, तो उपरोक्त चेकलिस्ट आपको चालू और चालू कर देनी चाहिए। सरल, गैर-घुसपैठ, कोई रीबूट आवश्यक नहीं। और हम यहां काम कर चुके हैं, दोस्तों।
Cheers.