AWS Snowball Edge を自家用で使ってみた話

概要
======
AWS Snowball Edgeが我が家にやってきた。その顛末記。
![s0.jpg](https://qiita-image-store.s3.amazonaws.com/0/96018/30bfa45d-1c79-9b5a-dbc5-f9223435b8b8.jpeg)


目的
======
AWS Snowball EdgeはAWSと関係なく単なるローカルストレージとして使えること着目し、
NASのデータ退避場所として使用する。データ退避後にNASエンクロージャに入っている
全HDDを交換し、NASの容量増加することを目的とします。


利用開始まで
======
- ネットワークへ接続する
ネットワーク接続はQSFP(40G), SFP+(25G), RJ45(10G)からの択一です。
付属品は電源ケーブルしかありません。必要なケーブルは自前で準備が必要です。
ボンディングなどは出来ず、いずれか１つのインタフェースのみ利用可能です。

- 電源を入れる
電源を入れると1Uサーバのような音がします。
![sn17.jpg](https://qiita-image-store.s3.amazonaws.com/0/96018/de009cfd-8b31-cd9c-efe9-0135a0adac93.jpeg)
最初は高回転で動き出すのでなかなかの轟音です。数分すると静かになります。
起動中は前面パネルに図解でSnowball Edgeの使い方が表示されています。
![sn18.jpg](https://qiita-image-store.s3.amazonaws.com/0/96018/91dd7238-915c-b2ea-5b2a-181c6498ee43.jpeg)
起動完了まで５～６分かかります。

- Snowball利用環境の準備
公式サイトからSnowball toolをダウンロードします。(Linux,Mac用などあり）
次に、AWSマネジメントコンソールへみんな大好きrootアカウントでログインします。
Snowballサービスの画面に表示されているアンロックコードをメモします。
マニフェストファイルをダウンロードしてSnowball toolを実行する端末に保存します。

- Snowballのアンロック
準備が出来たら端末でアンロックコマンドを実行します。
Snowball Edgeはアンロックしないと利用できません。初回のみならず起動時に毎回必要です。
-m にダウンロードしたマニフェストファイルを、-u にアンロックコードを指定します。

```bash:コマンド:
snowballEdge unlock -i 10.0.0.1 \
  -m ./JID20000000-7777-4444-aaaa-099999999999_manifest.bin \
  -u aaaaa-bbbbb-ccccc-ddddd-eeeee
```
```結果:
      The Snowball Edge unlock status is: UnlockSnowballResult(status=UNLOCKING)
```

アンロックまで１分ほど、File Interface (NFSサーバ)が動き出すまで５分ほどかかります。
状態はSnowball Edge筐体の画面表示、またはコマンド実行で確認できます。

```bash:コマンド:
snowballEdge status -i 10.0.0.1 \
  -m ./JID20000000-7777-4444-aaaa-099999999999_manifest.bin \
  -u aaaaa-bbbbb-ccccc-ddddd-eeeee
```
```結果:
      Snowball Unlock Status: SUCCESS
      Total Capacity: 90 TB
      Free Space: 90 TB
      S3 Endpoint: http://10.0.0.1:8080
```

以上で利用開始の準備完了です。



File Interface (NFSサーバ) の起動
======
起動しただけではS3としてしか使用できませんNFSサーバは手動で有効にします。
これはSnowball Edge筐体を操作して行います。
タッチパネルになっている画面のFileInterfaceを押します。Status の横にある Enable ボタンを押します。
Allowed clients の横にあるプルダウンメニューを押し、Snowball Edge申込時に入力したS3バケット名が選択肢にあるのでこれを選ぶだけです。

![snow1.jpg](https://qiita-image-store.s3.amazonaws.com/0/96018/9f552025-4ee6-3ffe-3492-b1d5d9a61056.jpeg)

File Interface の表示が Running になっていればOKです。
これでNFSサーバとして動作するようになりました。

- 注意事項

納品書と一緒に注意書きが入っていました。
「FileInterfaceとS3 Interfaceは同時に利用しないこと」
とあった。排他処理とかうまくいかないのでしょうね。まぁNFSでしか使わないので。


NFSマウントする
=======
あっさりとNASでマウントできます。

```bash:コマンド:
mount -o nolock 10.0.0.1:/nas-migration /mnt
df
```
```結果:
Filesystem           1K-blocks      Used Available Use% Mounted on
10.0.0.1:/nas-migration
                     9007199254740992         0 9007199254740992   0% /mnt
```

実容量90TBのはずなのに、表示は見慣れた8EB（エクサバイト）です。EFSと同じですね。
納品書に同梱されていた注意書きに「空き容量のないSnowballへ書き込まないで下さい」とあります。
たぶんエラー対策がされておらず、おかしなことになるのでしょう。


気になったこと
=======

- まだ荒削りな実装
書き込んでも書き込んでもNFSとして容量を取得すると使用済み容量0バイト、空き容量8EBのままです。
使用済み容量はSnowball Edge本体のパネルに表示されているのを見るしか確認方法がありません。
わざわざ紙の注意書きがあったのはそういうことか。はまった人が多いのでしょうね。

- 速度が出ない
NFSで書き込みをすると300Mbps程度しか出ません。30TBのファイルをコピーするのに14日かかる計算です。
気が遠くなってきました。


トラブル発生
======
File Interfaceへしばらく書き込んでいると応答しなくなるトラブル発生。

```
[84182.336191] nfs: server 10.0.0.1 not responding, timed out
[84182.343201] nfs: server 10.0.0.1 not responding, timed out
[84182.349348] nfs: server 10.0.0.1 not responding, timed out
```
もうこのメッセージは見たくなかった。。。NFSの辛み再び。

NFSで書き込むと、File Interfaceが接続を受け、Snowball Edgeへ非同期で書き込みます。
このタスクが何時間待てど終了しない。このためシャットダウンもできない。

![snow2.jpg](https://qiita-image-store.s3.amazonaws.com/0/96018/9dc5bc7d-1333-762c-04c9-ec165e1ddbe1.jpeg)

File InterfaceをDisableしようとしても書き込みが完了しないのでずっとこの状態です。

電源ボタンを押すとシャットダウン処理が行われます。
しかし、再び電源を投入するとこの状態から復活してもちろん利用不可能状態なのでした。


そしてサポートへ
======

日本のサポートは有償でないと答えられないという。使えないAWSJに見切りをつけ米国AWSへ。
カスタマーセントリックがきちんとしている米国は親身に対処してくれました。
30/30/30リブートなど様々な方法を教えられ試せど問題は解決せず。
![sn19.JPG](https://qiita-image-store.s3.amazonaws.com/0/96018/961083b2-5817-1400-0a69-7534f9e7413a.jpeg)

結局解決に至らず、不具合により動作しなかったため返送することなりました。
利用料金は後日$420のクレジットが付与される形で返還されました。


File Interfaceの不具合だった
======

返却まで数日あったので、不具合の原因究明に向け調査を続けました。

S3 Interfaceは問題ない
-
Snowball EdgeにはS3のローカルエンドポイントとして接続できる機能もあります。
これを試します。まずはS3接続用のクレデンシャルを取得します。

```bash:コマンド:
snowballEdge credentials -i 10.0.0.1 \ 
 -m ./JID20000000-7777-4444-aaaa-099999999999_manifest.bin \ 
 -u aaaaa-bbbbb-ccccc-ddddd-eeeee
```
```結果(例):
      [snowballEdge]
      aws_access_key_id = T1QUJ2WUX20KI0KHPYGH
      aws_secret_access_key = IfC6ak6UDsa4eGzemQyriEI5Vks77c6Jugs5gABz
```
これをAWS CLI用の ~/.aws/credentials ファイルへ追加します。
追加したらこれを用いてファイル転送を試みます。

```bash:コマンド:
aws s3 cp --profile snowballEdge \
 --endpoint http://10.0.0.1:8080/ \ 
 ./S3試験用ファイル.ts s3://nas-migration/
```
```結果(例):
      upload: ./S3試験用ファイル.ts to s3://nas-migration/S3試験用ファイル.ts
```
これで読み書きを行うと問題なく行えます。
やはり原因はFile Interface機能のようです。

マルチバイト文字非対応のFile Interface
-
その後、ANK文字のみのファイルを書き込む限りはNFSでも問題無いことが確認できた。
日本語ファイル名など、マルチバイト文字を含むファイル名を使用するとFile Intefaceが暴走し使えなくなるという不具合なのだった。


サポートへフィードバック
======

不具合が修正されたら今度こそ使いたいので結果をサポートへ連絡。
![snow3.jpg](https://qiita-image-store.s3.amazonaws.com/0/96018/c3ba6744-38f2-784b-500d-e0300e69ff03.jpeg)

ベーシックサポート（無償）でもちゃんとフィードバックされます。
これが当然ですよね。


利用料金
======
AWS Snowball Edgeは最初の10日間は300ドルです。これを超えると1日あたり30ドルかかります。
これはウェブサイトにも明記されていますが、送料は明記されておらず返却時に請求されます。
![snow4.jpg](https://qiita-image-store.s3.amazonaws.com/0/96018/f37534ff-7dda-2221-c21d-0e06efb5af46.jpeg)

東京都内へ発送してもらいましたが、往復送料として120ドル請求されました。
つまり最低利用料金は420ドルということになります。送料が全国一律かは不明です。


結論
======

上記不具合により目的は達成されませんでした。
用途の都合上、ファイル名を変更することは出来ませんから仕方有りません。
AWS Snowballチームへ不具合をフィードバックしたし改善される日を待つことにします。


日本法人(AWSJ)の問題
======
使い方などを質問するのに有償サポートが必要なのであれば仕方ないでしょう。しかしです、
買った製品が正しく動作しないことについて連絡しても門前払いするAWSJの対応は問題です。
カスタマーセントリック思考が欠如し迷走するAWSJ。悔い改めよ。