FSx for Windows のタイムゾーンに紐づく重複除外・シャドウコピー時刻設定の留意点

Amazon FSx for Windows File Server(以下 FSx for Windows) の機能に「データ重複除外」や「シャドウコピー」の機能が存在しております。

データ重複除外(重複排除)はストレージ量の削減、シャドウコピーはFSx for Windows のスナップショットの自動取得と提供されているサービス内容は全く異なりますが、これら機能を有効化するだけでもストレージの削減・スナップショットによる状態復元などの運用・保守への一助になる場合がございます。

しかし、重複除外・シャドウコピーそれぞれでFSx for Windows の内部作業が実行されるため一時的に高負荷な状態になる場合がございます。
そのため、重複除外やシャドウコピーの実行時間をデフォルト値から変更しサービス影響の少ない時間に変更したい場合、Invokeコマンドを用いたFSx for Windows の操作で作業時間の変更が行なえます。

そのInvokeコマンドを用いた際の動作時刻の変更にて、作業端末のタイムゾーンに紐づいて「データ重複除外」と「シャドウコピー」で指定するタイムゾーンが異なる事象が発生することがあります。

先に結論からまとめてしまうと以下の事象が発生いたします。

作業端末のタイムゾーンに依存し仮にその作業端末がJST の場合、重複除外はUTCシャドウコピーはJSTで時刻指定する必要があります。

 

設定項目 設定時タイムゾーン 確認時タイムゾーン
重複除外 UTC JST(作業端末依存)
シャドウコピー JST(作業端末依存) UTC

以下は具体的な例を交えて解説をさせていただきます。
FSx for Windows の重複除外・シャドウコピーの時間指定の悩み解消に本記事を活用いただけますと幸いです。
 
 

検証環境について

この度の検証の環境について記載いたします。
ネットワークは同一のVPC、サブネットに所属させて通信を行いました。

  • FSx for Windows
    • シングルAZ 1
    • Directory Service で構築した AWS Managed Microsoft AD に所属
  • 接続元EC2
    • OS : Widnows Server 2016
    • Timezone : JST(東京)
    • AD : FSx for Windows と同一の Directory Service に所属
    • DNS問い合わせ先 : 所属 Directory Service

 
 

重複除外の時刻設定について

重複除外のデフォルト設定値は以下の通りとなります。

ジョブ名 説明 デフォルトスケジュール
BackgroundOptimization データをチャンクに変換し圧縮することで重複除外を実施する 1時間ごと
WeeklyGarbageCollection ファイル削除などで不要となったチャンクを削除しデータ領域を解放する 毎週土曜 午前11:45(JST)
WeeklyScrubbing ディスク障害などで破損したチャンクを特定し、自動的に破損データの再構築を実施する 毎週土曜 午前12:45(JST)

重複除外設定が有効である場合、以下のコマンドで設定値を確認することができます。

Invoke-Command -ComputerName amznfsxzzzzzzzz.corp.example.com -ConfigurationName FSxRemoteAdmin -scriptblock {
Get-FSxDedupSchedule
}

今回は「BackgroundOptimization」の時刻指定を1時間ごとの毎時処理ではなく、夜間対応での日次 03:00(JST)の処理に修正してみます。

しかし、上記で解説した通り重複除外の時刻指定は UTC で行う必要があるため、指定するパラメーターは9時間を引いた 18:00(UTC) で指定する必要がございます。

上記内容を重複除外設定に適用するために必要なコマンドと出力結果は以下の通りとなります。

### 重複除外の新規スケジュールの登録
Invoke-Command -ComputerName amznfsxzzzzzzzz.corp.example.com -ConfigurationName FSxRemoteAdmin -ScriptBlock {
New-FSxDedupSchedule -Name "CustomOptimization" -Type Optimization -Days Sun,Mon,Tue,Wed,Thu,Fri,Sat -Start 18:00 -DurationHours 3
}

### デフォルトジョブ「BackgroundOptimization」は自動削除されないため明示的に無効化する
Invoke-Command -ComputerName amznfsxzzzzzzzz.corp.example.com -ConfigurationName FSxRemoteAdmin -ScriptBlock {
Set-FSxDedupSchedule -Name "BackgroundOptimization" -Enabled $False
}

設定変更をした結果は Get-FSxDedupSchedule コマンドを再実行することで確認でき、上から2段目に新規作成した重複除外スケジュール「CustomOptimaization」が出力されてます。
この時出力される時刻は端末設定のJSTで出力されるため、正常に設定できている場合は 03:00 AM と表記されます。

Invoke-Command -ComputerName amznfsxzzzzzzzz.corp.example.com -ConfigurationName FSxRemoteAdmin -scriptblock {
Get-FSxDedupSchedule
}

 
 

シャドウコピーの時刻設定について

シャドウコピーのデフォルト設定値は以下の2つの時刻で動作いたします。

  • 月〜金 の 16:00(JST)
  • 月〜金 の 21:00(JST)

シャドウコピー設定が有効である場合、以下のコマンドで現在の設定値を確認することができます。
しかし、シャドウコピーの設定確認時に出力される時刻はUTC表記で出力されます。

Invoke-Command -ComputerName amznfsxzzzzzzzz.corp.example.com -ConfigurationName FSxRemoteAdmin -scriptblock {
Get-FsxShadowCopySchedule
}

シャドウコピーの時刻指定を平日日中帯の16:00(JST)/21:00(JST)ではなく、夜間対応の日次 02:00(JST)の処理に修正してみます。

シャドウコピーの時刻指定は環境のタイムゾーンに依存したものを指定するため、この検証環境の場合はJST で時刻指定を実施します。

上記内容をシャドウコピー設定に適用するために必要なコマンドと出力結果は以下の通りとなります。

### シャドウコピーの新規スケジュールの登録
$trigger1 = new-scheduledTaskTrigger -weekly -DaysOfWeek Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday -at 02:00

invoke-command -ComputerName amznfsxzzzzzzzz.corp.example.com -ConfigurationName FSxRemoteAdmin -scriptblock {
set-fsxshadowcopyschedule -scheduledtasktriggers $Using:trigger1 -Confirm:$false
}

 

設定変更をした結果は Get-FsxShadowCopySchedule コマンドを再実行することで確認できます。

Invoke-Command -ComputerName amznfsxzzzzzzzz.corp.example.com -ConfigurationName FSxRemoteAdmin -scriptblock {
Get-FsxShadowCopySchedule
}

この時出力される時刻はUTCで出力されるため、正常に設定できている場合は YYYY-MM-DD T  17:00:00 + 00:00と表記されます。

 
 

回避策

タイムゾーンに依存した時刻設定に関する作業ミスを減らすための対策として2つの方法を提案させていただきます。

まず1つ目ですが、FSx for Windows に接続する作業端末・アカウントのタイムゾーンをUTCに固定することで、InvokeコマンドでのFSx for Windows の操作で作業端末のタイムゾーンに依存することなく操作ができます。

次に2つ目の対策ですが、FSx for Windows を操作する際にEnter-PSSession コマンドを用いた対話型の操作を実施することで、UTCに統一した設定値入出力が可能となります。

Enter-PSSession -ComputerName amznfsxzzzzzzzz.corp.example.com -ConfigurationName FSxRemoteAdmin
[amznfsxzzzzzzzz.corp.example.com] > {$各種 FSx for Windows 操作コマンド}

 
 

まとめ

重複除外とシャドウコピーの時刻設定について、作業端末のタイムゾーンに依存することを解説いたしました。
Invokeコマンドでのコマンド実行時に作業端末に依存し、且つ、重複除外・シャドウコピーの設定時と出力時のタイムゾーンが入れ子構造となっています。
JSTタイムゾーンを使用した環境で重複除外・シャドウコピーを設定する場合は上記回避策を参考に設定してみてください。