AWS の Amazon FSx で shadow copy オプションを試す
AWS の Amazon FSx for Windows ファイルサーバー では、AWS 上の設定もあるのですが、PowerShell を利用し設定する箇所もあります。
そのうちの一つに shadow copy(シャドウコピー)があります。
目次
AWS の Amazon FSx shadow copy とは
通常、Amazon FSx はバックアップを取得可能です。その場合、ある時点のファイルを復元したい時には FSx を丸ごと復元する形になります。でも、間違って更新してしまったとかの場合は、単一ファイルのみを復元したいケースもあるかと思います。
Amazon FSx shadow copy を有効化しておくと、ファイル/フォルダ単位でのリストアが可能になります。いちいち FSx のリストアをしなくて良いので楽ですね。
ファイルシステム毎に最大500ファイルまで shadow copy に記憶でき、上限を超えると、古いものから順に消えていくそうです。
一応デメリットもあります。
FSx の一部の容量を shadow copy 用に利用するため、FSx に割り当てたディスク容量よりも、実際に保存するデータ容量は少なくなってしまいます。変更は可能で、デフォルトでは 10% を shadow copy 用に割り当てています。
Amazon FSx shadow copy 有効化方法
よく利用しそうなコマンドを下記にまとめます。
Amazon FSx に接続できる Windows 端末から下記を PowerShell で実行します。
設定コマンド例
(1) Windows Remote PowerShell Endpoint を設定する
#poweshell endpointを設定する
$FSxWindowsRemotePowerShellEndpoint="amznfsxxxxxxxxxx.fsx-test.local"
(2) shadow copy を有効化
#shadow copyを有効化
Invoke-Command -ComputerName $FSxWindowsRemotePowerShellEndpoint -ConfigurationName FSxRemoteAdmin -ScriptBlock { Set-FsxShadowStorage -Default }
(3) shadow copy のスケジュール設定(スケジュールを明確に指定する場合)
#shadow copyのスケジュールを作成
$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
invoke-command -ComputerName $FSxWindowsRemotePowerShellEndpoint -ConfigurationName FSxRemoteAdmin -scriptblock {
set-fsxshadowcopyschedule -scheduledtasktriggers $Using:trigger1,$Using:trigger2 -Confirm:$false }
(4) スケジュールを確認
# スケジュール確認
Invoke-Command -ComputerName $FSxWindowsRemotePowerShellEndpoint -ConfigurationName FSxRemoteAdmin -ScriptBlock { Get-FsxShadowCopySchedule }
その他、より詳細の設定方法は AWS のドキュメントにも記載があります。
下記がわかりやすのではと思います。
また、他にも便利なオプション設定があり、同様に PowerShell で設定が可能ですので、
興味のある方は下記も参考になるかと思います。
Amazon FSx の AWS CloudFormation 設定例
下記をまとめて作成する CloudFormation を作成してみました。
自己所有の AD を参照する Fsx 用の記述のため、Microsoft AD をご利用の場合は、その部分を書き換えが必要です。
あと、各種パラメータは読み替えてください。
- fsx
- security-group
- SNS
- cloudwatch
AWSTemplateFormatVersion: "2010-09-09"
Description: A templete for fsx for windows
Parameters:
EnvPrefix:
Type: String
Default: "test"
# KmsKeyId:
# Type: String
StorageCapacity:
Type: Number
Default : 32
VPCId:
Type: AWS::EC2::VPC::Id
Default: vpc-xxxxxxxxx
SubnetIds:
Type: List<AWS::EC2::Subnet::Id>
Default: subnet-xxxxxxxxxx
# ActiveDirectoryId:
# Type: String
# Default: d-96671b8248
DailyAutomaticBackupStartTime:
Type: String
Default: "16:00"
DeploymentType:
Type: String
Default: SINGLE_AZ_2
# Default: MULTI_AZ_1
ThroughputCapacity:
Type: Number
Default : 8
WeeklyMaintenanceStartTime:
Type: String
Default: "6:17:00"
OnpreDNS:
Type: CommaDelimitedList
Default: xxx.xxx.xxx.xxx
OnpreDomainName:
Type: String
Default: fsx-test.local
FileSystemAdministratorsGroup:
Type: String
Default: FSXAdmins
UserName:
Type: String
Default: fsxservice
Password:
Type: String
Default: xxxxxxxxxxxxxxxxxxxxxxxxxx
NoEcho: True
OrganizationalUnitDistinguishedName:
Type: String
Default: "OU=FileSystems,DC=fsx-test,DC=local"
FSXAllowedRange:
Type: String
Default: 172.30.0.0/16
ThresholdFreeStorageCapacity:
Type: Number
Default: 3221225472
endpointEmail:
Type: String
Default: 'xxxxxxxxxxxxxx@xxxxxx.com'
Resources :
fsx:
Type: AWS::FSx::FileSystem
Properties:
# KmsKeyId: kms
FileSystemType: WINDOWS
SecurityGroupIds:
- !Ref sg
StorageCapacity: !Ref StorageCapacity
StorageType: SSD
# StorageType: HDD
SubnetIds: !Ref SubnetIds
WindowsConfiguration:
# ActiveDirectoryId: !Ref ActiveDirectoryId
AutomaticBackupRetentionDays: 7
CopyTagsToBackups: true
DailyAutomaticBackupStartTime: !Ref DailyAutomaticBackupStartTime
DeploymentType: !Ref DeploymentType
# PreferredSubnetId: String
SelfManagedActiveDirectoryConfiguration:
DnsIps: !Ref OnpreDNS
DomainName: !Ref OnpreDomainName
FileSystemAdministratorsGroup: !Ref FileSystemAdministratorsGroup
OrganizationalUnitDistinguishedName: !Ref OrganizationalUnitDistinguishedName
Password: !Ref Password
UserName: !Ref UserName
ThroughputCapacity: !Ref ThroughputCapacity
WeeklyMaintenanceStartTime: !Ref WeeklyMaintenanceStartTime
sg:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: !Sub ${EnvPrefix}-sg
GroupName: !Sub ${EnvPrefix}-sg
VpcId: !Ref VPCId
SecurityGroupIngress:
-
CidrIp: !Ref FSXAllowedRange
FromPort: 445
ToPort: 445
IpProtocol: tcp
-
CidrIp: !Ref FSXAllowedRange
FromPort: 5985
ToPort: 5985
IpProtocol: tcp
Tags:
-
Key: Name
Value: FSX
CloudWatchAlarmFreeStorageCapacity:
Type: AWS::CloudWatch::Alarm
Properties:
ActionsEnabled: 'true'
ComparisonOperator: LessThanOrEqualToThreshold
EvaluationPeriods: '1'
MetricName: FreeStorageCapacity
Namespace: AWS/FSx
AlarmName: !Sub ${EnvPrefix}FreeStorageCapacity
Period: '300'
Statistic: Average
Threshold: !Ref ThresholdFreeStorageCapacity
AlarmActions:
- !Ref SNSNotif
Dimensions:
-
Name: FileSystemId
Value: !Ref fsx
SNSNotif:
Type: AWS::SNS::Topic
Properties:
DisplayName: !Sub ${EnvPrefix}Topic
Subscription:
-
Endpoint: !Ref endpointEmail
Protocol: email
TopicName: !Sub ${EnvPrefix}TopicTicket
AWS の Amazon FSx shadow copy(まとめ)
Amazon FSx for Windows ファイルサーバー では shadow copy を有効化しておくことがベストプラクティスとして AWS の公式ドキュメントにも記載されています。
運用面で費用対効果が高そうですので上記参考になれば嬉しいです。
元記事発行日: 2022年06月24日、最終更新日: 2023年03月28日