#エラー内容
・Cloud9でスクリプトを編集して保存しようとしたら、Failed to write to [scriptの本文] [object Object].
のエラーが表示されファイルが保存できなくなった。
#原因
EC2がマウントしているEBSボリュームに空き容量がないため。
ec2-user:~/environment $ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 474M 0 474M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 460K 492M 1% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 10G 10G 0 100% / ★★★ディスクに空きがない★★★
tmpfs 99M 0 99M 0% /run/user/1000
当然ファイル増加を伴うモジュールのインストールなどについてもエラーになった。
ec2-user:~/environment $ gem install rails
ERROR: While executing gem ... (Errno::ENOSPC)
No space left on device @ fptr_finalize_flush - /home/ec2-user/.gem/specs/rubygems.org%443/quick/Marshal.4.8/rails-6.1.4.gemspec
#対策
EC2がマウントしている対象のEBSボリュームを拡張し認識させる。
・Cloud9のサービスが稼働しているEC2インスタンスを選択して、GUI上でボリュームサイズを変更する。
ボリューム拡張はオンライン状態で可能なため、EC2の停止は不要。
※因みにAWS公式ページによると、12カ月間は30GBまで無料利用可能らしい。
AWS 無料利用枠には、Amazon Elastic Block Store (EBS) のストレージ 30 GB、I/O 200 万回、スナップショットストレージ 1 GB が含まれています。
・Cloud9上で認識しているブロックデバイスみると、ディスクに割り当て余力があることが確認できる。
ec2-user:~/environment $ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 30G 0 disk
└─xvda1 202:1 0 10G 0 part /
・パーティションを拡張する。
ec2-user:~/environment $ sudo su
[root@ip-172-31-15-87 environment]# growpart /dev/xvda 1
CHANGED: partition=1 start=4096 old: size=20967391 end=20971487 new: size=62910431 end=62914527
・拡張されたことを確認する。
[root@ip-172-31-15-87 environment]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 30G 0 disk
└─xvda1 202:1 0 30G 0 part /
・XFSのファイルシステムを拡張する。
[root@ip-172-31-15-87 environment]# xfs_growfs /dev/xvda1
meta-data=/dev/xvda1 isize=512 agcount=6, agsize=524159 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1 spinodes=0
data = bsize=4096 blocks=2620923, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal 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 2620923 to 7863803
・対象領域が拡張されたことを確認する。
[root@ip-172-31-15-87 environment]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 474M 0 474M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 456K 492M 1% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 30G 11G 20G 34% / ★★★20GBの空きができた★★★
tmpfs 99M 0 99M 0% /run/user/1000
※※※実行環境※※※
・Amazon Linux2 on EC2
ec2-user:~/environment $ cat /etc/os-release
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"
ec2-user:~/environment $
#終わりに
・VMware ESXiと違って、EC2ではオンラインディスク拡張ができるの流石だった。
・マウントしてるEC2を停止してても、EBSは課金されちゃうの初心者のはまりポイントだと思ってる。
#更新履歴
ver. 1.0 初版投稿 2021/08/17