[linux-lvm] Snapshot question... [scaling problem]
Ross Boylan
ross at biostat.ucsf.edu
Thu Apr 24 03:57:25 UTC 2008
On Tue, 2008-04-22 at 12:12 -0400, Brian J. Murrell wrote:
> On Tue, 2008-04-22 at 11:47 +0100, Stephane Chazelas 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 the [1] after snaphots means something, I don't know what.
I've seen references to this scaling problem before, and have never
quite gotten it. The quoted paragraph above sounds as if it means
whenever there is a write to any volume, the COW tables for all
snapshots get the contents that are about to be overwritten.
I have multiple snapshots active, and it doesn't seem to work this way.
Some volumes have big snapshot volumes, into which substantial material
is written. Others have small snapshot volumes, into which very little
is written. In particular, the little ones don't seem to be getting the
writes to the big ones. I judge how much of the COW is in use from the
output of lvdisplay (attached at bottom)
If all COW volumes get the overwritten material, then they'd all have
the same size in use. And they don't seem to.
As I said, I'm missing something. Could someone enlighten me?
Ross Boylan
lvdisplay for big volume shows
LV Name /dev/daisy/_var_spool_cyrus
VG Name daisy
LV UUID vUs6Bj-2DRx-4OVt-7FBr-K2dW-3gTV-AHpNRZ
LV Write Access read/write
LV snapshot status active destination for /dev/daisy/cyrspool
LV Status available
# open 0
LV Size 23.62 GB
Current LE 756
COW-table size 12.00 GB
COW-table LE 384
Allocated to snapshot 29.78%
Snapshot chunk size 4.00 KB
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:41
and for the little one it shows
LV Name /dev/daisy/_var_lib_cyrus
VG Name daisy
LV UUID qkcv3k-XBYW-2gcx-pjbM-oF0g-Mlfk-P28QcH
LV Write Access read/write
LV snapshot status active destination for /dev/daisy/cyrlib
LV Status available
# open 0
LV Size 96.00 MB
Current LE 3
COW-table size 128.00 MB
COW-table LE 4
Allocated to snapshot 33.32%
Snapshot chunk size 4.00 KB
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:38
I think this means the first one used 3.6G=12G*.30 while the second used
42.7MB = 128MB*.33. The amount written to the first one exceeds the
total size available (128MB) for the 2nd snapshot. I'm running Linux
kernel 2.6.18 as packaged for Debian.
More information about the linux-lvm
mailing list