はじめに
いつもEC2の容量が足りなくなった際、どのような手順でやっていたか毎回調べている事に気づきました。
Qiitaの記事のを執筆する際、開発や検証はCloud9で行っていますがそれの容量が逼迫したのを機に備忘録として残します。
今回の手順に出てくる重要な単語なども纏めていきます。
日頃クラウド関連の学習ばかり好きでやってしまいこのようなインフラの基礎的な部分が疎かになりがちなのでこのような内容の記事も今後増やしていきます。
ボリュームとは
論理的なディスクの領域、区切りの事を指しています。
パーティションにファイルシステムを適用しOSから認識できる状態になった論理的なディスクの領域の事。(AWSだとEBSでAzureだとAzure Managed Disks)
パーティションとは
物理的なディスクの区切りを指しています。ディスクがパーティションされただけではまだOSは認識できない状態。
ファイルシステム
パーティション上に構築されるファイルとフォルダの管理構造。
ファイルの位置やサイズ、メタデータが保存されるルールそのものを指している。(ext4 or XFSなど)
それぞれの関係性、イメージ
以下、ChatGPTさんが作成してくれました。
┌───────────────────────────────┐
│ アプリケーション │
│ (例: ls, cat, mkdir など) │
└─────┬─────────────────────────┘
│ (システムコール:open/read/write)
▼
┌──────────────────────────────────────────────┐
│ → OS カーネル(VFS / ドライバ)← │
│ │
│ ┌──────────────────────────────────────┐ │
│ │ ファイルシステム (ext4, XFS など) │ │
│ │ └─ OS はここを通じてファイル操作 │ │
│ └─────────────┬────────────────────────┘ │
│ │
│ ▼
│ ┌──────────────────────────────────────┐ │
│ │ パーティション (/dev/nvme0n1p1) │ │
│ │ └─ OS はここをブロック単位で扱う │ │
│ └─────────────┬────────────────────────┘ │
│ │
│ ▼
│ ┌──────────────────────────────────────┐ │
│ │ ボリューム (EBS / Managed Disk) │ │
│ │ └─ OS からは /dev/nvme0n1 として見える │
│ └──────────────────────────────────────┘ │
└──────────────────────────────────────────────┘
では、以下ボリューム拡張手順です。Linux想定です。
※AWSコンソールでの作業は省略します。
1:エラーメッセージの確認
ディスクの空き容量がなくなると大体以下のようなエラーメッセージが出てきます。
Error while installing hashicorp/aws v5.100.0:
write ... no space left on device
terraform initのコマンドを実行した際の例です。
2:空き容量の確認
df -h
3:ディレクトリ・ファイルの調査、不要ファイルの削除
du -sh ./* | sort -h
上の階層のディレクトリに移動して実行していき、逼迫の原因となっている箇所を突き止めましょう。
原因を突き止めたら不要であれば削除→他のディレクトリも調査を繰り返していく。
↓
手順2に戻って容量に空きができたか確認する。
エラーとなった際の作業を再度実行し解決できない場合は、手順4へ進む
4:ボリューム拡張
1,現在のディスク構成の確認
lsblk
出力例:
nvme0n1 20G disk
└─ nvme0n1p1(←※ここがパーティション領域) 10G part /
└─ nvme0n1p3 10M part /boot/efi
2,パーティション領域の拡張
sudo growpart /dev/nvme0n1 1
nvme0n1の部分はパーティション名ごとに書き換えてください。
3,ファイルシステムの種類を確認、拡張
# ファイルシステム種類を確認
df -hT /
出力例:
Filesystem Type Size Used Avail Use% Mounted on
/dev/nvme0n1p1 xfs(←ここを確認) 10G 10G 10G 100% /
# ext4 の場合
sudo resize2fs /dev/nvme0n1p1
# xfs の場合
sudo xfs_growfs -d /
最後に手順2のコマンドを実行しボリュームが拡張されたことを確認して終了です。
最後に
ずっとAWSコンソールでEBSを拡張しても再度サーバで作業が必要部分についてうまくイメージできていませんでした。
コンソールの作業だけではディスクのサイズを大きくしているだけでOSは認識できない状態だということでした。
そこからディスクを大きくした分パーティションに割り当てる→さらにそれをファイルシステムに割り当ている事によってOSが認識できる状態になる。