Snapshots Savebut you should still make Backups
A raid 1 protects your data against disk failure. It does not protect them against accidental user changes such as deletion or overwriting. Such protection can however be provided by snapshots.
Snapshots are a feature that is implemented by the kernels device mapper. They can be managed with the logical volume manager LVM2. They provide a frozen image of a block device without the costs (in time and space) of copying the device. This is achieved using COW (Copy On Write). Every block on the device is saved to a separate block device before it is written. This is used to reconstruct the original state through an appropriate block mapping.
The setup that is described is as follows. There is a raid1 device
/dev/md1 that is fed into a LVM2 volume group
volg1 as a physical volume. This provides a logical volume
/dev/volg1/home that is mounted at
is dropped and recreated at boot time. The snapshot is later mounted at
/home.old. So everybody can easily restore the boot time state
of his files.
Snapshot recreation is done from an init script. The critical line that creates the snapshot is
lvcreate -l 19539 -c 512 -s -p r -n home.old /dev/volg1/home /dev/sdc1
Note that this uses
/dev/hdc1 as the COW device. This is
unfortunately an undocumented
lvcreate parameter. It is only
the linux-lvm mailing list.
Using a separate physical COW device reduces the
write performance penalty
of the snapshot. To do this
/dev/sdc1 has to be a physical volume in the
pvcreate /dev/sdc1 vgextend volg1 /dev/sdc1
The rather large chunk size (
-c 512) serves the same purpose.
The writes are however still slowed down by a factor of approximately 6.
Snapshots can be writeable,
-p r turns this off.
is the size of
/dev/sdc1 in physical extends:
enter:~# pvdisplay /dev/sdc1 | grep Total Total PE 19539
To make sure the additional
lvcreate parameter has not been silently
ignored we take a look at the device mapper table:
enter:~# dmsetup table volg1-home.old-cow: 0 160063488 linear 8:33 384 volg1-home: 0 1468006400 snapshot-origin 253:2 volg1-home-real: 0 1468006400 linear 9:1 384 volg1-home.old: 0 1468006400 snapshot 253:2 253:3 P 1024
volg1-home.old-cow lines major:minor of 8:33 is the one from
enter:~# ls -l /dev/sdc1 brw-rw---- 1 root disk 8, 33 22. Mär 17:44 /dev/sdc1