はじめに
AWS EC2 にマウントしている EBS が容量不足で、ソフトウェアが実行できなかったため、拡張することにしました。
実施内容をメモしておきます。
環境
- AWS EC2 に SSH 接続
- インスタンスタイプ:m5.large
- Linux:RED HAT Enterprise Linux 8
起きたこと
以下の記事で、EC2 上に Oracle Database XE 21c をインストールして、データベースを作ろうとしたところ容量不足のエラーが出ました。
# /etc/init.d/oracle-xe-21c configure
The location '/opt/oracle' specified for database files has insufficient space.
Database creation needs at least '4.5GB' disk space.
Specify a different database file destination that has enough space in the configuration file '/etc/sysconfig/oracle-xe-21c.conf'.
ファイルシステムの残容量を見ると、マウントした EBS の容量が 3.9GB しか残っていませんでした。データベースを作成するためには 4.5GB の容量が必要なようです。
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.7G 0 3.7G 0% /dev
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 3.7G 17M 3.7G 1% /run
tmpfs 3.7G 0 3.7G 0% /sys/fs/cgroup
/dev/nvme0n1p2 15G 12G 3.9G 75% /tmpfs 747M 0 747M 0% /run/user/1000
解決策
マウントした EBS の容量を拡張します。
df -h
コマンドでファイルシステムの容量を確認した時に、/dev/nvme0n1p2
のサイズが 20G となっていることがゴールです。
管理者権限ログイン
管理者権限にスイッチします。
$ sudo su
ブロックストレージの拡張
まずは、EC2 にくっつけている EBS 自体の容量が足りていないので拡張します。
lsblk
コマンドで物理ディスクの容量を確認します。
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:0 0 15G 0 disk
├─nvme0n1p1 259:1 0 1M 0 part
└─nvme0n1p2 259:2 0 15G 0 part /
nvme0n1
デバイスの全体容量が 15GB ある。nvme0n1
デバイスはパーテーションを 2 つに区切られており、2 つめのパーティションが EC2 の/
にマウントされている。
ことがわかります。
lsblk
は物理ディスクの一覧を見ることができるコマンドです。「PC にどんな HDD が刺さっているか」というイメージです。
EBS 自体の容量拡張はマネジメントコンソールから行います。 マネージドコンソールから EBS のサイズを 20GB に拡張します。
EBS 設定画面で 「変更」 を押すと設定画面に飛べます。
EC2 の再起動は必要ありませんでした。
ひとまずブロックストレージ自体の容量が増えたことを確認します。
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTnvme0n1 259:0 0 20G 0 disk
├─nvme0n1p1 259:1 0 1M 0 part└─nvme0n1p2 259:2 0 15G 0 part /
EC2 にマウントされているnvme0n1p2
のサイズは 15G のままなので、ここを拡張します。
パーティションへの容量割り当て
growpart
コマンドで、パーティションへの割り当てを拡張します。
# growpart /dev/nvme0n1 2
第一引数はブロックストレージ名、第二引数はパーティション区分になるようなので、上記のように設定しました。
パーティション区分の確認方法がわからず、lsblk
の結果から予想しました。(p1
はパーティション 1 でp2
はパーティション 2 かな)
再び状況を確認すると、nvme0n1p2
のサイズが 20G に増えたことを確認できました。
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:0 0 20G 0 disk
├─nvme0n1p1 259:1 0 1M 0 part
└─nvme0n1p2 259:2 0 20G 0 part /
ファイルシステムの容量を拡張する
物理ディスクの容量拡張は完了しましたが、 マウント先の EC2 では認識されていないようで、ファイルシステムの容量は増えていません。
# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.7G 0 3.7G 0% /dev
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 3.7G 17M 3.7G 1% /run
tmpfs 3.7G 0 3.7G 0% /sys/fs/cgroup
/dev/nvme0n1p2 15G 12G 4.0G 74% /tmpfs 747M 0 747M 0% /run/user/1000
xfs_growfs
コマンドでファイルシステムを拡張します。
※AWS 公式によると、ファイルタイプがxfs
以外の場合は対処が変わるようです。まずは、df -hT
コマンドでファイルタイプの確認が必要です。
# df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 3.7G 0 3.7G 0% /dev
tmpfs tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs tmpfs 3.7G 25M 3.7G 1% /run
tmpfs tmpfs 3.7G 0 3.7G 0% /sys/fs/cgroup
/dev/nvme0n1p2 xfs 20G 16G 4.3G 79% /tmpfs tmpfs 747M 0 747M 0% /run/user/1000
# xfs_growfs -d /
meta-data=/dev/nvme0n1p2 isize=512 agcount=7, agsize=655231 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=0 inobtcount=0
data = bsize=4096 blocks=3931643, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 3931643 to 5242363
ファイルシステムを確認すると、容量が増えていることが確認できました。
# df -h
Flesystem Size Used Avail Use% Mounted on
devtmpfs 3.7G 0 3.7G 0% /dev
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 3.7G 17M 3.7G 1% /run
tmpfs 3.7G 0 3.7G 0% /sys/fs/cgroup
/dev/nvme0n1p2 20G 12G 8.9G 56% /tmpfs 747M 0 747M 0% /run/user/1000
まとめ
EC2 にマウントした EBS の容量を拡張することができました。