LoginSignup
45
36

More than 5 years have passed since last update.

AWS EC2インスタンスのディスク容量追加をしてみる

Last updated at Posted at 2016-11-06

AWS初心者です。
EC2インスタンスのディスク容量追加やってみつつ、自分用の振り返り用の記事をまとめました。
公式Docもあり他の人の記事もすでにあるので、自分の記事に価値はないですが、なにか先達からコメントもらえたらいいなと思い公開します。

EC2のストレージの種類​

EC2のストレージは、EBSとインスタンスストアの2種類がある。
公式ドキュメントでいう永続的ストレージはEBSを指していると考えられます。
また、公式ドキュメントでは、ストレージとボリュームは同義だと思っています。

EBS

  • 高い可用性と耐久性を持つストレージ
  • EBSボリュームともいう
  • 5つのEBSボリュームタイプ(2016/11/06現在)から目的にあったものを選ぶ
  • 単位:IOPS(Input/Output Per Second)

執筆時点で選択できるEBSボリュームタイプ5つ

タイプ ハードウェア 容量 コスト 用途
EBS マグネティック HDD 1 GB~1 TB 0.05 USD/GB-月
0.05 USD/100 万 I/O
IOが遅くてもいい場合
コストを抑えたい場合
Cold HDD (sc1) HDD 500 GB~16 TB 0.025 USD/GB-月 アクセス頻度の低いワークロード向け
スループット最適化 HDD (st1) HDD 500 GB~16 TB 0.045 USD/GB-月 アクセス頻度の高いワークロード向け
EBS 汎用 SSD (gp2)* SSD 1 GB~16 TB 0.10 USD/GB-月 幅広いトランザクションワークロードに適応できる
EBS プロビジョンド IOPS SSD (io1) SSD 4 GB~16 TB 0.125 USD/GB-月
0.065 USD/プロビジョンド IOPS
レイテンシーの影響が大きいトランザクションワークロード向け

インスタンスストア

  • インスタンス用のブロックレベルの一時ストレージ
  • 1 つ以上のインスタンスストアボリュームで構成される
  • インスタンスストアのデータはEC2インスタンス再起動時は引き継がれる
  • 下記のような場合はインスタンスストアのデータは失われる
    • 基盤となるディスクでの障害発生
    • EC2インスタンスの停止
    • EC2インスタンスの終了

EC2インスタンスのマネジメントコンソールからの再起動ではインスタンスストアのデータは引き続き利用できる。
これは同じ物理サーバ上で立ち上がるためだと思われます。
一方、停止+起動によるインスタンスの再立ち上げは、停止前とは異なる物理サーバで立ち上がります。

ルートボリュームと追加ボリューム

  • ルートボリューム = ルートにマウントされたストレージ(ボリューム)
  • 追加ボリューム = ルートボリューム以外に追加されたストレージ(ボリューム)

ディスク容量の追加のパターン

インスタンスのディスク容量を増やす際に、3つのケースがある

  1. ストレージを追加する
  2. ルートボリュームの容量を追加する
  3. 追加ボリュームの容量を追加する

ざっくりした各項目の説明をします。
実行インスタンスOS : Amazon Linux

1. ストレージを追加する

  • EBS => Volume => Volumeの追加
  • 作成したVolumeをインスタンスにアタッチ
  • Volumeをマウント

2. ルートボリュームの容量を追加する

  • EC2インスタンスのAMIを作成する
    • この時、「再起動しない」にチェックを入れとけば、AMI作成時にコピー元のインスタンスは再起動されない。商用で動いているインスタンスなら入れるべきですね。
  • AMIから新しいインスタンスを起動する
    • この時にルートボリュームのサイズを変更する
  • 新しいインスタンスでルートボリュームのサイズが変更されていることを確認する
    • サイズが変わっていなかったら[サイズ変更が反映されない場合]の項を参照のこと
  • EIPを付け替える(Reallocateにチェックを入れないとエラーで実行できない)

これって、AMI作ってから、EIP付け替えるまでの情報って失われますよね。。。

もっといい方法ないかな。

3. 追加ボリュームの容量を追加する

「ルートボリュームの容量を追加する」でもできるかもしれないですが、「Amazon Web Services実践入門」では下記のボリュームを切り離す方法が説明されていた。

  • EC2インスタンスを停止する
    • 試してみましたが、インスタンスを停止しないと、後に実施する追加ボリュームの切り離しができなかったです。
  • 容量追加する対象ボリュームのスナップショットを取得
  • 対象ボリュームのスナップショットから新規ボリュームを作成する
    • サイズを変更する
    • EC2インスタンスと同じAvailability Zone(AZ)を選択する
  • 元のボリュームを切り離す(デタッチする)
  • サイズ変更した新ボリュームをアタッチする
    • 元のボリュームと同じマウント先のディレクトリを選択すること
    • サイズが変わっていなかったら[サイズ変更が反映されない場合]の項を参照のこと

サイズ変更が反映されない場合

ファイルシステムで実施するコマンドが違う。

- 対象ボリュームのファイルシステムがext4の場合

次のコマンドで反映させる
$ sudo resize2fs <デバイス>

- 対象ボリュームのファイルシステムがxfsの場合

次のコマンドで反映させる
$ sudo xfs_growfs <マウント先のディレクトリ>

実行例:

[ec2-user@ip-172-31-20-58 ~]$ sudo xfs_growfs /mnt/ebs/0
meta-data=/dev/xvdf              isize=256    agcount=4, agsize=6553600 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=26214400, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=12800, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 26214400 to 31457280

- ちなみにファイルシステムを確認するには

$ df -T

[ec2-user@ip-172-31-20-58 ~]$ df -T
Filesystem     Type     1K-blocks    Used Available Use% Mounted on
devtmpfs       devtmpfs    498772      60    498712   1% /dev
tmpfs          tmpfs       509664       0    509664   0% /dev/shm
/dev/xvda1     ext4      16380820 2364400  13916172  15% /
/dev/xvdf      xfs      125777920   32960 125744960   1% /mnt/ebs/0

参考資料

45
36
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
45
36