在 LVM中 錄製邏輯卷快照並恢復(第三部分)

贊 回覆發表於2014-11-02

LVM快照是以空間換時間時間的方式製作的lvm卷副本。它只在lvm中工作,並只在源邏輯捲髮生改變時佔用快照卷的空間。如果源卷的變化達到1GB這麼大,快照卷同樣也會產生這樣大的改變。因而,對於空間有效利用的最佳途徑,就是總是進行小的修改。如果快照將儲存空間消耗殆盡,我們可以使用lvextend來擴容。而如果我們需要縮減快照所佔用卷的大小,可以使用lvreduce。

Take Snapshot in LVM

在LVM中錄製快照

如果我們在建立快照後意外地刪除了無論什麼檔案,我們沒有必要擔心,因為快照裡包含了我們所刪除的檔案的原始檔案。建立快照時,很有可能檔案已經存在了。不要改變快照卷,保持建立時的樣子,因為它用於快速恢復。

快照不可以用於備份選項。備份是某些資料的基礎副本,因此我們不能使用快照作為備份的一個選擇。

前置閱讀

我的伺服器設定

  • 作業系統 — 安裝有LVM的CentOS 6.5
  • 伺服器IP — 192.168.0.200

步驟1: 建立LVM快照

首先,使用‘vgs’命令檢查卷組中的空閒空間以建立新的快照。

# vgs
# lvs

Check LVM Disk Space

檢查LVM磁碟空間

正如你所見,在vgs命令輸出中,我們可以看到有8GB的剩餘空閒空間。所以,讓我們為我的名為tecmint_datas的卷建立快照。處於演示的目的,我將會使用以下命令來建立1GB的快照卷。

# lvcreate -L 1GB -s -n tecmint_datas_snap /dev/vg_tecmint_extra/tecmint_datas        

或者

# lvcreate --size 1G --snapshot --name tecmint_datas_snap /dev/vg_tecmint_extra/tecmint_datas

上面的兩個命令都是幹得同一件事:

  • -s – 建立快照
  • -n – 為快照命名

Create LVM Snapshot

建立LVM快照

此處,是對上面高亮要點的說明。

  1. 我在此建立的快照的大小。
  2. 建立快照。
  3. 建立快照名。
  4. 新的快照名。
  5. 要建立快照的卷。

如果你想要移除快照,可以使用‘lvremove’命令。

# lvremove /dev/vg_tecmint_extra/tecmint_datas_snap

Remove LVM Snapshot

移除LVM快照

現在,使用以下命令列出新建立的快照。

# lvs

Verify LVM Snapshot

驗證LVM快照

上面的你看到了吧,成功建立了一個快照。上面我用箭頭標出了快照建立的源,它就是tecmint_datas。是的,因為我已經為tecmint_datas l-volume建立了一個快照。

Check LVM Snapshot Space

檢查LVM快照空間

讓我們新增一些新檔案到tecmint_datas裡頭。現在卷裡大概有650MB左右的資料,而我我們的快照有1GB大。因此,有足夠的空間在快照卷裡備份我們的修改。這裡我們可以使用下面的命令來檢視到,我們的快照當前的狀態。

# lvs

Check Snapshot Status

檢查快照狀態

你看到了,現在已經用掉了51%的快照卷,你要對你的檔案作更多的修改都沒有問題。使用下面的命令來檢視更多詳細資訊。

# lvdisplay vg_tecmint_extra/tecmint_data_snap

View Snapshot Information

檢視快照資訊

再來對上面圖片中高亮的要點作個清楚的說明。

  1. 快照邏輯卷名稱。
  2. 當前使用的卷組名。
  3. 讀寫模式下的快照卷,我們甚至可以掛載並使用該卷。
  4. 快照建立時間。這個很重要,因為快照將跟蹤此時間之後的每個改變。
  5. 該快照屬於tecmint_datas邏輯卷。
  6. 邏輯卷線上並可用。
  7. 我們錄製快照的源卷大小。
  8. 寫時複製表大小,Cow = copy on Write,這是說對tecmint_data卷所作的任何改變都會寫入此快照。
  9. 當前使用的快照大小,我們的tecmintdata有10GB,而我們的快照大小是1GB,這就意味著我們的資料大概有650MB。所以,如果tecmintdatas中的檔案增長到2GB,現在的51%中的內容將增加到超過所分配的快照的大小,當然,我們在建立快照時會出現問題。這就意味著我們需要擴充套件邏輯卷大小(快照邏輯卷)
  10. 給出快照組塊的大小。

現在,讓我們複製超過1GB的檔案到tecmint_datas。讓我們看看會發生什麼。如果你那麼做了,你將會見到‘Input/output error’這樣的錯誤資訊,它告訴你快照超出空間大小了。

Add Files to Snapshot

新增檔案到快照

如果該邏輯卷滿了,它就會自動丟失新的資料,我們就不能再使用了,就算我們去擴充套件快照卷的大小也不行。最好的方法就是在建立快照時,建立一個和源一樣大小的快照卷。tecmint_datas的大小是10GB,如果我們建立一個10GB大小的快照,它就永遠都不會像上面那樣超載,因為它有足夠的空間來錄製你的邏輯卷的快照。

步驟2: 在LVM中擴充套件快照

如果我們需要在超過容量前擴充套件快照卷的大小,我們可以使用以下命令來完成此項任務。

# lvextend -L +1G /dev/vg_tecmint_extra/tecmint_data_snap

現在,那裡有總計2GB大小的快照空間。

Extend LVM Snapshot

擴充套件LVM快照

接下來,使用以下命令來驗證新的大小和寫時複製表。

# lvdisplay /dev/vg_tecmint_extra/tecmint_data_snap

要知道快照卷的大小使用%

# lvs

Check Size of Snapshot

檢查快照大小

然而,如果你的快照大小和源卷一樣,我們就沒有必要擔心這些問題了。

步驟3: 恢復快照或合併

要恢復快照,我們首先需要解除安裝檔案系統。

# unmount /mnt/tecmint_datas/

Un-mount File System

解除安裝檔案系統

只想檢查掛載點是否解除安裝成功,可以使用下面的命令。

# df -h

Check File System Mount Points

檢查檔案系統掛載點

這裡,我們的掛載已經被解除安裝,所以我們可以繼續恢復快照。要恢復快照,可以使用lvconvert命令。

# lvconvert --merge /dev/vg_tecmint_extra/tecmint_data_snap

Restore LVM Snapshot

恢復LVM快照

在合併完成後,快照卷將被自動移除。現在我們可以使用df命令來檢視分割槽大小。

# df -Th

Check Size of Snapshot

在快照卷自動移除後,你可以用下面的命令檢視邏輯卷大小。

# lvs

Check Size of Logical Volume

檢查邏輯卷大小

重要:要自動擴充套件快照,我們可以通過修改配置檔案來進行。對於手動擴充套件,我們可以使用lvextend。

使用你喜歡的編輯器開啟lvm配置檔案。

# vim /etc/lvm/lvm.conf

搜尋單詞autoextend。預設情況下,該值和下圖中的類似。

LVM Configuration

LVM配置

修改此處的10075,這樣自動擴充套件的起始點就是75,而自動擴充套件百分比為20,它將自動擴容百分之20

如果快照卷達到75%,它會自動為快照卷擴容20%。這樣,我們可以自動擴容了。使用wq!來儲存並退出。

這將把快照從超載導致下線事故中拯救出來,這也會幫助你節省更多時間。LVM是我們擴容以及獲得其它眾多特性如精簡資源調配、拆卸、虛擬卷和使用精簡池的唯一方法,讓我們在下一個話題中來討論吧。


via: http://212.71.234.61/take-snapshot-of-logical-volume-and-restore-in-lvm/

作者:Babin Lonston 譯者:GOLinux 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出

相關文章