Computer >> 컴퓨터 >  >> 소프트웨어 >> 가상 머신

KVM 가상 머신 실행 시 '권한 거부됨(Permission denied)' 오류 해결 방법

KVM을 사용하면서 큰 문제를 겪은 지는 꽤 됐습니다. 사실 최근 몇 년간 KVM을 그렇게 자주 사용하지는 않았기 때문이기도 합니다. 하지만 최근 이 가상화 기술을 다시 활발하게 활용하게 되었고, 생산성과 함께 몇 가지 번거로운 문제도 따라왔습니다.

가상 머신을 실행하려고 했는데, 특별할 것 없는 단순한 kvm 명령어 입력이었습니다. 그런데 다음과 같은 오류 메시지가 나타났습니다. 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 사용자 공간(user space) 구성 요소가 KVM 드라이버에 접근하지 못한다는 의미입니다. 주된 원인은 잘못된 권한 설정입니다.

해결 방법

가장 먼저 확인해야 할 것은 현재 사용자가 kvm 및 libvirt 그룹에 속해 있는지 여부입니다. 그룹 멤버십을 변경한 후에는 새로운 셸을 열어야 변경 사항이 적용됩니다. 가장 간단한 방법은 사용자 세션에서 로그아웃 후 다시 로그인하는 것입니다.

sudo usermod -aG kvm "사용자명"
sudo usermod -aG libvirtd "사용자명"

장치 노드 권한 확인

다음으로 /dev/kvm 장치의 권한을 확인해야 합니다. 기본적으로 올바른 권한은 660이며, 소유자는 root:kvm이어야 합니다. 보시다시피 root가 아니거나 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"

이 설정의 의미를 간단히 설명하면 다음과 같습니다.

  • 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은 강력하고 유연한 가상화 소프트웨어입니다. 다만 다소 전문적인 지식이 필요해서 프론트엔드 친화적인 다른 도구들만큼 접근성이 높지 않다는 것이 유일한 단점입니다. 애초에 가상화 자체가 전문적인 분야이긴 하지만요. KVM으로 VM을 생성하거나 시작할 때 잘못된 권한 때문에 막히게 된다면, 위의 체크리스트를 따라가면 금방 해결할 수 있습니다. 간단하고 시스템에 무리를 주지 않으며 재부팅도 필요 없습니다. 여기까지입니다.