AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 823503
Accepted
Fırat KÜÇÜK
Fırat KÜÇÜK
Asked: 2016-12-31 23:48:38 +0800 CST2016-12-31 23:48:38 +0800 CST 2016-12-31 23:48:38 +0800 CST

从 LVM 到文件系统后端的 KVM Live 或 Near-Live 迁移

  • 772

我的客户机有 2 个分区(80GB + 1TB)。它们都在 LVM 上。我想以最短的停机时间将所有磁盘转移到另一台机器上。我用nc转移了另一台机器。这需要 4 天,在传输过程中我的虚拟机已关闭。

我尝试在传输脏页后制作快照。但是使用 LVM 的 AFAIK 是不可能的。我的目标机器没有 LVM 设置和可用的未分区空间。所以目标机器上的磁盘必须是原始文件映像。

<disk type='block' device='disk'>
  <driver name='qemu' type='raw' cache='none'/>
  <source dev='/dev/vg-datastore/lv-vm-1138'/>
  <target dev='vda' bus='virtio'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>
<disk type='block' device='disk'>
  <driver name='qemu' type='raw' cache='none'/>
  <source dev='/dev/vg-datastore-sata/lv-vm-1138-2'/>
  <target dev='vdb' bus='virtio'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</disk>

源主机:

  • CPU:Intel(R) Xeon(R) CPU D-1520 @ 2.20GHz
  • 操作系统:16.04.1 LTS
  • 内核:4.2.0-34-generic
  • qemu-kvm: 1:2.3+dfsg-5ubuntu9.2
  • QEMU:2.3.0
  • libvirt:1.2.16

目标主机:

  • CPU:Intel(R) Xeon(R) CPU D-1520 @ 2.20GHz
  • 操作系统:16.04 LTS
  • 内核:4.4.0-28-generic
  • qemu-kvm: 1:2.5+dfsg-5ubuntu10.2
  • QEMU:2.5.0
  • libvirt:1.3.1
migration kvm-virtualization live-migration
  • 1 1 个回答
  • 5703 Views

1 个回答

  • Voted
  1. Best Answer
    shodanshok
    2017-01-01T12:48:52+08:002017-01-01T12:48:52+08:00

    KVM/libvirt 支持 VM 实时迁移和存储迁移(无共享设置),尽管有一些限制。您的主要问题是存储池具有不同的配置,因此我不确定是否libvirt会毫无问题地迁移 VM 映像。

    进行实时迁移 + 存储副本的命令是:

    virsh 迁移 --live --copy-storage-all --persistent qemu+ssh://root@/system

    此命令假定您与远程主机有一个有效的基于 libvirt 的连接。

    如果您在迁移虚拟磁盘时遇到问题,您可以尝试创建存根目标虚拟磁盘文件,并执行(在目标主机上)类似于fallocate /dev/vg-datastore/lv-vm-1138 -l 80Gand的内容/dev/vg-datastore-sata/lv-vm-1138-2 -l 1T。

    无论如何,由于主机之间的差异,这可能是一条崎岖不平的道路。

    迁移 VM 映像的更简单方法是使用增量磁盘复制方法,使用blocksync. 简而言之:

    • 当 VM 运行时,将虚拟磁盘的第一个副本复制到目标主机。第一个副本将是不连贯且不可靠的,但将作为下一个副本的“种子”;
    • 在适当的时候,关闭 VM 并执行虚拟磁盘的第二个副本。第二个副本将只传输更改的块,它会比第一个快得多;
    • 完成后,定义虚拟域并在目标主机上启动 VM。

    请注意,链接的blocksync程序是基于此原始脚本的个人分叉版本(顺便说一句,它是此脚本的改进版本)。我显然对代码不承担任何责任,我强烈建议您在将其用于生产虚拟机/磁盘文件之前对其进行彻底测试。与往常一样,在做任何事情之前,您必须有一个确认良好的备份。

    编辑:正如下面评论中所建议的,另一个同步块设备/虚拟图像文件的好软件是bdsync. 方法基本相同:在 VM 运行时获取磁盘文件的第一个“种子”副本,然后停止 VM 并进行另一个最终副本。过去我什至向bdsync开发人员询问过类似的问题;请参阅此处了解更多信息。

    • 7

相关问题

  • Linux 主机到主机迁移

  • 移至新的 Exchange 组织

  • 如何在 Windows 2003 Server 中获取激活密钥

  • 如何从 SQL Server 2005 迁移到 2008

  • 将 Bugzilla 迁移到 Team Foundation Server (TFS) 的方法或工具

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve