EC2のブートボリュームとして使用しているEBSのサイズを減らす

EC2のブートボリュームとして使用しているEBSのサイズを減らす

Category:雑記Tags:

EC2のブートボリュームとして使用しているEBSのサイズを増やすのは簡単だけど、減らすためにはひと手間かける必要があるのですね。

増やす例

元RX-7乗りの適当な日々様の記事で詳細に説明してくださっています。

減らす例

下記フォーラム内のJosephさんのコメントを参考にいたしました。
https://forums.aws.amazon.com/message.jspa?messageID=167406#jive-message-459499
Josephさんは ubuntu でやられたようですが、私はAmazon Linuxで試しました。

手順

In AWS Console:

AWSのコンソール上で以下の作業を行います。

0) Stop the instance you want to resize

0)縮小したいインスタンスをSTOPの状態にします。

1) Create new empty ebs volume to the size you want. (No Snapshot selected)

1)縮小したい大きさのEBSを新規作成します。スナップショットの選択時には”No Snapshot”を選択します。

2) Attach it to any instance you have access to.. Mount it as /dev/sdf

2)作業用のインスタンスを起動させます。次に手順.0のEBSをデタッチします。
この手順.0のEBSを 作業用のインスタンスの /dev/xvdg に、手順.1のEBSを 作業用のインスタンスの /dev/xvdf にアタッチします。

On instance via SSH:

作業用のインスタンスにSSHログインをします。

3) sudo mkdir /new /old create new directories

root権限になった上で /new と /old ディレクトリを作成します。

$ sudo su
# mkdir /new /old

4) sudo mkfs.ext4 /dev/xvdf create new filesystem on new volume

新規作成した EBS にファイルシステムを作成します。

# mkfs.ext4 /dev/xvdf

5) sudo mount -t ext4 /dev/xvdf /new mount it to this directory

新規作成した EBS を /new にマウントします。

# mount -t ext4 /dev/xvdf /new

6) sudo e2label /dev/xvdf uec-rootfs needs an e2label for linux to recognize it, use sudo e2label /dev/sda1 on an active instant to see what it should be

指定するラベルを調べた上でEBS に e2label を指定します。

# e2label /dev/xvdg
/
# e2label /dev/xvdf /

7) sudo mount -t ext4 /dev/xvdg /old mount old vol to directory for copying

縮小したいEBSを /old にマウントします。

# mount -t ext4 /dev/xvdg /old

8) sudo cp -p /old /new didn’t really do anything.. Skipped a bunch

こ・・・このコマンドは間違っているのでやらなくて良いです。

9) sudo rsync -ax /old /new took a while

このコマンドも間違っているので下記のようにします。

# rsync -ax /old/ /new/

10)sudo mv /new/old/* /new/ dir is copied to the wrong spot

正しい rsync のコマンドを打ち込んだのでやる必要がありません。

# df -T
Filesystem    Type   1K-blocks      Used Available Use% Mounted on
/dev/xvda1    ext4     8256952   1007976   7165120  13% /
tmpfs        tmpfs      848352         0    848352   0% /dev/shm
/dev/xvdf     ext4    20642428   2509044  17084808  13% /new
/dev/xvdg     ext4   165139820   2304232 162751732   2% /old
# ls /new/
bin   dev  home  lib64  lost+found  mnt  proc  sbin     srv  tmp  var
boot  etc  lib   local  media       opt  root  selinux  sys  usr

11) sudo umount /new unmount vols

新規作成した方のEBSをアンマウントします。

# umount /new

12) sudo umount /old

リサイズ対象になった方のEBSをアンマウントします。

# umount /old

Back in AWS Console:

以下、再びAWSコンソールの画面からの操作になります。

13) Unmount the original /dev/sda1 volume from the instance you’re resizing

リサイズ作業で使用したインスタンスをSTOP状態にします。
リサイズ対象になった方のEBSをデタッチします。

14) Unmount and the mount the new volume that was at /dev/xvdf to /dev/sda1 on the instance you're resizing

新規作成した方のEBSを元のインスタンスの /dev/sda1 にアタッチします。

15) create an AMI of that instance..

元のインスタンスのAMIを作成します。
(これをしないとインスタンスが起動しないです。。。)

16) launch it as a new instance.. and it's up!

そして、AMIからインスタンスを作成します。これで動くハズです!

Josephさんに感謝!

スポンサーリンク

コメント (0)

コメントをどうぞ

注意プライバシーポリシーに同意の上で送信ください。

注意お名前は公開されます。
補足メールアドレスは公開されません。

関連記事

CakePHP3の環境構築 Amazon Linux編

CakePHP3の環境構築 Amazon Linux編

Category:雑記Tags:,

この記事のまとめ 症状1 composer で intl extension を要求されます。 対処1 yum で使用している PHP のバージョンにあった intl extension をインストールしました。 症状2…