yuu_nkjm blog
2011-08-11(Thu) [長年日記] 編集
[Windows][Linux][Knoppix][Troubleshooting] 起動しなくなったWindowsを修復する(ハードディスクとファイルシステムの復旧)
Knoppixでマウントを試みる
KnoppixをUSBメモリからブートする - yuu_nkjm blog(2011-08-10)で,KnoppixをUSBメモリからブートできる様にした.
dmesgを見たところ,/media/sda,/dev/sdaが復旧対象と思われるデバイスがあった."fdisk /dev/sda"とすると,パーティションが見えた.パーティションサイズは妥当,ブートフラグも正しいとこに付いている.
"mount -t ntfc /media/sda1 /tmp/hoge"としたが「ボリュームが壊れているよ」というエラーが出た.KnoppixからNTFSの復旧はできなさそうなので,Knoppixはこの辺で諦めることにした.
Ultimate Boot CDでハードウェア的な故障がないかチェックする
Windowsの回復コンソールからchkdskをかけようと思うが,その前にHDDがそもそも壊れていないかを確認する.
まず,Ultimate Boot CDをダウンロード.md5sumのチェックサムを確認する.ImgBurnなどで焼く.焼き終わったら,このCDから起動する.
起動したら,HDD→Diagnosis→Drive Fitness Testと選択する.しかし,困ったことに,以下の様な選択をさせられた.
PC DOS 7.0 Startup Menu 1.for Adaptec 2.for LSI 320 Controller 3.for Tekram & Symbios Controllers 4.for ATTO 320 Controller
ディスクコントローラ(?)なんかユーザに選択させんといてやと思いながら"2.for LSI 320 Controller"を選択したら,Drive Fitnessが起動できた.
設定は特にいじらずに"Quik Test"を実行した.結果は,背景は緑でエラーコード0x00との表示.つまり問題なし.Advanced Testはひとまず実行しなくて良いだろう.
HDDの物理的なチェックはここまでにして,Windows(DOS)のコマンドである"chkdsk /p"を回復コンソールからやってみよう.
Windows 回復コンソールでファイルシステム,MBR,ブートレコードの修復を試みる
Windows XPの起動ディスクを入れて起動.回復コンソールを起動する.回復コンソールの機能は,Windows XP 回復コンソールについて (上級ユーザー向け)を参照のこと.
chkdskを実行するが,失敗に終わる.
chkdsk /? /p : ドライブの完全チェックを行い、エラーをすべて修正します。 /r : 不良セクタを見つけ、読み取り可能な情報を回復します。 chkdsk /p ボリュームが回復できないエラーが一つ以上あります.(うろ覚え)
万策尽きたか….パーティションが見えていたし,MBRに問題はなさそうだが,一応,MBRを直して,ブートフラグを立て直してみるか.
fixmbr fixboot
ダメだろうなと思いながら再起動したら,Windowsが起動した.結局,MBRが壊れていたということなのだと思うけど,何か釈然としないな.
HDDやファイルシステムの破損に備えて手元に置いておくと良いもの
- Knoppoixの入った起動可能なCD-ROM(USBメモリ)
- Ultimate Bootの入った起動可能なCD-ROM(USBメモリ)
- Windows XPのインストールDisc
2011-08-10(Wed) [長年日記] 編集
[Knoppix][Linux][Windows 7 (64bit)][Gparted][サーバまとめ][Linuxお引っ越し] KnoppixをUSBメモリからブートする
Gpartedを使うならKnoppix経由が簡単かも
Knoppoixのダウンロードとマウント
- KNOPPIX Japanese editionなどからKnoppixのCD版のisoイメージをダウンロード.
- SlySoft Virtual CloneDriveなどを使ってisoイメージをマウントする.
USBメモリへのコピー
マウントしたKnoppixのドライブレターをD,USBメモリのドライブレターをUとする.
- FAT32でフォーマットする.NTFSでもいけるかもしれんけど.
- D:/KNOPPIXをUにコピーする.またD:/boot/isolinuxの配下にあるファイルを,Uにコピーする.ディレクトリ階層は以下の様なイメージ.
U: Knoppix file1 (/boot/isolinux以下にあったもの) file2 (/boot/isolinux以下にあったもの) file3 …
- U:/isolinux.cfgをU:/syslinux.cfgにリネームし,U:/syslinux.cfgを開く.行頭に"F3"と書かれている行(9行目あたり)の次の行に"F4 syslinux.cfg"と書く.もし,F4に関する記載があった場合は,そこを"F4 syslinux.cfg"と書きかえる.
SYSLINUXのダウンロードとインストール
- SYSLINUXをダウンロードして展開する.Windows 7 (64bit)を使っているので,win64/syslinux.exeを利用する.
win64\syslinux.exe -a U:
これでUSBメモリから起動するKnoppixが完成する.
USBメモリに入れたKnoppixの起動
- 電源を入れたあと直ぐにDELキーやF1キー,F8キーあたりをおしまくって,BIOSのメニューに入って,USBのBoot Priorityを上げて,起動する.もしくは,同様にファンクションキーを押しまくって,ブートメニューに入って,USBからブートを選ぶ.
2011-08-09(Tue) [長年日記] 編集
[LVM][Linux] LVMのスナップショットを使ったデータの整合性を考慮した同期バックアップ
データの整合性を考慮した同期バックアップ
データベースのデータの様な大きなデータ群をバックアップするとき,単にコピーをするだけでは,コピー中にバックアップ対象の状態が変わってしまい,データ群の整合性がなくなってしまうことがある.
このケースで,LVMのスナップショット機能が役に立ちそうだった.@IT:LVMによる自動バックアップ・システムの構築(2/3)を読んで,自分が理解した内容をメモする.
LVMのスナップショット
LVMのスナップショット機能を使うことで,スナップショットを作成した時のデータへのアクセスポイントを作ることができる.LVMのスナップショットは,その時のデータを格納するというよりは,データへのポインタとスナップショット作成後に変更されたデータの元データを格納することで,スナップショットを作成した時の全データへのアクセスを可能とする.
イメージとしては,(1)全ファイルへのポインタのコピーが作成される,(2)そのポインタが指し示すデータに変更が加えられるときは,その元データをスナップショット領域にコピーし,ポインタの指し先をスナップショット領域にコピーされたデータに向ける,ということをする.
LVMのスナップショットを使ったバックアップ手順
具体的なバックアップ手順としては,以下を想定している.こうすればうまく行くのでは?というだけで,未検証.
- 整合性を取りたいデータを所持するサービス(例: mysql)に停止を依頼する.
/etc/init.d/mysqld stop
- スナップショットを取得する.スナップショットの作成には,同一(?)ボリュームグループ内に空いている論理ボリューム(LV)が必要になる.スナップショットを破棄するまでに,snapshotがあふれるとsnapshotが無効になる.スナップショットを使ったバックアップ中にスナップショット領域があふれないような量を割り当てる.
lvcreate --snapshot --size=30G --name snap0 /dev/volgrp0/lv0
- スナップショットを取得すれば,サービスを動かしはじめてよいので,サービスを再起動する.
/etc/init.d/mysqld start
- スナップショットを使って,どこかのデバイスにバックアップを取る.作成したスナップショットは通常のデバイスと同様に扱えるので,そのままdumpしてもいいし,マウントして,cp -aするなりpdumpfsするなりすれば良いとおもう.
mount -t auto /dev/volgrp0/snap0 /mnt/snap0 cp -a /mnt/snap0 /backup/
- 使い終わったスナップショットを破棄する.
lvremove /dev/volgrp0/lv0 --force