コース一覧
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分

バックアップから復元せよ

師範 / 目安 35分

事務局に電話が鳴りっぱなしです。商店街のウェブサイトに載せている会員名簿と店舗情報が、まるごと消えています。

「わしがやった」と鴫原さんが正直に言いました。「整理しようとして、古いほうのフォルダを消したつもりが、生きとるほうを消してしまった。/var/yumesaku/data が空だ」

幸い、毎週バックアップを取る習慣はありました。/var/backups/yumesaku に固めた書庫が残っています。

「ただな、どれが最新か分からん。同じような名前が並んどるし、1つは中身が空っぽかもしれん。それと、去年の失敗があってな。書庫を開いたら今のフォルダの上に散らかったことがある。あれだけは繰り返したくない」

復元は、消えたものを戻す作業であると同時に、戻す前に中身を確かめる作業です。今日はその順番を守ります。

書庫は開く前に覗く

tar は複数のファイルを1つに固める道具です。よく見るのは3つの使い方です。

ターミナル

tar -tzf <書庫> tar -xzf <書庫> tar -czf <書庫> <固めたいもの>
  • -t は中身の一覧。開かずに何が入っているかだけを見ます
  • -x は取り出し
  • -c は作成

-z は gzip で圧縮されている書庫、つまり .tar.gz を扱う指定です。-f は続く引数が書庫のファイル名だという指定で、これを忘れると tar は別のものを読みに行きます。

復元でいちばん大事なのが -t です。開いてしまってからでは、上に散らかったものを取り消せません。

ターミナル

tar -tzf /var/backups/yumesaku/<書庫の名前>

一覧に出るパスの形もここで確かめます。var/yumesaku/data/... のように先頭のスラッシュが無い相対パスで入っていれば、取り出したときは「いまいる場所からの相対」で展開されます。つまり cd してから開くか、-C で展開先を指定するかで、着地点が変わります。

ターミナル

tar -xzf <書庫> -C <展開先>

どれが最新かは中身で決める

ファイル名の日付は、付けた人の申告にすぎません。実際の情報はファイルそのものが持っています。

ターミナル

ls -l /var/backups/yumesaku ls -lt /var/backups/yumesaku

-l は詳しい表示で、大きさと更新時刻が出ます。-t は更新時刻の新しい順に並べる指定です。大きさが極端に小さい書庫は、中身が空か、取り損ねた失敗作である見込みが高いです。名前だけで選ばず、-t で中身を見て、行数を数えて決めてください。

復元は安全な場所で開いてから移す

本番のフォルダの上でいきなり -x すると、取り返しがつきません。実務では、いったん作業用の場所へ取り出し、中身を見てから本番へ移します。移すのは mv です。

ターミナル

mkdir -p /root/fukugen tar -xzf <書庫> -C /root/fukugen ls -R /root/fukugen mv /root/fukugen/var/yumesaku/data/* /var/yumesaku/data/

遠回りに見えますが、これが去年の失敗を繰り返さない唯一の方法です。

完成条件

  1. /var/backups/yumesaku の書庫のうち、中身が揃っている最新のものを見極めること
  2. /var/yumesaku/data に、会員名簿 kaiin.csv と店舗情報 tenpo.csv を復元すること
  3. 復元した名簿には会員が12人ぶん入っていること。空の書庫を開いても、この条件は満たせません
  4. 選んだ書庫のファイル名を /root/fukugen-moto.txt に書き残すこと。次に同じことが起きたときの記録です

進め方

開く前に一覧を見る、を必ず守ってください。順番を守ることそのものが今日の課題です。

ヒントは3段階で、①方針、②使うコマンド、③部分解の順に出ます。1つも開けずに通せたら、その問題は自分のものです。

課題

  1. 書庫を開く前に tar -t で中身を確かめること
  2. /var/yumesaku/data に kaiin.csv と tenpo.csv を復元すること
  3. 復元した kaiin.csv に会員が12人ぶん入っていること
  4. 選んだ書庫のファイル名を /root/fukugen-moto.txt に書き残すこと

ヒント

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

①方針 復元は「戻す」より先に「確かめる」です。書庫が3つ並んでいますが、名前の日付は申告にすぎません。ls -l で大きさを見て、tar -t で中身の一覧を見てから、どれを使うかを決めます

ヒント 2ヒント 1 を開くと読めます
ヒント 3ヒント 2 を開くと読めます
  • 1. ls -l /var/yumesaku/data で、何が消えているかを確かめる
  • 2. ls -lt /var/backups/yumesaku で、残っている書庫を新しい順に並べる
  • 3. tar -tzf で、開く前に1つずつ中身の一覧を見る
  • 4. 作業用の場所へ tar -xzf -C で取り出し、行数を数えて中身が揃っているか確かめる
  • 5. mv で /var/yumesaku/data へ戻す
  • 6. 使った書庫の名前を /root/fukugen-moto.txt に書き残す

5 項目で採点します