発見経緯
Service Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
自分のこのブログにアクセスしたところ、503 Service Temporarily Unavailableのエラーが発生し、表示できなくなっていたことに気付いた。ConoHa WINGで全体的な障害が発生してないか確認するも、障害のお知らせはなかった。
原因究明
/home/cXXXXXXX/.pyenv/plugins/pyenv-virtualenv/bin/pyenv-virtualenv-init: line 94: cannot create temp file for here-document: Disk quota exceeded
ConoHa WINGにsshで接続すると、コンソールに上記のエラーが表示された。pyenvが何か悪さしてるのかと思い、今は使っていないため~/.pyenv
ディレクトリまるごと消した。しかし、503エラーの事象は解消されなかった。
E509: Cannot create backup file (add ! to override)
~/.bash_profile
にpyenvの設定を書いてていたため、viで消そうとしたところ、上記のエラーが出て編集できなかった。ファイルの更新すらできないのはおかしいと思い、sshで接続したときのエラーを見るとDisk quota exceeded
があった。また、scpでローカルからConoHa WINGへのファイル転送を試みるも失敗。エラーのよくある原因に「ディスククオータの容量制限を超えた」があった。
duコマンドで確認すると自分のホームディレクトリ配下で250GBもの容量を使ってることがわかった。ConoHaコントロールパネル上でも250GB近く使っていることが確認できた。ConoHa WINGのベーシックプランなのでSSDの割当は300GBだが、250GBを超えると制限がかかる模様。容量逼迫が原因で503エラーが発生したと断定。
duコマンドでどのディレクトリで容量を逼迫しているのか確認したところ、Nextcloudディレクトリ配下のfiles_versionsで約250GB使用していることが判明。Nextcloudで更新のあったファイルのバックアップを格納しておくディレクトリだった。
対応
Nextcloudのconfig.php
に'versions_retention_obligation'
の設定を適切にいれれば解決しそうだが、ファイルの更新ができないため、files_versions配下のファイルをrm -rf
で全削除した。その後ブログにアクセスしたところ、503エラーが解消した。
The Versions app never uses more than 50% of the user’s currently available free space. If the stored versions exceed this limit, Nextcloud deletes the oldest file versions until it meets the disk space limit again.
https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/file_versioning.html
ここにが利用できる空き容量の50%を超えて使用することはないと書いてあるが、思っきり利用している。。
config.php
には'versions_retention_obligation' => '7, 7',
の設定を追加した。少なくとも7日間はファイルを残すが、7日を超えたらファイルを削除するという設定。
そう言えば、Nextcloudと同期しているWindowsクライアントで数日前大量のエラーを吐いて同期を停止したことがあった。おそらくそのときが250GBに達してしまったときだと思われる。