Linux學習—LVM快照功能

LVM快照功能--我們知道LVM能夠通過增減PE的數量來彈性調整文件系統的大小,除此之外,LVM還有另外一個重要的功能,LV磁盤快照,就是通過快照的功能將此時的文件系統信息記錄下來,以後對該文件系統操作的時候,當該文件系統的數據變化的時候,我們可以利用快照將文件系統恢復至當時的狀態。



目錄

  • LV的快照原理

  • 創建快照

  • 利用快照恢復系統



一、LV的快照(snapshot)原理 

blob.png

    左邊的圖表示,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的數量

blob.png

②創建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名稱

③ 查看新創建的快照區

blob.png

③掛載原始lv和lv的快照 

[root@CentOS-6 ~]# mount /dev/vg1/lv1 /mnt/lvm/
[root@CentOS-6 ~]# mount /dev/vg1/lv1snap /mnt/snap/

blob.png   
之前我在/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

兩個目錄的使用率發生變化

 blob.png

②對快照區的數據進行打包壓縮並備份

[root@CentOS-6 snap]# tar -jcv -f /backups/lvm.tar.bz2 * #-j 支持bzip2解壓文件 -c 創建新的備份文件 -f 指定備份文件
tmp
[root@CentOS-6 snap]# echo $?
0

卸載原始lv重新格式化,再掛載之後df查看

blob.png

③對原始lv進行數據恢復

[root@CentOS-6 ~]# tar -jxv -f /backups/lvm.tar.bz2 -C /mnt/lvm/  #-C 解壓至指定目錄

原始lv恢復至原來的14%

blob.png

我在這是用的打包壓縮的方式進行備份還原,當然用cp命令的方式也一樣



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章