[pve-devel] [PATCH 5/5] DRBD: Implement snapshots.

Dietmar Maurer dietmar at proxmox.com
Thu Nov 12 11:49:12 CET 2015

Hi Philipp,

I just started to implement a PVE storage driver for lvmthin:


So far I just use:

sub volume_snapshot_rollback {
    my ($class, $scfg, $storeid, $volname, $snap) = @_;

    my $vg = $scfg->{vgname};
    my $snapvol = "snap_${volname}_$snap";

    my $cmd = ['/sbin/lvremove', '-f', "$vg/$volname"];
    run_command($cmd, errmsg => "lvremove '$vg/$volname' error");

    $cmd = ['/sbin/lvcreate', '-kn', '-n', $volname, '-s', "$vg/$snapvol"];
    run_command($cmd, errmsg => "lvm rollback '$vg/$snapvol' error");

While that works, it is not atomic.

Maybe you already found a better way to implement rollback within drbdmanage?

> > >  * There's no implementation for volume_snapshot_rollback() yet.
> > >    Is there a way to change the volume name on rollback?
> > >    The problem is that DRBDmanage (as of now) won't allow to _replace_
> > >    the current contents with the ones from the snapshot --
> > >    but perhaps we want to implement that at some time.
> > 
> > You just need to make sure your plugin return the correct path.
> Well, the logic currently is that "activating" a snapshot creates another 
> COW volume (another thin LVM snapshot), and puts that one in a new 
> resource.
> As the data in DRBDmanage is addressed by *resource name*, that means I'd 
> need to tell the ProxMox layer above that code that the *volume* name has 
> changed - which is not possible, I guess.
> So, I can see a few alternatives:
> a) We change DRBDmanage to allow restoring into the "same" resource again

More information about the pve-devel mailing list