ある日、森の中、クマさんに、出会った・・・♪
じゃなくて・・・とある日、Jenkins でジョブの設定を保存した際にエラーが発生するようになった。
No space left on device
space だけに注目したので、最初は設定画面の入力値に余分な半角スペースが入っているのかと思った。
しかし、よくよくエラーメッセージを読んでみるとデバイスの領域を指しているようだ。
今回はこの問題を解決していきます。
原因はディスクの空き容量だった
同じエラーでも原因は様々だと思いますが、今回はメッセージの通りディスクの空きがないことでビンゴ。
実際にディスクの状態を見てみるとこんな感じ。
(値は少し調整しています)
1 2 3 4 | $ df -h Filesystem Size Used Avail Use% Mounted on /dev/hoge 80G 80G 0 100% / |
この状態で、よく Jenkins も起動してるなってことで、誰がディスクを食い荒らしているのか原因を探ります。
純粋にルートディレクトリから見ていくと、どうやら /var/lib 配下が怪しいところに行き着きます。
ってことは、/var/lib/jenkins 配下にあるワークスペースかなっと思いきや、犯人は /var/lib/docker 配下でした。
1 2 3 4 5 | $ du -sh /var/lib/* (一部抜粋) 13G /var/lib/jenkins 65G /var/lib/docker |
不要な Docker イメージが大量にあるので、ここを消し去ってあげましょう。
不要なDockerイメージの削除
Docker イメージの削除方法はいろいろとありますが、docker のバージョンが 18 系だったので、以下のコマンドが利用できます。
docker system prune -af –volumes
Jenkins サーバ上では Docker コンテナの作成はするものの、起動はしていないので全削除で問題ありません。
このコマンドで一気にディスクの空き容量を確保できました。
うーん、掃除は大事ですね。cron に仕込んでおかなければ・・・。