一、 系統快照介紹
在LVM的部份除了一般的使用外,還有系統快照的功能。所謂的系統快照指的就是將當時的系統資訊記錄下來,當若是有資料更動時,系統會先將原始資料先搬移到快照區儲存。等有需要還原是在從快照區取回即可。
LVM的系統快照也可以說是「備份工具」,因為他只會備份有更動的資料,檔案系統內沒有被更動的資料則保持在原本的區塊內。簡單來說系統快照有還原的功能,可還原到之前的系統狀態。
二、 系統快照設定
建立快照區
1.1 檢查看看VG還剩下多少容易可使用
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name faqvg
VG Access read/write
VG Status resizable
VG Size 11.16 GB
PE Size 16.00 MB
Total PE 714
Alloc PE / Size 595 / 9.30 GB
Free PE / Size 119 / 1.86 GB
VG UUID e2lS1t-7Rop-YHU4-qygQ-tDFq-LjVn-jOnv0h
若是查看後發現已經沒有可用的Free PE,請自行新增加入。
1.2 先放一些檔案到已經建立好的LVM內,之後才好比較
[root@localhost ~]# cp -a /etc /var/log /mnt/lvm
1.3 建立系統快照區
[root@localhost ~]# lvcreate -l 100 -s -n faqss /dev/faqvg/faqlv
Logical volume "faqss" created
#以上參數最重要的就是-s,代表是 snapshot 快照功能之意
#-n 後面接快照區的裝置名稱, /dev/.... 則是要被快照的 LV 完整檔名
#l 後面則是接使用多少個 PE 來作為這個快照區使用
1.4 查看快照建立後的相關資料
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Name /dev/faqvg/faqss
VG Name faqvg
LV UUID 9CUz4g-40Ub-Ptwg-4fPJ-7hzA-kf3A-QrQ5e2
LV Write Access read/write
LV snapshot status active destination for /dev/faqvg/faqlv
LV Status available
# open 0
LV Size 9.30 GB
Current LE 595
COW-table size 1.56 GB
COW-table LE 100
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
如此一來/dev/faqvg/faqss快照區就建立好了。所建立起來的faqss快照區內的檔案資料會看faqlv一樣。
若想測試,可自行將/dev/faqvg/faqss掛載起來查看就可以了。
使用快照復原系統
在開始復原之前,要注意一下,所要復原的資料量不能高於快照區所負載的實際容量。因原始資料為移到快照區,但若快照區過小時會造成資料搬移有問題而失敗。
2.1 先來把原本mnt/lvm裡的資料做一下更動。
[root@localhost ~]# ll /mnt/lvm
drwxr-xr-x 87 root root 4096 Nov 7 05:00 etc
drwxr-xr-x 14 root root 4096 Nov 7 04:02 log
drwx------ 2 root root 16384 Nov 1 17:44 lost+found
[root@localhost ~]# rm -rf /mnt/lvm/*
[root@localhost ~]# cp -a /var/games/ /var/cache/ /mnt/lvm
[root@localhost ~]# ll /mnt/lvm
drwxr-xr-x 11 root root 4096 Oct 27 12:45 cache
drwxr-xr-x 2 root root 4096 May 11 19:58 games
2.2 查看快照所使用狀況
由於剛剛已經有變動LVM內的資料,因此來看看在快照的部份是不是也有變動
[root@localhost ~]# lvdisplay /dev/faqvg/faqss
--- Logical volume ---
LV Name /dev/faqvg/faqss
VG Name faqvg
LV Size 9.30 GB
Current LE 595
COW-table size 1.56 GB
COW-table LE 100
Allocated to snapshot 0.73%
Snapshot chunk size 4.00 KB
在Allcoated to snapsho的部份會看到的確有增加。也就是說當在LVM做資料變動時,快照區也會自動的先將變動之前的資料自行備份,以方便還原。
2.3 製作一份 快照區的備份 (還原用的)
[root@localhost ~]# mount /dev/faqvg/faqss /mnt/snapshot/
[root@localhost ~]# mkdir -p /backups #建立一個backups資料夾
[root@localhost ~]# cd /mnt/snapshot
[root@localhost ~]# tar -jcv -f /backups/lvm.tar.bz2 * #把快照內的資料都tar起來
會將資料tar起來後在還原是因為,只要一但lvm有做任何的修改的話。會自動備份到快照區。所以如果是把lvm整個刪除的話。快照區會直接備份lvm所有的檔案,如此一來在快照區內的資料就有可能不會是當初要還原的資料。還有就是如果當快照區的空間不夠大的時後在lvm搬移到快照區就會失敗,近而造成資料無法還原。
2.4 卸載和移除faqss(快照區)
[root@localhost ~]# umount /mnt/snapshot #已將faqss快照內的資料備份了,所以可卸載
[root@localhost ~]# lvremove /dev/faqvg/faqss #移除faqss快照區
Do you really want to remove active logical volume faqss? [y/n]: y
Logical volume "faqss" successfully removed
因為等等會格式化faqlv,怕資料會搬移到快照區。若是空間不夠會造成問題。所以就先卸載後刪除快照區。等之後有須要用在重新建立。
2.5還原faqlv的內容
[root@localhost ~]# umount /mnt/lvm
[root@localhost ~]# mkfs -t ext3 /dev/faqvg/faqlv #格式化faqlv
[root@localhost ~]# mount /dev/faqvg/faqlv /mnt/lvm
[root@localhost ~]# tar -jxv -f /backups/lvm.tar.bz2 -C /mnt/lvm #解tar還原到lvm
[root@localhost ~]# ll /mnt/lvm
drwxr-xr-x 87 root root 4096 Nov 7 05:00 etc
drwxr-xr-x 14 root root 4096 Nov 7 04:02 log
drwx------ 2 root root 16384 Nov 1 17:44 lost+found
2.6 由於快照區是跟隨著LVM做變動。因此就算直接在快照區隨意更改設定。也不會影響到LVM,只需要在最後把快照區刪除後,從新建立一個新的就會再次和LVM連接了。