この記事は公開されてから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の作成が初めての場合は、こちらのブログが参考になります。
ファイルサーバーと接続
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ドライブを開き、ファイルを右クリック、プロパティの順に選択します。
以前のバージョンタブを開くと、シャドウコピーが取得された日時が表示されています。
日時の行を選択した状態で、開くを選択すると、その日時のファイルを確認できます。復元を選択すると、現在のファイルに、その日時のファイルを上書きします。
参考元
- Working with Shadow Copies - Amazon FSx for Windows File Server
- Managing Shadow Copies - Amazon FSx for Windows File Server
あとがき
今まで、FSx for Winを利用をためらう障壁の1つとして、シャドウコピーができないという物がありました。FSx for Winを使っている方なら、誰もが嬉しいアップデートだと思います。
以上でした!