Re: luks devices and libvirt

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Jul 28, 2024 at 17:31:46 +0200, Marc Haber wrote:
> Hi,
> 
> this is an ongoing issue. I don't know whether I ever have addresses
> this here, but it's still annoying.
> 
> I am using debian unstable, libvirt 10.5.0, virt-manager 4.1.0, qemu
> 9.0.2. I work through virt-manager, rarely I use virsh.
> 
> I regularly configure virtual disks that are located on a luks-encrypted
> LVM volume. when unlocked, the block devices appears as /dev/mapper/foo
> and is a symlink to a ../dm-xx node with xx being a random number,
> ../dm-xx being a regular block device.
> 
> To facilitate this, I have defined a storage pool with this XML:
> 
> <pool type="dir">
>   <name>mapper</name>
>   <uuid></uuid>
>   <capacity unit="bytes">24598757376</capacity>
>   <allocation unit="bytes">0</allocation>
>   <available unit="bytes">24598757376</available>
>   <source>
>   </source>
>   <target>
>     <path>/dev/mapper</path>
>     <permissions>
>       <mode>0755</mode>
>       <owner>0</owner>
>       <group>0</group>
>     </permissions>
>   </target>
> </pool>
> 
> This is necessary as the storage type "LVM volume group" now insists on
> a volume group name, and the DM mappings created by LUKS dont have a
> volume group name.

So looking at such configuration, when I dump a volume XML of a volume I
get:

$ virsh vol-dumpxml --pool mapperdir angien-root
<volume type='file'>
  <name>angien-root</name>
  <key>/dev/mapper/angien-root</key>
  <capacity unit='bytes'>118111600640</capacity>

[...]

As you can see the volume type is 'file' instead of what you'd normally
expect ('block).


> When I add a disk to a VM from this storage pool, it generates the XML:
> 
> <disk type="file" device="disk">
>   <driver name="qemu" type="raw"/>
>   <source file="/dev/mapper/wintest"/>
>   <target dev="vda" bus="virtio"/>
>   <address type="pci" domain="0x0000" bus="0x05" slot="0x00" function="0x0"/>
> </disk>

Based on the above that is most likely expected as it's reported as
'file'.

> 
> qemu won't start with this settings:
> 
> error: Failed to start domain 'win11test'
> error: internal error: QEMU unexpectedly closed the monitor (vm='win11test'): 2024-07-28T15:20:25.250387Z qemu-system-x86_64: -blockdev {"driver":"file","filename":"/dev/mapper/wintest","node-name":"libvirt-1-storage","read-only":false}: 'file' driver requires '/dev/mapper/wintest' to be a regular file
> 
> Changing the XML to
> 
> <disk type="block" device="disk">
>   <driver name="qemu" type="raw"/>
>   <source dev="/dev/mapper/wintest"/>
>   <target dev="vda" bus="virtio"/>
>   <address type="pci" domain="0x0000" bus="0x05" slot="0x00" function="0x0"/>
> </disk>
> 
> (note type="block" and "source dev")
> 
> makes the VM work.

Yup, block devices must use the appropriate type.

> 
> Can virt-manager somehow be coaxed into generating XML that works here?

I didn't look into virt-manager code, but I can see that the libvirt
type returned in such pool type is wrong, so it can't really make a
better decision.

> If not, is this a virt-manager issue

It looks like a libvirt issue for now, or a combination. Feel free to
open appropriate issues in the upstream tracker.

> or should qemu just accept
> type="file" and "source file")?

No. You must use the proper type here.



[Index of Archives]     [Virt Tools]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]

  Powered by Linux