【CentOS6.5】HDD 160G から SSD 120G に交換したときのメモ

CentOS6.5 のサーバーで、ディスク交換したときのメモです。

環境について
——————————————————
移動元ディスク: /dev/sda
移動先ディスク: /dev/sdb
OS: Centos 6.5
パーティションテーブル: GPT/EFI
マシン Intel NUC
——————————————————

作業のおおまかな流れ

  1. ディスク内容を移動先SSDにコピー
  2. パーティションテーブルを移動先SSDにコピー
  3. ブートローダー削除
  4. ブートローダー再インストール

 

実際の作業メモ

事前準備として、コピー元ディスクのパーティションサイズが、コピー先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 で起動したら作業完了です。

 

ざっと書いてみましたが、この方法にありつくまでにあーだこーだと色々と試行錯誤し、けっこう苦労しました。。

 

 


サブコンテンツ

このページの先頭へ