Instance Store(Ephemeral Disk)を後から使用する

2015.06.06

はじめに

インスタンスストアについてです。 インスタンスストアを使用していなかったけど後から使いたいと思う方もいるかと思います。

今回はインスタンスストアの概要と後から使用する方法をご紹介します。

概要

インスタンスストアは、インスタンスで使用するためのブロックレベルの一時ストレージを提供します。

インスタンスストアは無料で使用でき、任意のファイルシステムが利用可能、 ローカルディスクのためネットワークの影響も受けにくいという利点があります。

注意点としてインスタンスストアのデータはインスタンスを停止(stop)した際にデータは消えてしまいます。 スナップショット機能やEBSのように別のインスタンスに付け替えはできません。

インスタンスストアを使うべきなのは?([AWSマイスターシリーズ] Instance Store & Elastic Block Storeより)

skitch

インスタンスストアをSWAP領域として使う過去のエントリーがありますので合わせてご紹介します。

Amazon EC2(Linux)のswap領域ベストプラクティス | Developers.IO Amazon EC2(Linux)のswap自動作成を行うRPMパッケージ ec2-swap を作ってみた | Developers.IO

以下が現時点でのインスタンスタイプと、各インスタンスタイプで使用可能な instance store-backed ボリュームのサイズおよび数量です。

インスタンスタイプで使用可能なインスタンスストア

インスタンスタイプ インスタンスストアボリューム
c1.medium 1 x 350 GB
c1.xlarge 4 x 420 GB(1680 GB)
c3.large 2 x 16 GB SSD(32 GB)
c3.xlarge 2 x 40 GB SSD(80 GB)
c3.2xlarge 2 x 80 GB SSD(160 GB)
c3.4xlarge 2 x 160 GB SSD(320 GB)
c3.8xlarge 2 x 320 GB SSD(640 GB)
c4.large なし(Amazon EBS ボリュームを使用)
c4.xlarge なし(Amazon EBS ボリュームを使用)
c4.2xlarge なし(Amazon EBS ボリュームを使用)
c4.4xlarge なし(Amazon EBS ボリュームを使用)
c4.8xlarge なし(Amazon EBS ボリュームを使用)
cc2.8xlarge 4 x 840 GB(3360 GB)
cg1.4xlarge 2 x 840 GB(1680 GB)
cr1.8xlarge 2 x 120 GB SSD(240 GB)
d2.xlarge 3 x 2000 GB(6 TB)
d2.2xlarge 6 x 2000 GB(12 TB)
d2.4xlarge 12 x 2000 GB(24 TB)
d2.8xlarge 24 x 2000 GB(48 TB)
g2.2xlarge 1 x 60 GB SSD
g2.8xlarge 2 x 120 GB SSD
hi1.4xlarge 2 x 1024 GB SSD(2048 GB)
hs1.8xlarge 24 x 2000 GB(48 TB)
i2.xlarge 1 x 800 GB SSD、TRIM をサポート
i2.2xlarge 2 x 800 GB SSD(1600 GB)、TRIM をサポート
i2.4xlarge 4 x 800 GB SSD(3200 GB)、TRIM をサポート
i2.8xlarge 8 x 800 GB SSD(6400 GB)、TRIM をサポート
m1.small 1 x 160 GB
m1.medium 1 x 410 GB
m1.large 2 x 420 GB(840 GB)
m1.xlarge 4 x 420 GB(1680 GB)
m2.xlarge 1 x 420 GB
m2.2xlarge 1 x 850 GB
m2.4xlarge 2 x 840 GB(1680 GB)
m3.medium 1 x 4 GB SSD
m3.large 1 x 32 GB SSD
m3.xlarge 2 x 40 GB SSD(80 GB)
m3.2xlarge 2 x 80 GB SSD(160 GB)
r3.large 1 x 32 GB SSD、TRIM をサポート
r3.xlarge 1 x 80 GB SSD、TRIM をサポート
r3.2xlarge 1 x 160 GB SSD、TRIM をサポート
r3.4xlarge 1 x 320 GB SSD、TRIM をサポート
r3.8xlarge 2 x 320 GB SSD(640 GB)、TRIM をサポート
t1.micro なし(Amazon EBS ボリュームを使用)
t2.micro なし(Amazon EBS ボリュームを使用)
t2.small なし(Amazon EBS ボリュームを使用)
t2.medium なし(Amazon EBS ボリュームを使用)

※c4、t1、t2インスタンスタイプではインスタンスストアは使用不可

インスタンスストア追加方法

インスタンスストアの追加方法ですが、下記注意点がありますので インスタンス起動の際は使用の有無を判断してから起動する必要があります。

  • インスタンス起動後にインスタンスストアを追加できない
  • Change Instance Typeでは変更(追加)ができない
  • Instance Storeのサイズはインスタンスタイプによって決まっているので変更はできない
  • 容量が足りない場合は複数のインスタンスストアをOSからストライプする

インスタンス起動時に通常に追加する場合は「Step 4: Add Storage」にて追加します。

skitch

しかし、EC2インスタンスはAMIをとり、AMIから起動することが可能です。 そのため、後からインスタンスストアを使用したいと思った場合でも追加が可能です。

AMIからインスタンス作成時に「Add Storage」画面にてインスタンスストアを追加すればいいのです。

インスタンスストアを後から追加

ここにインスタンスストアを使用していないEC2インスタンスがあります。

skitch

起動中のEC2インスタンスはインスタンスストアをマネジメントコンソールから確認することはできませんので インスタンスにログインして確認します。

$ curl http://169.254.169.254/latest/meta-data/block-device-mapping/
ami
root

 

※ephemeral*が表示されてないことがわかります。

AMIを作成する

対象インスタンスを選択してImage→Create Image

skitch

作成したAMIからインスタンスを起動

AMIを選択してLaunchします。Step 4: Add Storageにてインスタンスストアを追加します。

skitch

あとは通常どおりLaunchしてEIPを使用していた場合はEIPの付け替えを実施すれば完了です。

インスタンスストアがマッピングされているか確認

 

$ curl http://169.254.169.254/latest/meta-data/block-device-mapping/
ami
ephemeral0 ★
root

マッピングされていますね。

以上で後からインスタンスストアを追加する手順は完了です。

おまけ

起動中のEC2インスタンスはインスタンスストアをマネジメントコンソールから確認することができませんが AMIからは確認することが可能です。

先ほど起動したEC2インスタンスのAMIを作成してAMIsから確認してみましょう。

Create ImageからAMIを作成

skitch ※この時インスタンスストアをAMIにマッピングできますが、データは保持されません。

AMIsから対象のAMIを確認する

  • インスタンスストアがマッピングされていないAMI

skitch

  • インスタンスストアがマッピングされているAMI

skitch

まとめ

無料で使用できるインスタンスストアについて紹介しました。 使用せず、起動してしまった場合にもAMIからLaunchすることで使用可能となりますので 是非、使用してみてください。

参考資料

[AWSマイスターシリーズ] Instance Store & Elastic Block Store Amazon EC2 インスタンスストア