当前位置: > 虚拟化 Virtualization > oVirt >

oVirt4.3.6已经支持导入数据存储域,导入ISO域和导出存储域,在导入的数据存储域下导入虚拟机

时间:2019-11-30 15:53来源:linux.it.net.cn 作者:IT

oVirt4.3.6已经支持导入数据存储域,导入ISO域和导出存储域,在导入的数据存储域下导入虚拟机;oVirt Engine重建几乎不会丢失任何虚机信息了。

附加存储域到数据中心,需要先建立一个空白数据存储域

导入存储域

此功能是导入未注册实体一部分。

摘要

今天,oVirt支持导入ISO和导出存储域,但是,不支持导入现有的数据存储域。数据存储域包含磁盘卷和VM /模板OVF文件。OVF文件是一种XML标准,代表VM /模板配置,包括磁盘,内存,CPU等。根据存储在存储域中的信息,我们可以在存储域将连接到的任何数据中心的设置中恢复诸如磁盘,VM和模板之类的实体。该功能的可用性可能对各种用例有用,以下是其中一些:

  • oVirt Engine的数据库丢失后进行恢复。
  • 在设置之间传输虚拟机,而无需将数据复制进出导出域。
  • 支持在不同的oVirt安装之间迁移存储域。

可以为VM /模板还原的存储域必须包含OVF_STORE磁盘。由于OVF_STORE3.5v数据中心支持磁盘,因此灾难发生前必须在3.5v数据中心中管理可以还原的存储域。只要设置包含3.5v数据中心,这些数据中心将自动支持导入存储域功能。

所有者

  • 毛利普楚克
  • 电子邮件mlipchuk@redhat.com

当前状态

  • 已实施

一般功能

  • oVirt 3.5应该完全支持该功能。
  • 可以为VM /模板还原的存储域必须包含OVF_STORE磁盘。由于OVF_STORE仅3.5v数据中心支持磁盘,因此灾难发生前必须在3.5v数据中心中管理可以还原的存储域。
  • 仅在3.5数据中心中支持从灾难环境附加存储域(该存储域的元数据仍指示该存储域已附加到另一个数据中心)。
  • 该功能取决于两个功能:
  1. 分离/附加存储域-ImportUnregisteredEntities

以下是分离/附加存储域的常规功能:

    • 在分离存储域时,应从引擎中删除与存储域相关的VM /模板,但是它们的数据将转换为XML数据,并将保留在称为unregistered_ovf_of_entities的数据库表中,并且仍将是OVF的一部分存储域中包含的磁盘。
    • 附加后,用户将能够选择他们希望在数据中心中注册的VM /模板/磁盘,并为每个VM /模板选择要为其分配的群集和配额。
    • 成功注册虚拟机/模板后,应从要注册的实体候选中删除该实体。
    • VM的快照和VM磁盘(活动/停用)应保留在附件上,与这些实体位于分离的Storage Domain上时相同。
    • 关于配额强制数据中心,当用户选择要在设置中注册的VM /模板时,用户将为每个磁盘选择要使用的配额。
  1. 任何存储域上的OVF- OvfOnWantedDomains
    • 用户可以导入存储域并将其直接附加到数据中心,也可以将其作为“未附加的”存储域导入,然后用户可以将其附加到所需的数据中心。
    • 将存储域附加到数据中心时,OVF_STORE应从tar文件中检索磁盘中的所有实体(VM,模板),并将其移入数据库表unregistered_ovf_of_entities中,稍后用户可以决定如何将其注册到数据中心(请参阅ImportUnregisteredEntitiesGeneral_Functionality
    • 一旦这些VM /模板进入数据库,用户应该能够使用导入未注册实体功能ImportUnregisteredEntitiesWork_flow_for_detach_and_attach_Storage_Domain_with_entities _-_ UI_flow来注册那些实体。
  2. 在存储域中搜索未注册的浮动磁盘
    • 由于浮动磁盘不是任何VM /模板的一部分,因此用户可以从GUI显式注册浮动磁盘。
    • 存储域支持称为“扫描磁盘”的功能,该功能可扫描存储域中未在oVirt中反映的未注册浮动磁盘。这对于管理来自外部存储域的下划线磁盘副本非常有用。

限制条件

  • 包含实体的分离/附加存储域不应受到任何数据中心版本的限制。VM和模板可以不受限制地从旧/新数据中心移动到另一个,但用户可以为每个VM /模板选择的群集除外。
  • 导入存储域不会反映VM的状态(启动,加电,关闭…),所有VM都将注册为关闭状态。
  • 块存储域和文件存储域应支持存储域的导入。
  • 在灾难恢复方案中,如果要使用的主机位于被破坏的环境中,建议先重新启动该主机,然后再将其添加到新设置中。这样做的原因首先是,杀死所有仍在运行的QEMU进程,这些进程可能会作为VM自动添加到新设置中,并且还避免了任何sanlock问题。
  • 如果存在受删除保护的VM /模板,则不允许分离。如果存储域包含连接到配置为删除保护的VM的磁盘,则应阻止该操作,并向用户显示适当的消息。
  • 如果有处于预览模式的虚拟机,则不允许分离。如果Storage Domain包含连接到处于预览模式的VM的磁盘,则应阻止该操作,并向用户显示一条适当的消息。
  • 如果存在作为池一部分的VM,则不允许分离。如果Storage Domain包含连接到作为池一部分的VM的磁盘,则应阻止该操作,并向用户显示一条适当的消息。
  • 如果存储域中包含与正在运行的VM相关的磁盘,则无法分离存储域,除非该磁盘处于非活动状态。
  • OVF文件不支持可共享和直接LUN磁盘,因此它们不属于恢复的VM。
  • OVF_STORE盘将包含所有实体的配置将被登记的候选人。候选对象是unregistered_ovf_of_entities表中包含的Storage Domain OVF中至少具有一个磁盘的VM和模板。
  • 当前,与虚拟机/模板磁盘相关的所有存储域都必须存在,并且在实体注册后在数据中心中处于活动状态。(请参见Bug 1133300
  • 注册基于模板的精简配置的VM取决于设置中模板的存在。
  • 虚拟机和模板的权限将不会保留在分离中,因为它们不是OVF的一部分。错误1138177
  • 使用本地存储域进行分离/附加操作将不支持迁移未注册的实体,原因是在分离中,本地存储域已从主机中删除。
  • 附加导入的存储域只能与初始化的数据中心一起应用。(请参阅[错误6]
  • 如果存储域不包含OVF_STORE磁盘,则引擎应附加没有任何未注册实体的存储域,并应显示审核日志。
  • 引擎应从存储域中包含的OVF_STORE所有OVF_STORE磁盘的最新磁盘中检索未注册的实体。
  • 如果所选OVF_STORE磁盘将包含unregistered_ovf_of_entities表中已存在的实体(请参见ImportUnregisteredEntitiesGeneral_Functionality),则引擎将用从OVF_STORE磁盘中获取的VM替换unregistered_ovf_of_entities表中的数据。

实施差距

  1. 附加操作应将存储域是否已附加到另一个数据中心的警告通知用户。然后,用户可以选择是运行元数据还是忽略其操作。错误1138115
  2. 未解决的问题:我们应该在LUN上指示外部LUN磁盘错误1138121
  3. 当用户将存储域移至维护状态时,与存储域相关的所有实体都应在OVF_STORE磁盘中更新。错误1138124
  4. 当前,VDSM在执行分离操作时会锁定存储池,一旦在VDSM中完全删除了存储池,则应在更高版本中消除此障碍。错误1138126
  5. 当前,磁盘的别名没有存储在存储域中,因此注册磁盘时将没有别名。别名应保留在“存储域”中的磁盘描述中。错误1138129
  6. 添加对通过REST API导入iSCSI存储域的支持。
  7. 在选择导入iSCSI存储域的目标时,登录按钮应该在GUI 错误1138131更明显

灾难恢复流程

这是一个在发生灾难时如何恢复设置的示例。

  1. 使用新的数据库创建新的引擎设置(请参见Quick_Start_GuideInstall_oVirt
  2. 使用群集创建一个新的Data Center版本3.5,并将主机添加到该群集。(建议重启主机)
  3. 主机启动并运行后,添加并激活新的空存储域以初始化数据中心。
  4. 如果存在在旧设置中以不同兼容版本或不同CPU类型运行的VM /模板,则应在新的数据中心上创建这些类型的群集。
  5. 请遵循导入存储域的说明,具体取决于用户要恢复的存储域的类型:
    • 对于导入块存储域-ImportStorageDomain#工作流程,用于导入块存储域-UI流程
    • 对于导入文件存储域-ImportStorageDomain#工作流程,用于导入文件存储域-UI流程

GUI透视图

使用实体分离和附加存储域的工作流程-UI流程

  1. 从活动的数据中心中选择一个活动的存储域,确保该存储域包含VM /模板以及在特定存储域中托管的磁盘
  2. 将存储域移至维护位置,并将其与数据中心分离-此时,应从设置中删除与存储域相关的所有实体
  3. 将存储域附加到另一个数据中心并激活它。
  4. 激活存储域后,转到“存储”主选项卡并选择一分钟前已激活的存储域
  5. 在同一“存储”主选项卡中,用户应看到两个子选项卡,“导入VM”和“导入模板”,在“导入VM”子选项卡中,用户应看到所有要导入的候选VM,并在在“导入模板”子标签中,仅模板应该相同。
  6. 用户可以选择多个VM(或模板),然后按“导入”按钮。
  7. 当按下“导入”按钮时,应打开一个对话框,显示用户选择注册的所有实体的列表。用户应为每个实体选择一个与其兼容的集群。用户还可以在对话框内的子选项卡中查看实体属性(例如磁盘,网络)。

导入块存储域的工作流程-UI流程

  1. 按下“导入存储域”按钮。
  2. 选择iSCSI或FCP类型的存储域。
  3. 提供要从中导入的存储服务器名称或IP。
  4. 引擎应向用户显示与步骤3中提供的Storage Server相关的目标列表。
  5. 选择他们知道与要导入的存储域相关的目标,然后按顶部的连接按钮。
  6. 引擎将连接到这些目标之后,用户应在对话框的底部看到存储域的列表,这些存储域是要导入的候选域。
  7. 选择要导入的存储域,然后按确定按钮。
  8. 导入存储域后,用户应将存储域附加到已初始化的数据中心,然后激活存储域。
  9. 激活存储域后,转到“存储”主选项卡,然后选择刚刚激活的存储域。
  10. 在同一“存储”主选项卡中,用户应看到两个子选项卡,“导入VM”和“导入模板”,在“导入VM”子选项卡中,用户应看到所有要导入的候选VM,并在在“导入模板”子标签中,仅模板应该相同。
  11. 用户可以选择多个VM(或模板),然后按“导入”按钮。
  12. 当按下“导入”按钮时,应打开一个对话框,显示用户选择注册的所有实体的列表。用户应为每个实体选择一个与其兼容的集群。用户还可以在对话框内的子选项卡中查看实体属性(例如磁盘,网络)。

导入文件存储域的工作流程-UI流程

  1. 按下“导入存储域”按钮。
  2. 选择文件类型域(NFS,POSIX等)。
  3. 提供此存储所在的路径,然后按导入按钮。
  4. 导入存储域后,用户应将存储域附加到已初始化的数据中心,然后激活存储域。
  5. 激活存储域后,转到“存储”主选项卡,然后选择刚刚激活的存储域。
  6. 在同一“存储”主选项卡中,用户应看到两个子选项卡,“导入VM”和“导入模板”,在“导入VM”子选项卡中,用户应看到所有要导入的候选VM,并在在“导入模板”子标签中,仅模板应该相同。
  7. 用户可以选择多个VM(或模板),然后按“导入”按钮。
  8. 当按下“导入”按钮时,应打开一个对话框,显示用户选择注册的所有实体的列表。用户应为每个实体选择一个与其兼容的集群。用户还可以在对话框内的子选项卡中查看实体属性(例如磁盘,网络)。

恢复本地数据中心的工作流程-UI流程

  1. 首先必须初始化一个本地存储域。
  2. 按下“导入存储域”按钮。
  3. 选择文件类型域“数据/主机上的本地”。
  4. 导入存储域后,用户应将存储域附加到他们创建并初始化的数据中心。
  5. 激活存储域后,转到“存储”主选项卡,然后选择刚刚激活的存储域。
  6. 在同一“存储”主选项卡中,用户应看到两个子选项卡,“导入VM”和“导入模板”,在“导入VM”子选项卡中,用户应看到所有要导入的候选VM,并在在“导入模板”子标签中,仅模板应该相同。
  7. 用户可以选择多个VM(或模板),然后按“导入”按钮。
  8. 当按下“导入”按钮时,应打开一个对话框,显示用户选择注册的所有实体的列表。用户应为每个实体选择一个与其兼容的集群。用户还可以在对话框内的子选项卡中查看实体属性(例如磁盘,网络)。

导入GlusterFS存储域的工作流程-UI流程

  1. 按下“导入存储域”按钮。
  2. 在主机上选择文件类型域Data / GlusterFS。
  3. 导入存储域后,用户应将存储域附加到已初始化的数据中心。
  4. 激活存储域后,转到“存储”主选项卡,然后选择刚刚激活的存储域。
  5. 在同一“存储”主选项卡中,用户应看到两个子选项卡,“导入VM”和“导入模板”,在“导入VM”子选项卡中,用户应看到所有要导入的候选VM,并在在“导入模板”子标签中,仅模板应该相同。
  6. 用户可以选择多个VM(或模板),然后按“导入”按钮。
  7. 当按下“导入”按钮时,应打开一个对话框,显示用户选择注册的所有实体的列表。用户应为每个实体选择一个与其兼容的集群。用户还可以在对话框内的子选项卡中查看实体属性(例如磁盘,网络)。

注册浮动磁盘的工作流程-UI流程

  1. 转到“存储”主选项卡,然后选择所需的存储域以从中导入浮动磁盘。
  2. 按“磁盘导入”子选项卡。
  3. 选择所需的浮动磁盘以导入到数据中心,然后按“注册”按钮。

扫描未注册的浮动磁盘的工作流程-UI流程

  1. 转到“存储”主选项卡,然后选择所需的存储域以从中导入浮动磁盘。
  2. 右键单击“存储域”,然后选择“扫描磁盘”选项。
  3. 选择所需的浮动磁盘以导入到数据中心,然后按“注册”按钮。
  4. 扫描完成后,应该有适当的审核日志,指出扫描是成功还是失败。
  5. 如果扫描成功,请选择“磁盘导入”子选项卡,然后查看新的未注册浮动磁盘。
  6. 如果用户想将它们注册到数据中心,则应遵循上一个流程。

样机

文件存储域

导入NFS存储域的用户流程将类似于导入导出/ ISO域。用户将输入存储域的路径,并将开始导入过程。

NFS存储域的导入屏幕:

POSIX存储域的导入屏幕:

Gluster存储域的导入屏幕:

封锁网域

光纤通道存储域的导入屏幕:

 

iSCSI存储域的导入屏幕:

导入VM /模板子选项卡:

导入VM /模板对话框:

休息

导入块存储域

发现iSCSI存储服务器中的目标

POST /api/hosts/052a880a-53e0-4fe3-9ed5-01f939d1df66/iscsidiscover

Accept: application/xml

Content-Type: application/xml

 

<action>

<iscsi>

<address>iscsi.server</address>

</iscsi>

<iscsi_target>iqn.iscsi.120.01</iscsi_target>

<iscsi_target>iqn.iscsi.120.02</iscsi_target>

<iscsi_target>iqn.iscsi.120.03</iscsi_target>

</action>

获取要导入的候选存储域列表

在完成iscsilogin操作之后,主机已经连接到iSCSI中的目标,我们可以获取要导入的候选存储域。

POST /api/hosts/052a880a-53e0-4fe3-9ed5-01f939d1df66/unregisteredstoragedomainsdiscover HTTP/1.1

Accept: application/xml

Content-type: application/xml

 

<action>

<iscsi>

<address>iscsiHost</address>

</iscsi>

<iscsi_target>iqn.name1.120.01</iscsi_target>

<iscsi_target>iqn.name2.120.02</iscsi_target>

<iscsi_target>iqn.name3.120.03</iscsi_target>

</action>

应作为存储域列表返回的响应,如下所示:

<action>

<iscsi>

<address>iscsiHost</address>

</iscsi>

<storage_domains>

<storage_domain id="6ab65b16-0f03-4b93-85a7-5bc3b8d52be0">

<name>scsi4</name>

<type>data</type>

<master>false</master>

<storage>

<type>iscsi</type>

<volume_group id="OLkKwa-VmEM-abW7-hPiv-BGrw-sQ2E-vTdAy1"/>

</storage>

<available>0</available>

<used>0</used>

<committed>0</committed>

<storage_format>v3</storage_format>

</storage_domain>

<status>

<state>complete</state>

</status>

<iscsi_target>iqn.name1.120.01</iscsi_target>

<iscsi_target>iqn.name2.120.02</iscsi_target>

<iscsi_target>iqn.name3.120.03</iscsi_target>

</action>

iSCSI存储域导入设置

POST /api/storagedomains/ HTTP/1.1

Accept: application/xml

Content-type: application/xml

 

<storage_domain id="39baf524-380e-407c-8625-50709fcaa9c2">

<import>true</import>

<host id="052a880a-53e0-4fe3-9ed5-01f939d1df66" />

<type>data</type>

<storage>

<type>iscsi</type>

</storage>

</storage_domain>

FCP存储域导入设置

POST /api/storagedomains/ HTTP/1.1

Accept: application/xml

Content-type: application/xml

 

<storage_domain id="ecf053fc-fe65-4d64-883e-c38ca898951c">

<import>true</import>

<host id="9d05868b-d40d-4a8c-9a81-dbf09d654fba" />

<type>data</type>

<storage>

<type>fcp</type>

</storage>

</storage_domain>

导入NFS存储域

导入存储域需要将包含存储域表示形式的POST请求发送到存储域集合的URL

POST /api/storagedomains HTTP/1.1

Accept: application/xml

Content-type: application/xml

 

<storage_domain>

<name>data1</name>

<type>data</type>

<host id="052a880a-53e0-4fe3-9ed5-01f939d1df66"/>

<storage>

<type>nfs</type>

<address>10.35.16.2</address>

<path>/export/images/rnd/maor/data9</path>

</storage>

</storage_domain>

API创建一个名为data1NFS数据存储域,其导出路径为10.35.16.2:/export/images/rnd/maor/data9,并设置通过管理程序主机对存储域的访问。该API还返回新创建的存储域资源的以下表示形式:

附加存储域

POST /api/datacenters/01a45ff0-915a-11e0-8b87-5254004ac988/storagedomains HTTP/1.1

Accept: application/xml

Content-type: application/xml

 

<storage_domain>

<name>data1</name>

</storage_domain>

获取未注册的虚拟机/模板列表

通过;unregistered在存储域中的VM /模板之后添加前缀,用户可以获得所有未注册的VM或未注册的模板的列表。例如,要获取存储域中所有未注册的虚拟机,fa38172b-baae-4ca3-b949-95619c01ca31URL为:

http// localhost8080 / ovirt-engine / api / storagedomains / fa38172b-baae-4ca3-b949-95619c01ca31 / vms;未注册

VM注册到新集群

如果用户要在安装程序中注册虚拟机,则URL应该在虚拟机ID之后指示注册,如下所示:

POST /api/storagedomains/xxxxxxx-xxxx-xxxx-xxxxxx/vms/xxxxxxx-xxxx-xxxx-xxxxxx/register HTTP/1.1

Accept: application/xml

Content-type: application/xml

 

<action>

<cluster id='xxxxxxx-xxxx-xxxx-xxxxxx'></cluster>

</action>

获取存储域中所有未注册的磁盘

如果用户要获取存储域中所有浮动磁盘的列表,则应使用以下URL http://localhost:8080/ovirt-engine/api/storagedomains/60cec75d-f01d-44a0-9c75-8b415547bc3d/disks;unregistered

注册未注册的磁盘

如果用户要在系统中注册特定的浮动磁盘,则应使用以下内容:

POST /api/storagedomains/60cec75d-f01d-44a0-9c75-8b415547bc3d/disks;unregistered HTTP/1.1

Accept: application/xml

Content-type: application/xml

 

<disk id='8ddb988f-6ab8-4c19-9ea0-b03ab3035347'></disk>

使用curl注册未注册的磁盘

curl -v -k -u "admin@redhat.com" -H "Content-type: application/xml" -d '<disk id="8ddb988f-6ab8-4c19-9ea0-b03ab3035347"><alias>dsdsdsdmap1_Disk3</alias> </disk>' "http://localhost:8080/ovirt-engine/api/datacenters/d2045b3a-a313-452f-8333-b1e0178a024e/storagedomains/60cec75d-f01d-44a0-9c75-8b415547bc3d/disks';'unregistered "

故障排除

问题-图像路径不存在或无法访问

  • 从导入的存储域中注册诸如VM和模板之类的实体时,如果存储域中缺少某些卷,则可能会遇到故障。由于以下原因,卷可能会丢失:
    1. 并非所有存储域都已导入到引擎,并且某些VM /模板的磁盘依赖于此存储域。
    2. OVF_STORE灾难发生时的磁盘是不同步,导致在VM /模板的卷进行不同步的。

这可能发生在许多情况下,例如删除快照,删除磁盘或更改卷链的任何其他操作。

这种类型的故障将记录在引擎中,例如:

错误[org.ovirt.engine.core.vdsbroker.irsbroker.GetImageInfoVDSCommand](默认任务47[14de7d5f] IrsBroker :: getImageInfo ::无法获取图像信息imageId ='425daada-2d07-4d7f-9365-4674e2ef50a0'不会存在于domainName ='data4'domainId ='d07e18b6-20da-46b8-a7e5-5688dc3cb04a',错误代码:'ImagePathError',消息:图像路径不存在或无法访问/创建:(u'/ rhev / data -center / mnt / 10.35.16.43_export_data4 / d07e18b6-20da-46b8-a7e5-5688dc3cb04a / images / 75a157ee-c485-423d-9c0e-62d5d3b9d718',)

  • 为了克服此错误并能够将VM导入引擎,应更改OVF XML数据。用户应根据他们认为最佳的解决方案更改OVF。例如,如果在灾难发生之前创建了一个新快照,但未在OVF_STORE磁盘中对其进行更新,则用户可以将卷数据添加到磁盘的OVF卷链中,或者可以选择从VM的OVF中删除整个磁盘。

这是更改虚拟机的OVF数据以成功导入的过程:

    1. 将VM / Template的OVF数据获取到输出文件:
    1. psql -t engine engine -c "SELECT ovf_data FROM unregistered_ovf_of_entities where entity_name = '${name_of_entity}'" > /tmp/ovf_data.xml
    1. 在输出文件(/tmp/ovf_data.xml)上使用vi / vim 并搜索丢失的GUID(基于上面的错误75a157ee-c485-423d-9c0e-62d5d3b9d718),并相应地修复XML。
    2. ovf_data使用以下SQL命令使用正确的XML 更新数据库中的值:
    1. UPDATE unregistered_ovf_of_entities SET ovf_data = XMLPARSE (DOCUMENT '<?xml version="1.0" encoding="UTF-8"?><ovf:Envelope ........') WHERE entity_name = 'vv'
    1. 刷新GUI仪表板,然后尝试再次导入未注册的实体。

权限

  • 不会添加其他权限。

未来的工作

  • 导入存储域:用户将能够一次导入所有存储域列表。
  • 导入存储域后添加用于检查映像损坏的验证。-主要用于OVF的同步问题。
  • 将导出域导入为常规存储域

相关错误

  • 错误1069780
  • 错误1069173

相关功能

  • 任何域上的OVF
  • 导入未注册实体
  • 本地存储域
  • 糊状
  • PosixFS
  • 配额-用户可能会导入将扩展DC中定义的配额的磁盘。

这种情况类似于用户实施配额(尽管已经扩展)时的情况。默认行为将通过允许用户仍然使用资源(尽管他们将无法创建更多磁盘)来对待它们。

 

(责任编辑:IT)
------分隔线----------------------------