【Commvault】AUXコピー中にデータエージングできなかった話

2022年9月17日

こんにちは、キクです。

つい先日、CommvaultのAUXコピー中に遭遇したトラブルの1つとして「ジョブ数不一致の謎」についてご紹介した記事を書きました。
前回の記事:【Commvault】AUXコピーで発生したジョブ数不一致の謎
今回はトラブル記事第2弾です!(笑)

というわけで、本記事は『AUXコピー中にデータエージングできなかった話』をテーマに書いていきたいと思います!

それでは、よろしくお願いします。

動作環境

本記事の内容は、下記の環境で実施したものになります。
・CommServe v11

注意事項

本記事は僕が経験した内容をもとに記載しておりますが、実行環境や設定内容によっては動作が異なる場合があります。
そのため『参考程度』にお読みいただけますと幸いです。

AUXコピーとは

まずはAUXコピーについてですが、前回の記事で同じ内容をご紹介しているので、気になる方はそちらを読んでみてください。
関連記事:【Commvault】AUXコピーで発生したジョブ数不一致の謎

要点だけお伝えすると、AUXコピーとはCommvaultの機能の1つで、同一ストレージポリシーに登録された「1次 / 同期」の関係を持つライブラリ間でデータを同期(コピー)することができる機能になります。

AUXコピー中はデータエージングが効かない?

それでは本題に入っていこうと思いますが、まずは本項目を書くことにした背景についてお話させてください。

1次側ライブラリが枯渇した

AUXコピーは「1次 / 同期」の関係を持つライブラリ間でデータを同期するということは既に触れました。
今回の作業では、その1次側のライブラリがAUXコピー中に枯渇したというトラブルに遭遇しました。

ストレージポリシーには「保存するジョブをどのくらい世代管理するか」を指定するために「保持目的」という項目があります。
本設定項目では「○日/○サイクル」のような指定方法で世代管理数を設定します。

AUXコピーを実行していない時には、この設定に従ってジョブの世代管理が適切に行われていたのですが、枯渇したライブラリのジョブを確認してみると世代管理数として指定した以上の世代数のジョブが残っていました。

これにより1次側ライブラリが枯渇状態になってしまいました。

AUXコピー中のデータエージング

上記のようなトラブルもあり「AUXコピー中はデータエージングが効かないのでは?」という仮説を立てることとなりました。
この仮説の真意を確かめるために次のような観点で調査をすることにしました。

調査観点

  1. AUXコピー中にデータエージングによる世代管理は有効か?
  2. AUXコピーを一時中止し、データエージングを実行すると適切にエージングされるか?
  3. AUXコピーを一時中止し、不要なバックアップジョブを削除してからAUXコピーを再開することは可能か?

調査の結果、AUXコピーに関して次のような仕様があることが分かりました。

調査で判明した仕様

  1. 基本的にはAUXコピーが完了するまでは、1次側などデータは「保持期限」を超えていてもエージングされない
  2. AUXコピーに含まれているデータの場合、基本的にAUXコピーが完了するまではデータエージングを実行してもデータはエージングされない
  3. AUXコピーに含まれているデータを削除した場合、基本的にそのデータはコピーされない

この仕様(特に1および2)から「AUXコピー中または一時停止中にはどうやらエージングは効かないらしい」と理解しました。

AUXコピーは、コピーする対象が多いほど時間がかかります。
その間ずっとデータエージングが効かないというのは困ってしまいます。
なぜなら、本来削除されるべきデータが蓄積されてリソースを消費していくからです。

「空き容量が潤沢」であったり「普段ほとんどバックアップジョブは実行されない」などであればAUXコピー中にデータエージングが効かなくても特に問題ないかもしれませんが、必ずしもそのような環境であるとは限りませんよね。

今回の環境は容量が潤沢なわけでもなく、バックアップに関しては「今まさに実行中」の状態でした。
実行中のバックアップジョブすらも完了できるか怪しいくらい枯渇してしまっていたので、仕方なくAUXコピーをキャンセルしました。

AUXコピーをキャンセルしてもデータエージングが効かない?

前項にもあるように、ライブラリが枯渇した影響からAUXコピーをキャンセルしたので晴れてデータエージングが可能な状態になりました。
枯渇状態を解消すべく早速データエージングを実施しました。

「ふむふむ、消えた消えたー」
「おやおや・・・?」
「一部エージングされてないジョブがあるぞ・・・?」

そうなんです、ここで新たなるトラブル発生です。
データエージング対象であるにも関わらず、一部のジョブがエージングされませんでした。
AUXコピーはキャンセル済みなのにです。

部分的にコピー済みのジョブはデータエージング対象外

「なぜエージングされないのか?」
「どんなジョブがエージングされないのか?」

これを明らかにするべく、1次と同期の双方のライブラリに保存されているジョブ一覧を眺めていました。
すると、1次側でエージングされないジョブとそれに対応する同期側のジョブの間には「ある共通点」があることを発見しました。

それは、同期側でジョブのステータスが「部分的にコピー済み」の状態である場合、そのジョブのコピー元である1次側のジョブはエージングされていないというもの。
(ややこしい・・・。)

前回の記事でステータスには以下のものがあるとご紹介しました。

ステータスの種類

①使用可能      :コピー済み
②部分的にコピー済み :途中まではコピー済み
③コピー予定     :次回のAUXコピー時にコピーする予定
④整理済       :コピーは完了したがデータエージングなどによりジョブ削除済み

今回は上記の②に該当している「部分的にコピー済み」のジョブを同期側に持つ1次側のジョブがエージングされていないことになります。

これは僕の解釈ですが、同期側に部分的にでもコピーが完了している場合、1次側のジョブはある意味で「同期側に掴まれている状態」であると考えられます。
この「掴まれている状態」になってしまうとデータエージングができないのではないかと仮説を立てました。

試しに同期側のジョブを削除してみた

「同期側に掴まれていると1次側でエージングできない」の仮説を立証すべく、試しに同期側の「部分的にコピー済み」となっているジョブを削除してみました。
この状態でデータエージングを実行してみると・・・

無事に1次側で世代管理の設定以上に保持されてしまっていたジョブをエージング(削除)することができました!

これで一件落着です。

おわりに

いかがだったでしょうか。

今回はAUXコピー中のデータエージングの制限についてご紹介してきました。

今回のポイントを振り返ると、以下の通りとなります。

今回のポイント

  1. AUXコピー途中には1次側でエージングが効かない
  2. AUXコピーをキャンセルすれば条件付きでエージングができるようになる
  3. 同期側に部分的にコピーされた1次側のジョブはエージングが効かない
  4. 同期側の部分的にコピーされたジョブを削除すれば、1次側のジョブもエージングできるようになる

なかなかややこしい部分もありましたが、仕組みが分かっていると対処方法もイメージしやすくなりますよね!

本記事を最後までお読みいただき、ありがとうございました。
ではでは!

-Commvault
-