1.環境
OS : CentOS Stream release 8 [4.18.0-348.el8.x86_64]
※KVM上で動作
2.やること
LVM構成のLinuxで新しいHDDに交換する。
同じ容量、移行に多くのの時間をかけることができれば、ddコマンドを利用するのが単純で楽だが、少し手間が増えるがLVMの機能を利用すると停止時間を短く移行できる可能性がある。
LVMを使用していないシステムとは違い、リカバリディスクは不要
前提として、移行対象のマシンは停止できることとGrub2を利用していること
3.手順
- 移行対象のマシンをシャットダウンし、移行先のHDDを接続する
- 通常通り起動する
- 移行先のHDDのパーティションを切る
- 移行先の/boot用パーティションをフォーマットする
- 移行先の/bootをマウントする
- 移行元から移行先へ/boot以下をコピーする
- /etc/fstabがUUIDで記載されている場合移行先のHDDのものに修正する
- 移行先HDDをLVMに追加し移行操作を行う
- 再起動する
- grubのconfigファイルを生成する
- 移行先HDDにgrubをインストールする
- シャットダウンし、移行元ディスクを取り除いたら起動確認を行う
以上
4.手順詳細
1.移行対象のマシンをシャットダウンし、移行先のHDDを接続する
2.通常通り起動する
3.移行先のHDDのパーティションを切る
fdisk, parted, gdiskなどを利用して移行先HDDのパーティションを作成する。とくに構成を変える必要がなければ移行元と揃えるのが楽
・移行元のパーティション情報
# fdisk -l /dev/vda
・移行先のパーティション作成
[root@develop ~]# fdisk /dev/vdb fdisk (util-linux 2.32.1) へようこそ。 ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。 書き込みコマンドを使用する際は、注意して実行してください。 デバイスには認識可能なパーティション情報が含まれていません。 新しい DOS ディスクラベルを作成しました。識別子は 0x1ef41471 です。 コマンド (m でヘルプ): n パーティションタイプ p 基本パーティション (0 プライマリ, 0 拡張, 4 空き) e 拡張領域 (論理パーティションが入ります) 選択 (既定値 p): p パーティション番号 (1-4, 既定値 1): 最初のセクタ (2048-268435455, 既定値 2048): 最終セクタ, +セクタ番号 または +サイズ{K,M,G,T,P} (2048-268435455, 既定値 268435455): 2099199 新しいパーティション 1 をタイプ Linux、サイズ 1 GiB で作成しました。 コマンド (m でヘルプ): n パーティションタイプ p 基本パーティション (1 プライマリ, 0 拡張, 3 空き) e 拡張領域 (論理パーティションが入ります) 選択 (既定値 p): p パーティション番号 (2-4, 既定値 2): 最初のセクタ (2099200-268435455, 既定値 2099200): 最終セクタ, +セクタ番号 または +サイズ{K,M,G,T,P} (2099200-268435455, 既定値 268435455): 新しいパーティション 2 をタイプ Linux、サイズ 127 GiB で作成しました。 コマンド (m でヘルプ): a パーティション番号 (1,2, 既定値 2): 1 パーティション 1 の起動フラグを有効にしました。 コマンド (m でヘルプ): t パーティション番号 (1,2, 既定値 2): 16 進数コード (L で利用可能なコードを一覧表示します): 8e パーティションのタイプを 'Linux' から 'Linux LVM' に変更しました。 コマンド (m でヘルプ): w パーティション情報が変更されました。 ioctl() を呼び出してパーティション情報を再読み込みします。 ディスクを同期しています。 [root@develop ~]# fdisk -l /dev/vdb ディスク /dev/vdb: 128 GiB, 137438953472 バイト, 268435456 セクタ 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスクラベルのタイプ: dos ディスク識別子: 0x1ef41471 デバイス 起動 開始位置 終了位置 セクタ サイズ Id タイプ /dev/vdb1 * 2048 2099199 2097152 1G 83 Linux /dev/vdb2 2099200 268435455 266336256 127G 8e Linux LVM
4.移行先の/boot用パーティションをフォーマットする
# mkfs.xfs /dev/vdb1
5.移行先の/bootをマウントする
# mount /dev/vdb1 /mnt
6.移行元から移行先へ/boot以下をコピーする
cp、rsyncなどを利用してコピー、cp の場合は -p 、rsync の場合は -a オプションなどを利用して所有者、パーミッションなどが変わらないようにする。
# cp -p /boot/ /mnt/ or # rsync -avu --delete --progress /boot/ /mnt/
7./etc/fstabがUUIDで記載されている場合移行先のHDDのものに修正する
# blkid /dev/vdb1
8.移行先HDDをLVMに追加し移行操作を行う
# vgs
VG #PV #LV #SN Attr VSize VFree
cs 1 3 0 wz--n- <127.00g 0
# pvcreate /dev/vdb2 # vgextend VGNAME /dev/vdb2
# pvs
PV VG Fmt Attr PSize PFree
/dev/vda2 cs lvm2 a-- <127.00g 0
/dev/vdb2 cs lvm2 a-- <127.00g <127.00g
# pvmove /dev/vda2 /dev/vdb2
/dev/vda2: Moved: 0.07%
/dev/vda2: Moved: 0.36%
/dev/vda2: Moved: 0.63%
/dev/vda2: Moved: 0.88%
:
:
/dev/vda2: Moved: 99.81%
/dev/vda2: Moved: 100.00%
# pvs
PV VG Fmt Attr PSize PFree
/dev/vda2 cs lvm2 a-- <127.00g <127.00g
/dev/vdb2 cs lvm2 a-- <127.00g 0
# vgreduce VGNAME /dev/vda2
# pvremove /dev/vda2
9.再起動する
# reboot
10.grubのconfigファイルを生成する
# grub2-mkconfig -o /boot/grub2/grub.cfg
11.移行先HDDにgrubをインストールする
# grub2-install /dev/vdb
12.シャットダウンし、移行元ディスクを取り除いたら起動確認を行う
無事起動確認完了
以上