Mountpoint for Amazon S3 にファイルを直接ダウンロードできるのか検証してみた

Mountpoint for Amazon S3 にファイルを直接ダウンロードできるのか検証してみた

Clock Icon2025.02.24

はじめに

Mountpoint for Amazon S3 を使用したマウントパスに対して一般的なダウンロードコマンド(wget, curl, aria2)でファイルのダウンロード先に利用できるか検証しました。

ec2-s3-mount(1).png

検証結果早見

wget と curl は S3 マウントポイントへの直接ダウンロードに成功しましたが、aria2 は失敗しました。EBS と比較すると S3 マウントポイントへのダウンロードは速度が半分以下になっています。レジューム機能は全てのコマンドで利用できませんでした。

コマンド EBSへのダウンロード S3への直接ダウンロード レジューム機能
wget ✅ 468MB/s ✅ 103MB/s ❌ Operation not permitted
curl ✅ 535MB/s ✅ 198MB/s ❌ Failed writing received data
aria2 ✅ 734MB/s ❌ I/O Error -

検証の背景

Mountpoint for Amazon S3 は POSIX を完全にサポートしていないため、一般的なコマンドでファイルのダウンロード先として利用可能なのか検証してみました。特に以下の点について確認しました。

  • S3 マウントポイントへ直接ファイルをダウンロードできるのか
  • ダウンロード速度の比較(EBS vs S3)
  • レジューム機能の動作確認

検証環境

実行環境

項目 仕様
OS Amazon Linux 2023
カーネル 6.1.128-136.201.amzn2023.x86_64
AMI 名 al2023-ami-2023.6.20250218.2-kernel-6.1-x86_64
AMI ID ami-072298436ce5cb0c4
リージョン ap-northeast-1
インスタンスタイプ m7a.large

使用したコマンド

コマンド バージョン
wget 1.21.3
curl 8.5.0
aria2 1.37.0

ダウンロード対象

ダウンロード元サーバー情報

ICSCoE は日本の公式 Ubuntu ミラーサイトの 1 つで、高速な回線(100 Gbps)を提供しています。今回の検証ではネットワーク帯域による速度制限の影響を最小限に抑えるため、日本国内のミラーサイトでかつ、回線の強いところを選択しました。

項目 内容
ミラーサイト名 ICSCoE(産業サイバーセキュリティセンター)
ステータス Official Ubuntu Mirror
回線速度 100 Gbps
所在地 日本
URL https://ftp.udx.icscoe.jp/Linux/ubuntu-releases/

テスト対象ファイル

項目 内容 補足
ファイル名 ubuntu-24.04.2-live-server-amd64.iso Ubuntu Server 24.04.2 ISO
ファイルサイズ 約 3 GB
ダウンロード先(EBS) /tmp ローカルディスク
ダウンロード先(S3) /mnt/s3 S3 マウントポイント

各種コマンドのファイルダウンロード検証

各コマンドで約 3GB の ISO ファイルをダウンロードし、EBS と S3 マウントポイントでの動作を確認しました。速度については 1 回の測定結果のため参考値としてご覧ください。ネットワーク状況により変動する可能性が大いにあります。

wget の検証

検証結果

項目 結果 速度 備考
EBSへのダウンロード ✅ 成功 468MB/s -
S3への直接ダウンロード ✅ 成功 103MB/s utimeエラーあり
レジューム機能 ❌ 失敗 - Operation not permitted

EBSへのダウンロード

EBS へのダウンロードは問題なく完了し、468MB/s の比較的早い転送速度を記録しました。

$ time wget -P /tmp https://ftp.udx.icscoe.jp/Linux/ubuntu-releases/24.04.2/ubuntu-24.04.2-live-server-amd64.iso
[出力省略]
ubuntu-24.04.2-live-se 100%[==========================>]   2.99G   468MB/s    in 6.6s

real	0m6.730s

S3マウントポイントへのダウンロード

utime のエラーが出力しましたが、ファイル自体はダウンロードできました。おそらくダウンロードしたファイルのタイムスタンプを更新するときに失敗しまうのでしょう。

$ time wget -P /mnt/s3 https://ftp.udx.icscoe.jp/Linux/ubuntu-releases/24.04.2/ubuntu-24.04.2-live-server-amd64.iso
[出力省略]
ubuntu-24.04.2-live-se 100%[==========================>]   2.99G   116MB/s    in 30s

utime(/mnt/s3/ubuntu-24.04.2-live-server-amd64.iso): Operation not permitted
2025-02-23 22:32:17 (103 MB/s) - '/mnt/s3/ubuntu-24.04.2-live-server-amd64.iso' saved [3213064192/3213064192]

real    0m30.646s

ファイルのタイムスタンプを変更しないオプション(--no-use-server-timestamps)を付与すればエラーは解消しました。

$ time wget --no-use-server-timestamps -P /mnt/s3 https://ftp.udx.icscoe.jp/Linux/ubuntu-releases/24.04.2/ubuntu-24.04.2-live-server-amd64.iso
[出力省略]
ubuntu-24.04.2-live-se 100%[==========================>]   2.99G   116MB/s    in 27s

real	0m27.595s

レジューム機能の検証

ダウンロード途中で中断(Ctrl+C)後、-c オプションでレジュームを試みましたが、Operation not permitted エラーで失敗しました。S3 のマウントポイントではファイルの追記操作が許可されていないためです。

# ダウンロード中断
$ time wget -P /mnt/s3 -c https://ftp.udx.icscoe.jp/Linux/ubuntu-releases/24.04.2/ubuntu-24.04.2-live-server-amd64.iso
[出力省略]
4.04.2-live-server-amd  14%[==>                        ] 433.18M   116MB/s    eta 24s    ^C

# ダウンロード再開
$ time wget -P /mnt/s3 -c https://ftp.udx.icscoe.jp/Linux/ubuntu-releases/24.04.2/ubuntu-24.04.2-live-server-amd64.iso
[出力省略]
Cannot write to '/mnt/s3/ubuntu-24.04.2-live-server-amd64.iso' (Operation not permitted).

curl の検証

検証結果

項目 結果 速度 備考
EBSへのダウンロード ✅ 成功 535MB/s -
S3への直接ダウンロード ✅ 成功 198MB/s -
レジューム機能 ❌ 失敗 - Failed writing received data

EBSへのダウンロード

EBS へのダウンロードは問題なく完了し、533MB/s の高速な転送速度を記録しました。

$ time curl -o /tmp/ubuntu.iso https://ftp.udx.icscoe.jp/Linux/ubuntu-releases/24.04.2/ubuntu-24.04.2-live-server-amd64.iso
100 3064M  100 3064M    0     0   535M      0  0:00:05  0:00:05 --:--:--  536M

real    0m5.733s

S3マウントポイントへのダウンロード

S3 マウントポイントへのダウンロードも成功し、198MB/s の転送速度を記録しました。wget と同様に EBS と比べると速度は低下しますがエラーなく完了しました。

$ time curl -o /mnt/s3/ubuntu.iso https://ftp.udx.icscoe.jp/Linux/ubuntu-releases/24.04.2/ubuntu-24.04.2-live-server-amd64.iso
100 3064M  100 3064M    0     0   198M      0  0:00:15  0:00:15 --:--:--  266M

real    0m16.115s

レジューム機能の検証

-C オプションでレジュームを試みましたが、Failed writing received data エラーで失敗しました。こちらもまた S3 のマウントポイントでは既存ファイルへの追記操作がサポートされていないことが原因です。

# ダウンロード中断
$ time curl -C - -o /mnt/s3/ubuntu.iso https://ftp.udx.icscoe.jp/Linux/ubuntu-releases/24.04.2/ubuntu-24.04.2-live-server-amd64.iso
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
 17 3064M   17  543M    0     0  91.1M      0  0:00:33  0:00:05  0:00:28  109M^C

# ダウンロード再開
$ time curl -C - -o /mnt/s3/ubuntu.iso https://ftp.udx.icscoe.jp/Linux/ubuntu-releases/24.04.2/ubuntu-24.04.2-live-server-amd64.iso
curl: Can't open '/mnt/s3/ubuntu.iso'
curl: (23) Failed writing received data to disk/application

aria2 の検証

検証結果

項目 結果 速度 備考
EBSへのダウンロード ✅ 成功 734MB/s -
S3への直接ダウンロード ❌ 失敗 - I/O Error
レジューム機能 - - 直接ダウンロード不可のため未検証

EBSへのダウンロード

マルチコネクション(-x16)を活用して並列ダウンロードすることにより、734MB/s という最も高速な転送速度を記録しました。

$ time aria2c -x16 -d /tmp https://ftp.udx.icscoe.jp/Linux/ubuntu-releases/24.04.2/ubuntu-24.04.2-live-server-amd64.iso
[出力省略]
Download Results:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
a01a1e|OK  |   734MiB/s|/tmp/ubuntu-24.04.2-live-server-amd64.iso

real    0m6.756s

S3マウントポイントへのダウンロード

I/O Error が発生しました。おそらく aria2 の高度なファイル操作が S3 のマウントポイントではサポートされていないことが原因です。

$ time aria2c -d /mnt/s3/ https://ftp.udx.icscoe.jp/Linux/ubuntu-releases/24.04.2/ubuntu-24.04.2-live-server-amd64.iso
[出力省略]
Exception: [AbstractDiskWriter.cc:459] errNum=5 errorCode=17 Failed to write into the file /mnt/s3//ubuntu-24.04.2-live-server-amd64.iso, cause: Input/output error

まとめ

基本的なこと

  • wget と curl で S3 をマウントしたパスに直接ダウンロードが可能
  • ただし、転送速度は EBS と比較して 40-50%低下

機能の制限事項

  • レジューム機能は全てのコマンドで利用不可

利用上の推奨事項

  • 小規模ファイルは S3 をマウントしたパスへ直接ダウンロードは wget, curl で可能
  • 大容量ファイルのときは目的に合わせて使い分けを推奨
    • 転送速度を重視するなら、EBS などのストレージへ一度ダウンロードしてから S3 に転送
    • EBS のボリュームサイズを大きくしたくないときや、FSx for OpenZFS などの高速なストレージを利用できない場合は直接ダウンロードも選択肢としてあり

おわりに

wget, curl ができるなら aria2 もできるかなと試してみたのですが、並列ダウンロードを指定しな(-x を未指定)ダメでした。このあたりはツールや、アプリケーションがどうファイルを扱うかになってくるので試してみないとわからないですね。

参考

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.