Computer >> คอมพิวเตอร์ >  >> ซอฟต์แวร์ >> เครื่องเสมือน

การเริ่มต้น KVM - ปฏิเสธการอนุญาต

เป็นเวลานานแล้วที่ฉันพบปัญหาสำคัญกับ KVM พูดตามตรง ฉันไม่ได้ใช้มันบ่อยขนาดนั้นในช่วงไม่กี่ปีที่ผ่านมา แต่เมื่อเร็วๆ นี้ ฉันมีกิจกรรมมากมายเกี่ยวกับเทคโนโลยีเวอร์ชวลไลเซชันนี้ และประสิทธิภาพการทำงานก็มาพร้อมกับปัญหาบางอย่างตามมา

เมื่อมันเกิดขึ้น ฉันพยายามเปิดเครื่องเสมือน - ไม่มีอะไรพิเศษ แค่ kvm xyz และอะไรอีก ฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:ไม่สามารถเข้าถึงโมดูลเคอร์เนล KVM:สิทธิ์ถูกปฏิเสธ และด้วยเหตุนี้จึงเริ่มต้นบทช่วยสอนเล็กๆ น้อยๆ นี้ ซึ่งแสดงสิ่งต่างๆ ทั้งหมดที่คุณสามารถทำได้เพื่อตรวจสอบสิ่งที่อาจผิดพลาด และวิธีแก้ไขปัญหา หลังจากฉัน.

ปัญหาในรายละเอียดเพิ่มเติม

ข้อความแสดงข้อผิดพลาดทั้งหมด:

ไม่สามารถเข้าถึงโมดูลเคอร์เนล KVM:สิทธิ์ถูกปฏิเสธ
qemu-system-x86_64:ล้มเหลวในการเริ่มต้น KVM:สิทธิ์ถูกปฏิเสธ

สิ่งที่บ่งชี้ว่า - เป็นไปได้มากที่สุด - คอมโพเนนต์ userspace ของ KVM ไม่สามารถเข้าถึงไดรเวอร์ KVM ได้ ซึ่งมักเกิดจากการอนุญาตที่ไม่ถูกต้อง

วิธีแก้ปัญหา

สิ่งแรกที่คุณต้องทำคือตรวจสอบว่าผู้ใช้ของคุณเป็นสมาชิกของกลุ่ม KVM และ libvirt เมื่อคุณทำการเปลี่ยนแปลงเหล่านี้แล้ว คุณจะต้องเปิดตัวเชลล์ใหม่เพื่อให้การเปลี่ยนแปลงสมาชิกกลุ่มเกิดขึ้น วิธีที่ง่ายที่สุดคือการลงชื่อเข้าใช้เซสชันผู้ใช้ของคุณอีกครั้ง

sudo usermod -G -a kvm "ชื่อผู้ใช้"
sudo usermod -G -a libvirtd "ชื่อผู้ใช้"

การอนุญาตโหนดอุปกรณ์

นอกจากนี้ คุณต้องการตรวจสอบสิทธิ์บนอุปกรณ์ /dev/kvm สิทธิ์เริ่มต้นที่ถูกต้องควรเป็น 660 และเป็นเจ้าของ root:kvm สำหรับไฟล์อุปกรณ์ อย่างที่คุณเห็น ถ้าคุณไม่ได้รูทหรือเป็นสมาชิกของกลุ่ม kvm คุณจะไม่สามารถเข้าถึงได้

ls -ld /dev/kvm
crw-rw---- 1 รูท kvm 10, 232 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"

เรามีอะไรที่นี่? หากคุณอยู่ในเวอร์ชัน TL; DR ของวิธีเขียนกฎ udev โปรดอ่านที่โน่น พูดง่ายๆ คือ

  • KERNEL - ชื่อเคอร์เนลของอุปกรณ์
  • GROUP - กลุ่ม UNIX ที่ควรเป็นเจ้าของอุปกรณ์
  • MODE - สิทธิ์ระดับบิตสำหรับอุปกรณ์

เมื่อกฎเข้าที่แล้ว ให้โหลดกฎซ้ำโดยไม่ต้องรีบูต:

การควบคุม udevadm --โหลดกฎ

และเพื่อความปลอดภัย คุณอาจต้องรีสตาร์ทบริการ libvirt:

systemctl รีสตาร์ท libvirtd

การอนุญาตโหนดอุปกรณ์ - อีกครั้ง

ส่วนสุดท้ายของสมการนี้ - ถ้าวิธีแก้ปัญหาข้างต้นไม่ได้ผล คุณก็เปลี่ยนสิทธิ์บน /dev/kvm เป็นชุดที่ผ่อนคลายมากขึ้นได้ แทนที่จะใช้ 660 คุณสามารถใช้ 666 ได้ ซึ่งหมายความว่าผู้ใช้ทุกคนในระบบจะสามารถจัดการการจำลองเสมือนของ KVM ได้ ในการติดตั้งที่บ้าน นี่ไม่ใช่เรื่องใหญ่

sudo chmod +666 /dev/kvm

และตอนนี้คุณควรจะเรียกใช้ KVM ได้อย่างสง่างาม

บทสรุป

ไปเลย. บทช่วยสอนนี้ไม่ยาวเกินไป แต่ครอบคลุมบางส่วน ตอนนี้ ไม่ใช่บทความแก้ไขจุดบกพร่องทั่วไปสำหรับทุกคนและปัญหาใดๆ ที่เกี่ยวข้องกับ KVM สำหรับสิ่งนั้น คุณมีคู่มือการแก้ไขปัญหา KVM รุ่นเก่าของฉัน รวมถึงอีเมล ดังนั้นคุณจึงสามารถขอคำแนะนำและแนวทางแก้ไขใหม่ ๆ และอะไรก็ตาม เรากำลังพูดถึงปัญหาการอนุญาตการเริ่มต้น KVM โดยเฉพาะ และคุณมีวิธีวิเคราะห์และแก้ไขสามหรือสี่วิธีที่แตกต่างกัน

โดยรวมแล้ว KVM เป็นซอฟต์แวร์เวอร์ชวลไลเซชันที่ทรงพลังและยืดหยุ่น โดยมีข้อเสียอย่างหนึ่งคืออาจค่อนข้างเนิร์ด และไม่สามารถเข้าถึงได้เหมือนกับเครื่องมืออื่น ๆ ที่เป็นมิตรต่อส่วนหน้ามากกว่า ไม่ใช่ว่า virtualization นั้นไม่ใช่เรื่องเนิร์ดสำหรับการเริ่มต้น แต่เดี๋ยวก่อน ถ้าคุณพบอุปสรรค์ในการสร้างหรือเริ่มต้น VM ของคุณด้วย KVM เนื่องจากการอนุญาตที่ไม่ถูกต้อง รายการตรวจสอบด้านบนควรช่วยให้คุณพร้อมใช้งาน เรียบง่าย ไม่ล่วงล้ำ ไม่ต้องรีบูตเครื่อง เสร็จแล้วครับเพื่อนๆ

ไชโย