こんにちは!
株式会社Fusicの砂本です。
本記事は、
2025 Japan AWS Jr. Champions Qiitaリレー夏
9日目の記事となります!
概要
AWS が 公式 OSS として公開する Mountpoint for Amazon S3 は、S3 バケットをにマウントし ほぼローカルディスクと同じ感覚で操作できる FUSE クライアントです。本稿では仕組み・導入手順・運用 Tips をまとめ、さらに AWS SDK/s5cmd/s3fs/FSx for Lustre との機能比較でを示します。(詳細な性能比較は別稿)
0. はじめに
S3 に直接 PUT するコードを書くのは大変。s3fs では性能が足りない。そこで登場するのが Mountpoint for Amazon S3(以下 Mountpoint)です。FUSE ベースで 多スレッド・プリフェッチ最適化 を備え、データ転送・分析・ETL やデータ移行で威力を発揮します。
1. Mountpoint for Amazon S3 の仕組み
-
SDKレス開発・ローカル感覚: AWS SDK を使わずに、
file_put_contents()
など プログラミング言語標準の機能でファイルをマウントディレクトリに置くだけで S3 に保存可能。既存スクリプトやツールチェーンを大幅に変えずに移行でき、開発コストと学習コストを削減。 -
ユーザー空間 FUSE: カーネル空間ではなくユーザー空間で動作し、S3 API を透過的に呼び出す。POSIX 完全互換ではないが、
ls
cp
rm
など基本操作は可能。 - 整合性とチェックサム: Mountpoint⇔S3間のデータ転送の整合性はチェックサムで保証。 (*Mountpointの詳細なログに関しては別稿)
公式ドキュメント
2. 検証環境 & 前提条件
項目 | 内容 |
---|---|
EC2 |
m6i.4xlarge (12.5 Gbps 帯域) |
OS | Amazon Linux 2023 |
S3 バケット |
ap-northeast-1 リージョン |
ちなみにFargateは非対応です!
Fargate対応のissueはあるものの、roadmapには載ってないので対応される期待薄…
3. インストール & 初期設定
3.1 Mountpointの導入
curl -O https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.rpm
sudo yum install -y ./mount-s3.rpm
IAM ロールは ListBucket, GetObject, PutObject, DeleteObject の最小権限を付与。
3.2 S3を/mnt/s3にマウント
sudo mkdir -p /mnt/s3
sudo mount-s3 my-bucket /mnt/s3 \
--allow-overwrite --allow-delete \
--write-part-size 128 --log-directory /var/log/mountpoint-s3
「write-part-size」で PUT リクエスト数を削減しコスト最適化可能。
4. fio での性能調査
bs=128k
, iodepth=32
, EC2 m6i.4xlarge
で書き込み検証を行った。
並列数 (numjobs ) |
転送速度 (MB/s) | IOPS | 実行時間 (ms) |
---|---|---|---|
1 | 1,337 | 10,700 | 7,656 |
16 | 1,349 | 10,787 | 121,501 |
32 | 1,341 | 10,731 | 244,276 |
128 | 1,358 | 10,859 | 244,276 |
書き込み並列数を上げても安定した速度を出すことができ、従来のs3fsでは実現できなかった高速な書き込みがMointpointでは実現できた。
5. 基本〜応用の使い方
5.1 CRUD 操作
コマンド | 成功 | 備考 |
---|---|---|
ls , cat , cp , rm
|
✅ | 一般的操作 |
mv ,vi , 既存ファイル追記 (echo >> ) |
❌ | オブジェクトの“上書き”は不可 |
5.2 ユースケース
- アプリログをそのまま S3 に配置
- ML で大量オブジェクトを高速読み取り
- アプリでの加工済みファイルを並列で S3 へ転送
6. ユースケース別ベストプラクティス
Montpointはマウントコマンド実行時にオプションを付加できます。
ユースケースごとに様々なオプションを利用できます。
ユースケース | 推奨設定 | 解説 |
---|---|---|
並列転送 |
--write-part-size 256MiB --num-parallel 16
|
PUT 数削減と帯域フル活用 |
ML 推論ログ集約 | --prefetch 32MiB |
読み取りスループット向上 |
再実行/Backfill | --allow-overwrite --allow-delete |
残骸自動クリーンアップ |
7. 他サービス/ツール “特徴比較”
観点 | Mountpoint for Amazon S3 | AWS SDK (S3 PUT) | s5cmd | s3fs | FSx for Lustre |
---|---|---|---|---|---|
タイプ | FUSE ベースの高スループット“ファイルクライアント”(S3 をローカル FS としてマウント) | プログラム API | CLI 並列コピー | FUSE ファイルシステム | HPC 向け分散ファイルシステム |
コード改修要否 | 原則不要 | 必要 | 不要 | 不要 | 不要 |
課金単位 | S3 ストレージ & リクエスト課金のみ(Mountpoint 自体は OSS) | 同左 | 同左 | 同左 | GB-month のストレージ + MBps-month のスループット容量 + (任意)メタデータ IOPS・SSD キャッシュ |
キャッシュ機構 | 読み取り時の リードアヘッドプリフェッチ オプションでキャッシュ | SDK/アプリ実装に依存 | なし | OS ページキャッシュ + -o use_cache でローカルディスクを置きキャッシュ |
SSD 上のローカル OSS(BB)/高速バッファ + RAM メタデータキャッシュ |
主ユースケース | 読み取りが多い ML, データレイク ETL 等 | アプリから直接 S3 | 大量バッチ転送 | CI/検証、軽量レガシー互換 | HPC、生成 AI、Media レンダリング |
導入難易度 | 低(mount-s3 だけ) |
中 | 低 | 低 | 中〜高(サブネット/スループット設計が必要) |
8. まとめ
Mountpoint for Amazon S3 は「SDK 書き換え無し」「ほぼ POSIX」「高速」と三拍子揃った S3 クライアント。データ移行や分析パイプラインなど読み取り中心のバッチ処理にベストマッチです。一方、
- 既存ファイルの上書き不可
- 多ファイル同時書き込みは速度頭打ち
など制約もあるため、書き込みヘビーや完全 POSIX が必須なら FSx for Lustre、バッチ転送だけなら s5cmd といった棲み分けが有効。ユースケースに応じて最適なストレージ/ツールを選択しましょう。