AWS Storage Gateway入門 – ボリュームゲートウェイ(Gateway-Cached Volumes)を触ってみる

2019.02.18

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

おはようございます、もきゅりんです。 寒い冬がそろそろ終わってしまうため、悲しい気持ちです。 秋と冬だけでローテーションして欲しいです。

ということで、DRの資料を眺めていたりすると、目に入ってくるStorageGateway。

でも、あまりStorageGatewayに馴染みのない自分がいる、、、

馴染みがないなら馴染むしかない、ということで、StorageGatewayを触ってみました。

ファイルゲートウェイについては、直近[Storage Gateway] EC2からS3バケットをNFSマウントしてみた〜2018年冬〜にもありますので、ボリュームゲートウェイ(Gateway-Cached Volumes)を触ってみました。

実は5年前以上にAWS Storage Gateway入門 – とりあえず構築してみようもあり、重複する箇所もありますが、現在かなりインターフェイスも変わってたり、(ドキュメントの更新が追いついていない部分もあるので) スナップショットを取得するところまで行います。

やること

  1. ゲートウェイ用のインスタンスの作成
  2. ボリュームの作成
  3. クライアントのサーバーからボリュームを利用する
  4. ゲートウェイのテスト

概要

上の図でのINITIATORがクライアントとなるEC2インスタンス。 Hostがゲートウェイ用のインスタンス、ということになります。

図で描かれているように、ゲートウェイキャッシュ型には、ストレージが2つ以上必要です。 1つはキャッシュとして使用し、1つはアップロードバッファとして使用します。

なお、Amazon EC2 でゲートウェイをデプロイする要件としては、 インスタンスサイズは少なくともxlargeで、キャッシュボリュームおよび仮想テープライブラリでは、m4インスタンスタイプを推奨しているようです。

ストレージの要件は下記の通りですが、今回はテストなので適当なサイズで設定します。

1 ゲートウェイ用のインスタンスの作成

ボリュームゲートウェイのキャッシュボリュームを選択します。

ホストプラットフォームはEC2でいきます。 AWS Marketplaceで作成に進みます。

(注: 下記セットアップ手順のドキュメントは更新されていないのため参考になりませんのでご注意下さい。。(2019年2月15日時点))

とりあえず迷わずContinueを押して進んだらRegionをお好き選びます。

わたしはAsia Pacific!

そしたら、EC2の画面で作成するにしましょう。

(Launch from Websiteだとストレージの追加ができないっぽいです)

デフォルトでt3.xlargeなので別にそれでも構わん気もしますが、推奨に従ってm4にします。

大事なのはストレージを2つ追加することです。 キャッシュ用とアップロードバッファ用のために追加します。

セキュリティグループは、80,3260が開いていれば問題ないようですが、いちおう何かあったらの際の22も開けておきます。

インスタンスが起動し終わったら、後で使うのでパブリックIPを控えます。 そしてStorageGatewayのインターフェイスに戻って、次へ進みます。

そしてゲートウェイに先ほど控えたパブリックIPを入力して接続します。

流れに身を任せてゲートウェイをアクティブ化して

ローカルディスクを設定します。

そして出来上がりです。 言われている通り、ボリュームの作成に進みます。

2 ボリュームの作成

今回はまっさらな新規ボリュームなので、新しい空のボリュームにします。

iSCSI ターゲット名は、

iqn.1997-05.com.amazon:TARGET_NAME

のように表示されるものです。

適当な名前にして作成します。

すると、CHAP Authenticationのダイアログボックスが表示されますが、とりあえず今回はスキップしてボリュームの使用に進みます。 クライアントとなる別のEC2インスタンスを起動させましょう。

ドキュメント通り、Red Hat Enterprise Linuxで進めます。

3 クライアントサーバーからボリュームを利用する

クライアントとなるインスタンスにログインしたら、以下のように進めます。

# iscsi-initiator-utils RPM パッケージをインストールして起動
sudo yum install iscsi-initiator-utils
sudo systemctl start iscsid
sudo systemctl status iscsid
# ターゲットに接続
sudo /sbin/iscsiadm --mode node --targetname iqn.1997-05.com.amazon:[ISCSI_TARGET_NAME] --portal [GATEWAY_IP]:3260,1 --login

するとこんな感じのが出てきます。

ボリュームがクライアントマシン (イニシエータ) にアタッチされていることを確認します。

ls -l /dev/disk/by-path

問題なければこんなのが出ます。

とりあえず新しいボリュームを確認します。

lsblk

対象は/dev/sdaです。 そしたらボリュームの初期化とフォーマットしましょう。

参照: Red Hat Enterprise Linux でのボリュームの初期化とフォーマット

この例では、「ゲートウェイがキャッシュ型ボリュームで、ストレージボリュームのサイズが 2 TiB 未満の場合」なので以下のように進めます。

# パーティション形式を設定
sudo parted /dev/sda mklabel msdos
# パーティション作成
sudo parted -a opt /dev/sda mkpart primary ext4 0% 100%

再度、ボリュームのパーティションのレイアウトを確認します。 利用する対象はsda1となります。

# ファイルシステムを作成
sudo mkfs.ext4 -L datapartition /dev/sda1
# ファイルシステムをマウント
sudo mkdir -p /mnt/data
sudo mount -o defaults /dev/sda1 /mnt/data
# 確認
df -h

4 ゲートウェイのテスト

# 適当に1Gのファイルを作成
sudo dd if=/dev/zero of=/mnt/data/sampledata bs=1M count=1024

インターフェイスに戻ってStorageGatewayの詳細を見てみると、 転送一時格納用のアップロードバッファにデータが入っております。これが随時S3に転送されるようです。

ついでなので、ボリュームタブからボリュームを選択してスナップショットを作成します。

しばらくすると、Amazon EC2 コンソールのEBS スナップショットに表示されました。 何か起こったときこれがあると嬉しいわけですね。

感想

あまり自身と馴染みのないStorageGatewayと少しだけ距離が縮まったような気がしました。 まぁ完全に気のせいかもしれませんが、やっぱり触ってみるってのは大事ですね!

参考

ボリュームゲートウェイの作成

キャッシュ型ボリュームのアーキテクチャ

AWS Storage Gateway 要件

AWS Storage Gateway入門 – とりあえず構築してみよう