この記事では、AWS Cloud9のEC2インスタンスが容量不足になってしまった時の対処法について説明します。
この記事は、オンライン講座「はじめてのRuby on Rails入門-RubyとRailsを基礎から学びWebアプリケーションをネットに公開しよう」のサポート記事です。
目次
チャンネル登録してね!
なお、アクセス時期によっては実際のサイトと記事中の画像で表示が異なる場合があります。
・クラウドコンピューティングサービスのAWSで利用できるサービスの一つです。
・クラウド上のサーバー資源を利用して、ブラウザ上の統合開発環境(IDE)でWebアプリケーションを開発することができます。
・Cloud9を起動すると、AWSのEC2インスタンスに接続され、開発を進めることができます。
EC2インスタンスを利用していて容量が不足した場合、ターミナルで以下のようなメッセージが表示されます。
No space left on device
このような場合、まずは不要なファイルが容量を圧迫していないか確認してみましょう。
dfコマンドを用いると、ボリューム全体の使用状況を確かめることができます。
Cloud9上のターミナルで以下のコマンドを実行します。
$ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 483M 60K 483M 1% /dev tmpfs 493M 0 493M 0% /dev/shm /dev/xvda1 9.8G 8.6G 1.1G 89% /
この例では、ルートディレクトリにマウントされている/dev/xvda1 というファイルシステムが89%使用済みである、ということが分かります。
全体の使用状況を把握したら、duコマンドを用いて個別のディレクトリの容量を確かめます。以下が使用例です。
$ du -h ~/node_modules 20K node_modules/tmp/lib 44K node_modules/tmp 12K node_modules/node-cleanup/tests/lib 20K node_modules/node-cleanup/tests/bin 64K node_modules/node-cleanup/tests 100K node_modules/node-cleanup 20K node_modules/os-tmpdir 168K node_modules
もし容量が極端に大きいファイルなどが見つかったら、影響が無いことを確認した上で削除して、ボリューム容量を解放してみてください。
ファイルを削除してもボリューム容量の圧迫が解消しない場合や、削除しても良いファイルが見つからない場合は、EBSボリュームサイズの拡張を行いましょう。
※AWS無料枠について
AWSではアカウント作成から1年間の期間は、EC2インスタンスを月に合計750時間・30GBまで無料で利用できます(2020年2月時点)。無料枠の範囲内で利用したい場合は、使用しているEC2インスタンスのEBSボリュームが合計で30GBを超えないように注意してください。
まずはCloud9インスタンスが動いているインスタンスを停止しましょう。
Cloud9のコンソールを開き、ボリュームを拡張したいインスタンスの名前の部分をクリックします。
Cloud9環境の詳細が表示されるので、「Go To Instance」をクリックします。
すると、このCloud9環境が動作しているEC2インスタンスが表示されます。
右上の「インスタンスの状態」から「インスタンスを停止」をクリックします。状況によって停止まで少し時間がかかる場合があります。
「インスタンスを終了」を選択すると環境が削除されてしまうので、間違えないように注意してください。
インスタンスの状態が「停止済み」となっていることを確認してください。
インスタンスの詳細で「ストレージ」をクリックすると、このEC2インスタンスのボリューム情報が確認できます。
「ボリュームID」をクリックして、ボリュームの詳細画面に飛びます。
「ボリュームの変更」をクリックします。
「サイズ」に変更したいボリューム容量を入力し、「変更」を押します。
ここでは、ストレージを10GBから16GBに変更します。
ボリューム変更を実行するか聞かれるので、「はい」を選択します。
ボリューム変更中は「状態」がmoidyfingとなって黄色いランプが現れます。少し時間がかかります、ランプが緑色になったら変更完了です。
予期せぬ不具合を避けるため、ボリューム変更中はCloud9インスタンスを起動しないようにしてください。
コンソールからCloud9インスタンスを起動します。
ターミナルでlsblkコマンドを実行し、ボリュームの割り当て状況を確認しましょう。
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 16G 0 disk └─xvda1 202:1 0 10G 0 part /
この場合は、ボリュームの変更によりxvdaのディスク容量が16GBになったことが分かります。
しかしxvda1というパーティションには10GBしか割り当てられていません。そこでgrowpartコマンドを用いて、パーティションサイズを拡張します。
$ sudo growpart /dev/xvda 1 CHANGED: disk=/dev/xvda partition=1: start=4096 old: size=20967390,end=20971486 new: size=33550302,end=33554398
次にパーティションを拡張したら、ファイルシステムのサイズも合わせて変更する必要があります。以下のコマンドを実行してください。
$ sudo resize2fs /dev/xvda1 resize2fs 1.43.5 (04-Aug-2017) Filesystem at /dev/xvda1 is mounted on /; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/xvda1 is now 4193787 (4k) blocks long.
再度以下のコマンドを実行してみましょう。
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 16G 0 disk └─xvda1 202:1 0 16G 0 part /
ファイルシステムを16GBに拡張することができました!
オンライン学習サービスProglus(プログラス)でプログラミングを学び、創れる人になろう!
プレミアムプランを2週間無料体験しよう
今すぐ詳細を確認する