Hi Erlon, Since you say you got Permission denied error while the ACL mode is 777, I guess it is due to security system like selinux or apparmor. As I know, selinux defaultly will disable qemu to use volume based on NFS. We need to use 'setsebool virt_use_nfs 1' to enable it. Well, your OS is ubuntu, so I think apparmor causes the permission problem. Try to find a way to enable virt_use_nfs or disable apparmor. Then check if the problem can be reproduced. Han ----- Original Message ----- From: "Erlon Cruz" <sombrafam@xxxxxxxxx> To: "Han Han" <hhan@xxxxxxxxxx> Cc: "Yang Yang" <yanyang@xxxxxxxxxx>, "Yuan Dan" <dyuan@xxxxxxxxxx>, "Xuesong Zhang" <xuzhang@xxxxxxxxxx>, libvirt-users@xxxxxxxxxx Sent: Thursday, 18 August, 2016 12:44:36 PM Subject: Re: Attaching disks with external snapshots Hi Han, Any update on this? Erlon On Wed, Aug 17, 2016 at 9:58 AM, Erlon Cruz <sombrafam@xxxxxxxxx> wrote: > Han, > > Did the same test again with libvirt debug enabled. This time I added the > disk[1] without snaps (OK), and then added the disk[2] with snapshots. The > libvirt log[3] (line 320) says: > > *Could not open > '/opt/stack/data/nova/mnt/a3b4c6ddd9bf82edd4f726872be58d05/volume-a75b42e8-8175-4516-b724-43ee6f3d2520': > Permission denied\r\n", "id": "libvirt-33"}]* > > But this file has 777 permissions. I can access it with any user I > tried[4]. Tough its mounted over NFS, the permissions seems to be right. > > Erlon > > [1] http://paste.openstack.org/show/556055/ > [2] http://paste.openstack.org/show/556056/ > [3] http://pastebin.com/CCFcKq5b > [4] http://paste.openstack.org/show/559018/ > > > On Tue, Aug 16, 2016 at 2:41 PM, Erlon Cruz <sombrafam@xxxxxxxxx> wrote: > >> Hi Han, >> >> Thanks for helping. What is the XML before the snapshot is created? Can >> you post the XML files you used too? The files are in the links pointed by >> the numbers [1], [2] etc. >> >> The versions are: >> qemu-system-x86_64 --version >> QEMU emulator version 2.5.0 (Debian 1:2.5+dfsg-5ubuntu10.4), Copyright >> (c) 2003-2008 Fabrice Bellard >> >> libvirtd --version >> libvirtd (libvirt) 1.3.1 >> >> >> >> Erlon >> >> On Mon, Aug 15, 2016 at 12:56 AM, Han Han <hhan@xxxxxxxxxx> wrote: >> >>> Hi,Erlon >>> I was not able to reproduce your problem. It is ok to attach disk with >>> external snapshot. >>> I did it with following steps: >>> # qemu-img create /tmp/vdb 100M >>> Formatting '/tmp/vdb', fmt=raw size=104857600 >>> # virsh start snap >>> Domain snap started >>> # virsh snapshot-create-as snap s1 --disk-only --diskspec >>> vdb,file=/tmp/vdb.s1 --quiesce >>> Domain snapshot s1 created >>> # virsh dumpxml snap|awk '/<disk/,/<\/disk/' >>> <disk type='file' device='disk'> >>> <driver name='qemu' type='qcow2' cache='none'/> >>> <source file='/var/lib/libvirt/images/snap.s1'/> >>> <backingStore type='file' index='1'> >>> <format type='qcow2'/> >>> <source file='/var/lib/libvirt/images/snap.qcow2'/> >>> <backingStore/> >>> </backingStore> >>> <target dev='vda' bus='virtio'/> >>> <alias name='virtio-disk0'/> >>> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' >>> function='0x0'/> >>> </disk> >>> <disk type='file' device='disk'> >>> <driver name='qemu' type='qcow2'/> >>> <source file='/tmp/vdb.s1'/> >>> <backingStore type='file' index='1'> >>> <format type='raw'/> >>> <source file='/tmp/vdb'/> >>> <backingStore/> >>> </backingStore> >>> <target dev='vdb' bus='virtio'/> >>> <alias name='virtio-disk1'/> >>> <address type='pci' domain='0x0000' bus='0x00' slot='0x0c' >>> function='0x0'/> >>> </disk> >>> >>> Save the dumped vdb's xml to /tmp/vdb.xml >>> # virsh detach-device snap /tmp/vdb.xml >>> Device detached successfully >>> # virsh attach-device snap /tmp/vdb.xml >>> Device attached successfully >>> # virsh dumpxml snap|awk '/<disk/,/<\/disk/' >>> <disk type='file' device='disk'> >>> <driver name='qemu' type='qcow2' cache='none'/> >>> <source file='/var/lib/libvirt/images/snap.s1'/> >>> <backingStore type='file' index='1'> >>> <format type='qcow2'/> >>> <source file='/var/lib/libvirt/images/snap.qcow2'/> >>> <backingStore/> >>> </backingStore> >>> <target dev='vda' bus='virtio'/> >>> <alias name='virtio-disk0'/> >>> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' >>> function='0x0'/> >>> </disk> >>> <disk type='file' device='disk'> >>> <driver name='qemu' type='qcow2'/> >>> <source file='/tmp/vdb.s1'/> >>> <backingStore type='file' index='1'> >>> <format type='raw'/> >>> <source file='/tmp/vdb'/> >>> <backingStore/> >>> </backingStore> >>> <target dev='vdb' bus='virtio'/> >>> <alias name='virtio-disk1'/> >>> <address type='pci' domain='0x0000' bus='0x00' slot='0x0c' >>> function='0x0'/> >>> </disk> >>> >>> So I managed to attach disks with snapshot. >>> I want to know what is your libvirt and qemu-kvm version? >>> And can you provide your files: /tmp/disk.xml[1], >>> /tmp/snap-from-disk.xml[2], /tmp/disk-with-snap.xml[4], >>> /tmp/disk-with-snap.xml . I need more details. >>> >>> Han Han >>> >>> ----- Original Message ----- >>> From: "Erlon Cruz" <sombrafam@xxxxxxxxx> >>> To: libvirt-users@xxxxxxxxxx >>> Sent: Friday, August 12, 2016 10:23:24 AM >>> Subject: Attaching disks with external snapshots >>> >>> Hi folks, >>> >>> I'm trying to to attach a disk to an instance using libvirt. The problem >>> is, this disk has external snapshots. The process tried was: >>> >>> 1 - Attach a disk in the domain: >>> virsh# attach-device instance-00000006 /tmp/disk.xml[1] --live >>> >>> 2 - Snapshot the disk[2]: >>> virsh# snapshot-create instance-00000006 --quiesce --xmlfile >>> /tmp/snap-from-disk.xml[2] --disk-only >>> >>> 3 - Dump the domain XML and create a new disk file from it: >>> virsh# dumpxml instance-00000006 >>> ... [3] >>> >>> 4 - Dettach the device and re-add it using the new disk file: >>> virsh# detach-device instance-00000006 /tmp/disk-with-snap.xml[4] >>> Device detached successfully >>> virsh# attach-device instance-00000006 /tmp/disk-with-snap.xml >>> error: Failed to attach device from /tmp/disk-with-snap.xml >>> error: internal error: unable to execute QEMU command 'device_add': >>> Property 'virtio-blk-device.drive' can't find value 'drive-virtio-disk1' >>> >>> Question, is this operation supported? If yes, how is the correct >>> procedure? >>> >>> Erlon >>> >>> >>> [1] http://paste.openstack.org/show/556055/ >>> [2] http://paste.openstack.org/show/556056/ >>> [3] http://paste.openstack.org/show/556063/ >>> [4] http://paste.openstack.org/show/556064/ >>> >>> _______________________________________________ >>> libvirt-users mailing list >>> libvirt-users@xxxxxxxxxx >>> https://www.redhat.com/mailman/listinfo/libvirt-users >>> >> >> > _______________________________________________ libvirt-users mailing list libvirt-users@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvirt-users