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

#エラー内容
・Cloud9でスクリプトを編集して保存しようとしたら、```Failed to write to [scriptの本文] [object Object].```のエラーが表示されファイルが保存できなくなった。
![cloud9_errメッセージ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1160324/d00a1b4b-518d-b710-c2d7-1e3dcab37eb2.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公式ページ](https://aws.amazon.com/jp/ebs/pricing/)によると、12カ月間は30GBまで無料利用可能らしい。
　　```AWS 無料利用枠には、Amazon Elastic Block Store (EBS) のストレージ 30 GB、I/O 200 万回、スナップショットストレージ 1 GB が含まれています。```
![VOL拡張.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1160324/19e5584a-b2b2-7a5a-8aad-1a7ad8b39ef5.png)
![拡張完了.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1160324/2ec21a1e-fbb1-09e9-0fa8-0974d1030ed1.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