在上一篇博客中講了lvm相關知識、如何建立邏輯卷、如何擴展和縮減邏輯卷,接下來要講的是lvm的第二個魅力所在:支持快照功能,使得對於數據庫的備份變得更加簡便。
數據庫
1、lvm的快照(snapshot)功能介紹
bash
對於一個繁忙的系統,如一些在線的購物系統,要對其數據庫進行備份是件很麻煩的事。對數據庫備份,通常都要在離線的狀況下進行,而對於那些繁忙的系統來講,它們的數據甚至每時每刻都在變化。若是爲了對其數據庫進行備份,而讓繁忙的系統離線一段時間,那就會出大問題的,公司虧損不起啊!這些系統的數據每時每刻都在更新、都有可能會被用到,又不能離線,要想對其進行數據庫備份,那該怎麼好呢?這時候就體現出lvm快照功能的好處了! app
那麼,接下來,咱們來講說lvm的快照功能是怎麼的一回事:ide
站在邏輯卷的角度來看,快照實際上是個快照卷。spa
快照卷能對目標邏輯卷作一次快照,作完快照後,快照卷擁有了對目標邏輯卷的一條訪問通路。blog
快照卷剛開始的存儲空間裏實際上是空的,並不存有任何數據,作完快照的那一刻起,當目標邏輯卷裏的數據要發生改變時,就會把要改變的數據複製到快照卷中,複製完後,要改變的數據就在目標邏輯卷中任由它改變,而不發生改變的數據仍然留在目標邏輯卷中。rem
所以經過快照讀取數據,就能在快照卷中讀取到改變以前的數據,更能經過那條訪問通路進入目標邏輯卷讀取到從沒有發生改變的數據,從而形成的結果是:能經過快照讀取到作成快照那一刻的數據(也就是改變前的數據)。get
於是當你建立一個快照卷時,不須要建立和目標邏輯卷同樣的大小的快照卷,快照卷的大小取決於有多少數據須要改變和你但願保留lvm快照多長時間。而當目標邏輯卷的改變量超出了快照卷的大小時,快照卷就會面臨崩潰。快照卷僅是爲了對數據進行備份而建立的,沒有永存的概念,用完了就會被釋放。 博客
注意:快照卷是對某邏輯捲進行的,所以必須跟目標邏輯卷在同一個卷組中;無須指明卷組;it
(注:此圖是起點夢想的博文:http://pangge.blog.51cto.com/6013757/1256568 中的圖,這個圖已經生動形象地展現了快照的工做原理。)
由此,咱們知道快照使得數據庫備份變得更加簡單、便捷:對於一個繁忙的系統,要對其進行數據庫備份,可讓系統離線極短的一段時間(不影響系統運行),而後對其作一個快照,就能正常便捷地備份數據庫了,而不會對系統形成不便的影響。
2、快照卷
建立快照卷的命令介紹:
因快照卷也是邏輯卷,因此建立快照卷的命令也是lvcreate。
lvcreate
-L 指定快照卷的大小
-n 指定快照卷的名稱
-s 建立快照卷
-p r 指定訪問權限(快照只能讀)
再次提醒:快照卷是對某邏輯捲進行的,所以必須跟目標邏輯卷在同一個卷組中;無須指明卷組;
爲了讓各位讀者可以更好地理解快照卷是怎麼建立、怎麼用的,如下用實例來說解:
一、建立快照卷
[root@localhost mnt]# mount # mylv邏輯卷已經掛載在/mnt目錄下 /dev/mapper/myvg-mylv on /mnt type ext4 (rw) [root@localhost mnt]# ls issue lost+found [root@localhost /]# lvcreate -s -L 200M -p r -n mylv-snap /dev/myvg/mylv # 對邏輯卷mylv建立快照卷 Logical volume "mylv-snap" created [root@localhost /]# ls /dev/myvg/ # 快照卷和目標邏輯卷在同一個卷組中 mylv mylv-snap [root@localhost /]# lvs LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert mylv myvg owi-aos--- 5.00g mylv-snap myvg sri-a-s--- 200.00m mylv 0.01 # 快照卷 root vg0 -wi-ao---- 20.00g swap vg0 -wi-ao---- 2.00g usr vg0 -wi-ao---- 10.00g var vg0 -wi-ao---- 20.00g
二、掛載快照卷
要想使用快照卷,同樣要先掛載。
[root@localhost ~]# mount -o ro /dev/myvg/mylv-snap /media # 掛載快照捲到/media目錄下(-o ro 表示以只讀的方式掛載) [root@localhost media]# mount /dev/mapper/myvg-mylv on /mnt type ext4 (rw) /dev/mapper/myvg-mylv--snap on /media type ext4 (ro) [root@localhost media]# ls issue lost+found [root@localhost media]# rm issue # 快照卷是隻讀的,不能修改其文件 rm: remove regular file `issue'? y rm: cannot remove `issue': Read-only file system
三、驗證快照卷的功能
[root@localhost media]# cd /mnt [root@localhost mnt]# ls issue lost+found [root@localhost mnt]# cp /etc/fstab ./ # 目標邏輯卷中的數據發生了修改 [root@localhost mnt]# ls fstab issue lost+found [root@localhost mnt]# cd /media [root@localhost media]# ls # 經過快照卷訪問的數據仍是改變以前的數據 issue lost+found
3、鞏固練習
好了,爲了進一步加深理解,特留幾道練習題,但願各位作得愉快! ~
一、建立一個由至少兩個物理卷組成的大小爲10G的卷組;要求,PE大小8M;然後在卷組中建立大小爲5G的邏輯卷mylv1,格式化爲ext4文件系統,開機自動掛載至/users目錄;
2、新建用戶gentoo,其家目錄爲/users/gentoo,然後su至gentoo用戶,複製/etc/fstab文件至本身的家目錄;
3、擴展mylv1至7G,確保/users/gentoo的數據不受影響;然後su至gentoo用戶,驗正數據可正常訪問;
4、縮減mylv1至4G,確保/users/gentoo的數據不受影響;然後su至gentoo用戶,驗正數據可正常訪問;
5、對mylv1建立快照卷snap-mylv1,並經過其cp內部的數據至/backups/目錄中,要求保留原有屬主屬組等信息;