Libvirt 迁移标志详解

可参考:https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainMigrateFlags
在虚拟化环境中,迁移是一项重要的功能,Libvirt 提供了一系列标志,用于控制迁移过程中的不同行为。以下是 virDomainMigrateFlags 枚举的详细解释:

  1. VIR_MIGRATE_LIVE (1):

    • 含义: 在迁移过程中不挂起域,且包含虚拟机的内存状态。如果域内存变化速度比传输速度快,那么迁移将无法收敛。迁移过程中随时可以通过 virDomainSuspend 手动暂停域。对应 virsh 中的 --live 参数。
  2. VIR_MIGRATE_PEER2PEER (2):

    • 含义: 告诉源 libvirtd 直接连接目标主机。如果没有此标志,客户端(如 virsh)将连接到两个主机并控制迁移过程。在点对点模式下,源 libvirtd 通过直接调用目标主机的 libvirtd 来控制迁移过程。对应 virsh 中的 --p2p 参数。
  3. VIR_MIGRATE_TUNNELLED (4):

    • 含义: 通过 libvirtd 连接隧道迁移数据。如果没有此标志,源 hypervisor 直接将迁移数据发送到目标 hypervisor。此标志仅在设置 VIR_MIGRATE_PEER2PEER 时使用。对应 virsh 中的 --tunnelled 参数。
  4. VIR_MIGRATE_PERSIST_DEST (8):

    • 含义: 在成功迁移后,将域定义为在目标主机永久存在。如果域在源主机上持久化,并且未使用 VIR_MIGRATE_UNDEFINE_SOURCE,则该域将在两个主机上存在。对应 virsh 中的 --persistent 参数。
  5. VIR_MIGRATE_UNDEFINE_SOURCE (16):

    • 含义: 在成功迁移后,在源主机取消定义域。对应 virsh 中的 --undefinesource 参数。
  6. VIR_MIGRATE_PAUSED (32):

    • 含义: 使域在目标主机上保持挂起状态。必须显式使用 virDomainResume(在迁移 API 返回的 virDomainPtr 上)才能恢复域运行。对应 virsh 的 --suspend 参数。
  7. VIR_MIGRATE_NON_SHARED_DISK (64):

    • 含义: 除了域的内存外,还可以迁移完整的磁盘镜像。默认情况下,仅迁移非共享、非只读的磁盘镜像。VIR_MIGRATE_PARAM_MIGRATE_DISKS 参数可以指定要迁移的磁盘。此标志与 VIR_MIGRATE_NON_SHARED_INC 互斥。对应 virsh 的 --copy-storage-all 参数。
  8. VIR_MIGRATE_NON_SHARED_INC (128):

    • 含义: 除迁移域内存外,还要迁移磁盘镜像。该标志与 VIR_MIGRATE_NON_SHARED_DISK 类似,但仅复制每个磁盘链的顶层。也就是说,磁盘链的其余部分都应该默认存在于目标主机上,且与源主机完全相同。此标志与 VIR_MIGRATE_NON_SHARED_DISK 互斥。对应 virsh 的 --copy-storage-inc 参数。
  9. VIR_MIGRATE_CHANGE_PROTECTION (256):

    • 含义: 禁止在迁移过程中更改域配置。当双方都支持时,会自动使用此标志。如果有一方不支持,显示设置此标志会导致迁移失败。对应 virsh 的 --change-protection 参数。
  10. VIR_MIGRATE_UNSAFE (512):

    • 含义: 即使它被判定为不安全的,仍强制进行迁移。在某些情况下,libvirt 可能会拒绝迁移域,因为这样做可能会导致数据损坏等

潜在问题,因此迁移会被认为是不安全的。对于 QEMU 域,如果该域使用磁盘,且未将缓存模式显示设置为 “none”,则可能会发生这种情况。迁移这些域是不安全的,除非磁盘镜像存储在一致的集群文件系统上,例如 GFS2 或 GPFS。对应 virsh 的 --unsafe 参数。

  1. VIR_MIGRATE_OFFLINE (1024):

    • 含义: 仅迁移域定义,而不用在目标主机上启动域,也不会在源主机上停止域。offline 迁移需要设置 VIR_MIGRATE_PERSIST_DEST。offline 迁移不能复制磁盘存储和其他基于文件的存储(如 UEFI 变量)。对应 virsh 的 --offline 参数。
  2. VIR_MIGRATE_COMPRESSED (2048):

    • 含义: 压缩迁移数据。可以使用 VIR_MIGRATE_PARAM_COMPRESSION 指定压缩方式。如果省略该参数,则使用 hypervisor 的默认方法。压缩方法可以通过特定的 VIR_MIGRATE_PARAM_COMPRESSION_* 参数进行调节。对应 virsh 的 --compressed 参数。
  3. VIR_MIGRATE_ABORT_ON_ERROR (4096):

    • 含义: 当迁移时发生软错误(例如 IO 错误),取消迁移。对应 virsh 的 --abort-on-error 参数。
  4. VIR_MIGRATE_AUTO_CONVERGE (8192):

    • 含义: 启用确保实时迁移最终收敛的算法。这意味着将降低域的性能,以确保它内存更改的速度不会超过传输的速度。VIR_MIGRATE_PARAM_AUTO_CONVERGE_* 参数可调整该算法。对应 virsh 的 --auto-converge 参数。
  5. VIR_MIGRATE_RDMA_PIN_ALL (16384):

    • 含义: 此标志可用于 RDMA 迁移(即当 VIR_MIGRATE_PARAM_URI 参数以 “rdma://” 开始),从而让 hypervisor 在迁移开始之前一次性固定域的所有内存,而不是根据需要固定内存页。这对于 QEMU/KVM 需要使用 hard_limit 内存调整元素(在域 XML 中),并将其设置为域配置的最大内存加上 QEMU 本身消耗的任何内存。不能把内存限制设置的太高,以免主机内核耗尽内存。对应 virsh 的 --rdma-pin-all 参数。
  6. VIR_MIGRATE_POSTCOPY (32768):

    • 含义: 设置 VIR_MIGRATE_POSTCOPY 标志,libvirt 会启用后复制迁移模式。然而,迁移会正常开始,需要调用 virDomainMigrateStartPostCopy 来切换到后复制模式。详情请参阅 virDomainMigrateStartPostCopy。对应 virsh 的 --postcopy 参数。
  7. VIR_MIGRATE_TLS (65536):

    • 含义: 设置 VIR_MIGRATE_TLS 标志,将尝试使用 hypervisor 配置的 TLS 来进行迁移。如果在源或目标上配置不正确,迁移将失败。对应 virsh 的 --tls 参数。
  8. VIR_MIGRATE_PARALLEL (131072):

    • 含义: 通过多个网络连接传输内存页。可以使用 VIR_MIGRATE_PARAM_PARALLEL_* 来设置并行迁移功能。对应 virsh 的 --parallel 参数。
```java
// Java中模拟的Libvirt迁移标志位(根据官方文档)private static final long VIR_MIGRATE_LIVE = 1L << 0; // 1 - 不暂停域迁移期间。在域运行时将其内存传输到目标主机。如果域更改内存的速度快于传输速度,则迁移可能无法收敛。在迁移过程中任何时候都可以通过virDomainSuspend手动暂停域。private static final long VIR_MIGRATE_PEER2PEER = 1L << 1; // 2 - 指示源libvirtd直接连接到目标主机。如果不设置此标志,客户端(如virsh)将同时连接到两个主机并控制迁移过程。在点对点模式下,源libvirtd通过直接调用目标守护进程来控制迁移。private static final long VIR_MIGRATE_TUNNELLED = 1L << 2; // 4 - 通过libvirtd连接隧道迁移数据。如果不设置此标志,源虚拟机管理程序将直接向目标虚拟机管理程序发送迁移数据。此标志只能与VIR_MIGRATE_PEER2PEER一起使用。private static final long VIR_MIGRATE_PERSIST_DEST = 1L << 3; // 8 - 成功迁移后在目标主机上定义域为持久化。如果域在源主机上是持久化的,并且未使用VIR_MIGRATE_UNDEFINE_SOURCE,它将在两个主机上都变为持久化。private static final long VIR_MIGRATE_UNDEFINE_SOURCE = 1L << 4; // 16 - 迁移成功完成后从源主机上删除域定义。private static final long VIR_MIGRATE_PAUSED = 1L << 5; // 32 - 将域在目标主机上保持暂停状态。需要显式调用virDomainResume(由迁移API返回的virDomainPtr)来恢复域的虚拟CPU。private static final long VIR_MIGRATE_NON_SHARED_DISK = 1L << 6; // 64 - 除了域的内存外,还迁移完整的磁盘映像。默认情况下,仅迁移非共享的非只读磁盘映像。可以使用VIR_MIGRATE_PARAM_MIGRATE_DISKS参数指定应迁移哪些磁盘。此标志与VIR_MIGRATE_NON_SHARED_INC互斥。private static final long VIR_MIGRATE_NON_SHARED_INC = 1L << 7; // 128 - 除了域的内存外,还迁移磁盘映像。这类似于VIR_MIGRATE_NON_SHARED_DISK,但仅复制每个磁盘备份链的顶层。即,期望备份链的其余部分在目标主机上存在,并且与源主机上的完全相同。此标志与VIR_MIGRATE_NON_SHARED_DISK互斥。private static final long VIR_MIGRATE_CHANGE_PROTECTION = 1L << 8; // 256 - 在迁移过程中保护域配置不受更改。当双方都支持时,会自动使用此标志。显式设置此标志将导致如果源主机或目标主机不支持它,则迁移失败。private static final long VIR_MIGRATE_UNSAFE = 1L << 9; // 512 - 强制迁移,即使被认为是不安全的。在某些情况下,libvirt可能会拒绝迁移域,因为这样做可能导致潜在问题,例如数据损坏,因此迁移被认为是不安全的。private static final long VIR_MIGRATE_OFFLINE = 1L << 10; // 1024 - 迁移域定义而不启动目标主机上的域,也不停止源主机上的域。离线迁移需要设置VIR_MIGRATE_PERSIST_DEST。private static final long VIR_MIGRATE_COMPRESSED = 1L << 11; // 2048 - 压缩迁移数据。可以使用VIR_MIGRATE_PARAM_COMPRESSION参数指定压缩方法。如果省略此参数,则将使用虚拟机管理程序的默认方法。可以通过它们特定的VIR_MIGRATE_PARAM_COMPRESSION_*参数调整各个压缩方法。private static final long VIR_MIGRATE_ABORT_ON_ERROR = 1L << 12; // 4096 - 如果在迁移过程中发生软错误(如I/O错误),则取消迁移。private static final long VIR_MIGRATE_AUTO_CONVERGE = 1L << 13; // 8192 - 启用确保实时迁移最终收敛的算法。这通常意味着会减慢域的速度以确保其更改内存的速度不会超过虚拟机管理程序将其更改内存传输到目标主机的速度。private static final long VIR_MIGRATE_RDMA_PIN_ALL = 1L << 14; // 16384 - 当与RDMA迁移一起使用时(即,当VIR_MIGRATE_PARAM_URI以"rdma://"开头时),此标志告诉虚拟机管理程序在迁移开始之前一次性固定所有域的内存,而不是按需固定内存页。private static final long VIR_MIGRATE_POSTCOPY = 1L << 15; // 32768 - 设置VIR_MIGRATE_POSTCOPY标志告诉libvirt启用后复制迁移。但是,迁移将以正常方式开始,并需要调用virDomainMigrateStartPostCopy将其切换到后复制模式。private static final long VIR_MIGRATE_TLS = 1L << 16; // 65536 - 设置VIR_MIGRATE_TLS标志会导致迁移尝试使用虚拟机管理程序配置的TLS环境执行迁移。如果源主机或目标主机配置不正确,则迁移将会失败。private static final long VIR_MIGRATE_PARALLEL = 1L << 17; // 131072 - 通过几个网络连接将内存页发送到目标主机。参见VIR_MIGRATE_PARAM_PARALLEL_*参数以配置并行迁移。private static final long VIR_MIGRATE_NON_SHARED_SYNCHRONOUS_WRITES = 1L << 18; // 262144 - 强制在复制非共享存储迁移时发生的来宾写入同步写入目标。这确保了对于在快速本地存储上进行大量I/O并且镜像较慢的VM,存储迁移能够收敛。private static final long VIR_MIGRATE_POSTCOPY_RESUME = 1L << 19; // 524288 - 恢复在后复制阶段失败的迁移。private static final long VIR_MIGRATE_ZEROCOPY = 1L << 20; // 1048576 - 使用零拷贝机制迁移内存页。对于QEMU/KVM,这意味着QEMU将暂时被允许锁定主机的所有客户机页面,尽管只有排队等待传输的页面才会被锁定。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/664078.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小程序中picker多列选择器

需求&#xff1a;实现类似省市联动的效果&#xff0c;选择第一列后&#xff0c;第二列数据变化 html部分: <view class"section"><view>多列选择器</view><picker mode"multiSelector" bindchange"bindMultiPickerChange"…

Unity_ShaderGraph示例项目启动

Unity_ShaderGraph示例项目启动 大前提不变:URP模板,Unity2023.1.19使用 Shader Graph - Unity 手册Shader Graph 是一个工具,能够让您直观地构建着色器。您可以在图形框架中创建并连接节点,而不必手写代码。Shader Graph 提供了能反映所作更改的即时反馈,对于不熟悉着色…

flutter抓包绕过

lutter的证书校验 起因&#xff1a; 最近工作上让做个app的复测&#xff0c;把apk发我后&#xff0c;开始尝试挂代理抓包&#xff0c;结果发现抓不到 为是证书没弄好&#xff0c;想着前几天不是刚导入了吗&#xff08;雾&#xff09;。又重新导入了下还是不行。然后各种lsp模…

【TCP】四次挥手(终止连接)

前言 TCP&#xff08;传输控制协议&#xff09;是互联网协议&#xff08;IP&#xff09;中的一种重要传输层协议&#xff0c;用于在通信的计算机之间建立可靠的、有序的和错误校验的数据传输。在TCP连接中&#xff0c;数据传输是双向的&#xff0c;因此需要一种机制来开始和结…

【数据结构】单向链表实现 超详细

目录 一. 单链表的实现 1.准备工作及其注意事项 1.1 先创建三个文件 1.2 注意事项&#xff1a;帮助高效记忆和理解 2.链表的基本功能接口 2.0 创建一个 链表 2.1 链表的打印 3.链表的创建新节点接口 4.链表的节点插入功能接口 4.1 尾插接口 4.2 头插接口 4.3 指定位…

【无标题】yarn报错 “https://registry.npm.taobao.org/...: certificate has expired“如何处理

前言 今天在jenkins打包项目时yarn打包报错&#xff0c;查看log发现npm淘宝镜像报错 原因 在 1 月 22 日&#xff0c;淘宝原镜像域名&#xff08;registry.npm.taobao.org&#xff09;的 HTTPS 证书正式到期。如果想要继续使用&#xff0c;需要将 npm 源切换到新的源&#…

Dockerfile构建Nginx访问说明

Dockerfile使用情况 20210903 Dockerfile ,Nginx 参考地址&#xff1a;https://yeasy.gitbook.io/docker_practice/image/build 编写简单Dockerfile 在一个空白目录中&#xff0c;建立一个文本文件&#xff0c;并命名为 Dockerfile&#xff1a; $ mkdir mynginx $ cd myngin…

跟着cherno手搓游戏引擎【18】抽象Shader、项目小修改

抽象&#xff1a; Shader.h: #pragma once #include <string>namespace YOTO {class Shader {public:virtual~Shader()default;virtual void Bind()const0;virtual void UnBind()const0;static Shader* Create(const std::string& vertexSrc, const std::string&am…

window 安装 jenkins 编写脚本

set JAVA_HOMED:\RuanJianKaiFa\jdk\jdk11 set CLASSPATH.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOMe%\lib\tools.jar; set Path%JAVA_HOME%\bin; java -jar jenkins.war 下载jenkins.war包&#xff0c;编写一个txt文档&#xff0c;把脚本复制进去&#xff0c;修改文件后缀为.bat文件…

MySQL EXPLAIN查询执行计划

EXPLAIN 可用来查看SQL执行计划&#xff0c;常用来分析调试SQL语句&#xff0c;来使SQL语句达到更好的性能。 1 前置知识 在学习EXPLAIN 之前&#xff0c;有些基础知识需要清楚。 1.1 JSON类型 MySQL 5.7及以上版本支持JSON数据类型。可以将数组存为JSON格式的字符串&#…

【Arduino】LGT8F328 UNO R3编译上传

LGT8F328 UNO R3编译上传 示例代码 这是一段示例代码&#xff0c;将示例代码编译打包上传到LGT8F328 UNO R3开发板。 #include <Servo.h> Servo myservo; int pos 0; void setup() {// put your setup code here, to run once:Serial.begin(9600);Serial.println(&qu…

uni-app切换页面刷新,返回上一页刷新(onShow钩子函数的使用)

切换页面刷新&#xff1a;通过onShow()便可实现 返回上一页通过uni.navigateBack({delta: 1});实现 以返回上一页刷新为例 从B页面返回上一页到A页面&#xff0c;在A页面写入方法refreshHandler() //a.vue methods: { // 执行刷新逻辑refreshHandler() {uni.request({ur…

NoSQL数据库管理系统和模型的比较

介绍 当大多数人想到数据库时&#xff0c;他们通常会想到传统的关系数据库模型&#xff0c;其中包括由行和列组成的表。虽然关系数据库管理系统仍然处理着互联网上的大部分数据&#xff0c;但近年来&#xff0c;随着开发人员寻求绕过关系模型的限制&#xff0c;替代数据模型变…

本体匹配方法概述

目录 前言1 基于术语匹配的方法1.1 字符串匹配1.2 语言方法 2 基于虚拟文档的方法3 基于结构的匹配方法3.1 结构信息利用3.2 Anchor-prompt方法 4 大型本体匹配4.1 本体划分4.2 匹配分块4.3 实体间映射 结语 前言 本文将深入探讨本体匹配的不同方法&#xff0c;从基于术语匹配…

springboot项目以jar包运行时,读取jar包内的静态文件

springboot项目以jar包运行时&#xff0c;读取jar包内的静态文件 java

从编程中理解:大脑的成瘾行为

成瘾行为在心理学中被定义为个体对某种物质或行为产生强烈的心理和生理依赖,无法自控地重复该行为。从编程的角度来看,我们可以将大脑的成瘾行为模型化为一种反馈循环系统,其中包含激励、奖赏、强化学习等机制。以下是一个用Unity C#代码模拟金庸武侠小说中人物成瘾行为的例…

Git指令大全:如何同步github代码,12个你必须了解的最常见Git命令!

&#x1f4e5; 准备好合作&#xff01;克隆仓库&#xff1a; git init - 初始化仓库。git clone [仓库URL] - 克隆仓库。 &#x1f575;️‍♂️ 监控变更&#xff1a; git status - 检查状态。git add [文件(们)] - 添加变更。git commit -m "[消息]" - 提交变更…

神经网络和深度学习吴恩达coursera笔记

Deep Learning 文章目录 Deep LearningBasicLogistic Regressionsome signLoss functioncost functionGradient DescentComputation Grapha VectorizationvectorizedImplementing:broadcasting Shallow Neural NetworkRepresentationcomputing:Vectorize:Activation functionsG…

DES加密原理

DES加密算法综合运用了置换、代替、代数等多种密码技术&#xff0c;具有设计精 巧、实现容易、使用方便等特点。DES加密算法的明文、密文和密钥的分组长度 都是64位&#xff0c;详细的DES加密算法结构如图6-10所示。 图6-10 DES加密算法结构图 DES加密过程如下所示&#xff…

2024PMP考试新考纲-【业务环境领域】典型真题和很详细解析(3)

华研荟继续分享【业务环境Business Environment领域】在新考纲下的真题&#xff0c;帮助大家体会和理解新考纲下PMP的考试特点和如何应用所学的知识和常识&#xff08;经验&#xff09;来解题&#xff0c;并且举一反三&#xff0c;一次性3A通过2024年PMP考试。 2024年PMP考试新…