EBSの容量を上げてサーバーに反映する
EBSとは
Amazon Elastic Block Storeの略で、
EC2インスタンスにアタッチして使われるAWSのストレージサービスになります。
ストレージとは記憶装置の意味で、HDDやSSD的なイメージを持っていただければと思います。
背景
サーバーの方で怪しい動きをしていたので
dfコマンドを叩いたところ使用が100%近くになっていたので
EBSのボリュームを上げて対応することにしました。
現状の状態
非常に危機的状況です。
1 2 3 4 5 |
$ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 16G 64K 16G 1% /dev tmpfs 16G 440K 16G 1% /dev/shm /dev/nvme0n1p1 69G 68G 1.5G 98% / |
流れ
- Amazon EBS スナップショットの作成
- EBSのボリュームの変更
- 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 コマンドでマウント情報とサイズ、ファイルシステムの使用率を確認
1 2 3 4 5 |
$ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 16G 64K 16G 1% /dev tmpfs 16G 268K 16G 1% /dev/shm /dev/nvme0n1p1 69G 68G 1.5G 98% / |
2.lsblk コマンドでdiskとパーティション情報を確認
パーティションに10GB割り振られていないことが確認できる。
1 2 3 4 5 |
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme0n1 259:0 0 80G 0 disk ├─nvme0n1p128 259:2 0 1M 0 part └─nvme0n1p1 259:1 0 70G 0 part / |
3.growpartコマンドでEBSのディスクサイズをパーティションサイズにあわせる
・ブロックデバイスパス(block device name):lsblkで表示された「nvme0n1」になる
・パーティション(partition):「nvme0n1p1」のp1部分。この場合パーティションは「1」となる。
・コマンド:growpart {block device name} {partition}
→ growpart /dev/nvme0n1 1
1 2 |
$sudo growpart /dev/nvme0n1 1 CHANGED: disk=/dev/nvme0n1 partition=1: start=4096 old: size=146796510,end=146800606 new: size=167768030,end=167772126 |
4.resize2fs コマンドで、disk(/dev/nvme0n1p1/)のファイルシステムのサイズをボリュームの上限まで拡張
1 2 3 4 5 |
$sudo resize2fs /dev/nvme0n1p1 resize2fs 1.42.12 (29-Aug-2014) Filesystem at /dev/nvme0n1p1 is mounted on /; on-line resizing required old_desc_blocks = 5, new_desc_blocks = 5 The filesystem on /dev/nvme0n1p1 is now 20971003 (4k) blocks long. |
5.lsblk、df -hコマンドでSIZEが拡張されている事を確認
1 2 3 4 5 6 7 8 9 10 11 |
$lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme0n1 259:0 0 80G 0 disk ├─nvme0n1p128 259:2 0 1M 0 part └─nvme0n1p1 259:1 0 80G 0 part / $df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 16G 64K 16G 1% /dev tmpfs 16G 256K 16G 1% /dev/shm /dev/nvme0n1p1 79G 68G 12G 86% / |
その他
growpartする前にresize2fsを実行すると下記のエラーが出ます
1 2 3 |
$ sudo resize2fs /dev/nvme0n1p1 resize2fs 1.42.12 (29-Aug-2014) The filesystem is already 13106683 (4k) blocks long. Nothing to do! |
またインスタンスタイプ(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のサービスでスケールアップや変更する際は備忘録も兼ねて記事にしていこうと思います。
ありがとうございました。