CentOS7で作成したlvmのディスクをMIRACLE Linuxで使用する

2年前

2010年ごろ購入したPCを使って、CentOS7で動くファイルサーバー(Samba)を作成。

OS CentOS7
CPU Intel社 Core i7-970 (6 cores, 12 threads)
マザーボード Supermicro社 X8STE
メモリ 4GB x 6
起動ディスク SSD 40GB
データ保存用ディスク ST8000VN004-2M21 x 4台

ディスクアレイの作成手順

## パーティション作成
# for D in a b c d ; do
        parted -s /dev/sd${D} mklabel gpt
        parted -s /dev/sd${D} mkpart sd${D} 1 100%
done
## mdadmでRAID1 (ミラーリング)のディスクを作成
# mdadm --create /dev/md0 --auto=yes --level=raid1 --raid-devices=2 /dev/sda1 /dev/sdb1
# mdadm --create /dev/md1 --auto=yes --level=raid1 --raid-devices=2 /dev/sdc1 /dev/sdd1
## ボリューム作成
# pvcreate /dev/md0 /dev/md1
# vgcreate vg210711 /dev/md0 /dev/md1
# lvcreate -l 100%FREE vg210711
## フォーマット
# mkfs -t xfs /dev/vg210711/lvol0
## マウント
# mount /dev/vg210711/lvol0 /home

最近

CPU、マザーボードなどを新調し、ハードディスクをそのまま流用してファイルサーバーをつくりなおし。

OS MIRACLE LINUX 9
CPU Intel社 Core i7-10700 (8 cores, 16 threads)
マザーボード ASUS社 PRIME Z690-P D4
メモリ UMAX社 UM-DDR4D-2400-32GBHS (16GB x 2)
起動ディスク NVMe WDS500G3X0C-00SJG0
データ保存用ディスク ST8000VN004-2M21 x 4台 (古いものから流用)

PCを組み立て、OSのインストールした段階で、Logical Volumeが見えない。

# pvscan
  PV /dev/nvme0n1p3   VG ml240506        lvm2 [<460.52 GiB / 0    free]

RAID1はちゃんと残っていました。

# cat /proc/mdstat
Personalities : [raid1]
md127 : active raid1 sdb1[0] sdc1[1]
      7813893120 blocks super 1.2 [2/2] [UU]
      bitmap: 0/59 pages [0KB], 65536KB chunk

md126 : active raid1 sdd1[0]
      7813893120 blocks super 1.2 [2/1] [U_]
      bitmap: 16/59 pages [64KB], 65536KB chunk

unused devices: <none>

ディスクアレイ復旧への道

以前のlvmの設定を見る。

# cat path_to_backup/etc/lvm/archive/vg210711_00000-943473283.vg
(抜粋)
vg210711 {
        id = "BQ7S6y-dEwA-ga8a-99ER-Ua5Q-4ufH-vhSHdT"
        physical_volumes {
                pv0 {
                        id = "Zu1dHS-MDL7-SNjS-NMou-OZ9r-mypf-ePS766"
                        device = "/dev/md0"     # Hint only
                }
                pv1 {
                        id = "67fAJ3-sCXb-hc8J-HEGE-5HSe-iaxc-Fbk64P"
                        device = "/dev/md1"     # Hint only
                }
        }
        logical_volumes {
                lvol0 {
                        id = "Dlq1hA-p1bD-SGFT-NlFe-g7Ik-Q1iM-0EGywU"
                }
        }
}

以前のlvmの構成では、pv0とpv1のデバイスが/dev/md0とmd1になっていました。MIRACLE LINUXではそれが/dev/md126とmd127とデバイスの番号が変わっているのが原因のようです。
/dev/md126などのUUIDがわかれば、それを使って再構成できるかと思い、色々と調べたのですが、mdadmが割り当てるUUIDとlvmで必要となるUUIDが違い、断念しました。

# mdadm --detail /dev/md127                                                                        /dev/md127:
(途中省略)
Consistency Policy : bitmap
              Name : localhost.localdomain:1  (local to host localhost.localdomain)
              UUID : 9bfec124:5341c8d7:df040afa:74b44fd4 <-- よく見るUUIDの形式と違う

他にもmd126などをmd0などに変更することも試みましたが、lvmを認識させることには関係ありませんでした。

lvmを作り直す

古いlvmの状態を記録したファイル(上記のpath_to_backup/etc/lvm/archive/vg210711_00000-943473283.vg)をcfg.vgとして以下に記録。

# pvcreate --uuid "67fAJ3-sCXb-hc8J-HEGE-5HSe-iaxc-Fbk64P" --restorefile cfg.vg /dev/md127 -ff
# pvcreate --uuid "Zu1dHS-MDL7-SNjS-NMou-OZ9r-mypf-ePS766" --restorefile cfg.vg /dev/md126 -ff
# pvscan
  PV /dev/md126       VG vg210711        lvm2 [<7.28 TiB / 0    free]
  PV /dev/md127       VG vg210711        lvm2 [<7.28 TiB / 0    free]
  PV /dev/nvme0n1p3   VG ml240506        lvm2 [<460.52 GiB / 0    free]
  Total: 3 [15.00 TiB] / in use: 3 [15.00 TiB] / in no VG: 0 [0   ]
# vgcfgrestore -f cfg.vg vg210711
# vgchange -a y vg210711
# vgscan
  Found volume group "vg210711" using metadata type lvm2
  Found volume group "ml240506" using metadata type lvm2
# lvscan
  ACTIVE            '/dev/vg210711/lvol0' [14.55 TiB] inherit
  ACTIVE            '/dev/ml240506/home' [20.00 GiB] inherit
  ACTIVE            '/dev/ml240506/swap' [<31.33 GiB] inherit
  ACTIVE            '/dev/ml240506/root' [<409.19 GiB] inherit
# mount /dev/vg210711/lvol0 /mnt/
# ls /mnt/
takamasa  etc ... ## やった!

無事、データを保存したまま復旧できました。
今後壊れているディスクを交換して、RAID1を復旧させる予定。

# parted -s /dev/sda mklabel gpt
# parted -s /dev/sda mkpart sda 1 100%
# mdadm --manage /dev/md0 --add /dev/sda1
# cat /proc/mdstat

こんな感じらしい。