나는스토리지 풀virt-manager의 qcow2 이미지용내 홈 디렉토리에그런데 이상한 오류가 발생합니다.
Error creating pool: Could not define storage pool: XML error: name /home/matthias/virtual-guests/virt-manager cannot contain '/'
질문
- 내 홈 디렉토리에 스토리지 풀을 갖는 것이 가능합니까?
- virt-manager가 디렉터리에 액세스하려면 특별한 권한이 필요합니까?
전체 오류 추적
Traceback (most recent call last): File "/usr/share/virt-manager/virtManager/asyncjob.py", line 89, in cb_wrapper callback(asyncjob, *args, **kwargs) File "/usr/share/virt-manager/virtManager/createpool.py", line 442, in _async_pool_create poolobj = self._pool.install(create=True, meter=meter, build=build) File "/usr/share/virt-manager/virtinst/storage.py", line 531, in install raise RuntimeError(_("Could not define storage pool: %s") % str(e)) RuntimeErError creating pool: Could not define storage poror: Could not define storage pool: XML error: name /home/matthias/virtual-guests/virt-manager cannot contain '/'
답변1
풀을 생성할 수 있지만 고려해야 할 몇 가지 사항이 있습니다.
"이름"에는 '/'와 같은 특수 문자가 없어야 합니다. /tmp/test 풀을 생성하려면 이름을 "시험" (2단계 중 1단계에서) 경로를 지정하고 "/tmp/테스트" (2/2단계에서) 그러면 작동할 겁니다.
너무 드물게 가면 의류가 멈출 것입니다. 기본적으로 허용되는 경로 세트는 제한되어 있습니다. 어느 시점에서 이 경로를 벗어나면virt-aa-helper더 이상 파일에 액세스할 수 없습니다. 그러나 게스트별 사용자 정의 프로필에 대한 액세스를 허용하려면 이것이 필요합니다. 이에 대한 자세한 내용은 /etc/apparmor.d/local/README를 참조하여 기존 규칙을 확인
/etc/apparmor.d/usr.lib.libvirt.virt-aa-helper
하고 사용자 정의 규칙을 추가하세요 ./etc/apparmor.d/local/usr.lib.libvirt.virt-aa-helper
일부 수영장 유형은 아직 의류로 처리할 수 없습니다. virt-manager의 기본 풀 유형은 "디렉토리" 그러면 괜찮을 것입니다. 하지만 "LVM 그룹", 이러한 유형의 경우 게스트에 대해 즉석에서 의류 규칙을 생성할 수 없습니다(이것에 대한 버그를 참조하십시오), 이 경우 변경을 통해 필요한 추가 경로를 허용해야 합니다
/etc/apparmor.d/abstractions/libvirt-qemu
.
답변2
답변3
다른 파티션에 qcow2 디스크 이미지 파일 생성
이 가이드는 Ubuntu 22.04 LTS, 22.10, 23.04, 23.10에서 테스트되었습니다.
디렉토리를 블록에 자동으로 연결(자동 파티션 마운트)
1. 새 디렉터리 만들기
$ sudo mkdir /media/username
$ sudo mkdir /media/username/Shared
$ sudo mkdir /media/username/Shared/kvm
중요한!소문자로 된 디렉토리 이름 kvm입니다.
2. blkid 명령을 실행하여 사용 가능한 블록 장치에 대한 정보를 표시합니다. UUID(Universally Unique Identifier)가 필요합니다.
$ sudo blkid
결과는 다음과 같아야 합니다.
/dev/sda1: LABEL="Ubuntu" UUID="azazazaz-azaz-azaz-azaz-azazazazazaz" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Ubuntu" PARTUUID="a1a1a1a1-a1a1-a1a1-a1a1-a1a1a1a1a1a1"
/dev/sda2: LABEL="Shared" UUID="abababab-abab-abab-abab-abababababab" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Shared" PARTUUID="a2a2a2a2-a2a2-a2a2-a2a2-a2a2a2a2a2a2"
3. fstab 파일을 편집합니다.
$ sudo nano /etc/fstab
fstab 파일에 올바른 UUID가 포함된 다음 두 줄을 추가합니다.
# Shared
UUID=abababab-abab-abab-abab-abababababab /media/username/Shared ext4 defaults 0 2
최종 결과는 다음과 같습니다.
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/nvme0n1p3 during installation
UUID=azazazaz-azaz-azaz-azaz-azazazazazaz / ext4 errors=remount-ro 0 1
# Shared
UUID=abababab-abab-abab-abab-abababababab /media/username/Shared ext4 defaults 0 2
4. mount -a
명령 실행
$ sudo mount -a
가능한 문제:
- 에뮬레이터에 '/media/username/Shared/kvm/Disk.qcow2' 경로에 대한 검색 권한이 없을 수 있습니다.
- 도메인 시작 오류: 저장소 파일 '/media/username/Shared/kvm/Disk.qcow2'에 액세스할 수 없습니다(uid:10101, gid:101): 권한이 거부되었습니다.
5. 권한 문제 수정
$ sudo chown root:root '/media'
$ sudo chmod 775 '/media'
$ sudo chown root:root '/media/username'
$ sudo chmod 775 '/media/username'
$ sudo chown username:username '/media/username/Shared'
$ sudo chmod 775 '/media/username/Shared'
$ sudo chown username:username '/media/username/Shared/kvm'
$ sudo chmod 777 '/media/username/Shared/kvm'
libvirt의 기본 스토리지 풀 변경
6. 현재 풀 나열
$ virsh pool-list
다음 텍스트가 표시됩니다.
Name State Autostart
-------------------------------------------
default active yes
7. 기본 풀을 삭제합니다.
$ virsh pool-destroy default
다음 텍스트가 표시되어야 합니다. 풀 기본값이 삭제됨
8. 풀 정의 해제
$ virsh pool-undefine default
다음 텍스트가 표시되어야 합니다. 풀 기본값이 정의되지 않았습니다.
9. "default"라는 새 풀을 정의합니다.
$ virsh pool-define-as --name default --type dir --target /media/username/Shared/kvm
다음 텍스트가 표시되어야 합니다. 풀 기본값이 정의됨
10. libvirt 데몬이 시작될 때 시작되도록 풀을 설정합니다.
$ virsh pool-autostart default
다음 텍스트가 표시되어야 합니다. 풀 기본값이 자동 시작으로 표시됨
11. 풀 시작
$ virsh pool-start default
다음 텍스트가 표시되어야 합니다. 풀 기본값이 시작됨
12. 수영장 상태를 확인하세요
$ virsh pool-list
다음 텍스트가 표시됩니다.
Name State Autostart
-------------------------------------------
default active yes
이제 가상 머신을 생성할 때 Virtual Machine Manager는 qcow2 파일을 /media/username/Shared/kvm 디렉터리에 저장합니다.
새로운 게스트 머신 또는 qcow2 파일 생성
13. virt-manager 실행
$ virt-manager
14. 가상 머신용 디스크 이미지를 생성하거나 새 머신을 생성합니다.
답변4
제 경우에는 실수였습니다. 특히 명확하지는 않습니다. 디렉토리에 스토리지 풀을 생성하려고 했기 때문에dir:Filesystem Directory
2단계가 있습니다:
type
및 을 지정name
하지만 여기서는name
경로가 아니다. 예:test
- 다음 단계에서는 제안된 경로 /var/lib/libvirt/images /libvirt-images-pool2/ /libvirt-images-pool2/test```를
Target Path
제공합니다./var/lib/libvirt/images/**test**. Simple **change**
to whatever you want. Example:
(which will result in
참고: 소유권과 권한을 조정해야 할 수도 있지만 완료를 클릭하면 libvirt가 이를 수정한다고 생각합니다.
누군가에게 도움이 되기를 바랍니다.