AWSインスタンスのストレージ変更とファイルシステムの拡張

公開日時:更新日時:

はじめに

こんばんは。にしやまです。 EC2を開発に利用しているとストレージが足りなくなって困る場合があります。

例えば、EC2にAPもDBも入れてて且つ複数のプロジェクトを1つのEC2インスタンス内に立てたい場合、元のストレージが少ないと2つ目のプロジェクトをデプロイできない、とかが起こります。

今回、ストレージを8GiB→20GiBに増やしたので、その手順を記します。

ボリュームサイズの変更

まずは以下記事を参考に管理画面からの設定を行いました。 ご存知でしたか?EC2インスタンスは再起動なしにディスクサイズ(EBSボリュームサイズ)を増やせます

上記の設定が完了するとAWS上のインスタンスの詳細画面のストレージタブでボリュームサイズの値が変更されています。

ファイルシステムの拡張

AWSの管理画面だけでは完了にはなりません。 管理画面上から変更した設定を実際のOSにも反映させ、ファイルシステムを拡張させる必要があります。 基本的には下記のドキュメントを参考に設定しています。 ボリュームサイズ変更後の Linux ファイルシステムの拡張

ファイルシステム拡張のために以下の操作を行う必要があります。

  1. ファイルシステム・パーティションの状態を確認
  2. パーティションの拡張
  3. ファイルシステムの拡張

1. ファイルシステム・パーティションの状態を確認

あくまで今回の場合なので必須ではないですが、 最初に、とりあえずストレージが埋まっててもろもろの操作がやりにくく(タブ補完が使えないなど)不便だったので、不要なファイルを一旦消して取り急ぎ容量の回復を図りました。

yarnのキャッシュは結構サイズが大きくて1GBくらいあるので開発用のサーバーならこういう時に軽い気持ちでyarnのキャッシュを消すことが多いです。

削除した上で、現状のファイルシステムの状況を確認します。 dfはファイルシステムの使用状況を確認するコマンド。 (余談: ファイルがストレージがいっぱいになった時はdf -hでファイルシステム全体の使用状況を見て、du -sh /dirでどこのディレクトリが容量を占めているか探すことが多いです。もっといい方法もあるかもですが。)

→ AWSの管理画面では20GiBにしたのにこちらでは8.0Gのままになっています。

次に以下のコマンドで詳細を確認します。 lsblkはブロックデバイスの一覧を表示し、パーティションの状態・ストレージの構成・デバイス番号などを確認することのできるコマンド。

これはディスク容量は20Gになったけど、パーティションとして割り当てられているのは8Gのままであるということを指しています。 → xvda1のパーティションにも20Gを割り当てる必要があります。

現状のファイルシステムがどのタイプかによって利用するコマンドが変わるためファイルシステムのタイプを確認します。 df -hTでタイプを確認できる(T: type、h: human readable)

/dev/xvda1のファイルシステムはxfsという種類のファイルシステムであることがわかりました。 (余談: xfsはCentOS7でデフォルトで使われているファイルシステム(AmazonLinux2はCentOS7のCloneなのでおそらくxfsがデフォ)で、CentOS6ではext4というファイルシステムが使われていた)

2. パーティションの拡張

状況の確認ができたので、growpartというコマンドを使用してパーティションの拡張を行います。

/dev/xvda1の数字で分けて第一引数と第二引数にする点に注意。 このコマンドを実行すると、lsblkで確認したようにディスク容量に空きがあってパーティションの拡張の余地があれば自動で拡張してくれます。

実行結果を確認。 パーティションが拡張された状態になっています。

が、まだファイルシステムは拡張されていないです。

パーティションの拡張とファイルシステムの拡張は別のものなので、それぞれ設定が必要です。 物理的なストレージを論理的に区切ったのがパーティションで、その中でファイルを管理する為にあるのがファイルシステム、というざっくりのイメージです。(間違ってたらごめんなさい)

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

xfsの場合、xfs_growfsというコマンドを使用してファイルシステムの拡張を行います。

対象のファイルシステムのマウント位置(dfコマンドで確認)を引数に指定します。 -dは指定可能な最大サイズまで拡張する引数。

実行結果を確認。 8G→20Gに増えています。

以上で完了です。

ファイルシステム周りにつてあまり詳しくないので、駆け足な説明になってしまいました。 今度またファイルシステムについてもう少し踏み込んで調べてみたいと思います。

では。