
我想以這種dd
方式在 LVM2 邏輯磁碟區的外部磁碟機上進行備份。
我考慮的方法是
- 在外部磁碟機上製作相同大小的 lv
- 複製與
dd
(如果您發現這種方法確實有問題,請告訴我。我需要可靠且快速的東西。)
我想使整個流程自動化;這就是我所擁有的:
# Sanity check that lv is not used
lvuses="$( lvdisplay -c /dev/mapper/vgA-AA | cut -d ':' -f 6 )"
if [ $lvuses -gt 0 ]; then exit 1 ; fi
#obtain lv size (in sectors)
lvsize="$( lvdisplay -c /dev/mapper/vgA-AA | cut -d ':' -f 7 )"
#create destination
lvcreate -L "${lvsize}s" vgB -n BB || exit 1
# copy
dd if=/dev/mapper/vgA-AA of=/dev/mapper/vgB-BB
沒關係?我錯過了什麼嗎?
(在我的例子中,vgA-AA是LVM快照,我想將其備份到外部磁碟機並將該磁碟機帶到其他地理位置)
答案1
您的腳本看起來不錯,但我會使用不同的方法:創建一個鏡像,然後破壞它。據我所知,您可以在線完成此操作。未經測試:
lvconvert -m /dev/mapper/vgA-AA /dev/sdz98 /dev/sdz99
lvconvert --splitmirrors 1 --name BB /dev/mapper/vgA-AA
如果您想將新的邏輯磁碟區移至不同的磁碟區組,我認為您必須確保要傳送的 LV 位於其自己的實體磁碟區上,並將 PV 從一個 VG 轉移到另一個與vgsplit
.
答案2
不要使用dd
.它是一種愚蠢的動物,會複製卷中的所有內容,包括可用空間,並產生與原始檔案系統具有相同 UUID 的檔案系統,這可能會混淆系統。相反,請使用像partclone
Ghost4linux 這樣的工具,或者fsarchiver
可以將系統複製到壓縮映像檔並跳過空閒區塊的工具。
答案3
- 掛載外部磁碟
- 停止應用程式
- 檢查檔案系統是否未使用($ sudo fusion -M /path/to/filesystem/mountpoint)
- 建立快照($ sudo lvcreate -s ......)
- 開始申請
- 使用 rsync 進行備份(檢查 man rsync 的 --update 和 --link-dest)
- 或檢查http://dirvish.org或者http://backuppc.sourceforge.net/用於實施
- 卸載外部磁碟
- 刪除快照 LV 此程序會在每個備份的外部磁碟上建立一個目錄。它僅從來源磁碟複製已更改/新文件,並透過在備份之間硬連結重複文件來節省空間。
答案4
可靠且快速。我推薦 LVM 快照。
它的速度非常快,您可以保證備份在備份過程中不會發生任何檔案變更。另外,如果您的捲上有資料庫,則無需將其離線。
這也是測試音量變化的好方法。對其進行快照,進行更改,但您無法將快照合併回來。如果成功,您將刪除快照。
編輯:程式碼
lvcreate -L 10G -s -n snapshot /dev/VG/LV
然後將快照磁碟區備份到您想要的任何位置。
對於檔案系統測試,您可以快照並合併回來。
lvconvert --merge /dev/VG/snapshot
此合併將自動刪除快照磁碟區。
筆記:快照需要kernel version 2.6.33 or newer
和LVM tools 2.02.58 or newer
編輯。連結: