8-1-4-1
ZFS send / receive 將 zfs 分割區 直接複製
簡要說明:
- 製作快照:將要傳送的資料池(dataset, 相當於分割區的概念)製作快照
- 將製作的快照傳送到另一台主機(pve)
實作:
- 將虛擬機 LXC 201 的 dataset VM2/vz/subvol-201-disk-1 先建立快照
zfs snapshot VM2/vz/subvol-201-disk-1@today-2017-01-17
- 將虛擬機 LXC 201 的
dataset VM2/vz/subvol-201-disk-1@today-2017-01-17
直接以zfs 複製/備份 到
另一台主機 pve 的 VM1/vz/ 底下的 dataset subvol-101-disk-1
來源:本 機 LXC 201
zfs dataset:VM2/vz/subvol-201-disk-1@today-2017-01-17
目的:遠端主機 pve LXC 101
zfs dataset:VM1/vz/subvol-101-disk-1
開始傳送
# zfs send VM2/vz/subvol-201-disk-1@today-2017-01-17 \
| ssh pve zfs receive VM1/vz/subvol-101-disk-1
說明:
- 1.zfs zfs檔案系統提供的處理指令
- @today-2017-01-17 dataset 因為還掛載於系統上(使用中),所以先製作快照,zfs會將這個dataset 的時間點快照複製到遠端主機,這樣才不會影響到系統對這個dataset的讀寫
- send 傳送
- ssh pve 透過ssh 連線到 主機 pve
- receive 接收
- 遠端主機(接收方)的目的 dataset (VM1/vz/subvol-101-disk-1)原本不存在,zfs會自動建立。
- 但遠端目的dataset文件系統若已經存在,為避免將遠端覆蓋zfs會自動停止傳送,可加上 -F 參數強制 覆蓋.
# zfs send VM2/vz/subvol-201-disk-1 | \
ssh pve zfs receive VM1/vz/subvol-101-disk-1 -F
- 將虛擬機設定檔(201.conf)複製到遠端主機,並更名為 101.conf
# scp /etc/pve/lxc/201.conf root@pve:/etc/pve/lxc/101.conf
修改複製到遠端主機的虛擬機的設定檔
# ssh root@pve
# pico /etc/pve/lxc/101.conf
依不同主機的zfspool Storage及 dataset 將第1行修改成第2行
本機端的設定:
onboot: 1
rootfs: PVE2:subvol-201-disk-1,size=6G
遠端主機的設定
onboot: 0
rootfs: PVE:subvol-101-disk-1,size=6G
這樣,同一台虛擬機就完成備份在兩台不同實體 Proxmox VE 主機。
下次要再同步備份時只要執行
# zfs send VM2/vz/subvol-201-disk-1 | \
ssh pve zfs receive VM1/vz/subvol-101-disk-1 -F
就能將虛擬機在兩台實體主機之間同步。(來源端)
說明:
- onboot:1 Proxmox VE 實體主機開機時即自動開啟虛擬機
onboot:0 Proxmox VE 實體主機開機時 不開啟虛擬機
避免兩台(以上)的Proxmox VE 實體主機開機時會開啟相同的的虛擬機,造成看到的虛擬機或登打的資料不同步的問題。
- 下次要同步步驟
- 製作快照
- 傳送快照到pve主機