ゲームソリューション部の えがわ です。
本日はAmazon FSx for NetApp ONTAP(以降FSxN)をTerraformで構築してみました。
Amazon FSx for NetApp ONTAPとは
FSxNは高いパフォーマンスを提供し、バックアップとリストアのプロセスが容易です。
ゲーム業界ではビルド環境やバージョン管理システムのストレージとして、とても適しています。
Amazon FSx for NetApp ONTAP は、 NetAp]pの人気のある ONTAP ファイルシステム上に構築された、信頼性が高く、スケーラブルで、パフォーマンスが高く、機能豊富なファイルストレージを提供するフルマネージドサービスです。FSx for ONTAP は、 NetApp ファイルシステムの使い慣れた機能、パフォーマンス、機能、および API オペレーションと、フルマネージド型の の俊敏性、スケーラビリティ、およびシンプルさを組み合わせますAWS のサービス。
事前準備
VPCの準備
VPCは以下のTerraformで作成しています。
各種パラメータの準備
VPC ID, Subnet ID, CIDRをメモしておきます。
VPC ID, Subnet IDはCLIでも取得できます。
また、FSxNはプライベートサブネットに配置します。
VPC IDの取得
aws ec2 describe-vpcs \
--query 'Vpcs[*].{VpcId:VpcId,Name:Tags[?Key==`Name`]|[0].Value}'\
--output text
Subnet IDの取得
aws ec2 describe-subnets \
--filters "Name=vpc-id,Values={選択したVPC ID}" \
--query 'Subnets[*].{SubnetId:SubnetId,Name:Tags[?Key==`Name`]|[0].Value}' \
--output text
環境構築
リポジトリ
Terraform
resource "aws_security_group" "nfs_sg" {
name = "${var.project_name}-nfs-sg"
vpc_id = var.vpc_id
ingress {
from_port = 2049
to_port = 2049
protocol = "tcp"
cidr_blocks = [var.vpc_cidr_block]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
resource "aws_fsx_ontap_file_system" "file_system" {
storage_capacity = 1024
subnet_ids = [var.subnet_id]
preferred_subnet_id = var.subnet_id
deployment_type = "SINGLE_AZ_1"
throughput_capacity = 128
security_group_ids = [aws_security_group.nfs_sg.id]
fsx_admin_password = var.fsx_admin_password
tags = {
Name = "${var.project_name}-fsxn"
}
timeouts {
create = "60m"
update = "60m"
}
}
resource "aws_fsx_ontap_storage_virtual_machine" "svm" {
file_system_id = aws_fsx_ontap_file_system.file_system.id
name = "${var.project_name}-svm"
}
resource "aws_fsx_ontap_volume" "volume" {
name = "vol"
junction_path = "/vol1"
size_in_megabytes = 1048576
storage_efficiency_enabled = true
storage_virtual_machine_id = aws_fsx_ontap_storage_virtual_machine.svm.id
lifecycle {
ignore_changes = [
tiering_policy[0].cooling_period
]
}
}
Terraformを実行するとファイルシステムの作成に30分ほど(Single-AZ)時間がかかります。
※ファイルシステムの作成だけで24分かかりました。
module.fsxn.aws_fsx_ontap_file_system.file_system: Creating...
module.fsxn.aws_fsx_ontap_file_system.file_system: Still creating... [10s elapsed]
module.fsxn.aws_fsx_ontap_file_system.file_system: Still creating... [20s elapsed]
...中略
module.fsxn.aws_fsx_ontap_file_system.file_system: Still creating... [24m10s elapsed]
module.fsxn.aws_fsx_ontap_file_system.file_system: Still creating... [24m20s elapsed]
module.fsxn.aws_fsx_ontap_file_system.file_system: Creation complete after 24m24s [id=fs-xxxxxxxxxxxxxx]
作成したFSxNをEC2にマウントしてみます。
マウントコマンドについてはAWSのマネジメントコンソールから確認できます。
EC2にSSMで接続し表示されているコマンドを実行します。
マウントすることができました!
画像では113GBが使用済みとなっていますが、16%はファイルシステム用に予約されています。
他の NetApp ONTAP ファイルシステムと同様に、ファイルシステムの SSD ストレージ容量の最大 16% は ONTAP オーバーヘッド用に予約されています。つまり、ファイルの保存には使用できません。ONTAP オーバーヘッドは次のように割り当てられます。11% は NetApp ONTAP ソフトウェア用に予約されています。30 テビバイト (TiB) を超える SSD ストレージ容量を持つファイルシステムの場合、6% が予約されています。5% は、ファイルシステムの両方のファイルサーバ間でデータを同期させるために必要な、集約スナップショット用に確保されています。
サイジングについては以下のブログを参考になります。
最後に
FSxNは強力なストレージオペレーティングシステムで、高度なデータ管理機能と優れた拡張性を備えています。
ゲーム業界ではバージョン管理システムやビルド環境のストレージとして、とても適しています。
この記事が参考になれば幸いです。