若有使用 Proxmox VE ,且將 VM/LXC 放置在 local-zfs 或 zfs Storage 上,並且以同樣的架構建立兩台以上一模一樣的 PVE 主機(做為同步備份或備援用)時,可以快速直接在數秒的時間裡同步到另一台 pve 主機
1.將虛擬機建立快照 1
./sendlxc-copy create 01
2.第 1 次以 zfs send/receive 指令直接將該虛擬機的快照傳送到另一台 pve 主機 2
./sendlxc-copy copy 01 2 2017-08-01
3.再次建立快照 2
./sendlxc-copy create 01
4.接下來每次同步時只需傳送快照 1 和快照 2 之間的差異到 pve 主機 2
./sendlxc-copy autoupdate 01 2
5. 每次以差異性快照同步後,每一次的快照在本機與遠端主機都會同步存在,也就是說 本機與遠端主機皆儲存每一次的快照版本,在需要的時候可以 rollback 回溯到過去的版本
./sendlxc-copy list 01 2
環境建立:
# PVE 主機五部(最少 2 部主機):
# 主機 1 : hostname 為 pve, 虛擬機代號 100-199 指定在 node[1],所以虛擬機的代號組成為 1xx
# 主機 2 : hostname 為 pve2, 虛擬機代號 200-299 指定在 node[2],所以虛擬機的代號組成為 2xx
# 主機 3 : hostname 為 pve3, 虛擬機代號 300-399 指定在 node[3],所以虛擬機的代號組成為 3xx
# 主機 4 : hostname 為 pve4, 虛擬機代號 400-499 指定在 node[4],所以虛擬機的代號組成為 4xx
# 主機 5 : hostname 為 pvefs,虛擬機代號 500-599 指定在 node[5],所以虛擬機的代號組成為 5xx
# hostname 請在每一部 pve 主機的 /etc/hosts 中建立完成的 hostname 與 ip 的對應設定
# 這個部份不要透過 dns ,以避免萬一 dns 掛點時各 pve 主機間仍然能正常連線
# 檔案系統:
# 1.在安裝時選擇以 zfs raid0 或 raid1 方式安裝,在開機碟上會建立 local-zfs Storage
# 2.或額外安裝第 2 顆硬碟,以 zfs 予以格式化後在 pve 上掛載為 zfs Storage
# 虛擬機:
# 1.全部存放在 local-zfs 或 ZFS Stoage 上,以 block-base 的方式儲存
# 這樣才能使用 zfs 的快照/差異性異機備份功能
#
# 虛擬硬碟:
# 目前虛擬機在不同主機之間 dataset 是 3 個 dataset ,若使用超過 3 個以上的 dataset
# 可能您需要自行增添部份程式碼(很簡單的)
# 同步:
# 在 1 台 pve 主機上建立虛擬機 101 後,
# 再以 backup 的方式建立虛擬機備份檔(vzdump-lxc-101...或 vzdump-qemu-101...)
# 以 scp 傳送到主機 pve2,
# 接著在 pve2 主機上先 touch /etc/pve/lxc/201.conf 後再以流灠器
# 登入 https://pve2ip:8006 手動方式將虛擬機還原
# 到 zfs Storage 或 local-zfs
-------------------------------------------------------------------
虛擬機差異性快照 update 程序:
語法:
建立快照:建立本機 虛擬機的快照
./sendlxc-copy create vmid
./sendlxc-copy create 01
-------------------------------------------------------------------
快照版本查詢:查詢 虛擬機 本機端與遠端最後兩個快照的版本列表
./sendlxc-copy list vmid 遠端主機名
./sendlxc-copy list 01 1|2|3|4|5
-------------------------------------------------------------------
整機傳送:適用於第 1 次將虛擬機快照複製到另一台主機(遠端需先建立虛擬機)
./sendlxc-copy copy vmid 遠端主機名 快照名稱
./sendlxc-copy copy 01 1|2|3|4|5 2017-08-01
-------------------------------------------------------------------
差異性傳送:手動指定
./sendlxc-copy update vmid 遠端主機名 快照名稱 1 快照名稱 2
./sendlxc-copy update 01 1|2|3|4|5 2017-08-01 2017-08-31
-------------------------------------------------------------------
差異性傳送:自動指定/遠端主機快照更新至本機最新快照
./sendlxc-copy autoupdate vmid 遠端主機名 遠端快照版本 本機快照版本
./sendlxc-copy autoupdate 01 1|2|3|4|5 2017-08-01 2017-08-31
-------------------------------------------------------------------
#!/bin/bash # 版本日期:2017-09-11 # 環境建立: # PVE主機五部: # 主機1:hostname為pve, 虛擬機代號 100-199 指定在 node[1],所以虛擬機的代號組成為 1xx # 主機2:hostname為pve2, 虛擬機代號 200-299 指定在 node[2],所以虛擬機的代號組成為 2xx # 主機3:hostname為pve3, 虛擬機代號 300-399 指定在 node[3],所以虛擬機的代號組成為 3xx # 主機4:hostname為pve4, 虛擬機代號 400-499 指定在 node[4],所以虛擬機的代號組成為 4xx # 主機5:hostname為pvefs,虛擬機代號 500-599 指定在 node[5],所以虛擬機的代號組成為 5xx # hostname 請在每一部pve主機的 /etc/hosts 中建立完成的 hostname 與 ip 的對應設定 # 這個部份不要透過dns,以避免萬一dns掛點時各pve主機間仍然能正常連線 # 檔案系統: # 1.在安裝時選擇以 zfs raid0或raid1 方式安裝,在開機碟上會建立 local-zfs Storage # 2.額外安裝第2顆硬碟,以zfs予以格式化後在 pve 上掛載為 zfs Storage # 虛擬機: # 1.全部存放在 local-zfs 或 ZFS Stoage 上,以 block-base 的方式儲存 # 這樣才能使用 zfs 的快照/差異性異機備份功能 # # 虛擬硬碟: # 目前虛擬機在不同主機之間 dataset 是3個dataset,若使用超過3個以上的dataset # 可能您需要自行增添部份程式碼(很簡單的) # # 同步: # 在1台pve主機上建立虛擬機101後, # 再以 backup 的方式建立虛擬機備份檔(vzdump-lxc-101...或 vzdump-qemu-101...) # 以 scp 傳送到主機 pve2, # 接著在pve2主機上先 touch /etc/pve/lxc/201.conf 後再以流灠器 # 登入 https://pve2ip:8006 手動方式將虛擬機還原 # 到 zfs Storage或local-zfs上,將每一部pve主機上都有相同代號的vm(末兩位數相同) clear function set_name_var() { # 本function 是建立變數設定值之用 # ---------------------------------------------------------------- # ----以下是手動設定的部份開始 # ---------------------------------------------------------------- # pve 主機群的 hostname , 也可以使用ip node[1]=pve; node[2]=pve2; node[3]=pve3; node[4]=pve4; node[5]=pvefs #node[1]=10.200.0.1; node[2]=10.200.0.2; node[3]=10.200.0.3; node[4]=10.200.0.4; #node[5]=10.200.0.5 #-------------- # 本機代號 這裡要修改主機的 hostname 是在 node[1-5] 裡的那一台 source_pve=1 # <--- 這裡要手動指定本機代號 # --------------------------------------------------------------------- # LXC dataset path 路徑 若是使用 local-zfs Storage 的話,那麼路徑為 rpool/data/subvol- # 以下這些 dataset 的路徑皆是自建的,可使用 zfs list 指令查詢 LXC_path[1]=VM1/vz/subvol-; LXC_path[2]=VM2/vz/subvol-; LXC_path[3]=VM3/vz/subvol-; LXC_path[4]=VM4/vz/subvol-; LXC_path[5]=VMFS/vz/subvol-; #LXC_path[1]=rpool/data/subvol-; LXC_path[2]=rpool/data/subvol-; LXC_path[3]=rpool/data/subvol-; #LXC_path[4]=rpool/data/subvol-; LXC_path[5]=rpool/data/subvol-; # --------------------------------------------------------------------- # VM dataset path 路徑徑 若是使用 local-zfs Storage 的話,那麼路徑為 rpool/data/vm- VM_path[1]=VM1/vz/vm-; VM_path[2]=VM2/vz/vm-; VM_path[3]=VM3/vz/vm-; VM_path[4]=VM4/vz/vm-; VM_path[5]=VMFS/vz/vm-; #VM_path[1]=rpool/data/vm-; VM_path[2]=rpool/data/vm-; VM_path[3]=rpool/data/vm-; #VM_path[4]=rpool/data/vm-; VM_path[5]=rpool/data/vm-; # --------------------------------------------------------------------- # ---------- 以下 虛擬機dataset 與 虛擬機型態依實際數量新增或減少 ----- # --------------------------------------------------------------------- # 虛擬機 dataset 數量 # 虛擬機型態 - 目前只支援LXC型態,或是把LXC_path改成vm的dataset路徑來使用 VMLXCid[01]=1; VMLXCidtype[01]=LXC; # 虛擬機說明 VMLXCid[02]=1; VMLXCidtype[02]=LXC; # 虛擬機說明 VMLXCid[03]=1; VMLXCidtype[03]=LXC; # 虛擬機說明 VMLXCid[04]=1; VMLXCidtype[04]=LXC; # 虛擬機說明 VMLXCid[05]=1; VMLXCidtype[05]=LXC; # 虛擬機說明 VMLXCid[07]=; VMLXCidtype[07]=LXC; # 虛擬機說明 VMLXCid[10#08]=; VMLXCidtype[10#08]=LXC; # 虛擬機說明 VMLXCid[10#09]=; VMLXCidtype[10#09]=LXC; # 虛擬機說明 VMLXCid[10]=1; VMLXCidtype[10]=LXC; # 虛擬機說明 VMLXCid[11]=1; VMLXCidtype[11]=LXC; # 虛擬機說明 VMLXCid[12]=1; VMLXCidtype[12]=LXC; # 虛擬機說明 VMLXCid[14]=1; VMLXCidtype[14]=LXC; # 虛擬機說明 VMLXCid[15]=1; VMLXCidtype[15]=LXC; # 虛擬機說明 VMLXCid[16]=1; VMLXCidtype[16]=LXC; # 虛擬機說明 VMLXCid[17]=2; VMLXCidtype[17]=LXC; # 虛擬機說明 VMLXCid[99]=1; VMLXCidtype[99]=LXC; # 虛擬機說明 VMLXCid[51]=1; VMLXCidtype[51]=VM # 虛擬機說明 VMLXCid[52]=1; VMLXCidtype[52]=VM # 虛擬機說明 VMLXCid[53]=2; VMLXCidtype[53]=VM # 虛擬機說明 VMLXCid[54]=1; VMLXCidtype[54]=VM # 虛擬機說明 VMLXCid[55]=4; VMLXCidtype[55]=VM # 虛擬機說明 VMLXCid[61]=2; VMLXCidtype[61]=VM # 虛擬機說明 VMLXCid[62]=2; VMLXCidtype[62]=VM # 虛擬機說明 VMLXCid[64]=2; VMLXCidtype[64]=VM # 虛擬機說明 # ----------------------------------------------------------------------- # --------------------------- 手動設定 結束 ----------------------------- # -----------------------------------------------------------------------