There is also a subtle point here. If one of the older snapshots already "saw" a change to that block, which came on before a newer snapshot was started, then you will write to the new COW and not to the old. But as Dan says, that can still leave a lot of sloshing around... especially with data of the "hit each one rarely" type.
There's an almost trivial variant on this, where you keep the (read-only) snapshots in a time-ordered sequence, and freeze the last snapshot COW at the same moment as you start the next snapshot. Then writing only ever hits the new snapshot COW, and reading from any older snapshot (virtual) volume involves figuring out which is the first after that to hold the block, but still involves reading only one block. I wonder why LVM does not do this. Perhaps Zumastor does? Or somebody else?
Larry Dickson
On 4/23/08, Dan Kegel <dank@kegel.com> wrote:
On Wed, Apr 23, 2008 at 8:57 PM, Ross Boylan <ross@biostat.ucsf.edu> wrote:
> > > but
> > > when you write to it, the system makes sure that unless it has
> > > been done already, the block you're modifying are being copied
> > > first from the "real" volume to COW volume before being modified
> > > in the "real" volume.
> >
> > And to be clear, the COW volumes of _all_ snapshots[1]. This is where
> > the snapshot scaling problem arises.
> Could someone say a bit more, because I definitely don't follow this.
If you have a single original volume, and you keep ten snapshots
of it, and then you write a block to the original volume, you
may end up needing to write eleven blocks. Ouch!
Thus the write overhead of LVM snapshots scales poorly with the
number of snapshots per volume.
Note that LVM snapshots scale well with the number of volumes,
but that's not interesting or surprising, as each volume is independent.
- Dan
_______________________________________________
linux-lvm mailing list
linux-lvm@redhat.com
https://www.redhat.com/mailman/listinfo/linux-lvm
read the LVM HOW-TO at http://tldp.org/HOWTO/LVM-HOWTO/
_______________________________________________ linux-lvm mailing list linux-lvm@redhat.com https://www.redhat.com/mailman/listinfo/linux-lvm read the LVM HOW-TO at http://tldp.org/HOWTO/LVM-HOWTO/