oVirt4.3.6已经支持导入数据存储域,导入ISO域和导出存储域,在导入的数据存储域下导入虚拟机;oVirt Engine重建几乎不会丢失任何虚机信息了。
附加存储域到数据中心,需要先建立一个空白数据存储域
导入存储域
此功能是“ 导入未注册实体”的一部分。
摘要
今天,oVirt支持导入ISO和导出存储域,但是,不支持导入现有的数据存储域。数据存储域包含磁盘卷和VM /模板OVF文件。OVF文件是一种XML标准,代表VM /模板配置,包括磁盘,内存,CPU等。根据存储在存储域中的信息,我们可以在存储域将连接到的任何数据中心的设置中恢复诸如磁盘,VM和模板之类的实体。该功能的可用性可能对各种用例有用,以下是其中一些:
-
oVirt Engine的数据库丢失后进行恢复。
-
在设置之间传输虚拟机,而无需将数据复制进出导出域。
-
支持在不同的oVirt安装之间迁移存储域。
可以为VM /模板还原的存储域必须包含OVF_STORE磁盘。由于OVF_STORE仅3.5v数据中心支持磁盘,因此灾难发生前必须在3.5v数据中心中管理可以还原的存储域。只要设置包含3.5v数据中心,这些数据中心将自动支持“导入存储域”功能。
所有者
-
毛利普楚克
-
电子邮件mlipchuk@redhat.com
当前状态
一般功能
-
oVirt 3.5应该完全支持该功能。
-
可以为VM /模板还原的存储域必须包含OVF_STORE磁盘。由于OVF_STORE仅3.5v数据中心支持磁盘,因此灾难发生前必须在3.5v数据中心中管理可以还原的存储域。
-
仅在3.5数据中心中支持从灾难环境附加存储域(该存储域的元数据仍指示该存储域已附加到另一个数据中心)。
-
该功能取决于两个功能:
-
分离/附加存储域-ImportUnregisteredEntities。
以下是分离/附加存储域的常规功能:
-
-
在分离存储域时,应从引擎中删除与存储域相关的VM /模板,但是它们的数据将转换为XML数据,并将保留在称为unregistered_ovf_of_entities的数据库表中,并且仍将是OVF的一部分存储域中包含的磁盘。
-
附加后,用户将能够选择他们希望在数据中心中注册的VM /模板/磁盘,并为每个VM /模板选择要为其分配的群集和配额。
-
成功注册虚拟机/模板后,应从要注册的实体候选中删除该实体。
-
VM的快照和VM磁盘(活动/停用)应保留在附件上,与这些实体位于分离的Storage Domain上时相同。
-
关于配额强制数据中心,当用户选择要在设置中注册的VM /模板时,用户将为每个磁盘选择要使用的配额。
-
任何存储域上的OVF- OvfOnWantedDomains
-
用户可以导入存储域并将其直接附加到数据中心,也可以将其作为“未附加的”存储域导入,然后用户可以将其附加到所需的数据中心。
-
将存储域附加到数据中心时,OVF_STORE应从tar文件中检索磁盘中的所有实体(VM,模板),并将其移入数据库表unregistered_ovf_of_entities中,稍后用户可以决定如何将其注册到数据中心(请参阅ImportUnregisteredEntities#General_Functionality)
-
一旦这些VM /模板进入数据库,用户应该能够使用导入未注册实体功能ImportUnregisteredEntities#Work_flow_for_detach_and_attach_Storage_Domain_with_entities _-_ UI_flow来注册那些实体。
-
在存储域中搜索未注册的浮动磁盘
-
由于浮动磁盘不是任何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表中已存在的实体(请参见ImportUnregisteredEntities#General_Functionality),则引擎将用从OVF_STORE磁盘中获取的VM替换unregistered_ovf_of_entities表中的数据。
实施差距
-
附加操作应将存储域是否已附加到另一个数据中心的警告通知用户。然后,用户可以选择是运行元数据还是忽略其操作。错误1138115
-
未解决的问题:我们应该在LUN上指示外部LUN磁盘错误1138121
-
当用户将存储域移至维护状态时,与存储域相关的所有实体都应在OVF_STORE磁盘中更新。错误1138124
-
当前,VDSM在执行分离操作时会锁定存储池,一旦在VDSM中完全删除了存储池,则应在更高版本中消除此障碍。错误1138126
-
当前,磁盘的别名没有存储在存储域中,因此注册磁盘时将没有别名。别名应保留在“存储域”中的磁盘描述中。错误1138129
-
添加对通过REST API导入iSCSI存储域的支持。
-
在选择导入iSCSI存储域的目标时,登录按钮应该在GUI 错误1138131中更明显
灾难恢复流程
这是一个在发生灾难时如何恢复设置的示例。
-
使用新的数据库创建新的引擎设置(请参见Quick_Start_Guide#Install_oVirt)
-
使用群集创建一个新的Data Center版本3.5,并将主机添加到该群集。(建议重启主机)
-
主机启动并运行后,添加并激活新的空存储域以初始化数据中心。
-
如果存在在旧设置中以不同兼容版本或不同CPU类型运行的VM /模板,则应在新的数据中心上创建这些类型的群集。
-
请遵循导入存储域的说明,具体取决于用户要恢复的存储域的类型:
-
对于导入块存储域-ImportStorageDomain#工作流程,用于导入块存储域-UI流程
-
对于导入文件存储域-ImportStorageDomain#工作流程,用于导入文件存储域-UI流程
GUI透视图
使用实体分离和附加存储域的工作流程-UI流程
-
从活动的数据中心中选择一个活动的存储域,确保该存储域包含VM /模板以及在特定存储域中托管的磁盘
-
将存储域移至维护位置,并将其与数据中心分离-此时,应从设置中删除与存储域相关的所有实体
-
将存储域附加到另一个数据中心并激活它。
-
激活存储域后,转到“存储”主选项卡并选择一分钟前已激活的存储域
-
在同一“存储”主选项卡中,用户应看到两个子选项卡,“导入VM”和“导入模板”,在“导入VM”子选项卡中,用户应看到所有要导入的候选VM,并在在“导入模板”子标签中,仅模板应该相同。
-
用户可以选择多个VM(或模板),然后按“导入”按钮。
-
当按下“导入”按钮时,应打开一个对话框,显示用户选择注册的所有实体的列表。用户应为每个实体选择一个与其兼容的集群。用户还可以在对话框内的子选项卡中查看实体属性(例如磁盘,网络)。
导入块存储域的工作流程-UI流程
-
按下“导入存储域”按钮。
-
选择iSCSI或FCP类型的存储域。
-
提供要从中导入的存储服务器名称或IP。
-
引擎应向用户显示与步骤3中提供的Storage Server相关的目标列表。
-
选择他们知道与要导入的存储域相关的目标,然后按顶部的连接按钮。
-
引擎将连接到这些目标之后,用户应在对话框的底部看到存储域的列表,这些存储域是要导入的候选域。
-
选择要导入的存储域,然后按确定按钮。
-
导入存储域后,用户应将存储域附加到已初始化的数据中心,然后激活存储域。
-
激活存储域后,转到“存储”主选项卡,然后选择刚刚激活的存储域。
-
在同一“存储”主选项卡中,用户应看到两个子选项卡,“导入VM”和“导入模板”,在“导入VM”子选项卡中,用户应看到所有要导入的候选VM,并在在“导入模板”子标签中,仅模板应该相同。
-
用户可以选择多个VM(或模板),然后按“导入”按钮。
-
当按下“导入”按钮时,应打开一个对话框,显示用户选择注册的所有实体的列表。用户应为每个实体选择一个与其兼容的集群。用户还可以在对话框内的子选项卡中查看实体属性(例如磁盘,网络)。
导入文件存储域的工作流程-UI流程
-
按下“导入存储域”按钮。
-
选择文件类型域(NFS,POSIX等)。
-
提供此存储所在的路径,然后按导入按钮。
-
导入存储域后,用户应将存储域附加到已初始化的数据中心,然后激活存储域。
-
激活存储域后,转到“存储”主选项卡,然后选择刚刚激活的存储域。
-
在同一“存储”主选项卡中,用户应看到两个子选项卡,“导入VM”和“导入模板”,在“导入VM”子选项卡中,用户应看到所有要导入的候选VM,并在在“导入模板”子标签中,仅模板应该相同。
-
用户可以选择多个VM(或模板),然后按“导入”按钮。
-
当按下“导入”按钮时,应打开一个对话框,显示用户选择注册的所有实体的列表。用户应为每个实体选择一个与其兼容的集群。用户还可以在对话框内的子选项卡中查看实体属性(例如磁盘,网络)。
恢复本地数据中心的工作流程-UI流程
-
首先必须初始化一个本地存储域。
-
按下“导入存储域”按钮。
-
选择文件类型域“数据/主机上的本地”。
-
导入存储域后,用户应将存储域附加到他们创建并初始化的数据中心。
-
激活存储域后,转到“存储”主选项卡,然后选择刚刚激活的存储域。
-
在同一“存储”主选项卡中,用户应看到两个子选项卡,“导入VM”和“导入模板”,在“导入VM”子选项卡中,用户应看到所有要导入的候选VM,并在在“导入模板”子标签中,仅模板应该相同。
-
用户可以选择多个VM(或模板),然后按“导入”按钮。
-
当按下“导入”按钮时,应打开一个对话框,显示用户选择注册的所有实体的列表。用户应为每个实体选择一个与其兼容的集群。用户还可以在对话框内的子选项卡中查看实体属性(例如磁盘,网络)。
导入GlusterFS存储域的工作流程-UI流程
-
按下“导入存储域”按钮。
-
在主机上选择文件类型域Data / GlusterFS。
-
导入存储域后,用户应将存储域附加到已初始化的数据中心。
-
激活存储域后,转到“存储”主选项卡,然后选择刚刚激活的存储域。
-
在同一“存储”主选项卡中,用户应看到两个子选项卡,“导入VM”和“导入模板”,在“导入VM”子选项卡中,用户应看到所有要导入的候选VM,并在在“导入模板”子标签中,仅模板应该相同。
-
用户可以选择多个VM(或模板),然后按“导入”按钮。
-
当按下“导入”按钮时,应打开一个对话框,显示用户选择注册的所有实体的列表。用户应为每个实体选择一个与其兼容的集群。用户还可以在对话框内的子选项卡中查看实体属性(例如磁盘,网络)。
注册浮动磁盘的工作流程-UI流程
-
转到“存储”主选项卡,然后选择所需的存储域以从中导入浮动磁盘。
-
按“磁盘导入”子选项卡。
-
选择所需的浮动磁盘以导入到数据中心,然后按“注册”按钮。
扫描未注册的浮动磁盘的工作流程-UI流程
-
转到“存储”主选项卡,然后选择所需的存储域以从中导入浮动磁盘。
-
右键单击“存储域”,然后选择“扫描磁盘”选项。
-
选择所需的浮动磁盘以导入到数据中心,然后按“注册”按钮。
-
扫描完成后,应该有适当的审核日志,指出扫描是成功还是失败。
-
如果扫描成功,请选择“磁盘导入”子选项卡,然后查看新的未注册浮动磁盘。
-
如果用户想将它们注册到数据中心,则应遵循上一个流程。
样机
文件存储域
导入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创建一个名为data1的NFS数据存储域,其导出路径为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:// localhost:8080 / 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和模板之类的实体时,如果存储域中缺少某些卷,则可能会遇到故障。由于以下原因,卷可能会丢失:
-
并非所有存储域都已导入到引擎,并且某些VM /模板的磁盘依赖于此存储域。
-
在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数据以成功导入的过程:
-
-
将VM / Template的OVF数据获取到输出文件:
-
-
psql -t engine engine -c "SELECT ovf_data FROM unregistered_ovf_of_entities where entity_name = '${name_of_entity}'" > /tmp/ovf_data.xml
-
-
在输出文件(/tmp/ovf_data.xml)上使用vi / vim 并搜索丢失的GUID(基于上面的错误75a157ee-c485-423d-9c0e-62d5d3b9d718),并相应地修复XML。
-
ovf_data使用以下SQL命令使用正确的XML 更新数据库中的值:
-
-
UPDATE unregistered_ovf_of_entities SET ovf_data = XMLPARSE (DOCUMENT '<?xml version="1.0" encoding="UTF-8"?><ovf:Envelope ........') WHERE entity_name = 'vv'
-
-
刷新GUI仪表板,然后尝试再次导入未注册的实体。
权限
未来的工作
-
导入存储域:用户将能够一次导入所有存储域列表。
-
导入存储域后添加用于检查映像损坏的验证。-主要用于OVF的同步问题。
-
将导出域导入为常规存储域
相关错误
相关功能
-
任何域上的OVF
-
导入未注册实体
-
本地存储域
-
糊状
-
PosixFS
-
配额-用户可能会导入将扩展DC中定义的配额的磁盘。
这种情况类似于用户实施配额(尽管已经扩展)时的情况。默认行为将通过允许用户仍然使用资源(尽管他们将无法创建更多磁盘)来对待它们。
(责任编辑:IT) |