この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
FSxシリーズ全てのファイルシステムのバックアップをAWS Backupで管理できるぞ
こんにちは、のんピ(@non____97)です。
AWS BackupがAmazon FSx for OpenZFSをサポートしました。
これで、FSxシリーズ全てのファイルシステムのバックアップをAWS Backupで管理できるようになりました。やったね。
AWS Backupに対応したということで、以下のような悩みが解消できます。
- 1時間ごとにバックアップを取得したい
- バックアップの保持期間を1年にしたい
- 指定のボリュームのみバックアップを取得する間隔をカスタマイズしたい
- 別アカウントにバックアップをコピーしたい
AWS BackupがサポートしているFSx for OpenZFSのバックアップの機能は以下の通りです。
機能 | 対応状況 |
---|---|
Cross-Region backup | ✓ |
Cross-account backup | ✓ |
AWS Backup Audit Manager | ✓ |
Incremental backup | ✓ |
Continuous backup and point-in-time restore (PITR) | |
Full AWS Backup management | |
Lifecycle to cold storage | |
Item-level restore |
参考 : What is AWS Backup? - AWS Backup
早速AWS BackupでFSx for OpenZFSのバックアップを取得してみたので紹介します。
FSx for OpenZFSファイルシステムのデプロイ
FSx for OpenZFSファイルシステムをデプロイします。
デプロイはAWS CDKで行います。使用したコードは以下リポジトリに保存しています。
デプロイは7分ほどで完了しました。デプロイしたFSx for OpenZFSファイルシステムをAWS CLIで確認します。
$ aws fsx describe-file-systems
{
"FileSystems": [
{
"OwnerId": "<AWSアカウントID>",
"CreationTime": "2022-07-14T05:00:21.219000+00:00",
"FileSystemId": "fs-057509d8c92f1cb4d",
"FileSystemType": "OPENZFS",
"Lifecycle": "AVAILABLE",
"StorageCapacity": 64,
"StorageType": "SSD",
"VpcId": "vpc-0148de084c4b0f41a",
"SubnetIds": [
"subnet-00da1a809e6109b5a"
],
"NetworkInterfaceIds": [
"eni-056ea97820e1f8fe6"
],
"DNSName": "fs-057509d8c92f1cb4d.fsx.us-east-1.amazonaws.com",
"KmsKeyId": "arn:aws:kms:us-east-1:<AWSアカウントID>:key/<KMS ID>",
"ResourceARN": "arn:aws:fsx:us-east-1:<AWSアカウントID>:file-system/fs-057509d8c92f1cb4d",
"Tags": [
{
"Key": "aws:cloudformation:stack-name",
"Value": "OpenzfsStack"
},
{
"Key": "aws:cloudformation:logical-id",
"Value": "FSxforOpenZFS"
},
{
"Key": "aws:cloudformation:stack-id",
"Value": "arn:aws:cloudformation:us-east-1:<AWSアカウントID>:stack/OpenzfsStack/f7caf3e0-0330-11ed-8127-0ad888b702cf"
},
{
"Key": "Name",
"Value": "fsx-for-openzfs"
}
],
"OpenZFSConfiguration": {
"AutomaticBackupRetentionDays": 31,
"CopyTagsToBackups": true,
"CopyTagsToVolumes": true,
"DailyAutomaticBackupStartTime": "16:00",
"DeploymentType": "SINGLE_AZ_1",
"ThroughputCapacity": 64,
"WeeklyMaintenanceStartTime": "6:17:00",
"DiskIopsConfiguration": {
"Mode": "AUTOMATIC",
"Iops": 192
},
"RootVolumeId": "fsvol-0d8888da34de4774b"
}
}
]
}
ResourceARN
は後で使用するので控えておきます。
テストファイルの作成
FSx for OpenZFSファイルシステムをマウントして、テストファイルを作成します。
# マウントポイントの作成
$ sudo mkdir /fsx
# マウント
$ sudo mount -t nfs -o nfsvers=4.1 fs-057509d8c92f1cb4d.fsx.us-east-1.amazonaws.com:/fsx /fsx
# マウントされたことを確認
$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 471M 0 471M 0% /dev
tmpfs tmpfs 479M 0 479M 0% /dev/shm
tmpfs tmpfs 479M 408K 478M 1% /run
tmpfs tmpfs 479M 0 479M 0% /sys/fs/cgroup
/dev/nvme0n1p1 xfs 8.0G 1.5G 6.5G 19% /
tmpfs tmpfs 96M 0 96M 0% /run/user/0
fs-057509d8c92f1cb4d.fsx.us-east-1.amazonaws.com:/fsx nfs4 64G 0 64G 0% /fsx
$ mount | grep nfs
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
fs-057509d8c92f1cb4d.fsx.us-east-1.amazonaws.com:/fsx on /fsx type nfs4 (rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.10.0.13,local_lock=none,addr=10.10.0.46)
# テストファイルの作成
$ mkdir /fsx/aws-backup-test
$ echo "This is a test file of AWS Backup." > /fsx/aws-backup-test/aws-backup-test.txt
# テストファイルの確認
$ ls -l /fsx/aws-backup-test/aws-backup-test.txt
-rw-r--r-- 1 ssm-user ssm-user 35 Jul 14 05:08 /fsx/aws-backup-test/aws-backup-test.txt
$ cat /fsx/aws-backup-test/aws-backup-test.txt
This is a test file of AWS Backup.
AWS Backupの動作確認
AWS Backupプランとルールの作成
AWS Backupプランとルールを作成します。
以前、AWS BackupがFSx for ONTAPをサポートした際はコンソールから作成しました。
同じでは面白くないので、AWS CLIで作成してみます。ちなみにFSx for OpenZFSのバックアップはボリューム単位ではなく、ファイルシステム単位です。
# バックアップ対象のFSx for OpenZFSファイルシステムのARNの指定
$ file_system_arn=arn:aws:fsx:us-east-1:<AWSアカウントID>:file-system/fs-057509d8c92f1cb4d
# AWSアカウントIDの取得
$ aws_account=$(aws sts get-caller-identity \
| jq -r ".Account"
)
# AWS Backupプランとルールのパラメータ
$ create_backup_plan_input=$(cat <<EOM
{
"BackupPlan": {
"BackupPlanName": "fsx-for-openzfs-backup-plan",
"Rules": [
{
"RuleName": "fsx-for-openzfs-backup-rule",
"TargetBackupVaultName": "Default",
"ScheduleExpression": "cron(0 * * * ? *)",
"StartWindowMinutes": 60,
"CompletionWindowMinutes": 1440,
"Lifecycle": {
"DeleteAfterDays": 31
},
"RecoveryPointTags": {
"KeyName": "fsx-for-openzfs-backup-rule"
},
"CopyActions": [
{
"Lifecycle": {
"DeleteAfterDays": 31
},
"DestinationBackupVaultArn": "arn:aws:backup:ap-northeast-1:$aws_account:backup-vault:Default"
}
]
}
]
},
"BackupPlanTags": {
"KeyName": "fsx-for-openzfs-backup-plan"
}
}
EOM
)
# AWS Backupプランとルールの作成
$ create_backup_plan_output=$(aws backup create-backup-plan \
--cli-input-json "$create_backup_plan_input"
)
リソースの割り当て
AWS Backupプランとルールの作成が完了したら、AWS Backupプランにバックアップ対象のFSx for OpenZFSファイルシステム割り当てます。
# AWS BackupプランのID取得
$ backup_plan_id=$(echo "$create_backup_plan_output" \
| jq -r ".BackupPlanId"
)
# AWS Backupプランにバックアップ対象のFSx for OpenZFSファイルシステム割り当てる時のパラメータ
$ create_backup_selection_input=$(cat <<EOM
{
"BackupPlanId": "$backup_plan_id",
"BackupSelection": {
"SelectionName": "fsx-for-openzfs",
"IamRoleArn": "arn:aws:iam::$aws_account:role/service-role/AWSBackupDefaultServiceRole",
"Resources": [
"$file_system_arn"
]
}
}
EOM
)
# AWS Backupプランにバックアップ対象のFSx for OpenZFSファイルシステム割り当て
$ create_backup_selection_output=$(aws backup create-backup-selection \
--cli-input-json "$create_backup_selection_input"
)
# AWS Backupプランにバックアップ対象のFSx for OpenZFSファイルシステム割り当てられたか確認
$ aws backup list-backup-selections \
--backup-plan-id "$backup_plan_id"
{
"BackupSelectionsList": [
{
"SelectionId": "6e5c4b1c-34b7-4c4e-bd4e-ffeaaa8a72cc",
"SelectionName": "fsx-for-openzfs",
"BackupPlanId": "29c9aaef-e1c1-4789-a23a-00f0d808bbb0",
"CreationDate": "2022-07-14T05:40:33.171000+00:00",
"IamRoleArn": "arn:aws:iam::<AWSアカウントID>:role/service-role/AWSBackupDefaultServiceRole"
}
]
}
バックアップの確認
バックアップルールでcron(0 * * * ? *)
と指定したので、3:00になるとバックアップジョブが動き始めました。
しばらくするとバックアップジョブのステータスが作成しました
から実行中
、完了
に変わりました。
バックアップボールトを確認すると、バックアップが作成されていることが分かります。
バックアップをクリックすると、有効期限などの詳細を確認することができます。
FSxのコンソールからもバックアップを確認できます。
コピージョブも確認します。
コピージョブのステータスも完了
になっています。
バックアップの詳細を確認します。ソースリージョンやソースアカウントIDなどの情報が記載されています。
FSxのコンソールからもコピーされたバックアップを確認できます。どれがコピーされたバックアップなのか分かりやすくて良いですね。
バックアップからのリストア
それではバックアップからリストアします。
保護されたリソース
のFSx for OpenZFSファイルシステムから復旧ポイントを選択して、復元
をクリックします。
復元オプションは標準の復元
を選択します。
セキュリティグループを選択して、その他の設定はデフォルトのままでバックアップを復元
をクリックします。
リストアジョブが始まりました。
10分弱でリストアジョブのステータスが完了
になりました。
FSxのコンソールを確認すると、ファイルシステムが追加されていました。
AWS CLIからも確認してみます。
$ aws fsx describe-file-systems
{
"FileSystems": [
{
"OwnerId": "<AWSアカウントID>",
"CreationTime": "2022-07-14T05:00:21.219000+00:00",
"FileSystemId": "fs-057509d8c92f1cb4d",
"FileSystemType": "OPENZFS",
"Lifecycle": "AVAILABLE",
"StorageCapacity": 64,
"StorageType": "SSD",
"VpcId": "vpc-0148de084c4b0f41a",
"SubnetIds": [
"subnet-00da1a809e6109b5a"
],
"NetworkInterfaceIds": [
"eni-056ea97820e1f8fe6"
],
"DNSName": "fs-057509d8c92f1cb4d.fsx.us-east-1.amazonaws.com",
"KmsKeyId": "arn:aws:kms:us-east-1:<AWSアカウントID>:key/<KMS ID>",
"ResourceARN": "arn:aws:fsx:us-east-1:<AWSアカウントID>:file-system/fs-057509d8c92f1cb4d",
"Tags": [
{
"Key": "aws:cloudformation:stack-name",
"Value": "OpenzfsStack"
},
{
"Key": "aws:cloudformation:logical-id",
"Value": "FSxforOpenZFS"
},
{
"Key": "aws:cloudformation:stack-id",
"Value": "arn:aws:cloudformation:us-east-1:<AWSアカウントID>:stack/OpenzfsStack/f7caf3e0-0330-11ed-8127-0ad888b702cf"
},
{
"Key": "Name",
"Value": "fsx-for-openzfs"
}
],
"OpenZFSConfiguration": {
"AutomaticBackupRetentionDays": 31,
"CopyTagsToBackups": true,
"CopyTagsToVolumes": true,
"DailyAutomaticBackupStartTime": "16:00",
"DeploymentType": "SINGLE_AZ_1",
"ThroughputCapacity": 64,
"WeeklyMaintenanceStartTime": "6:17:00",
"DiskIopsConfiguration": {
"Mode": "AUTOMATIC",
"Iops": 192
},
"RootVolumeId": "fsvol-0d8888da34de4774b"
}
},
{
"OwnerId": "<AWSアカウントID>",
"CreationTime": "2022-07-14T07:54:55.223000+00:00",
"FileSystemId": "fs-0e04081bf17d57c30",
"FileSystemType": "OPENZFS",
"Lifecycle": "AVAILABLE",
"StorageCapacity": 64,
"StorageType": "SSD",
"VpcId": "vpc-0148de084c4b0f41a",
"SubnetIds": [
"subnet-00da1a809e6109b5a"
],
"NetworkInterfaceIds": [
"eni-02177e3ea01760539"
],
"DNSName": "fs-0e04081bf17d57c30.fsx.us-east-1.amazonaws.com",
"KmsKeyId": "arn:aws:kms:us-east-1:<AWSアカウントID>:key/<KMS ID>",
"ResourceARN": "arn:aws:fsx:us-east-1:<AWSアカウントID>:file-system/fs-0e04081bf17d57c30",
"Tags": [],
"OpenZFSConfiguration": {
"AutomaticBackupRetentionDays": 31,
"CopyTagsToBackups": false,
"CopyTagsToVolumes": false,
"DailyAutomaticBackupStartTime": "16:00",
"DeploymentType": "SINGLE_AZ_1",
"ThroughputCapacity": 64,
"WeeklyMaintenanceStartTime": "6:17:00",
"DiskIopsConfiguration": {
"Mode": "AUTOMATIC",
"Iops": 192
},
"RootVolumeId": "fsvol-0ce12cb664190a046"
}
}
]
}
タグやCopyTagsToBackups
、CopyTagsToVolumes
の値が異なるようです。本番運用する際は、リストア後こちらの値を修正してあげる必要がありますね。
それではリストアしたファイルシステムをマウントして、テストファイルがあるか確認します。
# リストアしたFSx for OpenZFSファイルシステムをマウントするマウントポイントを作成
$ sudo mkdir /fsx_restore
# リストアしたFSx for OpenZFSファイルシステムをマウント
$ sudo mount -t nfs -o nfsvers=4.1 fs-0e04081bf17d57c30.fsx.us-east-1.amazonaws.com:/fsx/ /fsx_restore
# マウントされたことを確認
$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 471M 0 471M 0% /dev
tmpfs tmpfs 479M 0 479M 0% /dev/shm
tmpfs tmpfs 479M 352K 478M 1% /run
tmpfs tmpfs 479M 0 479M 0% /sys/fs/cgroup
/dev/nvme0n1p1 xfs 8.0G 1.5G 6.5G 19% /
fs-057509d8c92f1cb4d.fsx.us-east-1.amazonaws.com:/fsx nfs4 64G 256K 64G 1% /fsx
fs-0e04081bf17d57c30.fsx.us-east-1.amazonaws.com:/fsx nfs4 64G 256K 64G 1% /fsx_restore
$ mount | grep nfs
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
fs-057509d8c92f1cb4d.fsx.us-east-1.amazonaws.com:/fsx on /fsx type nfs4 (rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.10.0.13,local_lock=none,addr=10.10.0.46)
fs-0e04081bf17d57c30.fsx.us-east-1.amazonaws.com:/fsx on /fsx_restore type nfs4 (rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.10.0.13,local_lock=none,addr=10.10.0.43)
# テストファイルがあることを確認
$ ls -l /fsx/aws-backup-test/aws-backup-test.txt
-rw-r--r-- 1 ssm-user ssm-user 35 Jul 14 05:08 /fsx/aws-backup-test/aws-backup-test.txt
$ cat /fsx/aws-backup-test/aws-backup-test.txt
This is a test file of AWS Backup.
テストファイルの確認もできました。
バックアップのリージョン間コピーがありがたい
AWS BackupがAmazon FSx for OpenZFSをサポートしたアップデートを紹介しました。
個人的にはバックアップのリージョン間コピーがありがたいなと思いました。DRの対応もAWS Backupを活用すれば楽になるのではと考えます。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!