解析サーバーでのトラブル
たまに聞く話として、サーバにVS codeを使ってremote SSHでアクセスしている場合に、アップデートをしたタイミングからssh接続できなくなることがある。最初はアップデートされたextentionの問題なのではないかと考え、前バージョンへのダウン等でトラブルシューティングを試みたのだがうまくいかない。remote SSHしようとする時に、ホストにサーバーがインストールできないというエラーメッセージが表示されており、途中からホストのホームディレクトリに書き込みできない状態になっているのではないかと考えたて確かめていくと解決することがある。
原因はdisk quotaのオーバーにより書き込みできなくなったこと
ホームディレクトリに移ってduで使用状況を調べてみた。
$ du -sh ~
すると、決められたdisk quotaを2GBほど超過した状態であることがわかった。どこに大きなファイルがあるのかを調べてみた。
$ du -sh ~/*
隠しファイルについても以下のように調べた。
$ du -sh ~/.[^.]*
大きなものとしては、使用しているcondaのディレクトリや、.cache/firefoxなどが肥大化しているようだった。.cache/firefoxはfirefoxのキャッシュファイルだが、こんなに大きくなっているとは思わなかった。これらのファイルを削除したり、別に移したりすることで、disk quota内に収めたのち、改めて手元のPCからVS codeでssh接続してみると、今度は無事に接続することができた。
過去にも類似のトラブルを複数回経験
思い返すと、過去にもdisk quota超過での書き込み不可によるトラブルを経験しているのが思い出された。conda updateでアップデートしたり新しいアプリケーションをインストールしたりしようとしたときにできない、ということがあり、ホーム下のminiconda3のディレクトリに書き込めなくなっていることが原因だった。VS Codeもsshアクセス先のホーム下に.vscode-serverというフォルダを作っていたが、disk quota超過によりここに書き込めなくなっていることが今回の原因だったらしい。この.vscode-serverディレクトリも1.4Gほどあり、かなり大きかった。
miniconda3のディレクトリが肥大化しがち
ホームディレクトリを大きくする原因の一つは、.cache下のファイルもあるが、miniconda3が大きくなることが一番の原因のように思われた。いくつもアプリケーションを導入したり、環境をたくさん作ったりすると、すぐに5G、10Gに肥大化してしまう。
一つの解決策としては、conda cleanを使用して不要になったファイルを削除することだと思う。ただ、--allを使うと不具合が生じると述べているサイトもあり(問題なかったとする人もいる)、今回は--tarballsでtarballのみ削除することにした。
あるいは、ホーム下のcondaの設定ファイルの.condarcの中に、pkgs_dirsの記述で別のパスを記載することで、そちらにpkgsの大きいファイルを格納するようにしたら、ホーム下のサイズは小さくすることができると思う。
pkgs_dirs:
- /path/to/conda-pkgs/pkgs
また、envのフォルダを別の場所にとりあえず移動し、リンクを張ることでホーム下miniconda3のサイズを削除できるようだった、この方法でリンクを張った後でもその環境を使うことができた。このようにした方がいいのか、あるいは、ホーム下.conda/environments.txtに各environmentのパスが書かれていたので、こちらを編集した方が良いのかもしれない。
envのディレクトリの位置は、プロジェクトのフォルダ下に作って共有するといったやり方もあるらしく、これは解析の時にも便利なように思った。disk quotaを気にせずにそれぞれの解析ごとに環境を準備することもできるので、次回以降試してみたいと思った。
disk quotaのチェック
今回のこともあり、ホームディレクトリのディスク使用量をたまに確認することにした。隠しファイルについても表示するための"disk_quota_check"というエイリアスを新しく.bash_aliasesに記述した。
alias disk_quota_check='echo "---total---" && du -sh ~ && echo "--- dir --" && du -sh ~/* && echo "---invisible---" && du -sh ~/.[^.]*'
また、.bashrcに以下の記述をした。
if [ -f ~/.bash_aliases ]; then
~/.bash_aliases
fi
参考
- https://www.sophia-it.com/content/disk+quota
- disk quotaについて
- https://weblabo.oscasierra.net/python-anaconda-clean/
- https://docs.conda.io/projects/conda/en/latest/commands/clean.html
- conda cleanについて
- https://qiita.com/bridget462/items/3b1091bf12ef5d040d35
- https://sakizo-blog.com/206/
- conda環境のディレクトリをプロジェクトフォルダ内に作成する