Unable to delete KVM snapshot



  • Fedora 27 + KVM has been runnign great.

    I made a snapshot of my plex server like this.

     sudo virsh snapshot-create-as --disk-only --domain plex --name "plex_snap" --description "Pre-Update"
    

    I ran the plex update, rebooted, and verified the update was good.

    So I tried to delete the snap.

     sudo virsh snapshot-delete --domain plex --snapshotname plex_snap
    error: Failed to delete snapshot plex_snap
    error: unsupported configuration: deletion of 1 external disk snapshots not supported yet
    

    So, how do I delete this snapshot?

    Related: How should I have created the snapshot?

    Here is the status.

     sudo virsh snapshot-list --domain plex
     Name                 Creation Time             State
    ------------------------------------------------------------
     plex_snap            2018-04-18 22:09:05 -0500 disk-snapshot
    
    


  • I have this issue on my Ubuntu KVM server as well. I have some instructions to fix it. Will look them up when I get a few.



  • Are you trying to delete the snapshot while the VM is still running?



  • Note, in the process below, <diskname> could be vda, sda, or hda.
    The first command tells you which to use.

    virsh domblklist plex
    virsh blockcommit plex <disk name> --verbose --pivot --active
    

    Once the blockcommit command finishes, shutdown plex, and rename the plex_snap disk image.

    Start Plex back up and make sure your updates and such are still installed. If all is well, then delete the plex_snap disk image.



  • The type of snapshot you created is an external snapshot. The type that you create when you use the Virt-Manager gui is an internal. The internal all exist in the .qcow2 image and are copy on write. The external are AOW/ROW so they have to be block committed to the original backing store before you can delet them since all new writes/reads have been directed to the new image.



  • @dafyre said in Unable to delete KVM snapshot:

    Note, in the process below, <diskname> could be vda, sda, or hda.
    The first command tells you which to use.

    virsh domblklist plex
    virsh blockcommit plex <disk name> --verbose --pivot --active
    

    Once the blockcommit command finishes, shutdown plex, and rename the plex_snap disk image.

    Start Plex back up and make sure your updates and such are still installed. If all is well, then delete the plex_snap disk image.

    You shouldn’t have to shutdown the image unless it’s just for the updates. The pivot option points the guest back to the original backing store.



  • Just as a side note, if the guest is running a database it's best to install the QEMU guest agent. Then pass --atomic when you do the snapshot. This will quiesce the file system and then unfreeze it when the snapshot is finished.



  • @stacksofplates said in Unable to delete KVM snapshot:

    Just as a side note, if the guest is running a database it's best to install the QEMU guest agent. Then pass --atomic when you do the snapshot. This will quiesce the file system and then unfreeze it when the snapshot is finished.

    Plex has some type of DB backing store, but not horribly worried about it for this one.



  • @jaredbusch

    Hi,

    What is the reasoning for doing external snapshots and going against the default (where everything is saved in one file), I use virt but I love virt-manager and with that it always does the snap internally.

    Any benefits of external aside being the ESXi way?

    Cause it seems here that what is causing the issue, and I recall somewhere I read the qcow2 expects everything to be in 1 file.

    I just read @stacksofplates basically what he says.



  • @emad-r said in Unable to delete KVM snapshot:

    @jaredbusch

    Hi,

    What is the reasoning for doing external snapshots and going against the default (where everything is saved in one file), I use virt but I love virt-manager and with that it always does the snap internally.

    Any benefits of external aside being the ESXi way?

    Cause it seems here that what is causing the issue, and I recall somewhere I read the qcow2 expects everything to be in 1 file.

    I just read @stacksofplates basically what he says.

    because you cannot copy the file off to backup when you use the internal snapshot



  • @stacksofplates said in Unable to delete KVM snapshot:

    The type of snapshot you created is an external snapshot. The type that you create when you use the Virt-Manager gui is an internal. The internal all exist in the .qcow2 image and are copy on write. The external are AOW/ROW so they have to be block committed to the original backing store before you can delet them since all new writes/reads have been directed to the new image.

    I did external on purpose.

    I tested this on a smaller VM weeks ago and did not have a problem. I guess because nothing changed? I just made the snapshot and then deleted.



  • @stacksofplates said in Unable to delete KVM snapshot:

    @dafyre said in Unable to delete KVM snapshot:

    Note, in the process below, <diskname> could be vda, sda, or hda.
    The first command tells you which to use.

    virsh domblklist plex
    virsh blockcommit plex <disk name> --verbose --pivot --active
    

    Once the blockcommit command finishes, shutdown plex, and rename the plex_snap disk image.

    Start Plex back up and make sure your updates and such are still installed. If all is well, then delete the plex_snap disk image.

    You shouldn’t have to shutdown the image unless it’s just for the updates. The pivot option points the guest back to the original backing store.

    But I still need to delete the backup file manually from disk?



  • @black3dynamite said in Unable to delete KVM snapshot:

    Are you trying to delete the snapshot while the VM is still running?

    Of course.



  • sudo virsh domblklist plex
    Target     Source
    ------------------------------------------------
    hda        -
    hdb        /kvm_store/disk_b/plex.plex_snap
    
    [[email protected] ~]$ sudo virsh blockcommit plex hdb --verbose --pivot --active
    Block commit: [ 26 %]
    


  • @jaredbusch said in Unable to delete KVM snapshot:

    @emad-r said in Unable to delete KVM snapshot:

    @jaredbusch

    Hi,

    What is the reasoning for doing external snapshots and going against the default (where everything is saved in one file), I use virt but I love virt-manager and with that it always does the snap internally.

    Any benefits of external aside being the ESXi way?

    Cause it seems here that what is causing the issue, and I recall somewhere I read the qcow2 expects everything to be in 1 file.

    I just read @stacksofplates basically what he says.

    because you cannot copy the file off to backup when you use the internal snapshot

    Interesting I dont take VM backup frequently, when I do I rsync the whole VM file.

    rsync --progress --inplace -h -W /var/lib/libvirt/images/VM/centos7.0-clone.qcow2 [email protected]:/var/lib/libvirt/images/VM/centos7.0-clone.qcow2

    This after the initial copy, if you are extra paranoid you can take the file everytime if you dont trust rsync algorithms.

    But it is interesting this external snapshot approach, how much are the sizes of external snapshots roughly ? I know it depends but what are we dealing with here. 100 MB ?



  • @jaredbusch said in Unable to delete KVM snapshot:

    @stacksofplates said in Unable to delete KVM snapshot:

    @dafyre said in Unable to delete KVM snapshot:

    Note, in the process below, <diskname> could be vda, sda, or hda.
    The first command tells you which to use.

    virsh domblklist plex
    virsh blockcommit plex <disk name> --verbose --pivot --active
    

    Once the blockcommit command finishes, shutdown plex, and rename the plex_snap disk image.

    Start Plex back up and make sure your updates and such are still installed. If all is well, then delete the plex_snap disk image.

    You shouldn’t have to shutdown the image unless it’s just for the updates. The pivot option points the guest back to the original backing store.

    But I still need to delete the backup file manually from disk?

    Yes



  • @jaredbusch said in Unable to delete KVM snapshot:

    @emad-r said in Unable to delete KVM snapshot:

    @jaredbusch

    Hi,

    What is the reasoning for doing external snapshots and going against the default (where everything is saved in one file), I use virt but I love virt-manager and with that it always does the snap internally.

    Any benefits of external aside being the ESXi way?

    Cause it seems here that what is causing the issue, and I recall somewhere I read the qcow2 expects everything to be in 1 file.

    I just read @stacksofplates basically what he says.

    because you cannot copy the file off to backup when you use the internal snapshot

    Allocate on Write snapshots are also much faster. It’s the way @scale does their snapshots. You can have thousands before you get a performance hit vs only a few with COW.



  • @emad-r said in Unable to delete KVM snapshot:

    @jaredbusch said in Unable to delete KVM snapshot:

    @emad-r said in Unable to delete KVM snapshot:

    @jaredbusch

    Hi,

    What is the reasoning for doing external snapshots and going against the default (where everything is saved in one file), I use virt but I love virt-manager and with that it always does the snap internally.

    Any benefits of external aside being the ESXi way?

    Cause it seems here that what is causing the issue, and I recall somewhere I read the qcow2 expects everything to be in 1 file.

    I just read @stacksofplates basically what he says.

    because you cannot copy the file off to backup when you use the internal snapshot

    Interesting I dont take VM backup frequently, when I do I rsync the whole VM file.

    rsync --progress --inplace -h -W /var/lib/libvirt/images/VM/centos7.0-clone.qcow2 [email protected]:/var/lib/libvirt/images/VM/centos7.0-clone.qcow2

    This after the initial copy, if you are extra paranoid you can take the file everytime if you dont trust rsync algorithms.

    But it is interesting this external snapshot approach, how much are the sizes of external snapshots roughly ? I know it depends but what are we dealing with here. 100 MB ?

    You have to shut the VM off to just rsync the drive. This way you can leave the VM on.

    You don’t copy the external snapshot. You take a snapshot and copy the backing store. Then blockcommit (merge) the snapshot back into the original image.



  • @stacksofplates said in Unable to delete KVM snapshot:

    @emad-r said in Unable to delete KVM snapshot:

    @jaredbusch said in Unable to delete KVM snapshot:

    @emad-r said in Unable to delete KVM snapshot:

    @jaredbusch

    Hi,

    What is the reasoning for doing external snapshots and going against the default (where everything is saved in one file), I use virt but I love virt-manager and with that it always does the snap internally.

    Any benefits of external aside being the ESXi way?

    Cause it seems here that what is causing the issue, and I recall somewhere I read the qcow2 expects everything to be in 1 file.

    I just read @stacksofplates basically what he says.

    because you cannot copy the file off to backup when you use the internal snapshot

    Interesting I dont take VM backup frequently, when I do I rsync the whole VM file.

    rsync --progress --inplace -h -W /var/lib/libvirt/images/VM/centos7.0-clone.qcow2 [email protected]:/var/lib/libvirt/images/VM/centos7.0-clone.qcow2

    This after the initial copy, if you are extra paranoid you can take the file everytime if you dont trust rsync algorithms.

    But it is interesting this external snapshot approach, how much are the sizes of external snapshots roughly ? I know it depends but what are we dealing with here. 100 MB ?

    You have to shut the VM off to just rsync the drive. This way you can leave the VM on.

    You don’t copy the external snapshot. You take a snapshot and copy the backing store. Then blockcommit (merge) the snapshot back into the original image.

    No need if you freeze the filesystem first then rsync. but for this I recommend taking each time the whole file with rsync



  • @stacksofplates said in Unable to delete KVM snapshot:

    @dafyre said in Unable to delete KVM snapshot:

    Note, in the process below, <diskname> could be vda, sda, or hda.
    The first command tells you which to use.

    virsh domblklist plex
    virsh blockcommit plex <disk name> --verbose --pivot --active
    

    Once the blockcommit command finishes, shutdown plex, and rename the plex_snap disk image.

    Start Plex back up and make sure your updates and such are still installed. If all is well, then delete the plex_snap disk image.

    You shouldn’t have to shutdown the image unless it’s just for the updates. The pivot option points the guest back to the original backing store.

    I do this because I've deleted the snapshot file after running blockcommit and had issues, so now I do that as a just in case measure. If it was something in production, I'd just leave the old snapshot file until the next maintenance window.



  • @emad-r said in Unable to delete KVM snapshot:

    @stacksofplates said in Unable to delete KVM snapshot:

    @emad-r said in Unable to delete KVM snapshot:

    @jaredbusch said in Unable to delete KVM snapshot:

    @emad-r said in Unable to delete KVM snapshot:

    @jaredbusch

    Hi,

    What is the reasoning for doing external snapshots and going against the default (where everything is saved in one file), I use virt but I love virt-manager and with that it always does the snap internally.

    Any benefits of external aside being the ESXi way?

    Cause it seems here that what is causing the issue, and I recall somewhere I read the qcow2 expects everything to be in 1 file.

    I just read @stacksofplates basically what he says.

    because you cannot copy the file off to backup when you use the internal snapshot

    Interesting I dont take VM backup frequently, when I do I rsync the whole VM file.

    rsync --progress --inplace -h -W /var/lib/libvirt/images/VM/centos7.0-clone.qcow2 [email protected]:/var/lib/libvirt/images/VM/centos7.0-clone.qcow2

    This after the initial copy, if you are extra paranoid you can take the file everytime if you dont trust rsync algorithms.

    But it is interesting this external snapshot approach, how much are the sizes of external snapshots roughly ? I know it depends but what are we dealing with here. 100 MB ?

    You have to shut the VM off to just rsync the drive. This way you can leave the VM on.

    You don’t copy the external snapshot. You take a snapshot and copy the backing store. Then blockcommit (merge) the snapshot back into the original image.

    No need if you freeze the filesystem first then rsync. but for this I recommend taking each time the whole file with rsync

    Uh there’s no difference. If you freeze the system it can’t be used. This is to run on live systems so they remain running the whole time.



  • @stacksofplates said in Unable to delete KVM snapshot:

    @emad-r said in Unable to delete KVM snapshot:

    @stacksofplates said in Unable to delete KVM snapshot:

    @emad-r said in Unable to delete KVM snapshot:

    @jaredbusch said in Unable to delete KVM snapshot:

    @emad-r said in Unable to delete KVM snapshot:

    @jaredbusch

    Hi,

    What is the reasoning for doing external snapshots and going against the default (where everything is saved in one file), I use virt but I love virt-manager and with that it always does the snap internally.

    Any benefits of external aside being the ESXi way?

    Cause it seems here that what is causing the issue, and I recall somewhere I read the qcow2 expects everything to be in 1 file.

    I just read @stacksofplates basically what he says.

    because you cannot copy the file off to backup when you use the internal snapshot

    Interesting I dont take VM backup frequently, when I do I rsync the whole VM file.

    rsync --progress --inplace -h -W /var/lib/libvirt/images/VM/centos7.0-clone.qcow2 [email protected]:/var/lib/libvirt/images/VM/centos7.0-clone.qcow2

    This after the initial copy, if you are extra paranoid you can take the file everytime if you dont trust rsync algorithms.

    But it is interesting this external snapshot approach, how much are the sizes of external snapshots roughly ? I know it depends but what are we dealing with here. 100 MB ?

    You have to shut the VM off to just rsync the drive. This way you can leave the VM on.

    You don’t copy the external snapshot. You take a snapshot and copy the backing store. Then blockcommit (merge) the snapshot back into the original image.

    No need if you freeze the filesystem first then rsync. but for this I recommend taking each time the whole file with rsync

    Uh there’s no difference. If you freeze the system it can’t be used. This is to run on live systems so they remain running the whole time.

    I guess I need to look into your backup script thing one of these days.

    The systems I want to backup are not stateful, like yours, but it will give me a starting point.



  • @jaredbusch said in Unable to delete KVM snapshot:

    @stacksofplates said in Unable to delete KVM snapshot:

    @emad-r said in Unable to delete KVM snapshot:

    @stacksofplates said in Unable to delete KVM snapshot:

    @emad-r said in Unable to delete KVM snapshot:

    @jaredbusch said in Unable to delete KVM snapshot:

    @emad-r said in Unable to delete KVM snapshot:

    @jaredbusch

    Hi,

    What is the reasoning for doing external snapshots and going against the default (where everything is saved in one file), I use virt but I love virt-manager and with that it always does the snap internally.

    Any benefits of external aside being the ESXi way?

    Cause it seems here that what is causing the issue, and I recall somewhere I read the qcow2 expects everything to be in 1 file.

    I just read @stacksofplates basically what he says.

    because you cannot copy the file off to backup when you use the internal snapshot

    Interesting I dont take VM backup frequently, when I do I rsync the whole VM file.

    rsync --progress --inplace -h -W /var/lib/libvirt/images/VM/centos7.0-clone.qcow2 [email protected]192.168.1.22:/var/lib/libvirt/images/VM/centos7.0-clone.qcow2

    This after the initial copy, if you are extra paranoid you can take the file everytime if you dont trust rsync algorithms.

    But it is interesting this external snapshot approach, how much are the sizes of external snapshots roughly ? I know it depends but what are we dealing with here. 100 MB ?

    You have to shut the VM off to just rsync the drive. This way you can leave the VM on.

    You don’t copy the external snapshot. You take a snapshot and copy the backing store. Then blockcommit (merge) the snapshot back into the original image.

    No need if you freeze the filesystem first then rsync. but for this I recommend taking each time the whole file with rsync

    Uh there’s no difference. If you freeze the system it can’t be used. This is to run on live systems so they remain running the whole time.

    I guess I need to look into your backup script thing one of these days.

    The systems I want to backup are not stateful, like yours, but it will give me a starting point.

    It's pretty much what you did here with some other crap, like an interactive part. I should probably add more logic to it, it was just a quick thing I put together. I also mostly just backed up the data volumes. The OS 99% of the time is a separate disk from the data so I just back up the data.



  • @stacksofplates said in Unable to delete KVM snapshot:

    @jaredbusch said in Unable to delete KVM snapshot:

    @stacksofplates said in Unable to delete KVM snapshot:

    @emad-r said in Unable to delete KVM snapshot:

    @stacksofplates said in Unable to delete KVM snapshot:

    @emad-r said in Unable to delete KVM snapshot:

    @jaredbusch said in Unable to delete KVM snapshot:

    @emad-r said in Unable to delete KVM snapshot:

    @jaredbusch

    Hi,

    What is the reasoning for doing external snapshots and going against the default (where everything is saved in one file), I use virt but I love virt-manager and with that it always does the snap internally.

    Any benefits of external aside being the ESXi way?

    Cause it seems here that what is causing the issue, and I recall somewhere I read the qcow2 expects everything to be in 1 file.

    I just read @stacksofplates basically what he says.

    because you cannot copy the file off to backup when you use the internal snapshot

    Interesting I dont take VM backup frequently, when I do I rsync the whole VM file.

    rsync --progress --inplace -h -W /var/lib/libvirt/images/VM/centos7.0-clone.qcow2 [email protected]:/var/lib/libvirt/images/VM/centos7.0-clone.qcow2

    This after the initial copy, if you are extra paranoid you can take the file everytime if you dont trust rsync algorithms.

    But it is interesting this external snapshot approach, how much are the sizes of external snapshots roughly ? I know it depends but what are we dealing with here. 100 MB ?

    You have to shut the VM off to just rsync the drive. This way you can leave the VM on.

    You don’t copy the external snapshot. You take a snapshot and copy the backing store. Then blockcommit (merge) the snapshot back into the original image.

    No need if you freeze the filesystem first then rsync. but for this I recommend taking each time the whole file with rsync

    Uh there’s no difference. If you freeze the system it can’t be used. This is to run on live systems so they remain running the whole time.

    I guess I need to look into your backup script thing one of these days.

    The systems I want to backup are not stateful, like yours, but it will give me a starting point.

    It's pretty much what you did here with some other crap, like an interactive part. I should probably add more logic to it, it was just a quick thing I put together. I also mostly just backed up the data volumes. The OS 99% of the time is a separate disk from the data so I just back up the data.

    Well, I also need a NAS to store things on until I can upload them too so I should work on that...



  • @stacksofplates said in Unable to delete KVM snapshot:

    Uh there’s no difference. If you freeze the system it can’t be used. This is to run on live systems so they remain running the whole time.

    What no coffee break for servers !!!



  • @emad-r said in Unable to delete KVM snapshot:

    @stacksofplates said in Unable to delete KVM snapshot:

    Uh there’s no difference. If you freeze the system it can’t be used. This is to run on live systems so they remain running the whole time.

    What no coffee break for servers !!!

    They definitely get a break if you pour coffee on them.