虚拟机迁移指南


1. 确保虚拟机是持久化的

虚拟机必须是持久化的才能进行迁移。如果虚拟机是临时的(transient),需要先将其配置为持久化。

将临时虚拟机转换为持久化虚拟机

如果虚拟机是临时的,可以使用以下命令将其转换为持久化:

1
2
sudo virsh dumpxml mgtest > /tmp/mgtest.xml
sudo virsh define /tmp/mgtest.xml

2. 在线迁移虚拟机

确保虚拟机磁盘缓存设置为 none 或 directsync

编辑虚拟机的 XML 配置文件:

1
sudo virsh edit mgtest

<disk> 部分中添加或修改 <driver> 部分,将 cache 设置为 nonedirectsync,例如:

1
2
3
4
5
6
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/mnt/nfs_share/mgtest.qcow2'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>

保存并退出编辑器。

重启虚拟机

为了使配置生效,需要重启虚拟机:

1
2
sudo virsh shutdown mgtest
sudo virsh start mgtest

进行在线迁移

使用以下命令进行在线迁移:

1
sudo virsh migrate --live mgtest qemu+ssh://192.168.50.235/system

3. 离线迁移虚拟机

确保虚拟机是持久化的

如果虚拟机是临时的,可以使用以下命令将其转换为持久化:

1
2
sudo virsh dumpxml mgtest > /tmp/mgtest.xml
sudo virsh define /tmp/mgtest.xml

关闭虚拟机

1
sudo virsh shutdown mgtest

进行离线迁移

执行离线迁移命令:

1
sudo virsh migrate --offline --persistent mgtest qemu+ssh://192.168.50.235/system

4. 示例流程

检查虚拟机状态

1
sudo virsh list --all

将临时虚拟机转换为持久化(如果需要)

1
2
sudo virsh dumpxml mgtest > /tmp/mgtest.xml
sudo virsh define /tmp/mgtest.xml

关闭虚拟机

1
sudo virsh shutdown mgtest

进行在线迁移

1
sudo virsh migrate --live mgtest qemu+ssh://192.168.50.235/system

进行离线迁移

1
sudo virsh migrate --offline --persistent mgtest qemu+ssh://192.168.50.235/system

5. NFS 配置步骤

服务器端配置

  1. 安装NFS服务器:

    1
    2
    sudo apt-get update
    sudo apt-get install nfs-kernel-server
  2. 创建共享目录:

    1
    2
    3
    sudo mkdir -p /srv/nfs_share
    sudo chown nobody:nogroup /srv/nfs_share
    sudo chmod 777 /srv/nfs_share
  3. 配置NFS导出:

    编辑 /etc/exports 文件,添加共享目录的配置:

    1
    sudo nano /etc/exports

    添加以下内容:

    1
    /srv/nfs_share 192.168.50.0/24(rw,sync,no_subtree_check,no_root_squash)
  4. 导出NFS共享目录:

    1
    sudo exportfs -ra
  5. 启动并启用NFS服务:

    1
    2
    sudo systemctl restart nfs-kernel-server
    sudo systemctl enable nfs-kernel-server

客户端配置

  1. 安装NFS客户端:

    在两个主机上分别安装NFS客户端:

    1
    2
    sudo apt-get update
    sudo apt-get install nfs-common
  2. 创建挂载点目录:

    在两个主机上分别创建挂载点目录,例如 /mnt/nfs_share

    1
    sudo mkdir -p /mnt/nfs_share
  3. 挂载NFS共享目录:

    在两个主机上分别执行以下命令,将NFS共享目录挂载到本地目录:

    1
    sudo mount -t nfs -o rw 192.168.50.100:/srv/nfs_share /mnt/nfs_share
  4. 配置自动挂载(可选):

    为了在系统重启后自动挂载NFS共享目录,可以编辑 /etc/fstab 文件:

    1
    sudo nano /etc/fstab

    添加以下内容:

    1
    192.168.50.100:/srv/nfs_share /mnt/nfs_share nfs defaults 0 0

验证配置

  1. 验证挂载:

    在两个主机上分别执行以下命令,确认NFS共享目录是否成功挂载:

    1
    df -h
  2. 测试读写权限:

    在两个主机上分别尝试在挂载的共享目录中创建文件,确保读写权限正常:

    1
    2
    sudo touch /mnt/nfs_share/testfile
    ls -l /mnt/nfs_share/testfile

通过以上步骤,可以配置和验证NFS共享目录,以便在虚拟机迁移过程中使用。