EBSの容量を上げてサーバーに反映する

目次

EBSとは

Amazon Elastic Block Storeの略で、
EC2インスタンスにアタッチして使われるAWSのストレージサービスになります。
ストレージとは記憶装置の意味で、HDDやSSD的なイメージを持っていただければと思います。

背景

サーバーの方で怪しい動きをしていたので
dfコマンドを叩いたところ使用が100%近くになっていたので
EBSのボリュームを上げて対応することにしました。

現状の状態

非常に危機的状況です。

流れ

  1. Amazon EBS スナップショットの作成
  2. EBSのボリュームの変更
  3. Linuxのファイルシステムの拡張

1.Amazon EBS スナップショットの作成

何かあった時に戻せるようにスナップショットを作成します。

■1.EC2のサイドバーにEBSの項目がある「スナップショット」を選択

■2.「スナップショットの作成」を選択

■3.ボリュームIDに対象のEBSを選択し「スナップショットの作成」を選択

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ebs-creating-snapshot.html

■4.スナップショットの作成が開始されるので100%になるまで待つ
※ 容量が70GBで30分ほどで完了しました。

2. EBSのボリュームの変更

■1.ボリュームを変更したい対象のEBSを選択し、アクション→ボリュームの変更を選択

■2.サイズを元の70から80に変更し「変更」ボタンを選択

■3.確認画面が表示されるので「変更」ボタンを選択

■4.ボリュームの状態が「modifying」→「optimizing」→「completed」と変化するので待ちましょう
※ optimizingの状態でも、次のファイルサイズの変更ができるみたいです。
時間は計測し忘れたのですが1時間ぐらいでcompletedになったかと思います。

3. Linuxのファイルシステムの拡張

1.df-h コマンドでマウント情報とサイズ、ファイルシステムの使用率を確認

2.lsblk コマンドでdiskとパーティション情報を確認
パーティションに10GB割り振られていないことが確認できる。

3.growpartコマンドでEBSのディスクサイズをパーティションサイズにあわせる

・ブロックデバイスパス(block device name):lsblkで表示された「nvme0n1」になる
・パーティション(partition):「nvme0n1p1」のp1部分。この場合パーティションは「1」となる。

・コマンド:growpart {block device name} {partition}
→ growpart /dev/nvme0n1 1

4.resize2fs コマンドで、disk(/dev/nvme0n1p1/)のファイルシステムのサイズをボリュームの上限まで拡張

5.lsblk、df -hコマンドでSIZEが拡張されている事を確認

その他

growpartする前にresize2fsを実行すると下記のエラーが出ます

またインスタンスタイプ(C1、C3、CC2、CR1、G2、I2、M1、M3、R3)が古い場合など
今回の方法では対応できないパターンもありますので
ドキュメントを必ず読んでから作業を進めていただければと思います!
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/modify-volume-requirements.html

EBSサイズ拡張を行っている最中は、EBS性能への影響があるようなので
アクセスが少ない時間に拡張すると良いでしょう。

クラウドの凄い所で、
容量やスペックが足りなくなったら増やすが容易にできるのは非常に助かりますね!
今後もawsのサービスでスケールアップや変更する際は備忘録も兼ねて記事にしていこうと思います。
ありがとうございました。