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でパーミッションを切る。
各種パーミッションのサイズは、移行前のディスクより大きくした方がよいと言われているが、今回は40GB→500GBへの移行だったので、かなり余裕を持たせた容量配分にした。
swap用の/dev/sdb2は、領域のシステムIDを82 (Linux SWAP / Solaris)にしておく。
次にドライブをフォーマットする。
今まではext3を使っていたが、今度からFedora12標準のext4を使うことにした。
mkswapのLオプションはラベルで、ここで指定したラベルを/etc/fstabに書くのだと思う。
# mkfs -t ext4 /dev/sdb3
# mkswap -L SWAP /dev/sdb2
そしたら/mnt以下に/mnt/sda1、/mnt/sda3、/mnt/sdb1、/mnt/sdb2というディレクトリを作って、それぞれのドライブをマウントする。
# mount -t ext3 /dev/sda1 /mnt/sda1
...
マウントできたらデータをコピー。
コピーには結構時間がかかるけど、気長に待つ。
# tar cpf - ./ | (cd /mnt/sdb1; tar xpfv -)
# cd /mnt/sda3
# tar cpf - ./ | (cd /mnt/sdb3; tar xpfv -)
こちらのドライブにもラベルを付ける。
これも/etc/fstabに書いてあるものと同じものを指定すればいいのだと思う。
# e2label /dev/sdb3 "/1"
ここまでできたら、exitコマンドで一度シャットダウンし、古いHDDを抜いて新しいHDDを繋ぎ直してから、もう一度DVDから"Rescue installed system"を起動する。
(実はここまでアップグレード用のDVDではなく、LiveCDでやっていた……)
再起動したら、新しいHDDが/dev/sdaになった。
最後にブートローダーをインストールする。
上手くいけば、これで古いHDDを抜いて起動すれば、今まで通りLinuxが起動できるはず。
けど僕の場合上手くはいかなかった。
GRUBのインストールに失敗したのだ。
試行錯誤の結果、--recheckオプションはエラーが出て使えなかった。
にして実行したらGRUBをインストールすることができ、起動時に
の画面まで行けるようになったので、再びDVDから起動して、
としたら上手くいった。
GRUBの挙動はイマイチよく理解できていない。
Fedoraが起動できたら、以下のコマンドで各ドライブがマウントできてるか確認する。
# cat /proc/swaps
たぶん、こんな感じで移行できるはず。