如何检查快照还原操作是否已完成

时间:2017-02-17 12:31:36

标签: ibm-cloud-infrastructure

在对块卷进行故障转移后,我在副本上启动了一个还原操作(restoreFromSnapshot)。 API返回大约2秒钟,返回值为True。

我立即启动了一个API来故障回复到原始卷,并收到以下错误

SoftLayerAPIError(SoftLayer_Exception_Network_Storage_BlockingOperationInProgress):卷IBM02SEL328078-363上正在进行快照恢复。在此过程中,在该过程完成之前,无法完成所请求的操作(从副本卷立即故障回复)。

这告诉我,即使restoreFromSnapshot()返回成功,实际的恢复操作仍可能正在进行中。

那么检查还原操作的当前状态以及如何确定它已成功完成的方法是什么?

1 个答案:

答案 0 :(得分:0)

当您对Sofltayer资源执行操作时,会创建一个事务(几乎在所有情况下),并且在事务完成之前,您无法对资源执行新操作。因此,了解恢复操作是否已完成的方法是验证无事务正在运行,对于该propuse,您可以use the SoftLayer_Network_Storage::getActiveTransactions方法:

RESTful例如

GET https://$USERID:$APIIKEY@api.softlayer.com/rest/v3/SoftLayer_Network_Storage/$storageID/getActiveTransactions.json

Note replace: $USERID $APIIKEY and $storageID

如果方法返回空结果,则该方法将返回存储中运行的事务。

但是这种方法存在缺陷,有时候事务需要花费一些时间才能创建,所以你需要重复请求API直到你看到事务,而在其他情况下,事务执行得如此之快以至于你永远不会看到事务,所以如果您在几分钟内没有看到事务可能已经非常快地完成,那么您的代码需要实际处理,以便您可以在存储上启动另一个操作。