AWS Snowball を使用して大量データをS3に移行(後編)

前回は全体の流れの話をしたので、今回は具体的な使用方法や注意点についての話です。

はじめに

AWS Snowball とは

本エントリーは、2017年9月のSnowball前編の続きとなります。
随分と間が空いてしまいましたが、Snowballを扱う上での流れ、注意点を書いていきたいと思います。
前回は全体の流れの話をしたので、今回は具体的な使用方法や注意点についての話です。

AWS上での操作(Snowballを届けてもらうまで)

Job作成

マネージメントコンソール上から Snowball の Job を作成します。

今回はS3へのインポートを実施するので、
一番上の
Amazon S3へのインポート
を選択します

配送先住所を入力します。
*が必須のように見えますが、
実は全部のテキストボックスに入力が必須です。
郵便番号は - 抜きでの入力です。
抜け漏れがあるとこんな感じで英語で怒られます。

ジョブ名とバケット名を指定します。
バケットは同じリージョンじゃないとダメです

IAMロールを作成して設定します。
暗号化に使用するキーもここで指定します。

ステータス変更毎にSNSで通知を送る事ができます。

オンプレ → Snowball のデータ転送

前編で書いた通り、Snowballは外付HDDというより、NASという感じです。 オンプレ環境のデータをSnowballに入れる場合、以下のような構成になります。

Snowball はこのような感じでネットワーク上に配置します

Snowball を同一ネットワーク上に配置してからのIPアドレスでのアクセスとなります。
同一ネットワーク上からであればどのサーバーのデータでも転送できますが、
ネットワーク的に遠い場所にあるサーバーとの通信は転送速度に影響するので、
Snowball はなるべく転送対象のサーバーの近くに配置した方が良いです。

事前準備

SnowballClient をダウンロードし、オンプレのサーバーにインストールします
オンプレサーバーからSnowballに転送するにあたり、処理時間を左右するのが、
内部ネットワークの速度と、SnowballClient をインストールしたサーバーのスペックです
SnowballClient をインストールするサーバーの最低推奨スペックはこちらです。

16コア推奨ですが、実際の案件では4コア8スレッドのCPUでも動作自体は確認しています(非推奨です)。

Snowball Client のテスト

Snowball本体が到着する前に実施できる性能テストとして、
Snowball Clientを使用した転送速度のテストがあります。
Snowball Clientがインストールされたサーバーを使った場合の転送の速度計算を実施します。
以下のコマンドでテストを行います

(Windowsの場合)

$ snowball test -r -t <テスト回数> <\\\転送元サーバー\転送元ディレクトリ>

このテストであまりに遅い場合は、SnowballClientを入れるサーバーの性能を見直した方が良いです。
このテストで計測できる転送速度は、転送元サーバー → Snowball Client 、の転送速度なので、
Snowball Client → Snowball への転送速度は含まれない事に注意してください。

Snowball側 起動作業

Snowballをネットワークに結線する前にSnowball側の作業を実施します。
前面と背面のフタを開けます。
ハマりポイントとしては、フタの取っ手は下図のような構造になっており、
引っ張ってもびくともしません。
ボタンを押しながら真上に押し上げてください。

手前に引っ張るのではなく、
ボタンを押しながら真上に持ち上げる感じです

蓋にケーブルが巻き付けられていますが、この状態 を携帯などで写真に収めておくと、
返送時に巻き方に困らないのでおすすめです。

電源ケーブルを接続し、前面ディスプレイ上部の電源スイッチを投入します。
(正常に起動完了しない事が何度かありました。
電源ケーブルを一度抜き差しして、再試行すると正常に起動できたことがあります。)

準備完了となったら、タッチパネルの [Network] よりネットワークの設定を実施します。
ちなみにタッチパネルは感圧式ではないので、指で操作してください。狭いです。

ネットワークの設定が完了したら、ネットワーク回線をオンプレ環境に接続し、
SnowballClient側の作業を実施します。

SnowballClient側 起動作業

AWSのマネジメントコンソールからSnowballを選択し、作成したジョブを選択すると、
認証情報の項目から、マニフェストとアンロックコードがダウンロードできるようになっています。
これらを SnowballClient がインストールされているサーバーにダウンロードします。

ターミナルより以下のコマンドを実行し、Snowballを起動します
$ snowball start -i <SnowballのIP> -u <アンロックコード> -m <マニフェストファイルの場所>

起動完了したら、使用済み容量、残容量、合計容量が表示されます。

オンプレからSnowballへの転送

SnowballClientがインストールされたサーバーより、以下のコマンドを実行してファイルをSnowballに転送します。
$ snowball cp <送信元> <送信先 バケット名/ディレクトリ>

オプション -r をつける事で再帰的に転送します。
送信元は ネットワークパスでの記述になります。
Windowsなら
$ snowball cp -r \\192.168.10.10\okurudir\ s3://sunoubo-runi-okuru/okurudir/

といった感じです

コピーコマンドの構文についてはこちらを参照してください

他の SnowballClient コマンドはこちらを参照してください

流れとしては、
snowball cp でコピーして、
削除したい時は
snowball rm で削除して、
snowballの中身を見たい時は
snowball ls でリストして、
容量は
snowball status で確認して、
といった感じでサーバーからSnowballに転送します。

転送完了後の処理

間違いなくやっておいた方がいい処理として、
$ snowball -v validate

コマンドで、転送されたファイルの整合性を確認します。
エラーなどで正しく転送されなかったファイルは、Snowball -> S3 の工程で削除されます。
その危険を可能な限り無くすために、このコマンドで整合性の確認を実施する事を強く推奨します。
(割と時間がかかるので、余裕をもって実行してください)

全作業が終了したら、以下のコマンドでSnowballを止めます。
$ snowball stop

このコマンドはSnowball自体の電源を落とさないので、
コマンドが正常に流れたら、Snowballの電源ボタンを押して止めます。

また、返送時に以下の3つの条件を満たしていないと、返送してもインポートしてもらえず、データが消去されます。

返送

返送はSnowballに同封されている(張り付いている)送り状を使って返送します。
手順も書いてあり、指定の配送業者を使って指定の場所に返送します。
送り先の住所は配送センターになっているので、
AWSのデータセンターの場所はわからないようになってます。
普通に業者に集荷を依頼して、普通に集荷してもらう感じです。

Snowball 返送後に何をする?

Snowball 返送後に確認する事

Snowball返送後は、マネジメントコンソールのSnowballジョブ画面で状況を確認します。
進捗バーを見ていればだいたいわかりますが、
実際にS3への転送が開始された時には全体の進捗バー以外に転送の進捗が%で表示されます。
進捗が100%になれば、S3への転送は完了です。

Snowball からEC2インスタンスへ

Snowballの扱い自体はそれほど難しいものではありません。
どちらかというと、全体の移行方針の方が重要です。

全体の流れとしてのコツには以下のようなものがあります。

おわりに

Snowballを使えばサクサクっとAWSへ移行できるように感じますが、
実際に使用してみると意外と時間がかかります。
使用するかしないかの判断が重要なポイントとなります。
Snowballを使用した移行をお考えの際は、ぜひ弊社へお問い合わせください。