There are 2 ways to create snapshots for a filesystem:
A snapshot don't need the same space as intial filesystem. If it's full, then it die.
Here we only explain commands only for snapshot on a separarte LV. Both LV (source and snapshot) must be an the same volume group
List all snapshots on a filesystem:
[root@labotest:/root/]# snapshot -q /TEST /TEST has no snapshots.
Create a snapshot:
[root@labotest:/root/]# mklv -t jfs2 -y snap_testlv rootvg 1 ==> PPsize=32M snap_testlv [root@labotest:/root/]# snapshot -o snapfrom=/TEST /dev/snap_testlv Snapshot for file system /TEST created on /dev/snap_testlv [root@labotest:/root/]# snapshot -q /TEST Snapshots for /TEST Current Location 512-blocks Free Time * /dev/snap_testlv 65536 64768 Tue Oct 18 17:45:46 2011
Copy data into the filesystems, the snap free parameter reduce:
[root@labotest:/TEST/]# du -sm /tmp/* 16.87 /tmp/sysload [root@labotest:/TEST/]# cp -Rhp /tmp/sysload . [root@labotest:/TEST/]# ll 4 drwxr-xr-x 10 mysql system 4096 Jun 15 16:22 mysql 4 -rw-rw---- 1 mysql 209 106 Jun 15 16:46 mysql-bin.000001 4 -rw-rw---- 1 mysql 209 125 Jun 15 16:49 mysql-bin.000002 4 -rw-rw---- 1 mysql 209 329 Jun 15 16:53 mysql-bin.000003 4 -rw-rw---- 1 mysql 209 125 Jun 15 17:49 mysql-bin.000004 4 -rw-rw---- 1 mysql 209 125 Jun 15 18:03 mysql-bin.000005 4 -rw-rw---- 1 mysql 209 125 Jun 22 10:11 mysql-bin.000006 4 -rw-rw---- 1 mysql 209 114 Jun 15 18:04 mysql-bin.index 17252 -rw-r--r-- 1 root system 17664000 Oct 18 17:51 syslo.tar 17252 -rw-r--r-- 1 root system 17664000 Oct 18 17:51 syslo1.tar 51740 -rw-r--r-- 1 root system 52981760 Oct 18 17:52 syslo2.tar 4 drwxr-xr-x 4 root system 4096 Oct 6 15:32 sysload [root@labotest:/root/]# snapshot -q /TEST Snapshots for /TEST Current Location 512-blocks Free Time * /dev/snap_testlv 65536 64512 Tue Oct 18 17:45:46 2011
Mount the snapshot on a mount point /TEST1:
For example to do a consistent backup. It's mount in read-only.
[root@labotest:/root/]# mkdir /TEST1 [root@labotest:/root/]# mount -o snapshot /dev/snap_testlv /TEST1 [root@labotest:/root/]# ll /TEST1 4 drwxr-xr-x 10 mysql system 4096 Jun 15 16:22 mysql 4 -rw-rw---- 1 mysql 209 106 Jun 15 16:46 mysql-bin.000001 4 -rw-rw---- 1 mysql 209 125 Jun 15 16:49 mysql-bin.000002 4 -rw-rw---- 1 mysql 209 329 Jun 15 16:53 mysql-bin.000003 4 -rw-rw---- 1 mysql 209 125 Jun 15 17:49 mysql-bin.000004 4 -rw-rw---- 1 mysql 209 125 Jun 15 18:03 mysql-bin.000005 4 -rw-rw---- 1 mysql 209 125 Jun 22 10:11 mysql-bin.000006 4 -rw-rw---- 1 mysql 209 114 Jun 15 18:04 mysql-bin.index [root@labotest:/root/]# df -g Filesystem GB blocks Free %Used Iused %Iused Mounted on /dev/fslv04 9.00 2.16 76% 510 1% /TEST /dev/snap_testlv 0.03 0.03 4% - - /TEST1
Rollback the filesystem /TEST to his previous state when we take the snap:
[root@labotest:/root/]# umount /TEST1 [root@labotest:/root/]# rollback /TEST /dev/snap_testlv rollback: File system /TEST must be unmounted to perform command. [root@labotest:/root/]# umount /TEST [root@labotest:/root/]# rollback /TEST /dev/snap_testlv rmlv: Logical volume snap_testlv is removed. Rollback complete [root@labotest:/root/]# mount /TEST [root@labotest:/root/]# ll /TEST 4 drwxr-xr-x 10 mysql system 4096 Jun 15 16:22 mysql 4 -rw-rw---- 1 mysql 209 106 Jun 15 16:46 mysql-bin.000001 4 -rw-rw---- 1 mysql 209 125 Jun 15 16:49 mysql-bin.000002 4 -rw-rw---- 1 mysql 209 329 Jun 15 16:53 mysql-bin.000003 4 -rw-rw---- 1 mysql 209 125 Jun 15 17:49 mysql-bin.000004 4 -rw-rw---- 1 mysql 209 125 Jun 15 18:03 mysql-bin.000005 4 -rw-rw---- 1 mysql 209 125 Jun 22 10:11 mysql-bin.000006 4 -rw-rw---- 1 mysql 209 114 Jun 15 18:04 mysql-bin.index
Command to delete a snapshot:
[root@labotest:/root/]# snapshot -d /dev/snap_testlv rmlv: Logical volume snap_testlv is removed.