LoginSignup
0
1

More than 1 year has passed since last update.

AWS Cloud9で「Failed to write to XXX」エラーがでてファイル保存ができない際の対応

Posted at

エラー内容

・Cloud9でスクリプトを編集して保存しようとしたら、Failed to write to [scriptの本文] [object Object].のエラーが表示されファイルが保存できなくなった。
cloud9_errメッセージ.PNG

原因

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 が含まれています。
VOL拡張.PNG
拡張完了.PNG

・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

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1