
在過去的一個月裡,我一直在研究 LVM 的工作原理。最初的想法是它非常靈活,令我驚訝的是,當將磁碟移至另一個本地磁碟時,系統仍然可以運行。
我在網上找不到太多信息,但這似乎是一件應該可以做到的事情。也許它不實用,或者通常不是一個好的解決方案(?)。我讀的文章都是圍繞著本機磁碟,而不是外部磁碟。
當我說備份時,我指的是整個磁碟/分割區,不是快照。
假設我有 4 台伺服器都運行 LVM,我想將所有磁碟備份到一個大儲存伺服器,這可能嗎?
如果可能的話,這樣的配置有什麼缺點?
答案1
是的。
這個用的比較廣泛,其實就牽涉到快照來保證備份的一致性。
例如,這是在 Proxmox VE 中備份虛擬機器(和容器)儲存的方式:
- 暫停虛擬機器。 Linux 中無法原子地製作多個快照,因此唯一的方法是備份全部在同一時刻建立磁碟是為了確保虛擬機器在所有快照準備就緒之前無法執行任何操作
- 為所有磁碟建立快照。這個過程比較快
- 取消暫停虛擬機器。 VM不可用的時間很短,直到不明顯的程度
- 將所有快照的影像傳送到備份儲存。這是一個漫長的過程。但事實上,這些快照使我們能夠擁有一致的備份,同時虛擬機器仍然可以運行。備份的狀態將是虛擬機器首次掛起時的狀態
- 刪除所有快照。
這是簡化的描述;實際上,PVE 也使用 Qemu 中的一些技巧來模擬沒有此類功能的後備儲存體上的快照,但這與問題無關。
優點已經描述過了。我能想到的缺點是需要在VG中有一些空閒空間來存儲這些快照,並且空間量通常無法預測,這取決於VM在數據傳輸時執行的I/O量發送到存儲,這又取決於I/ O 速率、虛擬磁碟大小和網路容量。在實踐中,我從來沒有遇到任何問題。
我描述了特定的用例,但無論您備份什麼,過程的細節都是相同的。
答案2
使用 Linux LVM 將完整資料備份到單獨的遠端儲存並不容易獨自的。更現實的是 LVM 快照透過其他備份代理複製到其他地方。
我們假設復原設計需要區塊級完整副本,獨立於原始磁碟區組或其成員實體磁碟區。快照很容易做,但是依賴來源VG,不滿足這個要求。 LVM可以鏡像和分割卷,但過程會更複雜。
- 建立 raid1 LV,確保它們的 PV 位於單獨的儲存系統上並同步。
- 將鏡像的影像拆分到新的 LV 中和
lvconvert --splitmirrors
。 - 使用 分割 LV 到不同的 VG
vgsplit
。
雖然這些功能支援主儲存遷移等用例,但它們相對高級,範例較少。此外,向正在備份的主機提供備份區塊設備可能很棘手。
作為額外的區塊層功能,LVM 本身不提供對遠端儲存的存取。當然,使用合適的 SAN,您可以透過光纖通道或 iSCSI 存取共用儲存陣列。這些 LUN 可以用作 LVM PV。這樣做在操作上具有挑戰性,因為許多用例不使用此類 SAN,例如在本機儲存上安裝作業系統。而且這類 SAN 往往距離較短且不能容忍遺失。將鏡像插入到所有內容的保護儲存中可能會產生極高的效能要求,以跟上對主資料庫的寫入。
更常見的是使用其他工具複製快照。源LV快照。在單獨的保護儲存體上建立VG和LV。要么執行基於區塊的備份(例如透過 ssh 進行 dd),要么掛載快照並執行基於檔案的備份。刪除快照LV。