% 表題: www トラブルシューティング % % 履歴: 2009/09/28 柳 芳紀 % 本ドキュメントは 2009/08/26 に発生した www サーバのハードディスク故障から www サーバ復旧までの記録である. ■ 症状 2009/08/26 の 13:00 頃, www サーバ状のファイルのパーミッションが全てリード オンリーになっている事を確認. この様な事態に至った原因自体は特定されていない. 調査の結果,home 領域の ハードディスクが故障していることが判明し,ハードディスク交換作業にとりかかる. 方針としては, 1. /home のハードディスクを生の新しいディスクと入れ替える. 2. /home.bk にあるバックアップデータを新しいディスクに rsync をかける という手順を踏む作戦で,2006年に起きた www サーバのハードディスク故障時の トラブルカルテに沿って作業を進めていたが,途中で新しい生のディスクのパーティションを 切り,フォーマットをかけるという作業の部分で,誤ってバックアップデータの入った ハードディスクにパーティションを切り,フォーマットをかけてしまった. このため,バックアップをとってあったデータの中身を見ることが出来なくなり, 業者に要請してデータを復旧してもらい(データはハードディスクで戻ってきた), 新しい home, home.bk 用のハードディスクにデータを移してサーバを復旧させる こととなった. ■ 原因 今回業者にデータの復旧を要請することとなった要因としては,取り扱うハードディスクを 間違えたという,人為的なミスによるところが大きい. ■ 作業内容 作業記録 = 作業内容 + WWWサーバ停止時間の短縮のため,WWW サーバ上でやる必要のない作業は 情報実験機の 3N 機で行う. ・ 以下,情報実験機16(管理者は柳) での作業 1 2 業者から届いたディスクにテプラを貼る + 不良ブロックの検査に時間がかかると思われたので,home.bk 用のディスク のマウント作業を情報実験機15で同時並行して行った 3 home 用のディスクを取り付ける * 認識されたか確認. デバイス名を確認 # dmesg 今回は sdb として認識された * パーティションを作成する # cfdisk /dev/sdb   全領域を 1 つのパーティションにする part type は primary を選択 file type は Linux を選択 [Write] を選択して書き込む * ファイルシステムを作成 # mke2fs -jc /dev/sdb1 -c : デバイスにファイルシステムを作成する前に、 fast read-only テストを用いて、不良ブロックを検査する. -j : ext3 を持ったファイルシステムを作成. *今回はこの部分に二時間を要した. * パーティションにラベルを付ける * ラベル名にはスラッシュ"/"やドット"."を付けないこと # e2label /dev/sdb1 home * home 用のディスクをマウントする先を作る # mkdir /satahome * home 用のディスクをマウントする # mount /dev/(home用ディスクのデバイス名) /satahome 4 home.bk 用のディスクを取り付ける (情報実験機15での作業) * 認識されたか確認. デバイス名を確認 # dmesg * パーティションを作成する # cfdisk /dev/(home.bk用ディスクのデバイス)   全領域を 1 つのパーティションにする part type は primary を選択 file type は Linux を選択 * ファイルシステムを作成 # mke2fs -jc /dev/(home.bk用ディスクのデバイス) -c : デバイスにファイルシステムを作成する前に、 fast read-only テストを用いて、不良ブロックを検査する. -j : ext3 を持ったファイルシステムを作成. * パーティションにラベルを付ける * ラベル名にはスラッシュ"/"やドット"."を付けないこと # e2label <デバイス名> <ラベル名> + 一台の実験機で同時に rsync 出来る事にここで気付き,作業場所を 情報実験機 16 に移して作業 * home 用のディスクをマウントする先を作る # mkdir /satahome.bk * home 用のディスクをマウントする # mount /dev/(home用ディスクのデバイス名) /satahome.bk 5 復活したディスク(業者から返却されたディスク)を取り付け, マウントする * 認識されたか確認. デバイス名を確認 # dmesg  * read-only でマウント # mount -rt ext3 /dev/(復活したディスクのデバイス名) /mnt 6 復活したディスク(業者から返却されたディスク)から生のディスク二つ同時に rsync をかける * rsync をかける前に実行結果だけを表示(事前にテストを行ってみる) * エラーが出ていないことを確認する   # rsync -avn /mnt/190921/FS/ /satahome/ >/home/yanagi/result1.txt 2>error1.txt # rsync -avn /mnt/190921/FS / /satahome.bk/ >/home/yanagi/result2.txt 2>error2.txt -a, --archive アーカイブモード(-rlptgoD オプションと 同義) -v, --verbose 転送情報を詳しく表示 -n, --dry-run 実行時の動作だけを表示 * error1.txt, error2.txt 共に空白である事を確認 * result1.txt, result2.txt 共に中身がある事を確認 * 確認できたら rsync を実行 # rsync -av /mnt/190921/FS/ /satahome/ >/home/yanagi/result3.txt 2>error3.txt # rsync -av /mnt/190921/FS/ /satahome.bk/ >/home/yanagi/result4.txt 2>error4.txt * 今回は2時間半かかった * error3.txt, error4.txt の中身はいずれも空であることを確認. 7 容量を確認. # df -h # du -h /mnt/1909021 で見た容量と一致していることを確認 8 ディスクを外す # umount /mnt # umount /satahome # umount /satahome.bk   念のため df コマンドで確認 # df * 業者から戻ってきたディスクは、www の備品置き場に格納する ----------------------------------------------------------------------------------- ・ 以下,www サーバ上での作業 9 apache を停止する. # /usr/local/apache/bin/apachectl stop 10 ネットワーク線を抜く 11 システム領域に iri2009 の為に一時的に作った home ディレクトリの名前 を変更 # mv home home-iri2009 12 mkdir コマンドで /home を作成 * /home.bk は既に存在する # mkdir /home 13 dmesg コマンドでハードディスクが認識されたか確認 # dmesg 14 /etc/fstab の書き換え, マウント # vi /etc/fstab #/dev/sdc1 /home ext3 defaults,usrquota 0  2 #/dev/sdd1 /home.bk ext3 defaults 0 2 この二行を以下のように書き直す LABEL=<ラベル名> /home ext3 defaults,usrquota 0  2 LABEL=<ラベル名> /home.bk ext3 defaults 0 2 # mount -a 15 確認 # df -h 16 バックアップスクリプトを cron で実行するように設定  /etc/cron.daily/rsync を編集し、コマンドを実行可能にする # date >> /var/log/rsync-log-home.log # rsync -av --delete --exclude lost+found /home/ /home.bk/ >> /var/log/rsync-log/home.log Z>&1 # echo "$n" >> /var/log/rsync-log/home.log 以上の三行をコメントアウト * 確認のために, コマンドを実行する. # emacs /etc/cron.daily/rsync 17 apache の設定ファイルの Error Message 404 に関する編集 # emacs /usr/local/apache/conf/httpd.conf * /usr/local/apache/conf/httpd.confの以下の行を書き換え #DocumentRoot "/usr/local/apache/htdocs" DocumentRoot "/home/kouhou/public_html" * /usr/local/apache/conf/httpd.conf の以下の行を消去 ErrorDocument 404 "Sorry, now this server is under repair. 18 apache 再起動 # /usr/local/apache/bin/apachectl restart 19 ネットワーク線につなぐ 20 各ソフトウェアの動作確認 * apache, apache-ssl, * http://www.ep.sci.hokudai.ac.jp * http://www.ep.sci.hokudai.ac.jp/~epcore/ * https://www.ep.sci.hokudai.ac.jp/ * https://www.ep.sci.hokudai.ac.jp/~epcore/ * http://www.ep.sci.hokudai.ac.jp/~hoge/ * error message の確認(server name, sever admin の記述) * http://www.cosmo.sci.hokudai.ac.jp * apache-status * http://www.ep.sci.hokudai.ac.jp/server-status/ * gate の動作確認 21 復旧宣言 22 iri2009 グループメンバーに /home-iri2009 以下のデータの回収を依頼