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自身が管理者に警告を出してくれると助かるのが.

DSC_2833

*1:ファイルのアップロードも試行してみればよかった