ECS: Centera에서 ECS로 클립을 마이그레이션할 수 없음 - ERROR_RETENTION_INCORRECT
Summary: Centera에서 ECS로 클립을 마이그레이션할 수 없음 - "ERROR_RETENTION_INCORRECT"
Symptoms
클립이 "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
Cause
시나리오 1:
오브젝트의 보존 기간이 버킷에 지정된 제한을 벗어나면 오브젝트 쓰기 시도가 실패합니다.
보존 정책을 사용할 때 Minimum Fixed Retention Period에 Infinite를 선택하면 모든 오브젝트의 모든 보존 값이 무한해야 합니다.
Maximum Fixed Retention Period에 대해 infinite를 선택하면 최대 제한이 없음을 의미합니다.
최소/최대 보존 제약은 버킷에 기록된 모든 C-Clip에 적용됩니다. 클립이 SDK 기반 타사 도구에 의해 마이그레이션되는 경우 보존은 범위 내에 있어야 하며, 그렇지 않으면 오류가 발생합니다.
시나리오 2:
Centera에 정의된 보존 클래스 정책이 있습니다. 고객에게 Centera에서 아래 명령을 제공하도록 요청하여 이를 확인할 수 있습니다.
Config# show retention all
Resolution
시나리오 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에게 마이그레이션을 다시 시도하도록 요청합니다.