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

2013.10.21

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

こんにちは。望月です。
今日はAWS Storage Gatewayを触ってみました。AWSのサービスの中でもとっつきにくい印象のあるStorage Gatewayを検証していこうと思います。

Storage Gatewayとは?

Storage Gatewayは、AWS上のストレージをオンプレミスのアプライアンスと接続し、バックアップを行うためのサービスです。
元々は、オンプレミスのVMware ESXi上で動作しているファイルサーバ等のバックアップを手軽に行うためのソリューションとして登場しました。イメージとしては以下の図のようなものです。
その後Hyper-VやEC2上でも動作するようになり、適用範囲にも広がりが出てきていると思います。詳しくは以下のスライドを御覧ください。

今回は、上のスライドで紹介されているうちのGateway-Cached Volumesを構築していきます。EC2上にGatewayを作成し、別のインスタンスから接続するところまで行いたいと思います。

構築

今回構築するシステムのイメージは以下の通りです。

StorageGatewayimage

Storage Gatewayを利用するには、専用のEC2インスタンスが必要です。Storage Gatewayのクライアントは、このEC2に対してiSCSI接続を行い、Storage Gateway経由でS3上の仮想ボリュームをマウントするイメージになります。
手順は、おおまかに以下のとおりになります。

  • AWS上にGateway用インスタンスを作成する
  • Storage Gatewayの設定を行う
  • EC2上の別インスタンスからiSCSI接続する

AWS上にGateway用インスタンスを作成する

まずはManagement Consoleにログインし、Storage Gatewayの画面を覗いてみましょう。

storage gateway

[Deploy a new Gateway on Amazon EC2]をクリックしてみます。

storage gateway introduction

作成するための手順が紹介されています。簡単に訳すと、

  1. MarketplaceからGateway用のインスタンスを起動する
  2. Upload buffer用とCache用のEBSをGatewayインスタンスにアタッチする
  3. Gateway用インスタンスのPublic IPアドレスを取得する
  4. Public IPアドレスを画面下部に入力し、[Proceed to Activation]を押す

と言っています。まずはGateway用インスタンスを立ち上げましょう。画面にMarketplaceへのリンクがあるので、それを押せばGateway用AMIの画面に遷移します。

storage gateway market place

右上のボタンを押して、Gateway用のインスタンスを起動しましょう。起動が完了したら、起動したインスタンスのインスタンスID(i-xxxxxxxの部分)と、Public IPを控えておきます。
次に、起動したインスタンスにupload buffer用とcache用にEBSを2つアタッチします。EC2のManagement Console左側の[Volumes]を開き、[Create Volume]で2つ作成しましょう。今回はupload buffer用に5GiB, cache用に10GiB割り当てました。

ebs_created

作成したEBSは、画面上部の[Actions] -> [Attach Volume]からアタッチします。ここまでで4つのEBSがGateway要インスタンスにアタッチされていると思います。(AMI付属のEBS2つ、新規作成のEBS2つ)

ここまで完了したら、先ほどのStorage Gatewayの画面に戻り、GatewayインスタンスのPublic IPアドレスを入力して、[Proceed to Activation]ボタンを押してください。下のような画面が表示されると思います。

storage_gateway_activation

ここで適宜項目を入力し、次の画面に進めばActivation完了です。が、あとは保存する総容量の指定とローカルディスクの設定が必要になります。

Storage Gatewayの設定

今までの手順が完了すると、次のような画面が表示されていると思います。[Create Volume]をクリックして、設定画面に移ります。

2013-10-21_1429

表示されているのが先ほど作成したEBSになります。それぞれupload bufferとcacheに割り当てました。

2013-10-20_1114

次の画面では、Capacityを指定します。ここに指定した値が、このStorage Gatewayが利用できる総容量となります。この値がiSCSI接続した際にクライアントから見える容量となります。
iSCSIターゲット名は適当な値を入力してください。ここの値を後でEC2から接続する際に利用します。Snapshot IDは空欄でOKです。

2013-10-20_1116

これでStorage Gateway側の設定は完了です。

EC2インスタンスから接続する

ここまで長かったですが、あとはEC2上のインスタンスから接続するだけです。
その前に、Gateway用インスタンスに設定されているSecurity Groupが、iSCSI接続を受け入れるように3260番ポートを開放しておきます。

2013-10-20_1132

あとは同一VPC内にインスタンスを別途立ち上げ、通常のiSCSIコマンドでマウントをしてあげれば大丈夫です。ただし未フォーマットのディスクなので、ファイルシステムを作って上げる必要があります。

$ sudo yum install iscsi-initiator-utils
(出力省略)
$ sudo /sbin/iscsiadm --mode discovery --type sendtargets --portal 172.31.0.139:3260
172.31.0.139:3260,1 iqn.1997-05.com.amazon:myvolume

$ sudo /sbin/iscsiadm --mode node --targetname iqn.1997-05.com.amazon:myvolume --portal GATEWAY_IP:3260,1 --login

$ sudo fdisk -l

Disk /dev/xvda1: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sda: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

$ sudo mkfs.ext4 /dev/sda
(出力省略)
$ sudo mkdir /data
$ sudo mount -t ext4 /dev/sda /data/

$ mount
/dev/xvda1 on / type ext4 (rw,noatime)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sda on /data type ext4 (rw)

# 1Gのファイル作成
$ sudo dd if=/dev/zero of=/data/sampledata bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 121.14 s, 8.9 MB/s

最後の手順で、巨大なファイルを作成してみました。このコマンドを実行後にManagement Consoleを見てみると、[Upload buffer used]のところの値が変化していることがわかると思います。S3にアップロードされるファイルが一度Gatewayでキャッシュされ、順次S3へと保管されていきます。

2013_10_20_1142

まとめ

文字にするとちょっとややこしいですが、これにて初期導入は完了となります。ファイルサーバのバックアップ用途で利用する場合は、iSCSI経由でマウントしたディスクをデータ領域として利用すればOKです。
しかし、Storage Gatewayではデータ永続保存先にS3を利用しているため、正直なところアップロード速度はあまり速くありません。そのためパフォーマンスチューニングは運用上必須になってくると思います。まず第一歩、検証から始めてみてはいかがでしょうか。

参考資料