[linux-lvm] how to copy a snapshot, or restore snapshot without deleting it

Davis, Matthew Matthew.Davis.2 at team.telstra.com
Thu Jan 10 06:23:45 UTC 2019


Hi Marian,

I'm trying to do it with thin snapshots now. It's all very confusing, and I can't get it to work.
I've read a lot of the documentation about thin stuff, and it isn't clear what's happening.

I took a snapshot with

    sudo lvcreate -s --name mySnap1 centos/root

Then I copied that snapshot with

    sudo lvcreate -s --name mySnap2 centos/mySnap1

When I try to restore mySnap1 it says:

    $sudo lvconvert --merge centos/mySnap1
    centos/mySnap1 is not a mergeable logical volume

The same happens if I use `--mergethin`.
When I try to restore mySnap2 it just "merges" it into mySnap1. I'm trying to merge it into root. I've looked through the man pages and can't find any destination argument.

    $ sudo lvconvert --merge centos/fresh2
    Volume centos/fresh2 replaced origin centos/fresh.

When I merged mySnap2 into mySnap1 and then merged that into root, and rebooted, it didn't actually merge. The files are not as they were when I made mySnap1, and `lvs` shows mySnap1 still exists. And if I try to run the merge command again it says 

    $ sudo lvconvert --merge centos/mySnap1
    Command on LV centos/mySnap1 is invalid on LV with properties: lv_is_merging_origin .
    Command not permitted on LV centos/mySnap1.

What is `lv_is_merging_origin` ? It doesn't appear when I run `lvs`, `lvdisplay`, `pvdisplay`, `man lvmthin` or `man lvm`.
The snapshot should have taken about 20 bytes of differences, so I don't expect it would take very long to restore.
How can I check on the status of the merge? For thick volumes too, I couldn't find a way to check, other than just polling the command to create a new snapshot.

What is a "thin snapshot"? I thought the whole point of LVM snapshots was that they only store the changes in the data.
e.g. If I snapshot a 100GB volume and then add a 1GB file, my snapshot is only 1GB big, not 100GB. So aren't snapshots already thin?

Also, when I take any snapshot on my thinly provisioned system, I get some warning about thresholds and auto-extending.
What is "auto-extending"? I thought the whole point of thin volumes/pools is that the volume only takes up as much space as it needs. If more data is added, it takes up more space automatically. 
I think I've already allocated all my physical disks to this thin pool, so what could "auto-extend" mean?

Thanks,
Matt

-----Original Message-----
From: Marian Csontos [mailto:mcsontos at redhat.com] 
Sent: Friday, 4 January 2019 1:09 AM
To: LVM general discussion and development <linux-lvm at redhat.com>; Davis, Matthew <Matthew.Davis.2 at team.telstra.com>
Subject: Re: [linux-lvm] how to copy a snapshot, or restore snapshot without deleting it

On 1/3/19 5:46 AM, Davis, Matthew wrote:
> Hi,
> 
> I want to restore a snapshot without deleting the snapshot.

Hi, I think this should be possible using thin snapshots - snapshot the snapshot you want to restore, and merge the snapshot - may be not perfect, but it is at least possible. This is fast, as there is no need to write huge amounts of data, it is just a switching tree's root away (or very close to it.)

Perhaps more convenient alternative is to use boom boot manager (boom-boot package available on rhel8+ and fedora27+). Not sure it is available in ubuntu/debian.

NOTE:

*Thin pools*

When using thin pools make sure you have enough space and you do not run out of space in data and metadata devices, or you risk serious trouble.

1. you must enable monitoring and threshold for extending thin pool.
2. using recent lvm2 2.02.* releases is recommended.

*Boom*

Boom also requires a minor change in initramfs to pass `-K` option to lvchange to allow activation of volumes with skip activation flag.

-- Martian


> 
> My use case is that I'm experimenting with a lot of different drivers, kernel modules, and file modifications all over my machine.
> I want to
> 1. take a snapshot of the working system 2. make changes 3. restore 
> the snapshot (` sudo lvconvert --merge /dev/ubuntu-vg/$SNAPSHOT` then 
> reboot) 4. make new changes 5. restore to the snapshot again
> 
> The problem is that step 3 deletes the snapshot, so step 5 fails.
> 
> My current workaround is:
> 1. take a snapshot of the working system 2. make changes 3. restore 
> the snapshot (` sudo lvconvert --merge /dev/ubuntu-vg/$SNAPSHOT` then 
> reboot) 4. Wait 1.5 hours, without making any changes to the machine 
> 5. Take a new snapshot, with the same name as the original 6. make new 
> changes 7. restore to the snapshot
> 
> This is not great because:
> * I sometimes forget to do step 5
> * I can't take a snapshot of the volume while it is still merging. 
> This takes 1.5 hours. I want to be able to restore my snapshots 
> multiple times per day
> 
> 
> Is there a flag I can add to `lvconvert` to make it not delete the snapshot?
> Alternatively, is there a way I can make a copy of the snapshot before I restore it?
> 
> It looks like someone else asked this question 10 years ago.
> https://www.redhat.com/archives/linux-lvm/2008-November/msg00000.html
> Has this problem been solved since then?
> 
> Thanks,
> Matt Davis
> 
> Technical Specialist
> Telstra | Product Strategy & Innovation - Telstra Labs | Programmable 
> Infrastructure E  Matthew.Davis.2 at team.telstra.com
> 
> 
> 
> _______________________________________________
> linux-lvm mailing list
> linux-lvm at redhat.com
> https://www.redhat.com/mailman/listinfo/linux-lvm
> read the LVM HOW-TO at http://tldp.org/HOWTO/LVM-HOWTO/
> 





More information about the linux-lvm mailing list