Disk full に近くなったときMoodleに起きること, してはいけない対処
UNIX/Linuxがdisk full になったときの振る舞いは root としてよく遭遇してきた.
今回は, CentOS6上のMoodle 3.11で, /var/lib/moodledata や MySQL が置かれた disk が full に近くなったとき, どのような振る舞いが見られるか観察する機会があった.
ページのAJAX UIを操作するだけでも, 「データベースに書けない」という警告のモーダルが出る, GETやページ遷移しようとすると, データベースと接続できないというPHPの(Moodleの?)エラーメッセージに飛ばされる*1.
この場合の想定される原因
課題に提出された多数の大きい画像ファイルで, 消去してもさしつかえないもの
考えられた対処と採用した対処と結果
- 不採用 /var/lib/moodledata 内のファイルを手動で消去する
- 可読なファイル名でないので不要な提出物やリソースかわからない
- 手動で消去するとデータベースの記録と不整合になるだろう
- 不採用 不要なコースをバックアップして消去する
- バックアップファイルは(いったん?) /var/lib/moodledata 内に作られるから, 一時的であれディスク使用率をさらに高めるだろう, または完了しないおそれがある
- 不採用 課題はそのままで提出ファイルをWebインターフェースから消去する
- 教師に提出物の編集を許す設定なら, 1個ずつ手動で消去することはできるが, ファイルの個数が多すぎる
- 採用 多数の不要な提出ファイルと紐付いた活動(課題)を消去し, ゴミ箱からも消去する
- 課題を消去すれば, 紐付いた提出ファイルも cron で近々消去されるはず.
- 結果 1つの課題は問題なく消去できた. 別の課題では, かえってディスク消費量が増して「データベースと接続できない」というエラーメッセージしか出なくなった. ゴミ箱に移す過程でも一時ファイルが作られるものと思われる
いつもどおりの教訓
ディスクに空きがあるうちに, コースや提出ファイルをバックアップや消去する作業をする. Moodle自身が管理者に警告を出してくれると助かるのが.
*1:ファイルのアップロードも試行してみればよかった