3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OCI Block Volume バックアップのイミュータブル機能を試してみた

3
Posted at

機能について

BV_backup_noretention.png
BV_backup_retention.png

データ保存 - 有効期限の設定(ライフサイクル管理向け)

設定した保持期間を過ぎるとバックアップは自動削除される。
復旧ポイントのライフサイクル管理などで便利。(例:直近2週間は毎日8:00 AM の地点に復旧できる必要があるが、それより過去のバックアップはコスト削減のためにも削除する)

  • 保持期間 あり/なし を選択
  • 保持期間は、[1 ~ 200] までの整数 と [日 or 年] の単位 で設定

保持ロック - イミュータブル機能(ランサムウェア対策、厳格なデータ保持、ガバナンス、コンプライアンス要件向け)

権限があるユーザーの保持期間の延長以外、誰もバックアップ削除や保持設定変更、保持ロックの削除を実行できなくなる機能。
そのため、有効化する前に設定をよく考える必要がある。
ランサムウェア対策や厳格なデータ保持要件向け。

有効化後、保持期間を延長するには RETENTION_RULE_LOCK 権限が必要

  • 「保持期間」を設定する場合のみ使用可能
  • 有効化すると保持期間の延長のみ可能となり、いかなるユーザーも保持ロックを無効化したり、保持期間の短縮や削除を行うことはできなくなる
  • 「無期限の保留」の有効化は可能で、これが有効な間は保持期間が過ぎても削除が猶予される

削除の防止 - 削除防止機能(誤削除防止用途)

保持期間に達するまでバックアップの削除を防止する。(※保持期間の自動削除を上書きするものではない)
運用者の誤操作や自動化ジョブの設定ミスによるバックアップ削除を防ぐ。

有効化後、保持期間の延長・短縮を行うには RETENTION_RULE_PREVENT_DELETION 権限が必要

  • 「保持期間」ありの場合:「保持期間」終了まで削除を防止し、期間終了とともにバックアップは削除される
    ※「保持ロック」を有効化するとグレーアウトされる
  • 「保持期間」なしの場合:バックアップの削除を防止する
  • いつでも手動で解除可能

無期限の保留 - 削除防止機能(期限不明の調査・監査向け)

この機能が有効化されている間、他の保持機能を上書きする。
既存の保持期間を上書きしてバックアップの削除や更新を防止し、訴訟、セキュリティ調査、規制当局の調査、監査などの終了日が不明な状況に対応することができる。

有効化・無効化操作には、RETENTION_RULE_INDEFINITE_HOLD 権限が必要

  • この機能が解除されるまで、バックアップの削除を防止 と ロック設定の更新を防止(この機能の解除を除く) が施行される
  • 「無期限の保留」を設定したまま「保持期間」が終了した場合、「無期限の保留」が解除された時点で自動削除になる
  • いつでも手動で解除可能

設定は引き継がれるのか

ソースのバックアップと、バックアップ・コピー、クローン、レプリケーションで比較する

ソース・バックアップの詳細画面

  • 保持期間:1日
    • 保持ロック:無効
  • 削除の防止:有効
  • 無期限の保留:無効

BV_backup_detials.png

別のリージョンにコピー

バックアップ・コピーでは、同一リージョンは選べない

▼ 引き継がれる
BV_backup_Copy.png

クローン

クローンは、ソースと同一リージョンの同一ADのみに作成できる

▼ そもそもソース・ボリュームが持つバックアップは、一緒にクローンされない
BV_bakup_Clone.png

レプリカをアクティブ化したボリューム

レプリケーションの宛先に、ソースと同一ADは選べない

▼ そもそもソース・ボリュームが持つバックアップは、一緒にレプリケーションされない
BV_backup_Replica_active.png

バックアップ・ポリシー

「保持期間なし」は選べない
選択肢として表示はされるが、選択するとエラーになる(仕様)

「無期限の保留」は対応していない(仕様)

BV_backuppolicy_noretention.png
BV_backuppolicy_retention.png

OCI CLI

手動でバックアップを作成する

oci bv backup create --volume-id <ボリュームのOCID> [option]

--volume-id は必須パラメータ。

以下、オプションのパラメータから保持機能に関するものをピックアップ。

  • --is-indefinite-retention-enabled [boolean]:無期限の保留
  • --is-prevent-deletion-enabled [boolean]:削除の防止
  • --is-retention-lock-enabled [boolean]:保持ロック(--retention-periodとの併用必須)
  • --retention-period [complex type]:保持期間
    • 値はJSON形式である必要があり、コマンドラインで文字列として指定するか、file://path/to/file 構文でファイルとして渡す
    • --generate-param-json-input オプションを使用して、JSONの例を生成できる

参考:OCI CLIコマンドリファレンス "oci bv backup create"

バックアップ・ポリシーを使用して自動でバックアップを作成する

ボリューム・バックアップ・ポリシーのスケジュールを作成するコマンド:

oci bv volume-backup-policy create --compartment-id <コンパートメントのOCID> --schedules [complex type]
oci bv volume-backup-policy update --schedules [complex type]
  • --schedules [complex type]

    • 値は VolumeBackupSchedule型の項目を含む JSON形式である必要があり、コマンドラインで文字列として指定するか、file://path/to/file 構文でファイルとして渡す
    • --generate-param-json-input オプションを使用して、JSONの例を生成できる

    ※ VolumeBackupScheduleの詳細については、APIリファレンス 参照

関連コマンド

バックアップに関するCLIは、backup create の他に以下が使用できる

  • backup
    • create
    • update
  • boot-volume-backup
    • create
    • update
  • volume-group-backup
    • create
    • update
  • oci bv volume-backup-policy
    • create --schedules <JSON>
    • update --schedules <JSON>

APIでバックアップとバックアップ・コピーのメタデータを眺める

【結論】
「保持期間」の終了日時 timeRetentionExpiresAt は、timeRequestReceived から計算されているように見受けられる。
そして、ソースの設定を引き継いだバックアップ・コピーは、ソースよりも未来で削除されることになる。

oci raw-requestコマンド
指定されたURI、HTTPメソッド、ペイロードに基づいて、OCIサービスに対してrawリクエストを実行する。現在2026年8月現在では、JSONのみサポート。
次のようなJSON構造を出力する:

{
  “data”: \<解析されたレスポンスボディを含むJSON配列またはオブジェクト>,
  “headers”: \<各ヘッダーがキーで、値がヘッダー値であるJSONオブジェクト>,
  “status”: \<HTTPステータスコードと理由、例:"200 OK"、"404 Not Found">
}

参考:OCI CLIコマンドリファレンス "oci raw-request"

ソース・バックアップ

BV_buckup_retention_Indefinitehold.png

testuser@cloudshell:~ (ap-osaka-1)$ oci raw-request --http-method GET --target-uri https://iaas.ap-osaka-1.oraclecloud.com/20160918/volumeBackups/ocid1.volumebackup.oc1.ap-osaka-1.abvwsljr4ag7rxljosbo25fahxtaqwwx3zwikz7vvzxmp43m5thkqcdmlcvq
{
  "data": {
    "backupProgress": 100,
    "compartmentId": "ocid1.compartment.oc1..aaaaaaaaqwhefd6b5ha7mo3oqx22nnasa45oybuhenpycn47xaxwg2imlaia",
    "definedTags": {
      "Oracle-Tags": {
        "CreatedBy": "default/testuser",
        "CreatedOn": "2026-08-18T05:43:06.815Z"
      }
    },
    "displayName": "BV_buckup_retention_Indefinitehold",
    "expirationTime": null,
    "freeformTags": {},
    "id": "ocid1.volumebackup.oc1.ap-osaka-1.abvwsljr4ag7rxljosbo25fahxtaqwwx3zwikz7vvzxmp43m5thkqcdmlcvq",
    "ioAlignmentSizeInBytes": null,
    "isIndefiniteRetentionEnabled": true,
    "isPreventDeletionEnabled": false,
    "isRetentionLockEnabled": true,
    "kmsKeyId": null,
    "kmsKeyVersionId": null,
    "lifecycleState": "AVAILABLE",
    "retentionPeriod": {
      "retentionTimeAmount": 1,
      "retentionTimeUnit": "DAYS"
    },
    "sizeInGBs": 50,
    "sizeInMBs": 51200,
    "sourceType": "MANUAL",
    "sourceVolumeBackupId": null,
    "systemTags": {},
    "timeCreated": "2026-08-31T14:44:13.184Z",
    "timeRequestReceived": "2026-08-31T14:44:11.249Z",
    "timeRetentionExpiresAt": "2026-09-01T14:44:11.257Z",
    "type": "FULL",
    "uniqueSizeInGBs": 1,
    "uniqueSizeInMbs": 1,
    "volumeGroupBackupId": null,
    "volumeId": "ocid1.volume.oc1.ap-osaka-1.abvwsljryg6lcczrasjcivhlkph22lxfbcbvozyh4iscohntqputwdb4y2qq"
  },
  "headers": {
    "Content-Length": "1095",
    "Content-Type": "application/json",
    "Date": "Mon, 31 Aug 2026 14:49:33 GMT",
    "ETag": "39cce0eb8846b69f039503b7efb10f20",
    "Strict-Transport-Security": "max-age=31536000; includeSubDomains;",
    "Vary": "Origin",
    "X-Content-Type-Options": "nosniff",
    "opc-request-id": "DE099C5BB35B4F338A2CCD69A4C4D7E4/AB84D64FED59CF937D94956A4B4958AF/EEF73578473997F6E4F9DC8F71807EED"
  },
  "status": "200 OK"
}
testuser@cloudshell:~ (ap-osaka-1)$

バックアップのコピー

BV_buckup_retention_Indefinitehold_copy.png

testuser@cloudshell:~ (ap-osaka-1)$ oci raw-request --http-method GET --target-uri https://iaas.ap-tokyo-1.oraclecloud.com/20160918/volumeBackups/ocid1.volumebackup.oc1.ap-tokyo-1.abxhiljro23wduur6uy7pauc22hfw5e5n37l26r5kpvldgtay77cpxyabpva
{
  "data": {
    "backupProgress": 100,
    "compartmentId": "ocid1.compartment.oc1..aaaaaaaaqwhefd6b5ha7mo3oqx22nnasa45oybuhenpycn47xaxwg2imlaia",
    "definedTags": {
      "Oracle-Tags": {
        "CreatedBy": "default/testuser",
        "CreatedOn": "2026-08-18T05:43:06.815Z"
      }
    },
    "displayName": "BV_buckup_retention_Indefinitehold_copy",
    "expirationTime": null,
    "freeformTags": {},
    "id": "ocid1.volumebackup.oc1.ap-tokyo-1.abxhiljro23wduur6uy7pauc22hfw5e5n37l26r5kpvldgtay77cpxyabpva",
    "ioAlignmentSizeInBytes": null,
    "isIndefiniteRetentionEnabled": true,
    "isPreventDeletionEnabled": false,
    "isRetentionLockEnabled": true,
    "kmsKeyId": null,
    "kmsKeyVersionId": null,
    "lifecycleState": "AVAILABLE",
    "retentionPeriod": {
      "retentionTimeAmount": 1,
      "retentionTimeUnit": "DAYS"
    },
    "sizeInGBs": 50,
    "sizeInMBs": 51200,
    "sourceType": "MANUAL",
    "sourceVolumeBackupId": "ocid1.volumebackup.oc1.ap-osaka-1.abvwsljr4ag7rxljosbo25fahxtaqwwx3zwikz7vvzxmp43m5thkqcdmlcvq",
    "systemTags": {},
    "timeCreated": "2026-08-31T14:47:43.047Z",
    "timeRequestReceived": "2026-08-31T14:47:42.844Z",
    "timeRetentionExpiresAt": "2026-09-01T14:47:42.998Z",
    "type": "FULL",
    "uniqueSizeInGBs": 1,
    "uniqueSizeInMbs": 1,
    "volumeGroupBackupId": null,
    "volumeId": "ocid1.volume.oc1.ap-osaka-1.abvwsljryg6lcczrasjcivhlkph22lxfbcbvozyh4iscohntqputwdb4y2qq"
  },
  "headers": {
    "Content-Length": "1207",
    "Content-Type": "application/json",
    "Date": "Mon, 31 Aug 2026 14:53:22 GMT",
    "ETag": "11c23980e3f8dadaa3e9d88dd5c0a0c3",
    "Strict-Transport-Security": "max-age=31536000; includeSubDomains;",
    "Vary": "Origin",
    "X-Content-Type-Options": "nosniff",
    "opc-request-id": "D9362ADCA4244623A2F19CAA35BFB835/FBF6F4450525836E6295956A4E525402/DAC46D1AFF54BB320D492992CF9C9F06"
  },
  "status": "200 OK"
}
testuser@cloudshell:~ (ap-osaka-1)$ 
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?