一、介绍
LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。LVM可以对分区在线扩容,快照,镜像和条带化,功能非常强大。这篇文章的主题就是其中一个功能——快照。
快照(Snapshot)就是关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。
其实快照就相当于一张照片,照的某个时刻都应的lv的数据。如果在快照以后,lv的数据发生变化,快照就会将变化的数据拷贝到snap中,这样你通过快照去访问lv时,数据还是原来的数据。当然,在你创建snap的时候,肯定给这个快照指定了一个大小,如果变化的数据量超过了的指定的大小,那么快照将会损坏。
二、创建lvm
创建lv的过程:
[root@oracle ~]# pvcreate /dev/sda{3,4} Physical volume "/dev/sda3" successfully created Physical volume "/dev/sda4" successfully created [root@oracle ~]# vgcreate newvg /dev/sda{3,4} Volume group "newvg" successfully created [root@oracle ~]# vgdisplay newvg --- Volume group --- VG Name newvg System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 400.00 MiB PE Size 4.00 MiB #lv从vg划分空间的最小单 位,所以lv的大小一定是PE的整数倍;创建vg可以-s指定 Total PE 100 Alloc PE / Size 0 / 0 Free PE / Size 100 / 400.00 MiB VG UUID tnecBI-66Nv-Vsm2-JbN0-FD41-gyPJ-D7MiKP [root@oracle ~]# lvcreate -L 200M -n mylv newvg Logical volume "mylv" created [root@oracle ~]# mkfs.ext4 /dev/newvg/mylv [root@oracle mnt]# mount /dev/newvg/mylv /mnt/lvm/
随便cp个文件到/mnt/lvm/这个目录下
[root@oracle etc]# cd /mnt/lvm/ [root@oracle lvm]# ls fstab inittab lost+found
三、测试快照
你
[root@oracle lvm]# lvcreate -s -L 20M -n snap-lv -p r /dev/newvg/mylv Logical volume "snap-lv" created [root@oracle lvm]# mount /dev/newvg/snap-lv /mnt/snap [root@oracle lvm]# lvdisplay --- Logical volume --- LV Path /dev/newvg/snap-lv LV Name snap-lv VG Name newvg LV UUID ugNG4W-D4ym-Uszx-yIjH-QLm6-2gDU-qVd9DC LV Write Access read only LV Creation host, time oracle, 2014-02-07 14:57:46 +0800 LV snapshot status active destination for mylv LV Status available # open 0 LV Size 200.00 MiB Current LE 50 COW-table size 20.00 MiB COW-table LE 5 Allocated to snapshot 0.06% #这个是已分配的snap空间 Snapshot chunk size 4.00 KiB Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 [root@oracle lvm]# cat /etc/man.config >> fstab #随便找个文件追加到刚刚拷贝到/mnt/lvm/下的文件中 [root@oracle lvm]# lvdisplay #再次查看快照的空间 --- Logical volume --- LV Path /dev/newvg/snap-lv LV Name snap-lv VG Name newvg LV UUID ugNG4W-D4ym-Uszx-yIjH-QLm6-2gDU-qVd9DC LV Write Access read only LV Creation host, time oracle, 2014-02-07 14:57:46 +0800 LV snapshot status active destination for mylv LV Status available # open 1 LV Size 200.00 MiB Current LE 50 COW-table size 20.00 MiB COW-table LE 5 Allocated to snapshot 0.25% #这里已分配0.25%,刚刚是0.06% Snapshot chunk size 4.00 KiB Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 [root@oracle lvm]# cd /mnt/ [root@oracle mnt]# ls lvm snap [root@oracle mnt]# cat lvm/fstab [root@oracle mnt]# cat snap/fstab
可以发现快照的已分配空间发生了变化,lvm目录中的fstab文件也变化了,但是snap中的fstab还是没有变化。
还是说一句,这个snap的空间一定要把握好,如果超出了指定的空间,快照就会损坏,就起不到备份的效果了。如果实在把握不准,可以指定快照的大小和需要快照的lv的大小一样,这样就不可能出现snap空间不够的情况了。