[Linux]ddを使用せずLVMのHDD交換方法

1.環境

OS : CentOS Stream release 8 [4.18.0-348.el8.x86_64]
※KVM上で動作

2.やること

LVM構成のLinuxで新しいHDDに交換する。
同じ容量、移行に多くのの時間をかけることができれば、ddコマンドを利用するのが単純で楽だが、少し手間が増えるがLVMの機能を利用すると停止時間を短く移行できる可能性がある。

LVMを使用していないシステムとは違い、リカバリディスクは不要

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

3.手順

  1. 移行対象のマシンをシャットダウンし、移行先のHDDを接続する
  2. 通常通り起動する
  3. 移行先のHDDのパーティションを切る
  4. 移行先の/boot用パーティションをフォーマットする
  5. 移行先の/bootをマウントする
  6. 移行元から移行先へ/boot以下をコピーする
  7. /etc/fstabがUUIDで記載されている場合移行先のHDDのものに修正する
  8. 移行先HDDをLVMに追加し移行操作を行う
  9. 再起動する
  10. grubのconfigファイルを生成する
  11. 移行先HDDにgrubをインストールする
  12. シャットダウンし、移行元ディスクを取り除いたら起動確認を行う

以上

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.シャットダウンし、移行元ディスクを取り除いたら起動確認を行う

無事起動確認完了

以上

コメントを残す

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

*

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

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