这里我续上一章日志《linux LVM配置2》讲解一下LVM的快照功能
LVM的系统快照
现在你知道 LVM 的好处咯,未来如果你有想要增加某个 LVM 的容量时,就可以透过这个放大、缩小的功能来处理。 那么 LVM 除了这些功能以外,还有什么能力呢?其实他还有一个重要的能力,那就是系统快照 (snapshot) 。 什么是系统快照啊?快照就是将当时的系统信息记录下来,就好像照相记录一般! 未来若有任何资料更动了,则原始资料会被搬移到快照区,没有被更动的区域则由快照区不文件系统共享。 用讲的好像很难懂,我们用图解说明一下好了:
左图为最出建置系统快照区的状况,LVM 会预留一个区域 (左图的左侧三个 PE 区块) 作为数据存放处。 此时快照区内并没有任何数据,而快照区与系统区共享所有的 PE 数据, 因此你会看到快照区的内容不文件系统是一模一样的。 等到系统运作一阵子后,假讴 A 区域的数据被更动了 (上面右图所示),则更动前系统会将该区域的数据移动到快照区, 所以在右图的快照区被占用了一块 PE 成为 A,而其他 B 到 I 的区块则还是与文件系统共享!
照这样的情况来看,LVM 的系统快照是非常棒的“备份工具”,因为他只有备份有被更动到的数据, 文件系统内没有被变更的数据依旧保持在原本的区块内,但是 LVM 快照功能会知道那些数据放置在哪里, 因此“快照”当时的文件系统就得以“备份”下来,且快照所占用的容量又非常小!
那么快照区要如何建立与使用呢?首先,由于快照区与原本的 LV 共享很多PE 区块,因此快照区与被快照的 LV 必项要在同一个 VG 上面。
下面我就使用我之前删除的/dev/sdb5 来新建一个快照
- [root@CentOS5 ~]#pvcreate /dev/sdb5
- [root@CentOS5 ~]#pvscan
- PV /dev/sdb6 VG aixevg lvm2 [1.39 GB / 0 free]
- PV /dev/sdb7 VG aixevg lvm2 [1.39 GB / 0 free]
- PV /dev/sdb8 VG aixevg lvm2 [1.39 GB / 0 free]
- PV /dev/sdb9 VG aixevg lvm2 [1.39 GB / 0 free]
- PV /dev/sdb5 lvm2 [1.40 GB]
- Total: 5 [6.96 GB] / in use: 4 [5.56 GB] / in no VG: 1 [1.40 GB]
添加PV到VG中
- [root@CentOS5 ~]#vgextend aixevg /dev/sdb5
- Volume group "aixevg" successfully extended
下面就是创建快照了
创建快照命令格式
- [root@CentOS5 ~]#lvcreate -l 89 -s -n aixebak /dev/aixevg/aixelv
- -l:后面接用多少PE加入快照中
- -s:这是最重要的参数,它表示snapshot,就是快照之意
- -n:后面接新建快照名称,/dev/….则是要被快照的LV完整文件名
- [root@CentOS5 ~]#lvcreate -l 89 -s -n aixebak /dev/aixevg/aixelv
- Logical volume "aixebak" created
创建好快照之后查看一下LV
- [root@CentOS5 ~]#lvdisplay
- --- Logical volume ---
- LV Name /dev/aixevg/aixelv
- VG Name aixevg
- LV UUID Mx0CUA-JUxI-dV3Q-9NIV-fvRH-REJP-GcIZQd
- LV Write Access read/write
- LV snapshot status source of
- /dev/aixevg/aixebak [active]
- LV Status available
- # open 1
- LV Size 5.56 GB
- Current LE 356
- Segments 4
- Allocation inherit
- Read ahead sectors auto
- - currently set to 256
- Block device 253:0
- --- Logical volume ---
- LV Name /dev/aixevg/aixebak
- VG Name aixevg
- LV UUID 61WaYj-jUXH-ck5R-Rb82-P7eq-GGn0-1Qyr01
- LV Write Access read/write
- LV snapshot status active destination for /dev/aixevg/aixelv
- LV Status available
- # open 0
- LV Size 5.56 GB
- Current LE 356
- COW-table size 1.39 GB
- COW-table LE 89
- Allocated to snapshot 0.00%
- Snapshot chunk size 4.00 KB
- Segments 1
- Allocation inherit
- Read ahead sectors auto
- - currently set to 256
- Block device 253:1
拷贝一下数据到/mnt/lvm中
- [root@CentOS5 ~]#mount /dev/aixevg/aixelv /mnt/lvm
- [root@CentOS5 ~]#cp –a /etc /var /mnt/lvm
接下来我们可以挂载、查看aixebak,可以看到到aixebak有一样的内容,这就是快照(aixebak)功能,自动备份
- [root@CentOS5 ~]#mkdir /mnt/aixebak
- [root@CentOS5 ~]#mount /dev/aixevg/aixebak /mnt/aixebak/
- [root@CentOS5 ~]#df -h
- Filesystem Size Used Avail Use% Mounted on
- /dev/sda2 4.9G 3.4G 1.3G 74% /
- /dev/sda5 3.6G 72M 3.4G 3% /date
- /dev/sda1 289M 16M 259M 6% /boot
- tmpfs 125M 0 125M 0% /dev/shm
- /dev/mapper/aixevg-aixelv
- 5.4G 587M 4.6G 12% /mnt/lvm
- /dev/mapper/aixevg-aixebak
- 5.4G 587M 4.6G 12% /mnt/aixebak
我们把aixebak取消挂载
- [root@CentOS5 ~]#umount /mnt/aixebak/
- [root@CentOS5 ~]#df -h /mnt/lvm/
- Filesystem Size Used Avail Use% Mounted on
- /dev/mapper/aixevg-aixelv
- 5.4G 587M 4.6G 12% /mnt/lvm
恶搞下原来要被快照的分区
- [root@CentOS5 ~]#rm -rf /mnt/lvm/var/
- [root@CentOS5 ~]#cp -a /boot /lib /mnt/lvm/
- [root@CentOS5 ~]#lvdisplay /dev/aixevg/aixebak
- --- Logical volume ---
- LV Name /dev/aixevg/aixebak
- VG Name aixevg
- LV UUID 61WaYj-jUXH-ck5R-Rb82-P7eq-GGn0-1Qyr01
- LV Write Access read/write
- LV snapshot status active destination for /dev/aixevg/aixelv
- LV Status available
- # open 0
- LV Size 5.56 GB
- Current LE 356
- COW-table size 1.39 GB
- COW-table LE 89
- Allocated to snapshot 5.73%
- Snapshot chunk size 4.00 KB
- Segments 1
- Allocation inherit
- Read ahead sectors auto
- - currently set to 256
- Block device 253:1
上面看到,被快照的区域已经被改动了,然而我们快照依然可以将原来的数据还原出来,下面就快照区域备份原来的数据,然后删除快照区域
- [root@mkk aixebak]# mkdir /backups
- [root@mkk aixebak]# mount /dev/aixevg/aixebak /mnt/aixebak/
- [root@mkk aixebak]# cd /mnt/aixebak/
- [root@mkk aixebak]# tar -jcvf /backups/lvm.tar.bz2 *
- [root@CentOS5 ~]#umount /mnt/aixebak/
- [root@CentOS5 ~]#lvremove /dev/aixevg/aixebak
- Do you really want to remove active logical volume "aixebak"? [y/n]: y
- Logical volume "aixebak" successfully removed
下面我们格式化之前被快照的区域,然后还原被恶搞之前的数据
- [root@CentOS5 ~]#umount /mnt/lvm/
- [root@CentOS5 ~]#mkfs -t ext3 /dev/aixevg/aixelv
- [root@CentOS5 ~]#tar -jxvf /backups/lvm.tar.bz2 -C /mnt/lvm/
- [root@CentOS5 ~]#cd /mnt/lvm/
- [root@mkk lvm]# ls
- etc lost+found var
从上面我们看到,LVM快照是可以完全还原之前的数据的,这也是我们用来备份系统的手段
转载于:https://blog.51cto.com/aixecc/822911