QEMU Live-Migration Demo

我们来做一个简单的迁移demo,两台机器的环境都是Centos7,虚拟化组件都是系统默认;步骤如下:

使用NFS做一个共享存储,setup nfs方法如下:

On server
service rpcbind start
service nfs start
service nfslock start

/foo 10.1.10.100(rw,sync,no_root_squash,no_subtree_check,insecure)
exportfs -a

On client
service rpcbind start
firewall-cmd --add-service=nfs
firewall-cmd --add-service=rpc-bind
firewall-cmd --add-service=mountd

在迁移的两台机器上,创建相同的目录,例如:/media/nfs,然后分别进行挂载;

注意:我在测试的时候,其中一台作为nfs server,另外一台作为nfs client;做nfs server的那台使用了 127.0.0.1进行了挂载,如果直接使用本地目录,libvirt会报错:

error: Unsafe migration: Migration without shared storage is unsafe

创建虚拟机命令如下:

name=will1

virt-install  --name=$name  --ram=$((16<<10))  --vcpus=8 \
--location=/media/disk0/VMs/CentOS-7-x86_64-DVD-2207-02.iso \
--os-type=linux \
--disk path=/media/disk1/VMs/${name}_sda.qcow2,format=qcow2,size=64 \
--console pty,target_type=serial --extra-args 'console=ttyS0,115200n8 serial' \
--network bridge=virbr0 --network user --graphics none

但是,在执行迁移时,报了如下错误:

error: Unsafe migration: Migration may lead to data corruption if disks use cache != none or cache != directsync

所以,使用virsh edit加入了cache=none

<driver name='qemu' type='qcow2' cache='none'/>

执行迁移的命令为:

virsh migrate will1 qemu+ssh://192.168.60.154/system tcp://192.168.60.154 --live --verbose

注意,如果没有tcp://192.168.60.154,在我的环境里回报错:

error: Unable to resolve address 'xxxxx' service '49152': Name or service not known

迁移成功之后:

virsh migrate will1 qemu+ssh://10.18.60.154/system tcp://10.18.60.154 --live --verbose 
root@192.168.60.154's password: 
Migration: [100 %]
virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     will0                          shut off
 -     will1                          shut off


在另外一台机器上:
virsh list --all
 Id    Name                           State
----------------------------------------------------
 32    will1                          running
 -     rocky9.2                       shut off
 -     test0                          shut off
 -     test1                          shut off

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你在编译后运行`qemu --version`命令时,无法识别`qemu`命令,可能是因为`qemu`的可执行文件没有正确地添加到系统的可执行路径中。你可以尝试以下几个步骤来解决这个问题: 1. 确认编译成功:首先,请确保你已经成功地编译了`qemu`。编译过程可能会有一些依赖项和配置选项,你需要按照官方文档或编译说明进行操作。 2. 检查可执行文件路径:确认编译后的`qemu`可执行文件所在的路径。你可以使用`ls`命令或者文件管理器来查找该文件。通常情况下,编译后的可执行文件位于`build`目录或者指定的安装目录中。 3. 添加到系统路径:将`qemu`的可执行文件所在的路径添加到系统的可执行路径中。这样系统就能够正确地找到并执行`qemu`命令。具体的步骤可能因操作系统而异,以下是一些常见操作系统的示例: - Linux/macOS:可以将`qemu`的可执行文件所在的路径添加到`PATH`环境变量中。可以通过编辑`.bashrc`或`.bash_profile`文件,并在其中添加类似于以下内容的行: ``` export PATH=/path/to/qemu:$PATH ``` 然后保存文件并重新启动终端,或者执行`source .bashrc`或`source .bash_profile`命令使环境变量生效。 - Windows:可以将`qemu`的可执行文件所在的路径添加到系统的环境变量中。可以通过以下步骤进行操作: - 在桌面上,右键点击"此电脑"(或"我的电脑"),选择"属性"。 - 在弹出的窗口中,点击"高级系统设置"。 - 在"系统属性"窗口中,点击"环境变量"按钮。 - 在"环境变量"窗口中,找到"Path"变量,并点击"编辑"。 - 在弹出的窗口中,点击"新建",然后输入`qemu`的可执行文件所在的路径。 - 点击"确定"保存修改,并关闭所有窗口。 - 重新启动命令提示符或PowerShell窗口,然后尝试运行`qemu --version`命令。 如果你按照上述步骤操作后仍然无法解决问题,请提供更多详细信息,例如你的操作系统、编译过程中的任何错误信息等,以便我能够更好地帮助你。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值