先日、自宅サーバのWebサイトを観ていると突然、PHPのディスク関連のエラーが出た。
どうやらパーミッションがおかしいという内容らしいので、「おかしいなぁ、パーミッションなんて変えたはずないのになぁ」と思ってパーミッションを元に戻そうとすると、パーミッションが変更できないと言われる。
そしてよくよく調べていくと、システム用に使っているHDDが故障しており、Linuxがディスクを読み出し専用として認識していることがわかる。
そこで今回は、故障したハードディスク(160GB)のCentOS5.3(LVM使用)を新しいハードディスク(500GB)に載せ替え、今後のためにもLVMをやめるということを行った。
LVMはCentOSで標準的に使用されるHDDの構成方式で、容量の拡張やスナップショット等便利な機能が満載ではあるが、こういうトラブルが起きたときに上手く扱うことができないケースが多い。
そもそもスナップショット機能なんて使ったことがないので、今回は可能な限りシンプルに行こうと考えた。
具体的な方法については、以下のサイトが参考になる。
-Linux環境のDISKのコピーについて LVMをやめて普通のDISKにする場合
このページではCentOSのLiveCDを使って復旧させているが、ウチの場合はなぜか新しいHDDが認識されなかったりするトラブルが多かったため、KNOPPIXの最新版(6.7.1)をLiveCDとして起動して復旧させた。
具体的な手順は以下のとおりだ。
1.新しいHDDで、ブート用、データ用、スワップ用の3つのパーティションを作る
KNOPPIXにはGPartedというパーティション編集ソフトがある。そいつを使って、ブート用に150MB、データ用に420GB、あとはスワップ用でパーティションを作った。
GParted起動中にはKNOPPIXのエクスプローラからHDDにアクセスできないので注意。
また、ブート用パーティションは右クリックで「フラグの編集」を行い、ブートフラグを立てておくこと。スワップ用パーティションはext3等ではなくswapでフォーマットすること。
2.古いHDDをマウントし、ブート用とデータ用それぞれを新しいHDDのそれにコピーする
これも先のURLのコマンドを参考にします。↓のコマンドだけではデータ用しかコピーされないので注意ね。/bootにマウントしているなら大丈夫です。
cd /mydir && echo cp -a `/bin/ls -1Ab | egrep -v "^new-disk$|^proc$"` /new-disk | sh |
この作業、ウチの環境(データ120GB程度)で30時間くらいかかりました。死ぬほど時間がかかるので注意しましょう。
というか日頃からサイズを小さくする努力が必要ですね。
恐らくddコマンドで書きだせばシーケンシャルアクセスなので速いが、cpコマンドベースのコピーだとランダムアクセスになっているから遅いのだと思われる。
3.grub.confとfstabを修正する
これについては先ほどのURLをご覧ください。
4.grubのインストール
これについても先ほどのURLの通りでOKです。
あとは普通に起動することができます。
続いて、注意点というか気づいたことを書いておきます。
・HDDを2台繋げているときのhda1とかhdb1の関係
KNOPPIXに繋いでコピーしているときは、壊れたHDDがsda1~3、新しいHDDはsdb1~3として認識されていたが、復旧後は新しいHDDはSATAの1つめに差し替える(故障したHDDと入れ替え)ため、fstabなどの修正は全て、復旧後の環境に合わせてhda1~hda3になるよう行う必要がある。
つまり、復旧中のKNOPPIXでのHDDのパス(ドライブレター?)と、復旧後のCentOSでのHDDのパスは異なるので注意ということ。
・CentOSは「hda」でKNOPPIXは「sda」になる
繋いでいるのはSATAのHDD。このような名前の変更が発生するので注意だ。
ちなみに、ハードディスクが壊れたタイミングはおそらくここ数年で最悪のタイミング(値段的意味で)だったので、新しいHDDは買わずに3年前から2年間使っていたHDDを急遽使っています。
そのうち値下がりしたらまたHDD交換しないとなぁ……。
次はddでダンプできることを願うしかないですね。
コメントを残す