Mountpoint for Amazon S3 の共有キャッシュ利用時に S3 Express One Zone 障害の挙動を検証してみた
AWS FIS が S3 Express One Zone の障害注入に対応しました。Mountpoint for S3 の共有キャッシュ機能で S3 Express One Zone を利用した場合、AZ 障害時にどのような挙動になるか検証しました。
はじめに
本記事は、以下 2 つの記事の続編です。
今回は FIS を使って S3 Express One Zone に障害を注入し、Mountpoint for S3 の挙動を確認します。
検証環境の準備
検証環境の構成
本検証では以下の環境を使用しました。
項目 | 内容 |
---|---|
EC2 インスタンス | t3a.micro(Ubuntu 24.04 LTS) |
リージョン | ap-northeast-1(東京) |
S3 Standard バケット | オリジナルデータ格納用 |
S3 Express One Zone | 共有キャッシュ用(apne1-az4) |
Mountpoint for S3 | v1.19.0(共有キャッシュ機能を有効化) |
共有キャッシュ設定した Mountpoint for Amazon S3 の設定手順は以下の記事で紹介しています。
Mountpoint for S3 のマウント状況
まず、Mountpoint for S3 で S3 バケットをマウントしました。共有キャッシュに S3 Express One Zone を使用しています。
$ df -h | grep mountpoint
mountpoint-s3 8.0E 0 8.0E 0% /mnt/s3
検証用ファイルの確認
S3 バケットには 500KB のファイルが約 10,000 個保存されています。これらのファイルを使ってキャッシュの動作を検証します。
$ ls -lh /mnt/s3/small-files-s5cmd-test1 | head -n 5
total 4.8G
-rw-r--r-- 1 ubuntu ubuntu 500K Jul 20 08:35 small_file_1.dat
-rw-r--r-- 1 ubuntu ubuntu 500K Jul 20 08:35 small_file_10.dat
-rw-r--r-- 1 ubuntu ubuntu 500K Jul 20 08:35 small_file_100.dat
-rw-r--r-- 1 ubuntu ubuntu 500K Jul 20 08:35 small_file_1000.dat
正常時のキャッシュ動作を確認
初回アクセス時の動作
Mountpoint 経由でファイルをローカルにコピーします。初回アクセスのため、S3 からデータを取得します。
$ time cp /mnt/s3/small-files-s5cmd-test1/small_file_1.dat /tmp
real 0m0.141s
user 0m0.000s
sys 0m0.005s
S3 Express One Zone にキャッシュが作成される
S3 Express One Zone を確認すると、500KB のキャッシュファイルが作成されました。
$ aws s3 ls --recursive s3://mountpoint-for-s3--apne1-az4--x-s3
2025-09-09 13:54:11 512000 1bbbd542c00166a104ef03fc8f84befd45681ed973e14b590236245b11b326bc/3e84d4ada0ace0599823bc595bb70c9c5c4ff734aefbebe2969872926db5f611/0000000000
2025-09-09 13:48:16 60 1bbbd542c00166a104ef03fc8f84befd45681ed973e14b590236245b11b326bc/_mountpoint_cache_metadata
キャッシュヒット時の高速化
同じファイルに再度アクセスすると、約 10 倍高速になりました。ただし、複数回テストすると初回アクセスとほぼ同じ 0.135 秒かかることもありました。
$ time cp /mnt/s3/small-files-s5cmd-test1/small_file_1.dat /tmp
real 0m0.012s
user 0m0.002s
sys 0m0.004s
AWS FIS で S3 Express One Zone に障害を注入
AWS FIS を使用して S3 Express One Zone に障害を注入します。詳しい手順は以下の記事で紹介しています。
今回は AZ 障害をシミュレートし、S3 Express One Zone へのアクセスを遮断しました。
障害注入後の挙動を確認
Running 状態が障害をシミュレート中です。この間にファイルコピーを試します。
大幅な遅延が起きるけどアクセスはできる
S3 Express One Zone にアクセスできない状態でファイルをコピーしてみました。
Mountpoint for S3 は以下の動作をしました。
- S3 Express One Zone のキャッシュを確認(タイムアウトしたと思われる)
- タイムアウト後、通常の S3 バケットから直接取得
最初のファイルは 1 分 31 秒かかりました。
$ time cp /mnt/s3/small-files-s5cmd-test1/small_file_1.dat /tmp
real 1m31.763s
user 0m0.000s
sys 0m0.005s
アクセス時間にばらつきがある
複数のファイルをコピーすると、22 秒から 1 分 42 秒と大きなばらつきがありました。
$ time cp /mnt/s3/small-files-s5cmd-test1/small_file_20.dat /tmp
real 0m22.914s
user 0m0.000s
sys 0m0.005s
$ time cp /mnt/s3/small-files-s5cmd-test1/small_file_21.dat /tmp
real 0m34.558s
user 0m0.000s
sys 0m0.005s
$ time cp /mnt/s3/small-files-s5cmd-test1/small_file_1.dat /tmp
real 1m42.647s
user 0m0.000s
sys 0m0.007s
データの整合性は保たれる
時間はかかりましたが、ファイルは正常にコピーされました。
$ ls -l /tmp | grep small
-rw-r--r-- 1 ubuntu ubuntu 512000 Sep 12 05:15 small_file_1.dat
-rw-r--r-- 1 ubuntu ubuntu 512000 Sep 12 05:07 small_file_20.dat
-rw-r--r-- 1 ubuntu ubuntu 512000 Sep 12 05:08 small_file_21.dat
まとめ
Mountpoint for S3 の共有キャッシュで S3 Express One Zone を利用した場合の障害時の挙動を検証しました。
検証結果
-
可用性は維持される
S3 Express One Zone が利用不可でも、S3 から直接データを取得できました -
パフォーマンスは大幅に低下する
正常時 0.012 秒 → 障害時 最大 1 分 42 秒
おわりに
AWS ParallelCluster でコンピュートノードはインスタンスストア付きのインスタンスタイプでの利用時に、大規模ストレージとして S3 を Mountpoint for Amazon S3 でマウントして利用しています。ヘッドノードがシングル AZ 構成のため、ヘッドノードと AZ を合わせる形で S3 Express One Zone を利用して共有キャッシュを有効化しておくのは良さそうな印象でした。
キャッシュ設定もいろいろ増えていたのでまたの機会に深堀りして良い感じの設定を探っていきます。