待望のアップデートが来た! Amazon FSx for Windows File Serverでシャドウコピーが使えるようになりました!

Amazon FSx for Windows File ServerがMicrosoft Windows シャドウコピーに対応しました!これにより、エンドユーザーの誤操作対策としてのバックアップをマネージドサービスで実現する事が可能になります。 このブログでは、実際の手順やリストア方法を説明しています。
2019.08.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

おはようございます、加藤です。Amazon FSx for Windows File Server(以降、FSx for Win)がMicrosoft Windows シャドウコピーに対応しました! 今までは、FSx for Winはバックアップには対応していましたが、全体ののスケジュール or 任意バックアップのみで、リストアする際にはバックアップを元にFSx for Winを新規作成して、必要なファイルを取り出して...という手順が必要でした。バックアップの機能があるのは有り難いのですが、エンドユーザーが誤操作で、ファイルを上書き・削除してしまった際の対策としては、リストアコストが大きすぎて現実的ではありませんでした。
シャドウコピーであれば、エンドユーザーが簡単な操作でファイルをリストアする事が可能になります!

注意

シャドウコピーが使えるのは日本時間で、2019年07月31日(水) 23:00以降に作成された、FSx for Winのみです。

Windows shadow copies are only available on Amazon FSx for Windows File Server file systems created on or after July 31, 2019, 7:00 AM PDT.
Working with Shadow Copies - Amazon FSx for Windows File Server

既に、FSx for Winを利用中で、シャドウコピーを使いたい場合は、新規で作成し、ファイル移行を行う必要があります。

やってみた

準備

下記を行います。

  • AWS Directory Service(AWS Managed Microsoft AD)のセットアップ
  • ドメインに参加した、Windows Server on EC2のセットアップ
  • FSx for Winのセットアップ

上から同期で進め、EC2のセットアップ時にはドメイン結合ディレクトリ機能を使って、ドメイン参加させるのが便利です。

FSxの作成が初めての場合は、こちらのブログが参考になります。

Amazon FSx for WindowsをWorkspacesで試してみた #reinvent

ファイルサーバーと接続

Windows Serverにリモートデスクトップ接続します。この際に、ADの管理者権限ユーザーでログインしましょう。
今回の環境の場合は、ドメインをrkato.classmethod.infoで作成したので、admin@rkato.classmethod.infoでログインしました。

ネットワークドライブとしてマウントし、正常にマウントできているかを確認します。

New-PSDrive -Persist -Name P -PSProvider FileSystem -Root \\<FSxFileSystem-DNS-Name>\share
Get-PSDrive

このように表示されていれば、正しくマウントされています。

Name           Used (GB)     Free (GB) Provider      Root                                               CurrentLocation
----           ---------     --------- --------      ----                                               ---------------
Alias                                  Alias
C                  14.27         35.73 FileSystem    C:\                                                    Users\Admin
Cert                                   Certificate   \
Env                                    Environment
Function                               Function
HKCU                                   Registry      HKEY_CURRENT_USER
HKLM                                   Registry      HKEY_LOCAL_MACHINE
P                   0.13        299.87 FileSystem    \\<FSxFileSystem-DNS-Name>\share
Variable                               Variable
WSMan                                  WSMan

シャドウコピーの有効化と容量の設定

Invoke-Command -ComputerName <FSxFileSystem-DNS-Name> -ConfigurationName FSxRemoteAdmin -scriptblock {Set-FsxShadowStorage -Default}

このように表示されていれば、正しく設定されています。

FSx Shadow Storage Configuration


AllocatedSpace : 0
UsedSpace      : 0
MaxSpace       : 32530536858
PSComputerName : <FSxFileSystem-DNS-Name>
RunspaceId     : d74a60b2-b566-4389-8b4d-be47f15fd7f8

MaxSpaceがシャドウコピーに使用を許可する容量です。デフォルトではディスク容量の100%の使用許可を与えています。
ディスク容量の20%に制限してみましょう。

下記のコマンドを実行する事で、FSx for Winにリモート接続します。

enter-pssession -computername <FSxFileSystem-DNS-Name> -configurationname fsxremoteadmin
[/powershell


Set-FsxShadowStorage -Maxsize "20%"

32,530,536,858 * 0.2= 6,506,107,371.6なので、意図したとおりに制限できました。

FSx Shadow Storage Configuration

AllocatedSpace UsedSpace    MaxSpace
-------------- ---------    --------
             0         0 65061073715

他にも、バイト単位などで指定を行う事ができます。

  • バイト単位: Set-FsxShadowStorage -Maxsize 2500000000
  • キロバイト、メガバイト、ギガバイト、またはその他の単位:Set-FsxShadowStorage -Maxsize (2500MB)またはSet-FsxShadowStorage -Maxsize (2.5GB)
  • ストレージ全体に対する割合: Set-FsxShadowStorage -Maxsize "20%"
  • 未定義: Set-FsxShadowStorage -Maxsize "UNBOUNDED"

exitコマンドで、リモート接続を解除します。

FSxFileSystem

exit

スケジュールの設定

デフォルトでは、シャドウコピーは自動取得されません。Windows タスクスケジューラの機能を使用して、任意のスケジュールでシャドウコピーを取得します。
タイムゾーン設定に注意する必要があります。今の作業で使用しているWindows ServerはUTCなので、タイムゾーンをJSTに変更し、スケジュールを作成します。

Set-TimeZone -Name 'Tokyo Standard Time'
$trigger1 = new-scheduledTaskTrigger -weekly -DaysOfWeek Monday,Tuesday,Wednesday,Thursday,Friday -at 06:00
$trigger2 = new-scheduledTaskTrigger -weekly -DaysOfWeek Monday,Tuesday,Wednesday,Thursday,Friday -at 18:00
echo $trigger1
echo $trigger2

StartBoundaryに、意図した時間が、UTCで表示されればOKです。

PS C:\Users\Admin> echo $trigger1


Enabled            : True
EndBoundary        :
ExecutionTimeLimit :
Id                 :
Repetition         :
StartBoundary      : 2019-08-06T21:00:00Z
DaysOfWeek         : 62
RandomDelay        :
WeeksInterval      : 1
PSComputerName     :



PS C:\Users\Admin> echo $trigger2


Enabled            : True
EndBoundary        :
ExecutionTimeLimit :
Id                 :
Repetition         :
StartBoundary      : 2019-08-07T09:00:00Z
DaysOfWeek         : 62
RandomDelay        :
WeeksInterval      : 1
PSComputerName     :
invoke-command -ComputerName <FSxFileSystem-DNS-Name> -ConfigurationName FSxRemoteAdmin -scriptblock {
set-fsxshadowcopyschedule -scheduledtasktriggers $Using:trigger1,$Using:trigger2 -Confirm:$false }

このように表示されていれば、正しく設定されています。

Start Time     : 2019-08-06T21:00:00+00:00
Days of Week   : Monday,Tuesday,Wednesday,Thursday,Friday
WeeksInterval  : 1
PSComputerName : fs-0730d1de6255e869c.rkato.classmethod.info
RunspaceId     : 5bbcc1a9-7657-41a3-a75d-81fb8b68310a

Start Time     : 2019-08-07T09:00:00+00:00
Days of Week   : Monday,Tuesday,Wednesday,Thursday,Friday
WeeksInterval  : 1
PSComputerName : fs-0730d1de6255e869c.rkato.classmethod.info
RunspaceId     : 5bbcc1a9-7657-41a3-a75d-81fb8b68310a

リストア手順

準備

マウントしたPドライブ配下に、適当なテキストファイルを作成します。

cd P:
echo "Hello World!" >> ShadowCopyTest.txt

手動でシャドウコピー取得を実行します。

invoke-command -ComputerName <FSxFileSystem-DNS-Name> -ConfigurationName FSxRemoteAdmin -scriptblock { New-FsxShadowCopy }

ファイルに追記します。

echo "Hello World!" >> ShadowCopyTest.txt

リストア

エクスプローラーで、Pドライブを開き、ファイルを右クリック、プロパティの順に選択します。
以前のバージョンタブを開くと、シャドウコピーが取得された日時が表示されています。

日時の行を選択した状態で、開くを選択すると、その日時のファイルを確認できます。復元を選択すると、現在のファイルに、その日時のファイルを上書きします。

参考元

あとがき

今まで、FSx for Winを利用をためらう障壁の1つとして、シャドウコピーができないという物がありました。FSx for Winを使っている方なら、誰もが嬉しいアップデートだと思います。
以上でした!