跨多个节点进行备份和恢复
在多个 pve 节点之间进行虚拟机的备份和恢复,以便快速创建虚拟机
背景
有多台机器安装有 pve 8.0, 但是由于这些机器不是24小时在线,而是按需开机。
按照 pve 标准的做法, 应该建立一个 cluster 集群,然后将所有机器都加入集群,之后就可以在任意一台机器的pve控制台操作集群内的任意机器,还可以在集群内跨节点的执行一些操作和配置。比如 clone 和 migrate 虚拟机和模板。
但因为我的机器不是 24 小时在线,如果建立并加入集群,那么当有大部分机器没有在线时,会因为 法定人数 不足造成无法锁定集群配置进行写操作,恶劣时连虚拟机都无法启动。
因此,不得已只能让每个节点都成为独立节点,不建立 pve 的集群。
当这样一来就无法使用到 pve 集群的跨节点功能,比如这篇文章中涉及到的在多个 pve 节点之间进行虚拟机的备份和恢复,以便实现快速复制虚拟机和模板。
解决方案和思路
尝试找到方便可行速度快的解决方案,首先考虑的就是利用虚拟机的备份和恢复功能。
- 虚拟机备份之后,可以得到文件大小10-20G级别的 vma 文件
- 这些 vma 文件可以以普通二进制文件的方式下载/保存/上传,方便在多个pve节点之间分发虚拟机的 vma 文件
- 将 vma 文件上传到 pve 节点后,可以通过恢复功能得到本地存储上运行的虚拟机或者模板
- 之后本地存储上的虚拟机或者模板就可以用 pve 自己的 clone 功能进行复制
因此,这个方案的关键在于如何快速的在不同 pve 节点之间分发 vma 文件,由于文件大小有 10-20g 级别, 因此必须考虑节点间的文件传输速度。
节点间文件传输
scp 命令
scp 命令按说是最简单直接的方案,pve 自带随时可以使用。
测试速度结果如下:
- 2.5G 网络: 实际测试文件传输速度约为 220 MB/s, 19GB的 vma 文件用时 86 秒
- 56G 网络: 实际测试文件传输速度约为 290 MB/s, 19GB的 vma 文件用时 64 秒
56G 网络下的速度有点离谱,感觉有其他的瓶颈。