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