Linux – fsck on LVM snapshots

linuxlvm

I'm trying to do some file system checks using LVM snapshots of our Logical Volumes to see if any of them have dirty file systems.

The problem that I have is that our LVM only has one Volume Group with no available space. I was able to do fsck's on some of the logical volumes using a loopback file system. However my question is, is it possible to create a 200GB loopback file system, and saved it on the same partition/logical volume that I'll be taking a snapshot of? Is LVM smart enough to not take a snapshot copy of the actual snapshot?

[root@server z]# vgdisplay
--- Volume group ---
VG Name               Web2-Vol
System ID
Format                lvm2
Metadata Areas        1
Metadata Sequence No  29
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                6
Open LV               6
Max PV                0
Cur PV                1
Act PV                1
VG Size               544.73 GB
PE Size               4.00 MB
Total PE              139450
Alloc PE / Size       139450 / 544.73 GB
Free  PE / Size       0 / 0
VG UUID               BrVwNz-h1IO-ZETA-MeIf-1yq7-fHpn-fwMTcV


[root@server z]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2             9.7G  3.6G  5.6G  40% /
/dev/sda1             251M   29M  210M  12% /boot
/dev/mapper/Web2--Vol-var
                       12G  1.1G   11G  10% /var
/dev/mapper/Web2--Vol-var--spool
                   12G  184M   12G   2% /var/spool
/dev/mapper/Web2--Vol-var--lib--mysql
                   30G   15G   14G  52% /var/lib/mysql
/dev/mapper/Web2--Vol-usr
                   13G  3.3G  8.9G  27% /usr
/dev/mapper/Web2--Vol-z
                  468G  197G  267G  43% /z
/dev/mapper/Web2--Vol-tmp
                  3.0G   76M  2.8G   3% /tmp
tmpfs                 7.9G   92K  7.9G   1% /dev/shm

The logical volume in question is /dev/mapper/Web2–Vol-z. I'm afraid if I created the loopback file system in /dev/mapper/Web2–Vol-z and take a snapshot of it, the disk size will be trippled in size, thus running out of disk space available.

Best Answer

However my question is, is it possible to create a 200GB loopback file system, and saved it on the same partition/logical volume that I'll be taking a snapshot of?

No if based on file on the same LV you are taking snapshot. The underlying block device will be constantly changing and will result in infinite loop terminated by loop device exhaustion.

You could, depending on amount of changes to the filesystems (and amount of available RAM and/or disk-space), either create a loop device on /dev/sda2 or on another LV or use ramdisk. However, the preferred way is to make some free space in the VG.

Also, make sure the snapshot is allocated on the temporary PV (pass the PV path to lvcreate) and no other data are saved there, or they will be lost. I am not sure the pvcreate and subsequent snapshot operation could be made a single atomic operation. Ask on #lvm IRC channel on freenode.

Is LVM smart enough to not take a snapshot copy of the actual snapshot?

I would not say it is not smart enough, it is just not suitable for the usecase. It does know nothing about files or filesystems, works on block devices and snapshot just mirrors any modified block including loop file's.