ECS:CenteraからECSにクリップを移行できない - ERROR_RETENTION_INCORRECT
概要: CenteraからECSにクリップを移行できない - 「ERROR_RETENTION_INCORRECT」
現象
「ERROR_RETENTION_INCORRECT」でCenteraからECSにクリップを移行できない
スタック トレースの例:
169.254.1.8 2019-11-21T19:30:53,212 [1215100270,sdk,ECSSYNCKDC01/3594002/WRITE_CLIP,-531c636:16e89995c11:-7a82,1] ERROR AbstractTransaction.java (line 136) Failed to execute the transaction, aborting.
TransactionFailureException: com.emc.vipr.cashead.api.ObjectRetentionIncorrect: Failed to execute operation, error is ERROR_RETENTION_INCORRECT, object name is null
at com.emc.vipr.cashead.storageserver.access.transaction.write.ObjectWriterImpl.finish(ObjectWriterImpl.java:80)
at com.emc.vipr.cashead.storageserver.access.transaction.write.AwaitEOF.finish(AwaitEOF.java:173)
at com.emc.vipr.cashead.storageserver.access.transaction.write.AwaitEOF.put(AwaitEOF.java:111)
at com.emc.vipr.cashead.storageserver.access.msg.RichLastSegmentMessage.execute(RichLastSegmentMessage.java:61)
at com.emc.vipr.cashead.storageserver.access.encoding.hpp.HPPResponder$EnqueableTransactionObject.execute(HPPResponder.java:311)
at com.emc.vipr.cashead.storageserver.access.transaction.AccessTransaction.executeMessage(AccessTransaction.java:57)
at com.emc.vipr.cashead.storageserver.access.transaction.AbstractTransaction.schedule(AbstractTransaction.java:131)
at com.emc.vipr.cashead.storageserver.access.transaction.NullScheduler.registerSchedulable(NullScheduler.java:48)
at com.emc.vipr.cashead.storageserver.access.transaction.AbstractTransaction.putGeneralMessage(AbstractTransaction.java:92)
at com.emc.vipr.cashead.storageserver.access.transaction.AccessTransaction.put(AccessTransaction.java:61)
at com.emc.vipr.cashead.storageserver.access.encoding.hpp.HPPResponder.processTransactionObject(HPPResponder.java:276)
at com.emc.vipr.cashead.storageserver.access.encoding.hpp.HPPResponder.processPacket(HPPResponder.java:290)
at com.emc.vipr.cashead.storageserver.access.encoding.hpp.HPPResponder.process(HPPResponder.java:181)
at com.emc.vipr.cashead.storageserver.access.AccessNetworkServer.HandleConnection(AccessNetworkServer.java:51)
at com.emc.vipr.cashead.hppserver.HPPServer.HandleConnection(HPPServer.java:84)
at com.emc.vipr.cashead.net.NetworkServerWorker.Work(NetworkServerWorker.java:61)
at com.emc.vipr.cashead.worker.Worker.call(Worker.java:227)
at com.emc.vipr.cashead.worker.WorkerSchedulerThread.run(WorkerSchedulerThread.java:137)
Caused by: java.io.IOException: com.emc.vipr.cashead.api.ObjectRetentionIncorrect: Failed to execute operation, error is ERROR_RETENTION_INCORRECT, object name is null
at com.emc.vipr.cashead.impl.vipr.ViPRObjectWriteHandler.checkResult(ViPRObjectWriteHandler.java:73)
at com.emc.vipr.cashead.storageserver.access.transaction.write.ObjectWriterImpl.finish(ObjectWriterImpl.java:77)
... 17 more
Caused by: com.emc.vipr.cashead.api.ObjectRetentionIncorrect: Failed to execute operation, error is ERROR_RETENTION_INCORRECT, object name is null
at com.emc.vipr.cashead.impl.vipr.ExceptionTranslator.translateError(ExceptionTranslator.java:38)
at com.emc.vipr.cashead.impl.vipr.ExceptionTranslator.checkError(ExceptionTranslator.java:21)
at com.emc.vipr.cashead.impl.vipr.ViPRObjectWriteHandler.checkResult(ViPRObjectWriteHandler.java:71)
... 18 more
原因
シナリオ1:
オブジェクトの保存期間がバケットで指定された範囲外にある場合、オブジェクトの書き込みは失敗します。
保存ポリシーを使用する場合、[Minimum Fixed Retention Period]で[Infinite]を選択すると、すべてのオブジェクトのすべての保存値が無期限である必要があります。
Maximum Fixed Retention Periodにinfiniteを選択すると、上限はありません。
最小/最大保存の制約は、バケットに書き込まれたすべてのC-Clipに適用されます。クリップが SDK ベースのサードパーティツールによって移行された場合、保持は範囲内にある必要があり、そうでない場合はエラーがスローされます。
シナリオ2:
Centeraに保存クラス ポリシーが定義されている。これを確認するには、Centeraから次のコマンドを提供するようにお客様に依頼します。
Config# show retention all
解決方法
シナリオ1:
たとえば、保存期間が7年のCASクリップがある場合、次の保存値を持つバケットを作成する必要があります。
Bucket Retention Period: 0 seconds
Minimum Fixed Retention Period: 0 seconds
Maximum Fixed Retention Period: 8 years
Minimum Variable Retention Period: 0 seconds
Maximum Variable Retention Period: 0 seconds
この方法では、保存期間は最小/最大の制約内に収まります。
シナリオ2:
以下の保存クラス ポリシーを提供するようにお客様に依頼します。
-
CenteraのCLIを開始します。
-
コンプライアンスまたは監視ロールを持つユーザーとして接続します。
-
次のコマンドを入力します。
show retention all出力は次のようになります。
Retention class name Period ------------------------------------------ class 1 5 years class 2 3 months class 3 10 years
次に、これらすべての保存クラス ポリシーをECS側のネームスペース保存ポリシーに追加する必要があります。ECS側でネームスペースの保存ポリシーを追加した後、移行を再試行するようにお客様/PSに依頼します。