KVM 虚拟磁盘迁移完整方案
KVM虚拟磁盘迁移两种常用方法
方式一:在线迁移(虚拟机不用关机,推荐)
- 命令格式
bash
virsh blockcopy 虚拟机名 vda /新路径/磁盘.qcow2 --wait --verbose
- vda:虚拟机第一块磁盘设备名,多块盘依次vdb/vdc
- --wait 等待复制完成, --verbose 显示进度
- 复制完成切换磁盘
1. 复制结束后执行切换
bash
virsh blockjob 虚拟机名 vda --finish
2. 编辑虚拟机配置,把磁盘路径改成新路径
bash
virsh edit 虚拟机名
找到
- 确认正常运行后,删除旧磁盘文件。
方式二:离线迁移(虚拟机关机,简单稳定)
- 先关闭虚拟机
bash
virsh shutdown 虚拟机名
确认关机
virsh domstate 虚拟机名
- 复制磁盘镜像(二选一)
① cp 普通复制
bash
cp /旧目录/xxx.qcow2 /新目录/xxx.qcow2
② qemu-img convert(可同时转换格式/压缩)
bash
qemu-img convert -O qcow2 /旧路径/源盘.qcow2 /新路径/目标盘.qcow2
- 修改虚拟机XML配置
bash
virsh edit 虚拟机名
修改磁盘source file路径到新位置,保存。
- 启动虚拟机验证
bash
virsh start 虚拟机名
运行正常后删除旧磁盘文件。
方式三:存储池迁移(用libvirt存储池管理)
1. 定义新存储池,启动池
2. 移动镜像到存储池目录
3. edit虚拟机修改磁盘路径
补充要点
1. 迁移快照盘:有快照链不要直接cp,优先用 blockcopy 或 qemu-img convert 合并快照;
2. NFS共享存储迁移:直接复制,注意权限;
3. 迁移后报错:检查文件读写权限、SELinux上下文。