LVM快照功能--我們知道LVM能夠通過增減PE的數量來彈性調整文件系統的大小,除此之外,LVM還有另外一個重要的功能,LV磁盤快照,就是通過快照的功能將此時的文件系統信息記錄下來,以後對該文件系統操作的時候,當該文件系統的數據變化的時候,我們可以利用快照將文件系統恢復至當時的狀態。
目錄
LV的快照原理
創建快照
利用快照恢復系統
一、LV的快照(snapshot)原理
左邊的圖表示,LVM會在VG上預留一定的區域作爲快照區,原本lv中存放着數據,同時快照區存放着lv中元數據,因此快照區大小不需要和原始lv一樣的大小。在剛創建snapshot的時候,快照區中並不會真實地拷貝原始lv中的數據,只是記錄了整個原始lv中的元數據,所以這個時間點快照區和原始lv共享文件系統的數據,即兩邊的數據一樣。
右邊的圖表示,當原始lv中的數據發生改變的時候,原始lv中的發生變化的PE的數據更新之前,會將數據真實地備份至快照區的一個PE中,如圖中,A->new A之前,先將A備份至快照區的一個PE,然後lv中A才更新爲new A,這樣快照區會保存lv中PE發生變化之前的數據,這時候我們再訪問快照區的內容仍然爲創建snapshot那個時間點的時候lv中的數據,因此我們可以利用快照區進行備份和恢復。
需要注意的是,由於快照區也有容量的限制,所以呢,當原始lv中發生變化的PE的數量超過快照區的PE的數量的時候,該快照就會立即失效。
我們在創建快照區的時候,要考慮將來lv數據的變化量,以此來指定快照區的大小,一種解決辦法是剛創建完快照之後,立即把快照區中的內容進行備份,這樣就不用時刻考慮快照區會失效了,因爲我們已經把他的數據備份走了。還有一種簡單粗暴的方法就是創建一個和原始lv一樣大小的快照區,這樣就不用擔心數據變化量的因素了。
二、創建快照
操作流程:
原始lv爲/dev/vg1/lv1,創建lv的快照爲lv1snap,容量爲100個PE
①查看vg1的信息中的可用PE的數量
②創建lv快照
[root@CentOS-6 ~]# lvcreate -s -l 100 -n lv1snap /dev/vg1/lv1 Logical volume "lv1snap" created.
-s 關鍵選項,創建快照snap的意思
-l 後面跟快照包含多少個PE的數量
-n 後面跟創建的快照的名字
-p r 由於快照大多爲只讀,改選項爲爲修改權限位只讀(r)
命令最後記得加創建的快照的原始lv名稱
③ 查看新創建的快照區
③掛載原始lv和lv的快照
[root@CentOS-6 ~]# mount /dev/vg1/lv1 /mnt/lvm/ [root@CentOS-6 ~]# mount /dev/vg1/lv1snap /mnt/snap/
之前我在/mnt/lvm中導入了一些數據,我們發現原始lv和lv快照掛載之後容量信息一模一樣
三、利用快照恢復系統
當利用快照恢復系統的時候,不能使得要復原的數據量大於快照區所能承受的最大範圍
①修改原始lvm中的內容
[root@CentOS-6 ~]# dd if=/dev/zero of=/mnt/lvm/test bs=1M count=500 500+0 records in 500+0 records out 524288000 bytes (524 MB) copied, 5.31399 s, 98.7 MB/s
兩個目錄的使用率發生變化
②對快照區的數據進行打包壓縮並備份
[root@CentOS-6 snap]# tar -jcv -f /backups/lvm.tar.bz2 * #-j 支持bzip2解壓文件 -c 創建新的備份文件 -f 指定備份文件 tmp [root@CentOS-6 snap]# echo $? 0
卸載原始lv重新格式化,再掛載之後df查看
③對原始lv進行數據恢復
[root@CentOS-6 ~]# tar -jxv -f /backups/lvm.tar.bz2 -C /mnt/lvm/ #-C 解壓至指定目錄
原始lv恢復至原來的14%
我在這是用的打包壓縮的方式進行備份還原,當然用cp命令的方式也一樣