Skip to main content

Umístění storage/iso mimo výchozí adresář

Problém

Pokud se image pro virtualizaci nenacházejí v /var/lib/libvirt/images, start virtuálního stroje skončí s chybou qemu-kvm: could not open disk image ' ': Permission denied.

Je to kvůli tomu, co přesně píše chybová hláška, tedy že nemá oprávnění se k souboru dostat (ale mohl by doplnit jaký disk image). Problémy mohou být dva:

  1. Uživatel libvirt-qemu nemá oprávnění přístupu k image disku.
  2. Skrze dementní chybu v konfiguraci a apparmor. Pokud by měl libvirt-qemu použít jako disk volume a nemá zde právo k přístupu tak failne.

ℹ️ Tento problém se řešil na GitHubu.

Řešení

Řešení je vícero. Taky záleží co je potřeba vyřešit.

Uživatel libvirt-qemu se nedostane k images

Tady je to docela jednoduché, asi nejlepší rady jsou:

  1. Připojit storage na image do adresáře /var/lib/libvirt/images.
  2. Nastavit oprávnění na adresáři pro uživatele libvirt-qemu: sudo setfacl -m u:libvirt-qemu:rx /srv/iso_images/.

Uživatel libvirt-qemu se dostane k images

I když QEMU spouštíme jako root tak prostě nemá oprávnění. Tohle smrdí jako apparmor. Odepřený přístup jde vidět v jaderném logu sudo dmesg -w. Čistá metoda je nastavení konfigurace VM tak, aby používala file místo volume pro definici virtuálního disku. Editovat si tedy VM pomocí sudo virsh edit <JMENO-VM>

<disk type='volume' device='disk'> ... </disk>

změnit na:

<disk type='file' device='disk'> ... </disk>

📋 Pro účely testu jde udělat jednu špinavost, a to nastavit v souboru /etc/libvirt/qemu.conf: security_driver = "none" + restartovat službu pomocí service libvirtd restart nebo systemctl restart libvirtd.