cloud9のterminalでrails testを実行しようとしたら何と12ものエラーが...
備忘録として、またその他どなたかのお役に立てればと思い、記事を書いていきます。
キャプチャを失念しており、ほとんど文章での説明になりわかりにくいかと思いますが、ご容赦のほどお願いいたします。
では、書いていきます!
【1.状況】
AWSでrails testの実行時に12ものエラーが発生し、以下のメッセージが登場。
⇒ Error:「No spacd left on device」
【2.状況分析】
→ 上記1.について色々調べていくと、どうにも容量不足のようです。
容量不足とは、主に以下2つのいずれかを指します。
① ディスク容量の不足
② 「inode」の容量不足
ここで、「inode」とは要するに、ファイル情報(誰が、いつetc...などのプロパティ的な
情報)を管理するためのデータであるとのこと。
従って、この2つの内、どちらが原因であるのかを見極めることが必要です。
それぞれ、以下に示すコマンドをterminalで実行すれば、容量が確認できます。
・ ①の場合
2-1) $ df
・ ②の場合
2-2) $ df -i
その結果、私の場合、②のパターンであることが分かりました。
内容を見ていくと、以下5つのディレクトリが使用率100%と判明。。。
・/dev/xvda1
・/dev/loop1
・/dev/loop2
・/dev/loop3
・/dev/loop4
と分かれば、これらディレクトリを消去すればよいことになります。
【3.対策】
ターミナルで以下コマンドを実行すれば、ディレクトリを消去できます。
$ sudo rm -d ディレクトリ名
今回の場合、/dev以下の階層を消去すれば良いので、
3-1) $ sudo rm -d /dev
を実行。 ※ rmはremove、dは(おそらく)ディレクトリの略
これで、完了…と思いきや/devに格納されている全部のファイルに
以下のエラー発生。
Error:Operation not Permitted
この事象について調べていくと、どうにも上記2.の/devディレクトリに
ファイルを実行する権限が与えられていないことが原因であるとのこと。
そこで、/devディレクトリにファイルの実行権限を与える操作を行います。
そのためのコマンドを以下示します。
$ sudo chmod モード ファイル名(ディレクトリ名)
ここでいう、モードとは3桁の数字abcであるとのこと。
a:「所有者」の権限
b:「所有グループ」の権限
c:「その他」
ここで、abcの各桁には以下数字の合計値が入ります。
モード(数字) モード(アルファベット) 権限
4 r 読み取り
2 w 書き込み
1 x 実行
つまり、実行だけが必要なら1、読み取りと実行が必要なら4+1=5、
何も必要なければ、0が入ります。
今回は、「所有者」と「その他」に全機能を付与したかったので、707としました。
従って、以下3-2)のコマンドをターミナルで実行しました。
3-2) $ sudo chmod 707 /dev
そして、再び3-1)を実行した後に2-1)を実行し、
フォルダ内を確認します。
以下の画像のように/devが消去され、容量が開放されたと思われます。
エラーがなくなり、晴れて問題が解消されました。
以上となります、イメージがつきにくかったかもしれませんが、ご参考になりますと幸いです。
それでは、また!
参照先
https://qiita.com/shisama/items/5f4c4fa768642aad9e06
https://mem-archive.com/2019/07/28/post-1976/
https://itojisan.xyz/trouble/15772/#2_inode
https://www.souichi.club/aws/out-of-disk-space/