[Storage Gateway] EC2からS3バケットをNFSマウントしてみた~2021年冬~

2021.12.08

こんにちは、リサリサです。

EC2 ホストにファイルゲートウェイをデプロイして、EC2 で NFSマウントしてみました。

下記記事を試してみていたのですが、UI が変わっていたり追加項目が増えていたり条件が変わっていたりしたので、改めて記事にしてみました。どなたかのお役に立てば幸いです。

はじめに

構成は以下のようになります。

やってみた

公式の手順はこちらになります。

事前準備

マウント先となるS3バケットを作っておきます。今回は「filegateway-lisalisa」という名前にしました。

マウント対象のEC2も先に作成しておきます。今回は、OSはAmazon Linux2、インスタンスタイプはt2.microで作成しました。

Strage Gateway の作成①

「ゲートウェイの作成」から作っていきます。

ファイルゲートウェイを作成します。

「Amazon EC2」を選択します。そうすると、Amazon EC2のセットアップ手順が表示されるので、「インスタンスの起動」をクリックして、Storage Gateway をデプロイする用の EC2 を作っていきます。

Srorage Gateway 用の EC2 を作成

別ウィンドウで EC2 の起動画面が表示されるので、EC2 を起動します。

Storage Gateway 用の AMI が選択された状態ですので、AMI の選択はスキップして、インスタンスタイプの指定からしていきます。

上記の 「Amazon EC2 のセットアップ手順」に記載の通りですが、インスタンスタイプは"m4.xlarge"相当 (4vCPU) が必要です。今回はm5.xlargeで起動しました。

追加の EBS を 150GiB で追加します。

※ちなみに、推奨される最小サイズが 150GiB のため、それ以下では以下のようになり Strorage Gateway が起動ができませんでした。

セキュリティグループは HTTP (アクティベーション用) と NFS (データの通信用) を開けておきます。

以上で、EC2インスタンスを作成します。

Strage Gateway の作成②

インスタンスが作成出来たら、Storage Gateway 作成画面のタブに戻ります。

今回はパブリックで作成しました。

起動したEC2インスタンスのパブリックIPを入力します。

名前を付けて、アクティブ化します。

ローカルディスクの設定をします。少し待ちます。インスタンスを立ち上げたばかりだったからなのか、2~3分くらいかかりました。

さっき作ったキャッシュ用のボリュームをキャッシュに割り当てます。キャッシュストレージを選択します。EBS の追加をしていなかったり、容量が足りないとエラーになります。

ログ設定はデフォルトのまま進めます。

問題なければ「終了」をクリックすれば、Storage Gateway が完成です。

作成直後はステータスが「オフライン」になっていますが、少し待つと「実行中」にかわります。

ファイル共有を作成

ファイル共有の設定をしていきます。プロトコルは NFS で作っていきます。

バケット名と、ファイル共有名を入力したらあとはデフォルトのまま進めます。

これもデフォルトのまま進めます。

「許可されたクライアント」には、マウント対象のEC2のプライベートIPを指定します(画像は間違ってパブリックIPになってますが…)。そのほかはデフォルトのまま進めます。

確認して問題なければ、「作成」をクリックします。

 

これでファイル共有が作成されて、コンソールでの作業は以上になります。

マウント

マウント対象の EC2 に接続します。

マウントポイントとなるディレクトリを作成しておきます。

$ sudo mkdir /storage

EC2からS3バケットをNFSマウントします。コマンドはコンソールにあります。さっき作ったファイル共有をクリックします。

詳細の下の方にコマンドを用意してくれているので、これを使います。

$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 468M 0 468M 0% /dev
tmpfs 479M 0 479M 0% /dev/shm
tmpfs 479M 348K 479M 1% /run
tmpfs 479M 0 479M 0% /sys/fs/cgroup
/dev/nvme0n1p1 8.0G 1.5G 6.6G 19% /
$ sudo mount -t nfs -o nolock,hard 10.2.0.203:/filegateway-lisalisa /storage
$ df -h
Filesystem                        Size  Used Avail Use% Mounted on
devtmpfs                          468M     0  468M   0% /dev
tmpfs                             479M     0  479M   0% /dev/shm
tmpfs                             479M  352K  479M   1% /run
tmpfs                             479M     0  479M   0% /sys/fs/cgroup
/dev/nvme0n1p1                    8.0G  1.5G  6.6G  19% /
10.2.0.203:/filegateway-lisalisa  8.0E     0  8.0E   0% /storage

マウントできました。

※しばらく応答がなく、以下のようにタイムアウトになってしまった場合は、マウント対象の EC2 が Strage Gateway 用の EC2 にアクセスできていません。ファイル共有で設定した「許可されたクライアント」のIPアドレスが間違っていないか、他、ネットワーク周りを確認してみて下さい。

$ sudo mount -t nfs -o nolock,hard 10.2.0.203:/filegateway-lisalisa /storage
mount.nfs: Connection timed out

テストファイルを置いてみます。

$ cd /storage/
$ touch test

S3 バケットを確認すると、test ファイルがありました!