LVM快照
LVM快照用于获取逻辑卷的时间点快照。然后,可以使用这些快照将逻辑卷回滚到其时间点状态。快照是LVM的一项非常强大的功能。
如何创建LVM快照
创建快照,可以使用带有-s
参数的lvcreate
命令。 在继续进行之前,值得确认您的系统支持快照合并
功能。最简单的检查方法是执行dmsetuptargets
命令。然后,应从输出中查找一个状态为snapshot-merge
的条目。例如,在SLES 11 sp2服务器中执行的结果:
ls001a:/ # dmsetup targets mirror v1.12.1 snapshot-merge v1.1.0 snapshot-origin v1.7.1 snapshot v1.10.0 striped v1.4.0 linear v1.1.0 error v1.0.1
快照命令示例:
lvcreate -n lvcopy -s /dev/vg01/lv01 -L 100M
上面的命令将创建一个名为lvcopy
的新逻辑卷。该逻辑卷将是逻辑卷lv01
的副本。上例中的快照大小为100MB。尽管它比逻辑卷lv01
的大小小很多,但这是完全可以的,因为快照仅需约为原始逻辑卷大小的10%-20%。尽管快照较小,但在安装快照时,快照的大小将与原始逻辑卷相同。快照仅包含对原始逻辑卷所做的更改。换句话说,您的大部分数据仍保留在原始逻辑卷中,而快照中仅保留与之不同的数据。
快照示例
在进行任何更改或执行snap命令之前,最好查看一下物理卷,逻辑卷和卷组的当前状态。为此,我们可以执行pvs
,vgs
和lvs
命令:
ls001a:/ # pvs PV VG Fmt Attr PSize PFree /dev/sda2 system lvm2 a- 15.84g 1.68g /dev/sdb2 lint01vg lvm2 a- 40.00g 1020.00m /dev/sdb5 vg01 lvm2 a- 968.00m 168.00m ls001a:/ # vgs VG #PV #LV #SN Attr VSize VFree lint01vg 1 1 0 wz--n- 40.00g 1020.00m system 1 4 0 wz--n- 15.84g 1.68g vg01 1 1 0 wz--n- 968.00m 168.00m ls001a:/ # lvs LV VG Attr LSize Origin Snap% Move Log Copy% Convert lint01lv01 lint01vg -wi-ao 39.00g home system -wi-ao 5.00g root system -wi-ao 6.73g tst system -wi-ao 1000.00m swap system -wi-ao 1.46g lv01 vg01 -wi-ao 800.00m
我们将为其快照的逻辑卷称为lv01
,它与卷组vg01
相关联。
为了确定我们的设备/dev/vg01/lv01
的挂载点在哪里,我们可以执行mount命令来列出当前挂载的文件系统:
/dev/mapper/vg01-lv01 on /john type ext3 (rw)
从输出中,我们可以看到安装点/john
与/dev/mapper/vg01-lv01
一起使用。
对于我们的示例,我们将通过执行命令cd/john导航到目录/john
从该目录中,我们现在将复制一些文件以进行测试:
ls001a:/john # cp -R /home/john . ls001a:/john # ls -l total 20 drwxr-xr-x 5 root root 4096 Apr 15 09:44 john drwx------ 2 root root 16384 Apr 15 09:38 lost+found
对于我们的示例,我已将目录/ home/john复制到我们的当前目录/john
。我们的下一步是创建快照
创建快照
接下来,我们需要执行命令来创建快照:lvcreate -n lvcopy -s /dev/vg01/lv01 -L 100M
ls001a:/john # lvcreate -n lvcopy -s /dev/vg01/lv01 -L 100M Logical volume "lvcopy" created
要查看新的逻辑卷lvcopy
,我们可以执行命令lvs
:
ls001a:/john/john # lvs LV VG Attr LSize Origin Snap% Move Log Copy% Convert lint01lv01 lint01vg -wi-ao 39.00g home system -wi-ao 5.00g root system -wi-ao 6.73g tst system -wi-ao 1000.00m swap system -wi-ao 1.46g lv01 vg01 owi-ao 800.00m lvcopy vg01 swi-a- 100.00m lv01 0.01
从上面的输出中,我们可以看到快照lv01
以及标题Snap%
下正在使用的空间。
如果我们想查看快照的内容,则可以按常规方式安装它。在下面的示例中,我们创建了一个称为快照
的挂载点:
ls001a:/ # mkdir snapshot ls001a:/ # mount /dev/vg01/lvcopy /snapshot ls001a:/ # df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/system-root 6.7G 4.8G 1.6G 76% / devtmpfs 2.0G 180K 2.0G 1% /dev tmpfs 2.0G 188K 2.0G 1% /dev/shm /dev/sda1 152M 36M 109M 25% /boot /dev/mapper/system-home 4.0G 153M 3.6G 4% /home /dev/mapper/lint01vg-lint01lv01 39G 437M 37G 2% /MySQL /dev/mapper/system-tst 985M 18M 918M 2% /tst /dev/mapper/vg01-lv01 788M 17M 731M 3% /john /dev/mapper/vg01-lvcopy 788M 17M 731M 3% /snapshot
如果查看df -h
命令的输出,我们可以看到/john
和/snapshot
的大小相同。
现在,对原始逻辑卷区域/john
进行一些更改。
ls001a:/john/john # ls -l total 92 -rw------- 1 root root 1633 Apr 15 09:44 .bash_history -rw-r--r-- 1 root root 1187 Apr 15 09:44 .bashrc -rw-r--r-- 1 root root 1637 Apr 15 09:44 .emacs drwxr-xr-x 2 root root 4096 Apr 15 09:44 .fonts -rw-r--r-- 1 root root 18251 Apr 15 09:44 .gnu-emacs -rw-r--r-- 1 root root 861 Apr 15 09:44 .inputrc drwxr-xr-x 2 root root 4096 Apr 15 09:44 .mozilla -rw-r--r-- 1 root root 6043 Apr 15 09:44 .muttrc -rw-r--r-- 1 root root 1028 Apr 15 09:44 .profile -rw------- 1 root root 3173 Apr 15 09:44 .viminfo -rw-r--r-- 1 root root 849 Apr 15 09:44 .vimrc -rw-r--r-- 1 root root 1940 Apr 15 09:44 .xim.template -rwxr-xr-x 1 root root 1446 Apr 15 09:44 .xinitrc.template drwxr-xr-x 2 root root 4096 Apr 15 09:44 bin -rw-r--r-- 1 root root 28 Apr 15 09:44 list.txt -rwxr-xr-x 1 root root 132 Apr 15 09:44 test.sh -rw-r--r-- 1 root root 1660 Apr 15 09:44 test1.txt -rw-r--r-- 1 root root 1660 Apr 15 09:44 test2.txt ls001a:/john/john # rm -fr bin
卸载原始LV
从目录路径/john/john
中,使用命令rm -fr bin
删除了bin
目录。如果我们需要恢复该目录,则现在可以使用快照。
首先,我们需要使用命令umount /dev/vg01/lv01
卸载目标逻辑卷。
ls001a:/ # umount /dev/vg01/lv01
lvconvert-合并
现在,我们可以将原始逻辑卷恢复到时间点快照。为此,我们使用带有--merge
选项的命令lvconvert。 要执行的命令:lvconvert --merge /dev/vg01/lvcopy
ls001a:/ # lvconvert --merge /dev/vg01/lvcopy Merging of volume lvcopy started. lv01: Merged: 0.1% lv01: Merged: 0.0% Merge of snapshot into logical volume lv01 has finished. Logical volume "lvcopy" successfully removed
运行lvconvert
后,我们的快照将自动删除。现在,当我们运行快照时,逻辑卷lv01
应该回到其状态。我们现在可以使用命令mount /dev/vg01/lv01/john再次安装LV。
如果看到错误无法合并打开的原始卷
,则可能需要执行以下命令来停用和重新激活LV:
ls001a:/ # lvchange -an /dev/VolumeGroup/LogicalVolume ls001a:/ # lvchange -ay /dev/VolumeGroup/LogicalVolume