コース一覧
Linux道場 商店街サーバー障害対応の10問
ディスクを空けろ

Linux道場 商店街サーバー障害対応の10問

Linux入門で身に付けた技を、商店街事務局のサーバー当番として試す演習専用コースです。解説はありません。障害の報告と復旧条件だけを読み、原因を自分で突き止めて直します。手が止まったときのために、方針・使うコマンド・部分解の3段階のヒントを各問に用意しています。他の道場と違い、白紙から書き始めるのではなく、すでに壊れている機械の前に座るところから始まります。ブラウザの中で本物の Debian が動いていて、打ったコマンドはそのまま本物の機械に効きます。迷子のファイル探しから始まり、ログからの原因特定、権限、ディスク不足、暴走プロセス、PATH、スクリプトの起動失敗、定期実行の停止、バックアップからの復元と進み、最後は複数の障害が同時に起きたサーバーを健全な状態まで戻します。1問15分から45分、全10問で約5時間です。Linux入門を終えて「コマンドは知っているが、壊れた機械を前にすると手が止まる」と感じている方に向いています。

1
初段
01. 迷子のファイルを探し出せ15分
02. ログから犯人を特定せよ20分
03. 開けないファイルを開けろ20分
04. ディスクを空けろ25分
2
中段
01. 暴走プロセスを止めろ25分
02. コマンドが見つからない30分
03. 動かないスクリプトを直せ30分
3
師範
01. 定期実行が動かない理由を突き止めろ30分
02. バックアップから復元せよ35分
03. 総合 サーバー健全化ミッション45分

ディスクを空けろ

初段 / 目安 25分

夜中に事務局のサーバーが書き込みに失敗し、朝いちばんで鴫原さんが電話をよこしました。

「サイトの更新をかけたら『空きがない』と怒られた。うちのサーバーは1.7ギガしかない小さいやつだが、そんなに使うものを置いた覚えは無いんだ。どこかに太ったやつがおる」

ディスクが埋まる障害は、慌てて手当たり次第に消すのが一番危険です。消してはいけないものを消すと、次はサーバーごと起きなくなります。探してから消すという順番を、ここで身に付けてください。

上から順に降りていく

最初に見るのは全体です。df はファイルシステムごとの容量と使用率を出します。-h を付けると人間に読める単位になります。

ターミナル

df -h

これで「どのファイルシステムが埋まっているか」が分かりますが、「どのディレクトリが太っているか」は分かりません。それを見るのが du です。-s はまとめて1行、-h は読みやすい単位、-m はメガバイト単位です。

ターミナル

du -sh /var/*

こう書くと /var の直下がそれぞれ何メガあるか並びます。太い行が見つかったら、その中で同じことを繰り返します。/var が太い、その中の /var/log が太い、その中の何が太い、と一段ずつ降りていくのが基本の型です。大きい順に並べたいときは sort -h に通します。

ターミナル

du -sh /var/log/* | sort -h | tail -5

消す前に、それが何かを確かめる

太いファイルを見つけても、すぐ rm を打たないでください。ログの本体を消すと、動いているプログラムが書き込み先を失って別の障害になります。今日のように、世代を回して残っている古いログや、誰かが検証で置いたまま忘れた大きなファイルは、消してよいものの典型です。ls -lh で大きさと日付を見て、名前で見当を付けてから消します。

消すのは rm です。ディレクトリごと消すなら -r を付けますが、この問題では要りません。rm -rf / のような、範囲を確かめずに再帰で消す打ち方は絶対にしないでください。 打ち間違えても取り消せません。ゴミ箱はありません。

安全に近づく手順として、消す前に同じ引数で ls を打つ癖を付けておくと効きます。ls で出た顔ぶれがそのまま消える顔ぶれです。そこに見覚えのないものが混じっていたら、まだ rm を打つ段階ではありません。

完成条件

  1. / の使用率を 40% 未満まで下げること
  2. 消してよい大きなファイルだけを消すこと。データ本体である /opt/yumesaku/data の中身と、現役のログ /var/log/yumesaku/access.log は残すこと
  3. 何を消したかを /root/keshita.txt に書き残すこと。1行に1つ、消したファイルの絶対パスです

事後に「なぜ空いたのか」を説明できないと、次に同じことが起きたときに誰も追えません。空けた本人が覚えているうちは何とかなりますが、半年後の自分は他人です。記録まで含めて障害対応だと考えてください。

進め方

df から始めてください。手が止まったらヒントを開けます。ヒントは3段階で、①方針、②使うコマンド、③部分解の順に出ます。1つも開けずに通せたら、その問題は自分のものです。

課題

  1. / の使用率を 40% 未満まで下げること
  2. /opt/yumesaku/data の中身は消さないこと
  3. 現役のログ /var/log/yumesaku/access.log は残すこと
  4. 消したファイルの絶対パスを /root/keshita.txt に1行ずつ書き残すこと

ヒント

前のヒントを開くと次が開きます。開かずに解けると未開封クリアです

①方針 手当たり次第に消さず、全体 → ディレクトリ → ファイルの順に一段ずつ降りて、太っている場所を特定してから消します

ヒント 2ヒント 1 を開くと読めます
ヒント 3ヒント 2 を開くと読めます
  • 1. df -h で全体の使用率を確かめる
  • 2. du -sh で太っているディレクトリを一段ずつ降りて探す
  • 3. ls -lh で見つけたファイルの大きさと日付を確かめる
  • 4. 消してよいものだけを rm で消す
  • 5. 消した絶対パスを /root/keshita.txt に書き残し、df -h で下がったことを確かめる

4 項目で採点します