[Linux]ddを使用せずLVMでないHDD交換方法

1.環境

OS : CentOS Linux release 7.9.2009 (Core) [3.10.0-1160.45.1.el7.x86_64]
※KVM上で動作

2.やること

LVM構成していないHDDを新しいHDDに交換する。
同じ容量、移行に多くのの時間をかけることができれば、ddコマンドを利用するのが単純で楽だが、パーティションの構成変更や、ファイルシステム変更、容量の少ないHDDに移行は難しい。これらを実現するためにddコマンドを利用しないHDD移行手順について説明する。

前提として、移行対象のマシンは停止できることとGrub2を利用していること

3.手順

  1. 移行対象のマシンをシャットダウンし、移行先のHDDを接続する
  2. インストーラディスクを利用してメンテナンスモードやライブモードで起動する
    ※インストーラーディスクはLinuxが起動できればなんでもいいが、できれば同じディストリビューション、バージョンがあると望ましい
  3. 移行先のHDDのパーティションを切る
  4. 移行先のパーティションをフォーマットする
  5. 移行元、移行先をそれぞれマウントする
    ※移行元は読込専用でマウントするのが望ましい
  6. 移行元から移行先へコピーする
  7. 5,6をパーティションの数だけ繰り返す
  8. /etc/fstabがUUIDで記載されている場合移行先のHDDのものを修正する
  9. シャットダウンし、移行元HDDを取り外す
  10. 2と同様、インストーラディスクを利用してメンテナンスモードやライブモードで起動する
  11. 移行先HDDを/mnt以下にfstab通り+αをマウントする
    ※Swapは不要
  12. chrootし、grubのconfigファイルを生成する
  13. 移行先HDDにgrubをインストールする
  14. シャットダウンし、インストーラーディスクを取り除いたら起動確認を行う

以上

4.手順詳細

1.移行対象のマシンをシャットダウンし、移行先のHDDを接続する

2.インストーラディスクを利用してメンテナンスモードやライブモードで起動する

インストーラーディスクはLinuxが起動できればなんでもいいが、できれば同じディストリビューション、バージョンがあると望ましい。
例ではCentOS7のインストーラディスクを利用して説明する。

・Troubleshootingを選択する

・Rescue a CentOS systemを選択

・マウントは手動で行うので 3 を選択肢 shell に移動する

・キーマップが英字になっているので、日本語に変更すると作業しやすい。

# localectl set-keymap jp106

3.移行先のHDDのパーティションを切る

fdisk, parted, gdiskなどを利用して移行先HDDのパーティションを作成する。とくに構成を変える必要がなければ移行元と揃えるのが楽

・移行元のパーティション情報

# fdisk -l /dev/vda

・移行先のパーティション作成

4.移行先のパーティションをフォーマットする

例では、/dev/vdb3のみ swap 、レガシーBootの場合はその他のパーティションは任意のファイルシステムで問題ない。しかし、UEFIの場合はbootパーティションはfatにする必要がある。

# mkfs.ext4 /dev/vdb1
# mkfs.ext4 /dev/vdb2
# mkswap /dev/vdb3

5.移行元、移行先をそれぞれマウントする

※移行元は読込専用でマウントするのが望ましい

# mkdir /mnt/vda
# mkdir /mnt/vdb
# mount -r /dev/vda1 /mnt/vda
# mount /dev/vdb1 /mnt/vdb

6.移行元から移行先へコピーする

cp、rsyncなどを利用してコピー、cp の場合は -p 、rsync の場合は -a オプションなどを利用して所有者、パーミッションなどが変わらないようにする。

# cp -p /mnt/vda/ /mnt/vdb/

or

# rsync -avu --delete --progress /mnt/vda/ /mnt/vdb/

7.5,6をパーティションの数だけ繰り返す

※Swapは除く

8./etc/fstabがUUIDで記載されている場合移行先のHDDのものを修正する

blkidコマンドで調べたUUIDでfstabのUUIDの箇所を修正する。

# blkid /dev/vdb1
# blkid /dev/vdb2
# blkid /dev/vdb3

例:fstabにblkidコマンドの結果を貼り付けた結果

・以下のように書き換える

9.シャットダウンし、移行元HDDを取り外す

 

10.2と同様、インストーラディスクを利用してメンテナンスモードやライブモードで起動する

手順2を参照

11.移行先HDDを/mnt以下にfstab通り+αをマウントする

※Swapは不要

・ここの例では以下のようにマウントする

# mount /dev/vda2 /mnt
# mount /dev/vda1 /mnt/boot

・proc, dev, sysをマウント、バインドする

# mount -t proc proc /mnt/proc
# mount -B /dev /mnt/dev
# mount -B /sys /mnt/sys
# mount -B /run /mnt/run

12.chrootし、grubのconfigファイルを生成する

・レガシーBootの場合、EFIの場合はgrubのconfigファイルの場所が違うので注意

# chroot
# grub2-mkconfig -o /boot/grub2/grub.cfg

13.移行先HDDにgrubをインストールする

※レガシーBootの場合

# grub2-install /dev/vda

エラーなし「Installation finished. No error reported.」と表示されれば問題なし

14.シャットダウンし、インストーラーディスクを取り除いたら起動確認を行う

無事起動確認完了

 

以上

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください