HDDを追加したらサーバーが起動しなくなった

LiveCDを使ってHDDAからHDDBにデータを移した後、HDDAを外して起動しようとしたら、エラーでOSが起動できませんでした。

構成はこう。
HDDA : 旧データドライブ (IDE)
HDDB : 新データドライブ (SATA)
HDDC : システムドライブ (SATA)

出てきたエラーはこんな感じ。
boot error
ぶれてて読みにくいので、テキストに直しました。

Checking filesystem
/1: clean, 299157/30244864 files, 4399751/120967441 blocks
/boot: clean, 64/150784 files, 43883/602429 blocks
/boot: clean, 64/150784 files, 43883/602429 blocks
fsck.ext4: Bad magic number in super-block while trying to open /dev/sdb2
/dev/sdb2:
The superblock could not be read or does not describe a correct ext2
filesystem.  If the device is valid and it really contains an ext2
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
e2fsck -b 8193 
/1: clean, 299157/30244864 files, 4399751/120967441 blocks
[FAILED]
*** An error occurred during the file system check.
*** Dropping you to a shell: the system will reboot
*** when you leave the shell,
Give root password for maintenance
(or type Control-D to continue): _

どうやらファイルシステムのチェック時にエラーが出たようです。

ひとまずrootパスワードでログインしてみて、ディスクの状況を調べると、これまでの構成で起動していたときとはデバイスの構成が違うことが分かりました。
/dev/sda と /dev/sdb が逆なのです。
それで、本来ファイルが入っているはずの /dev/sdb2 に対してファイルシステムのチェックを行ったところ、実際に /dev/sdb2 に割り当てられていたのは、swapドライブだったため、エラーが出ていました。

初めは、swapが壊れてるのかと思って、fsckしてみたり、mkswapしてみたり、色々しました。
色々やってたら、起動できちゃったので、しばらくそのまま起動しっぱなしにしていました。

この時は、起動できたものの、swapドライブが設定されていなかったので、

# swapon -a
# cat /proc/swaps

という感じでswapを設定し直したらうまく動いてくれました。

直ったかなと思っていたのですが、しばらくしてリブートをかけたとき、また起動しなくなりました。
でも前に起動できたときにどうやったのか覚えてなかったので、本格的に試行錯誤し始めました。

結論から言うと、2台繋げていたHDDの、SATAケーブルの接続順序が逆でした。
マザーボードのSATA1にブートドライブを繋げなければいけなかったんですね。

だから、/dev/sda と /dev/sdb が逆だった、と、分かってみると至極当然。
友達からの、swapドライブにはファイルシステムのチェックはされないはずという情報で気付きました。

でも、初めはなんで起動できちゃったんでしょう?
よくわからない……。

コメントを残す