HDDを交換

LinuxサーバーのHDDを交換しました。
交換したHDDはシステムが入ってるドライブで、WindowsでいうCドライブってやつです。
そりゃもう再インストールしかないねというのがドザの発想ですけど、Linuxの場合コピーしてブートローダーインストールするだけで簡単に移行できました。
ちょうらくちん!

らくちんと言いつつかなり試行錯誤したので(笑)、そのまとめを書いておく。


まずFedora Projectのページから、"Upgrade to Fedora 12 from an older version"の方のディスクイメージをダウンロードしてDVD-Rに焼く。
次に、移行先のHDDを繋いでから、このディスクからブートして、"Rescue installed system"を選び、コンソールを開く。

ここでは、/dev/sdaが現在のシステムドライブ、/dev/sdbが新しいドライブとし、sda1が/boot、sda2がswap、sda3が/とする。

まず、新しいドライブをfdiskでパーミッションを切る。

# fdisk /dev/sdb

各種パーミッションのサイズは、移行前のディスクより大きくした方がよいと言われているが、今回は40GB→500GBへの移行だったので、かなり余裕を持たせた容量配分にした。
swap用の/dev/sdb2は、領域のシステムIDを82 (Linux SWAP / Solaris)にしておく。

次にドライブをフォーマットする。
今まではext3を使っていたが、今度からFedora12標準のext4を使うことにした。
mkswapのLオプションはラベルで、ここで指定したラベルを/etc/fstabに書くのだと思う。

# mkfs -t ext4 /dev/sdb1
# mkfs -t ext4 /dev/sdb3
# mkswap -L SWAP /dev/sdb2

そしたら/mnt以下に/mnt/sda1、/mnt/sda3、/mnt/sdb1、/mnt/sdb2というディレクトリを作って、それぞれのドライブをマウントする。

# mkdir /mnt/sda1
# mount -t ext3 /dev/sda1 /mnt/sda1
...

マウントできたらデータをコピー。
コピーには結構時間がかかるけど、気長に待つ。

# cd /mnt/sda1
# tar cpf - ./ | (cd /mnt/sdb1; tar xpfv -)
# cd /mnt/sda3
# tar cpf - ./ | (cd /mnt/sdb3; tar xpfv -)

こちらのドライブにもラベルを付ける。
これも/etc/fstabに書いてあるものと同じものを指定すればいいのだと思う。

# e2label /dev/sdb1 "/boot"
# e2label /dev/sdb3 "/1"

ここまでできたら、exitコマンドで一度シャットダウンし、古いHDDを抜いて新しいHDDを繋ぎ直してから、もう一度DVDから"Rescue installed system"を起動する。
(実はここまでアップグレード用のDVDではなく、LiveCDでやっていた……)

再起動したら、新しいHDDが/dev/sdaになった。

最後にブートローダーをインストールする。

# grub-install --root-directory=/ /dev/sda

上手くいけば、これで古いHDDを抜いて起動すれば、今まで通りLinuxが起動できるはず。
けど僕の場合上手くはいかなかった。

GRUBのインストールに失敗したのだ。
試行錯誤の結果、--recheckオプションはエラーが出て使えなかった。

# grub-install --root-directory=/boot /dev/sda

にして実行したらGRUBをインストールすることができ、起動時に

GRUB>

の画面まで行けるようになったので、再びDVDから起動して、

# grub-install --root-directory=/ /dev/sda

としたら上手くいった。

GRUBの挙動はイマイチよく理解できていない。

Fedoraが起動できたら、以下のコマンドで各ドライブがマウントできてるか確認する。

# mount
# cat /proc/swaps

たぶん、こんな感じで移行できるはず。

コメントを残す