
我剛剛在 Ubuntu 12.10 上嘗試 LVM 中的快照。我創建了一個 6.5 GiB 的快照邏輯卷,在對來源進行一些更改後,決定將快照合併回來以撤銷它們。一切似乎都很順利,但我注意到 syslog 中有幾個與 LVM 相關的段落錯誤訊息。
輸入的命令:
sudo lvcreate -L6.5G -n backup_snapshot -s /dev/mapper/vg0-backup
# made some miscellaneous writes
sudo lvconvert --merge /dev/vg0/backup_snapshot
sudo umount /snapshot/backup
sudo umount /backup
sudo lvchange -an /dev/vg0/backup
sudo lvchange -ay /dev/vg0/backup
sudo mount /backup
從系統日誌:
Apr 12 04:57:10 bournemouth kernel: [ 5260.813253] EXT4-fs (dm-1): mounted filesystem with ordered data mode. Opts: errors=remount-ro
Apr 12 05:00:11 bournemouth kernel: [ 5441.841401] EXT4-fs (dm-5): mounted filesystem with ordered data mode. Opts: errors=remount-ro
Apr 12 05:02:00 bournemouth kernel: [ 5551.438487] show_signal_msg: 48 callbacks suppressed
Apr 12 05:02:00 bournemouth kernel: [ 5551.438495] lvm[5813]: segfault at 28 ip 000000000047f319 sp 00007fff60873de0 error 4 in lvm[400000+d9000]
Apr 12 05:02:01 bournemouth kernel: [ 5552.458797] lvchange[6449]: segfault at 28 ip 000000000047f319 sp 00007fff935f4380 error 4 in lvm[400000+d9000]
然後我卸載了原始 LV,確保快照不再存在,並fsck.ext4 -f
在其上運行;這樣檢查就OK了。但我仍然擔心段錯誤。我的數據是否有可能以某種 fsck 無法捕獲的方式弄亂了?我正在試驗的捲是一個備份卷,我在其上備份的所有檔案系統仍然處於工作狀態,因此我可以重新開始並再次備份它們。但另一方面,我想保留我的增量備份歷史。我只是想保證我可以信任這些備份。
答案1
是的,這絕對是一個錯誤,但別擔心,LVM 足夠聰明來處理這些東西,我曾經在 pvmove 過程中斷電,我所要做的就是再次打開伺服器「取消」舊的 pvmove 並重新開始。
首先,重要的是要知道您使用的工具只是內核進程的用戶空間介面。 LVM 位於核心內部,因此除非您的核心發生恐慌,否則一切都正常。像 pvmove 或 lvchange 這樣的用戶空間工具只是為我們與 LVM 交互,然後坐下來詢問內核“嘿,你已經完成了嗎?結果如何?”或者“嘿,我們現在進展到什麼程度了?” (您的特定問題是 lvchange 成功完成後出現 lvchange 段錯誤,聽起來像是最近修復的錯誤因此您可能需要確保您擁有所有系統更新)。
一般來說,您也不應該對 LVM 是否遇到麻煩如此猶豫或偏執,它旨在很好地處理此類意外錯誤(即使它們直接影響它,而不僅僅是您正在使用的工具) )並且這種保證是使用磁碟區管理器而不是傳統分區的要點的一部分。只有發生什麼事你才會有麻煩真的壞事發生了,或者你沒有經過深思熟慮就做了某件事。 LVM 會依照磁碟區(而不是區塊)進行操作,且在複製作業成功完成之前,它不會使複製的磁碟區處於活動狀態而使原始磁碟區處於非活動狀態。透過這樣做,一半複製的範圍將保持標記為未分配,任何後續工具都將覆蓋它。我的 pvmove 和你的 lvchange 都是這種情況。
編輯:
看著此郵件清單公告,我們可以更詳細地描述您的合併實際上是如何「在幕後」工作的:
當合併處於活動狀態時,對來源設備的任何存取都會[定向到]正在合併的快照。合併完成後,來源目標將無縫重新加載,並刪除合併快照。在此期間,[非快照]檔案系統可以保持掛載狀態。
我認為了解一下可能會很有趣
答案2
雖然繁重的工作是由內核(設備映射器)處理的,但您的資料本身應該是安全的。然而,LVM 使用者層工具仍具有重要的功能;它們保留 LVM 元數據,即儲存內容、儲存位置以及儲存方式,設備映射器本身不知道也不關心這些元數據。
如果 LVM 工具在更新此類元資料的過程中出現段錯誤,則可能會導致資料遺失。在某種程度上,LVM 是一個分割檔案系統;損壞的 LVM 元資料等同於遺失檔案系統超級區塊。這就是為什麼幾乎每個更改都會記錄/備份到/etc/lvm/...
.
段錯誤從來都不是好事 - 如果您的 LVM 工具發生這種情況,您應該停止使用它們並切換到適合您穩定的 LVM 版本。並且可能會向您的發行版報告錯誤,以便可以追蹤並永久修復該問題。