Đã được một thời gian kể từ khi tôi gặp phải bất kỳ vấn đề lớn nào với KVM. Sau đó, một lần nữa, công bằng mà nói, tôi đã không sử dụng nó nhiều trong vài năm qua. Nhưng gần đây, tôi đã có một hoạt động thúc đẩy với công nghệ ảo hóa này và năng suất đi kèm với một số rắc rối.
Khi nó xảy ra, tôi đã cố khởi chạy một máy ảo - không có gì đặc biệt, chỉ kvm xyz và không có gì. Tôi nhận được thông báo lỗi sau:Không thể truy cập mô-đun hạt nhân KVM:Quyền bị từ chối. Và do đó, hãy bắt đầu hướng dẫn nhỏ này, hướng dẫn này cho biết tất cả những điều khác nhau mà bạn có thể làm để kiểm tra xem điều gì có thể sai và cách giải quyết vấn đề. Theo tôi.
Vấn đề chi tiết hơn
Thông báo lỗi đầy đủ:
Không thể truy cập mô-đun hạt nhân KVM:Quyền bị từ chối
qemu-system-x86_64:không thể khởi tạo KVM:Quyền bị từ chối
Điều nó chỉ ra là - rất có thể - thành phần không gian người dùng KVM không thể truy cập trình điều khiển KVM. Điều này thường bắt nguồn từ việc cấp quyền không chính xác.
(Các) giải pháp
Điều đầu tiên bạn muốn làm là kiểm tra xem người dùng của bạn có phải là thành viên của nhóm KVM và libvirt không. Khi bạn đã thực hiện những thay đổi này, bạn sẽ cần khởi chạy trình bao mới để thay đổi thành viên nhóm diễn ra. Cách đơn giản nhất là đăng nhập lại vào phiên người dùng của bạn.
sudo usermod -G -a kvm "tên người dùng"
sudo usermod -G -a libvirtd "tên người dùng"
Quyền của nút thiết bị
Ngoài ra, bạn muốn kiểm tra các quyền trên thiết bị /dev/kvm. Quyền mặc định chính xác phải là quyền sở hữu 660 và root:kvm đối với tệp thiết bị. Như bạn có thể thấy, nếu bạn không phải là người chủ hoặc là thành viên của nhóm kvm, bạn sẽ không có quyền truy cập.
ls -ld /dev/kvm
crw-rw---- 1 gốc kvm 10, 232 ngày 27 tháng 5 10:43 /dev/kvm
Quy tắc Udev
Một điều khác bạn có thể muốn kiểm tra là liệu các quy tắc udev có đúng không. Nếu bạn đang thắc mắc, udevd là dịch vụ quản lý hệ thống tệp thiết bị, dịch vụ này đặt quyền chính xác cho các mục trong /dev. Thông thường, khi bạn cài đặt phần mềm KVM, một trong các gói trong gói sẽ cung cấp quy tắc cần thiết. Nếu không có quy tắc này và đã có lỗi trước đó thì bạn có thể muốn tự tạo quy tắc.
Trong /etc/udev/rules.d/, tạo một tệp có tên XX-kvm.rules. XX là viết tắt của một số, xác định thứ tự từ vựng theo đó các quy tắc sẽ được phân tích cú pháp và thực thi, tương tự như các quy tắc GRUB2. Trong một số trường hợp, thứ tự của các quy tắc khác nhau có thể quan trọng. Nếu bạn không chắc chắn và không có gì bạn biết phụ thuộc vào chức năng KVM để chạy, bạn có thể sử dụng 99-kvm.rules.
Bên trong tệp này, thêm dòng sau:
KERNEL=="kvm", GROUP="kvm", MODE="0660"
Chúng ta có gì ở đây? Nếu bạn đang xem phiên bản TL; DR về cách viết quy tắc udev, hãy đọc thêm. Nói một cách đơn giản hơn:
- KERNEL - tên nhân của thiết bị
- GROUP - nhóm UNIX sẽ sở hữu thiết bị
- MODE - quyền theo bit cho thiết bị
Khi đã có quy tắc, hãy tải lại quy tắc mà không cần khởi động lại:
điều khiển udevadm --reload-rules
Và để đảm bảo an toàn, bạn cũng có thể muốn khởi động lại dịch vụ libvirt:
systemctl khởi động lại libvirtd
Quyền của nút thiết bị - một lần nữa
Phần cuối cùng của phương trình này - nếu không có giải pháp nào ở trên hoạt động, bạn chỉ cần thay đổi các quyền trên /dev/kvm thành một tập hợp thoải mái hơn. Thay vì 660, bạn có thể sử dụng 666 - điều này có nghĩa là bất kỳ người dùng nào trên hệ thống đều có thể quản lý ảo hóa KVM. Trong thiết lập tại nhà, đây không phải là vấn đề lớn.
sudo chmod +666 /dev/kvm
Và bây giờ bạn sẽ có thể chạy KVM một cách hoành tráng.
Kết luận
Chúng ta đi đây. Hướng dẫn này không quá dài, nhưng nó bao gồm khá nhiều lĩnh vực. Bây giờ, đây không phải là một bài viết gỡ lỗi chung cho tất cả và bất kỳ vấn đề nào liên quan đến KVM. Vì vậy, bạn có hướng dẫn khắc phục sự cố KVM cũ hơn của tôi, cộng với email, vì vậy bạn có thể hỏi các mẹo và giải pháp mới, v.v. Chúng tôi đang nói cụ thể về vấn đề quyền khởi động KVM và bạn có ba hoặc bốn cách khác nhau để phân tích và giải quyết vấn đề này.
Nhìn chung, KVM là một phần mềm ảo hóa mạnh mẽ, linh hoạt - với một nhược điểm là nó có thể khá kỳ quặc và do đó không thể truy cập được như một số công cụ thân thiện với giao diện người dùng hơn. Không phải ảo hóa không phải là thứ kỳ lạ để bắt đầu, nhưng này. Chà, nếu bạn gặp phải trở ngại khi tạo hoặc khởi động máy ảo của mình bằng KVM do sai quyền, thì danh sách kiểm tra ở trên sẽ giúp bạn thiết lập và chạy. Đơn giản, không xâm phạm, không cần khởi động lại. Và chúng ta đã hoàn thành ở đây, các bạn.
Chúc mừng.