Skip to contentSkip to conversation

snapshot has post-snapshot files

linux-lvm Ross Boylan 1 participant 2 messages Dec 5, 2007

lore
Share & tools
lore
#0 lore raw

Yesterday (04 Dec) at 23:17 I started a backup job which creates snapshots as its first step. The backup is still running.

The snapshot appears to have files that changed after it was created, e.g.,

corn:/var/spool/cyrus/mail/r/user/ross#  ls -l debian/user/cyrus.squat
-rw------- 1 cyrus mail 1137271795 2007-08-05 03:30
debian/user/cyrus.squat
# ls -l /snap/var/spool/cyrus/mail/r/user/ross/debian/user/cyrus.squat
-rw------- 1 cyrus mail 1137271795 2007-08-05
03:30 /snap/var/spool/cyrus/mail/r/user/ross/debian/user/cyrus.squat
while mount shows
/dev/mapper/daisy-snapspool on /snap/var/spool/cyrus type ext3 (rw)
/dev/mapper/daisy-snaplib on /snap/var/lib/cyrus type ext3 (rw)

There are 2 mysteries: why is the newer file on the snapshot, and why is the snapshot working at all? That file alone is about the size I allocated for the snapshot, and there are other large files like it. However,
------------------------------------------------------------------
# date; lvdisplay daisy/snapspool
Wed Dec 5 14:01:35 PST 2007
--- Logical volume ---

  LV Name                /dev/daisy/snapspool
  VG Name                daisy
  LV UUID                k0AK2H-dCCX-xu30-aVSk-At3g-21n6-eDZgdn
  LV Write Access        read/write
  LV snapshot status     active destination for /dev/daisy/cyrspool
  LV Status              available
  # open                 1
  LV Size                19.62 GB
  Current LE             628
  COW-table size         1.00 GB
  COW-table LE           32
  Allocated to snapshot  42.25%
  Snapshot chunk size    8.00 KB
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           254:23
# vgdisplay daisy
  --- Volume group ---
  VG Name               daisy
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  17
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                11
  Open LV               8
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               164.84 GB
  PE Size               32.00 MB
  Total PE              5275
  Alloc PE / Size       3891 / 121.59 GB
  Free  PE / Size       1384 / 43.25 GB
  VG UUID               z2Dbsr-Ywb0-J56t-BMDT-cfxH-7cum-Fodpe9
-------------------------------------------------------------------

I running Debian GNU/Linux with a Debian stock 2.6.18-5-686 kernel (2.6.22-3 is now current, so I suppose there could be some version mismatch issues). The volumes were created under EVMS and recently converted to vanilla LVM. There are some other LVM1 VG's on the system.

I forgot when I created the snapshot that the *squat files would be regenerated overnight; they are index files. Relatively little of the material in them changes from day to day. My assumption is that the snapshot needs a copy of the whole file if anything changes; is that correct? If it's smarter than that, it might explain why I have not blown through the space I allocated, though not why the snapshot isn't frozen.

The script, ran as root, at the start of the backup, is

BTW, is sync necessary before snapshot, or is it automatic?
--------------------------------------------------------------
#! /bin/sh
echo "$0 invoked with argument $1"

/usr/sbin/invoke-rc.d cyrus2.2 stop

# ctl_mboxlist must run as cyrus
# but su says it needs a terminal
# sudo does not gives a password prompt if run as root
sudo -u cyrus /usr/sbin/ctl_mboxlist -d > /var/lib/cyrus/mailboxlist.txt

chown cyrus /var/lib/cyrus/mailboxlist.txt
sync # may be redundant with snapshot

# create snapshots
lvcreate -L1G -s -n snapspool /dev/daisy/cyrspool
lvcreate -L100M -s -n snaplib /dev/daisy/cyrlib
# resume operation
/usr/sbin/invoke-rc.d cyrus2.2 start
# mount snapshots
mkdir -p /snap/var/spool/cyrus
mkdir -p /snap/var/lib/cyrus
mount /dev/daisy/snapspool /snap/var/spool/cyrus
mount /dev/daisy/snaplib /snap/var/lib/cyrus

# I should be more careful about passing failure codes back
-----------------------------------------------------------------------------

#1 lore raw

It might also be relevant that the origin of the snapshot is mounted noatime for an ext3 filesystem:
/dev/mapper/daisy-cyrlib on /var/lib/cyrus type ext3 (rw) /dev/mapper/daisy-cyrspool on /var/spool/cyrus type ext3 (rw,noatime)

I'm guessing I should have mounted the snapshots ro, but I haven't been writing to them.

Ross