Arvin Schnell, 25 July 2012
SUSE’s Hackweek 8 allowed me to implement support for LVM thin-provisioned snapshots in snapper. Since thin-provisioned snapshots themself are new I will shortly show their usage.
Unfortunately openSUSE 12.2 RC1 does not include LVM tools with thin-provisioning so you have to compile them on your own. First install the thin-provisioning-tools. Then install LVM with thin-provisioning enabled (configure option –with-thin=internal).
To setup LVM we first have to create a volume group either using the LVM tools or YaST. I assume it’s named test. Then we create a storage pool with 3 GB space.
# modprobe dm-thin-pool
# lvcreate --thin test/pool --size 3G
Now we can create a thin-provisioned logical volume named thin with a size of 5 GB. The size can be larger than the pool since data is only allocated from the pool when needed.
# lvcreate --thin test/pool --virtualsize 5G --name thin
# mkfs.ext4 /dev/test/thin
# mkdir /thin
# mount /dev/test/thin /thin
Finally we can create a snapshot from the logical volume.
# lvcreate --snapshot --name thin-snap1 /dev/test/thin
# mkdir /thin-snapshot
# mount /dev/test/thin-snap1 /thin-snapshot
Space for the snapshot is also allocated from the pool when needed. The command lvs gives an overview of the allocated space.
# lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
pool test twi-a-tz 3.00g 4.24
thin test Vwi-aotz 5.00g pool 2.54
thin-snap1 test Vwi-a-tz 5.00g pool thin 2.54
After installing snapper version 0.0.12 or later we can create a config for the logical volume thin.
# snapper -c thin create-config --fstype="lvm(ext4)" /thin
As a simple test we can create a new file and see that snapper detects its creation.
# snapper -c thin create --command "touch /thin/lenny"
# snapper -c thin list
Type | # | Pre # | Date | Cleanup | Description | Userdata
-------+---+-------+-------------------------------+---------+-------------+---------
single | 0 | | | | current |
pre | 1 | | Tue 24 Jul 2012 15:49:51 CEST | | |
post | 2 | 1 | Tue 24 Jul 2012 15:49:51 CEST | | |
# snapper -c thin status 1..2
+... /thin/lenny
So now you can use snapper even if you don’t trust btrfs. Feedback is welcomed.
Originally posted on lizards.opensuse.org.