示例版本:Virtual Environment 7.1-10+ 请根据版本酌情参考
目前只能及以前通过命令行在 VM 之间移动磁盘。在大多数情况下,将磁盘移动到不同的 VM 就像将配置行从一个文件移动到另一个文件并重命名文件或卷一样简单。
⚠️但是,在某些情况下必须特别小心(尤其是在使用 LVM 存储时)⚠️
以下整理一些情况需要用到的情况
1、将磁盘移动到其他存储
如果想将虚拟机磁盘映像移动到不同的存储,这是最简单的,因为可以通过 WebGUI 进行操作
关闭保护模式
如果你的虚拟机正处在保护模式,请暂时关闭它
移动磁盘
如果目标存储碰巧在 PVE 主机上不可用,因为您要将磁盘移动到不同的集群成员,您需要首先将磁盘移动到共享存储,然后在此处执行其余步骤,然后使用GUI 再次将磁盘移动到最终目标存储。
如果目标主机不是同一个集群的一部分,您甚至可以这样做,前提是可以在它们之间使用一些共享存储。请注意,不建议在多个集群上使用相同的存储,并且只能作为临时措施,并且必须注意避免存储上的 VMID 冲突。
如果上述方法对您不起作用,最简单的方法是将磁盘移动到 .qcow2 格式的基于目录的存储,然后手动将其移动到目标主机上的目录存储,将其添加到目标 VM 并将其移动到目标存储在最后。
以下步骤假设磁盘位于同一主机上。
2、迁移VM的磁盘映像
这个操作类似公有云磁盘卸载和挂载,已达到磁盘迁移的目的
🌰:VMID为143的VPS磁盘想移动到VMID为144的VPS使用
关闭保护模式
如果你的俩台目标虚拟机正处在保护模式,请暂时关闭它,并关机
分离磁盘
复制配置信息
SSH中找到原VMID143的配置文件
cat /etc/pve/qemu-server/143.conf
并找到以下行:
unused0: local-lvm:vm-143-disk-0
复制备用
重命名/移动 磁盘
仅磁盘包含 VM ID 时才需要此步骤,大多数存储类型都会包含VM ID,不包含VM ID的磁盘一般为直通的磁盘是不需要本页面所有操作的
⚠️移动磁盘的操作大概有4大类,每一类的操作是不通用的,请谨慎判断 ⚠️
常见的存储类型有3种(LVM-thin,directory,ZFS)
常用的有2种(LVM-thin,directory)
默认的有1种(LVM-thin),还有一种(ceph)
- 如何判断 directory (Directory, NFS, Gluster) 此种类型的磁盘镜像有非常明显的后缀
.qcow2
- 如何判断 LVM-thin 这是ProxmoxVE种默认的磁盘存储格式 它的命名没有后缀名为
vm-143-disk-1
默认存储位置为/dev/pve/
下 - 如何判断 ZFS 和 ceph 这里不多说,能吧ZFS/ceph组建出来 自然能知道和区分
当然,WebGUI中的磁盘信息也能看到是什么类型的存储
除了LVM-thin 的位置一般默认/dev/pve/
下 其他类型都会因配置设定的区别而有区别,不妨在SSH下使用find
命令找一下
find / -name vm-*-disk-*
关于磁盘的命名规则,在目前ProxmoxVE版本下磁盘的命名规则如下
🌰 vm-144-disk-1
解读 格式为 vm-<VM ID>-disk-<Disk No.>
directory(Directory, NFS, Gluster)移动方法
找到目标文件。例如,假设磁盘在WebGUI中标识为:local:vm-143-disk-1.qcow2
在SSH命令中也可使用pvesm path
准确获取该磁盘路径,当然懒人方法还是find
大法
pvesm path 'local:vm-143-disk-1.qcow2'
返回
/var/lib/vz/images/143/vm-143-disk-1.qcow2
移动到VMID144内并重新命名
mv /var/lib/vz/images/143/vm-143-disk-1.qcow2 /var/lib/vz/images/144/vm-144-disk-1.qcow2
LVM (thin) 移动方法
找到目标文件。例如,假设磁盘在WebGUI中标识为:local:vm-143-disk-1
在SSH命令中也可使用pvesm path
准确获取该磁盘路径,当然懒人方法还是find
大法
pvesm path 'local:vm-143-disk-1'
返回
/dev/pve/vm-143-disk-0
LVM (thin) 的移动方法并不是使用mv
命令,而是使用lvrename
命令,且该命令必须带完整路径
lvrename /dev/pve/vm-143-disk-0 /dev/pve/vm-144-disk-0
返回
Renamed "vm-143-disk-0" to "vm-144-disk-0" in volume group "pve"
ZFS移动方法
假设存储名为 tank
,池属性为 tank/host/vms
,磁盘标识:tank:vm-143-disk-1
zfs rename tank/host/vms/vm-143-disk-1 tank/host/vms/vm-144-disk-1
ceph移动方法
假设池名为 rbd
磁盘标识: myceph:vm-400-disk-1
,并且在地址 1.2.3.4
有一个监视器,我们使用以下命令
rbd -m 1.2.3.4 -n client.admin --keyring /etc/pve/priv/ceph/myceph.keyring --auth_supported cephx mv rbd/vm-143-disk-1 rbd/vm-144-disk-1
如果您只有一个 ceph 存储,位于 PVE 集群的本地,或者具有本地 ceph 配置以便于维护,您可以将此命令缩短为
rbd mv rbd/vm-143-disk-1 rbd/vm-144-disk-1
更新配置文件
操作完以上移动之后,接下来就是更新配置文件了
nano /etc/pve/qemu-server/144.conf
再次找到上一步 复制配置信息 步骤中复制备用的配置并修改VMID
进去 unused0: local-lvm:vm-144-disk-0
,将该行配置添加到新VPS的配置144.conf
中。
记得还需要在老配置文件/etc/pve/qemu-server/143.conf
中删除对应的unused0: local-lvm:vm-143-disk-0
配置信息
⚠️配置条目可能有所不同,请务必按照老配置文件中的参数进行调整!勿照搬 ⚠️
在新的VPS中挂载磁盘
刷新WebGUI,此时进入VMID144中可看到新的未使用的磁盘,双击它并进行相应调整即可挂载