-- setup pvcreate /dev/xvdc1 pvcreate /dev/xvdd1 pvs PV VG Fmt Attr PSize PFree /dev/xvdc1 lvm2 --- <100.00g <100.00g /dev/xvdd1 lvm2 --- <100.00g <100.00g vgcreate vg_data /dev/xvdc1 /dev/xvdd1 vgs VG #PV #LV #SN Attr VSize VFree vg_data 2 0 0 wz--n- 199.99g 199.99g lvcreate -n lv_data -L 99G vg_data mkfs.xfs /dev/vg_data/lv_data mkdir /mnt/{original,snap} mount /dev/vg_data/lv_data /mnt/original echo "/dev/vg_data/lv_data /mnt/original xfs defaults 0 0" >> /etc/fstab -- snapshot creation lvcreate -L 99G -s /dev/vg_data/lv_data -n lv_snapshot -- mount the snapshot LV (on XFS you should use -o nouuid option) mount -o nouuid /dev/vg_data/lv_snapshot /mnt/snap/ -- emptying file on snapshot FS > /mnt/snap/file_90G.raw df -h /mnt/snap Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_data-lv_snapshot 99G 33M 99G 1% /mnt/snap -- changes on snaphot FS does not affects data Data% usage on the snaphot LV lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv_data vg_data owi-aos--- 99.00g lv_snapshot vg_data swi-aos--- 99.00g lv_data 0.00 -- change 10Gb of data on source LV dd if=/dev/zero of=/mnt/original/file_90G.raw bs=1G count=10 lvdisplay /dev/vg_data/lv_snapshot | grep "Allocated to snapshot" Allocated to snapshot 10.14% -- revert to a snapshot umount /mnt/{original,snap} lvconvert --merge /dev/vg_data/lv_snapshot -- if the COW space is exhausted, LV snapshot status become INACTIVE -- we cannot revert from an INACTIVE snapshot lvdisplay /dev/vg_data/lv_snapshot | grep "LV snapshot status" LV snapshot status INACTIVE destination for lv_data lvconvert --merge /dev/vg_data/lv_snapshot Unable to merge invalidated snapshot LV "lv_snapshot". -- remove a snapshot lvremove /dev/vg_data/lv_snapshot