【CentOS6.5】HDD 160G から SSD 120G に交換したときのメモ
CentOS6.5 のサーバーで、ディスク交換したときのメモです。
環境について
——————————————————
移動元ディスク: /dev/sda
移動先ディスク: /dev/sdb
OS: Centos 6.5
パーティションテーブル: GPT/EFI
マシン Intel NUC
——————————————————
作業のおおまかな流れ
- ディスク内容を移動先SSDにコピー
- パーティションテーブルを移動先SSDにコピー
- ブートローダー削除
- ブートローダー再インストール
実際の作業メモ
事前準備として、コピー元ディスクのパーティションサイズが、コピー先SSDの容量以内にしておく必要があります。
SSD 120GB に収まるサイズであればOK。
SSD120Gは、データ領域として使用できる容量は112GBほどなので、コピー元HDDのパーティションサイズは、111Gに縮小しておきました。
1.DVDでKNOPPIXを起動
オープンソースLinuxであるKNOPPIXをネットからダウンロードしてDVDに書き込み、PCをそれでブートする。
2.ディスクを丸ごとコピー(複製)
KNOPPIXが起動したら、ddrescue コマンドでディスクを丸ごとコピーします。
# ddrescuew -f /dev/sda /dev/sdb
コピー元は160G、コピー先は120Gなので、コピーが120GBに達するとエラー終了します。
dd: error writing ‘/dev/sdb’: No space left on device
パーティションを含む領域をコピーできていればOKなのでこのエラーは無視して構わない。
ちなみにddでコピーする場合はこうなる。
# dd if=/dev/sda of=/dev/sdb bs=64K
どちらも処理内容は同じだが、おすすめはddrescueです。
理由としては、ddのコピーはコピーの際のブロックサイズが一定であるのに対して、ddrescueは最適化してコピーしてくれます。
つまり、ddよりもコピー時間が短くなることが期待できる。
それから、ddrescueはリアルタイムでコピーの進捗状況を確認できるから、コピー完了時間を予測できる。
3.パーティション情報をコピー元からコピー先へコピー
ddrescueでパーティションデータをコピーしても、パーティションテーブルにはその構成がない。
なので、パテーティションテーブル情報もコピーで複製する。
# sdisk -R=/dev/sdb /dev/sda
# sdisk -G /dev/sdb
コピー元HDDは160Gでコピー先SSD120Gよりも大きいが、コピー元HDD160Gのパーティションが120G以内に
収まっているので、GPTはそのままコピーでOK
ここで注意なのが、MBRはディスク先頭512バイトをコピーすればよかったが、GPTでそのやり方は通用しない。
4.gdiskコマンドでGPT構成を確認
パーティションテーブル内容が表示されればOK。
# gdisk -l /dev/sdb
5.KNOPPIXシャットダウンしてPCの電源をOFF
6.パソコンの内臓ディスクを HDD120G から SSD120G に付け替える。
7.CentOS 6.5 インストールDVD をセットしてブートし、Rescueモードで起動
8.chroot環境を起動する
レスキューモードのコマンドプロンプトが表示したら、以下のコマンドでchroot環境にする。
# chroot /mnt/sysimage
9.コピー元のブートローダーを消すために /boot/grub 以下を全て削除
コピー元から複製されたブートローダー関連ファイルを消します。
# rm /boot/grub/*
これをやっておかないと、CentOSインストールDVDからのブートローダーインストールの際に、以下のエラーで失敗します。
OSError: [Error 17] ファイルが存在します
10.chroot環境を終了し、リブート
# exit
# reboot
11.CentOSインストールDVDからブートローダーを再インストール
CentOS6.5インストールDVDを入れたままリブート
→ Install or Update an existing system を選択
→ メディアチェックはSkip
→ 言語:日本語
→ キーボード:日本語
→ ストレージタイプ:基本ストレージデバイス
→ 上書きインストール先にコピーしたlv_rootが選択されているのでそのまま次へ
ここで、ブートローダーが見つからないとメッセージが表示されるので、
→ ブートローダーを新規にインストールするを選択
→ ブートローダーを /dev/sda1 にインストールする で次へ
インストール処理が開始されるが、パーティションにはCentOS6.5がインストール済みなので、インストールは何もされず、ブートローダーのみがインストールされて処理は終了する。
「成功しました。」が表示されれば完了
11.DVDを取り外し、rebootする
CentOS6.5 が、コピー先 SSD120G で起動したら作業完了です。
ざっと書いてみましたが、この方法にありつくまでにあーだこーだと色々と試行錯誤し、けっこう苦労しました。。