こんにちは。サービス開発課の刈谷です。
Railsのbundle installをしようとしたら、 【There was an error while trying to write to /tmp/bundler-compact-index-***************/versions. There was insufficient space remaining on the device.】 というエラーが発生しました。
サービス開発課のメンバーに、「EC2インスタンスの容量オーバーの可能性あるので容量アップして良い?」と相談したところ「貼ってもらったエラーはまさに容量が足りないと言っているので、ディスク増加で解消しそうです!」とご教授頂きまして、今回、Windows(WSL2)からSSH接続して、AmazonLinux2環境の、EBSボリュームを16Gへ変更しましたので、その手順をご紹介させて頂きます。
- IPアドレスを確認
- インスタンスに接続(WSL2からSSH接続する)
- ボリューム容量チェック&パーティション確認
- ボリューム容量拡張
- パーティション再確認
- ボリュームのパーティションを拡張
- ボリューム容量再チェック
- ボリュームのファイルシステムの拡張を適応
- 番外編
- 備考
IPアドレスを確認
※インターネットゲートウェイ経由でパブリックIPによるSSH接続を想定します。
AWSコンソールにログイン後、【インスタンス】をクリックすると確認出来ます。
インスタンスに接続(WSL2からSSH接続する)
●コマンド
ssh -i /パス/key-pair-name.pem instance-user-name@(パブリック IP)
EC2 Amazon Linux 2 AMIと表示されたらOK(添付画像参照)です。
参考:AWS公式ドキュメント docs.aws.amazon.com
ボリューム容量チェック&パーティション確認
容量の確認をします。
●コマンド
df
パーティションの確認をします。
●コマンド
lsblk
参考:AWS公式ドキュメント抜粋 docs.aws.amazon.com
※私の場合、Railsのbundle installコマンドが失敗して、そのエラー内容から「容量がいっぱいなのでは?」と気付き判断しました。 dfコマンドでも確認したところ容量が100%でした。
ボリューム容量拡張
コンソールを使用して容量を拡張します。
●URL https://console.aws.amazon.com/ec2/
- ボリュームをクリック
- ボリュームIDをクリック
- サイズを任意の値(今回は16)にした後、変更をクリック ※注意:ボリューム変更リクエストの送信後は、キャンセルできません。(請求金額が変更されるので責任者・チームメンバーに事前に相談して下さい。)
- AWSがポップアップでファイルシステムを変更する必要があることを教えてくれる ※参考:AWS公式ドキュメント抜粋より、ボリュームサイズを変更しても、ボリュームのファイルシステムを拡張して新しいストレージ容量を利用するまでは、実際の効果はありません。
参考:AWS公式ドキュメント抜粋 docs.aws.amazon.com
パーティション再確認
●コマンド
lsblk
ディスクの方は16Gに変更されてましたが、パーティションの方は8Gのままです。
ボリュームのパーティションを拡張
●コマンド
sudo growpart /dev/nvme0n1 1
パーティションを持つボリュームの場合は、growpartコマンドを使用してパーティションを拡張します。
パーティションに反映されていることを確認します。
参考:AWS公式ドキュメント抜粋 docs.aws.amazon.com
ボリューム容量再チェック
●コマンド
df
まだファイルシステムの拡張が適応出来ていないことが確認出来ます。
ボリュームのファイルシステムの拡張を適応
ボリュームのファイルシステムを拡張するには、xfs_growfs コマンドを使用します。
●コマンド
sudo xfs_growfs -d /
参考:AWS公式ドキュメント抜粋 docs.aws.amazon.com
●コマンド
df
※拡張が適応出来ており、使用容量が約半分(画像では51%)になっていることが確認出来ます。
完了
番外編
Railsのbundle installコマンドがエラー無く実行出来るか確認してみます。
きました!!
備考
■実行環境 SSHクライアント
■開発環境 EC2(Amazon Linux 2 AMI)
■ブログで使用したAWS公式ドキュメントまとめ