PBSバックアップ時に出るLVM警告と対処～NVMe デバイス名が変わり、UUIDが衝突？～

## 1. はじめに

Proxmox VEの再起動後に、Proxmox Backup Server (PBS) を利用してバックアップを行ったところ、以下のような警告メッセージが出るトラブルが発生しました。

```
WARNING: Not using device /dev/nvme1n1 for PV Ha4HvE-lWcM-FOsl-5dDU-wutl-WYb7-l41i2r.
WARNING: PV Ha4HvE-lWcM-FOsl-5dDU-wutl-WYb7-l41i2r prefers device /dev/nvme2n1 because device is used by LV.
(同様のメッセージが繰り返し)
```

これは、**LVM が「同じ PV UUID」を持つデバイスを 2 つ検出し、片方 (`/dev/nvme1n1`) を無視している** 状態を意味します。  
そこで、実際に **古いUUIDを消去** して `/dev/nvme1n1` を別の PV として扱えるようにした対処内容をまとめます。

---

## 2. 現象

- **もともと `/dev/nvme1n1` として認識していたディスクが、何かの拍子(再起動や PCIe スロット変更など)で `/dev/nvme2n1` に変わった**  
- LVM からすると、同じ PV UUID が `/dev/nvme1n1` にも残っているように見え、「どちらを使うの？」という衝突が発生  
- 結果として、バックアップ時に LVM スキャンが走る際、上記の警告が出るようになった

---

## 3. 切り分けに使ったコマンド

トラブルシュート時には、下記コマンドで状況を確認しました。  

1. **`lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT`**  
   - NVMe デバイスの構成や、どのパーティション/LVM が存在するかを確認  
2. **`pvs` / `pvdisplay`**  
   - どのデバイスがどの PV UUID を持っているかをチェック  
3. **`vgs -o +devices` / `vgdisplay`**  
   - Volume Group (VG) に含まれる物理デバイス一覧の確認  
4. **`lvs` / `lvdisplay`**  
   - 論理ボリューム(LV)、Thin Pool のサイズや使用状況を確認  
5. **`wipefs /dev/nvme1n1`**  
   - 古いシグネチャ(署名)が残っているかどうかを調べる  
   - `-a` オプションで実際に署名を削除する  

```bash
root@pve:~# lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT
NAME                              SIZE FSTYPE      MOUNTPOINT
sda                               3.6T
tqsda1                            3.6T zfs_member
mqsda9                              8M
sdb                               3.6T zfs_member
tqsdb1                            3.6T zfs_member
mqsdb9                              8M
nvme1n1                           1.5T LVM2_member
nvme2n1                           1.5T LVM2_member
tqdata2-data2_tmeta              14.9G
x mqdata2-data2                   1.4T
mqdata2-data2_tdata               1.4T
  mqdata2-data2                   1.4T
nvme0n1                           1.5T
tqnvme0n1p1                      1007K
tqnvme0n1p2                         1G vfat
mqnvme0n1p3                       1.5T LVM2_member
  tqpve-swap                        8G swap        [SWAP]
  tqpve-root                       96G xfs         /
  tqpve-data_tmeta               13.7G
  x mqpve-data-tpool              1.3T
  x   tqpve-data                  1.3T
  x   tqpve-vm--100--disk--0        8G ext4
  x   tqpve-vm--112--disk--0      100G
  x   tqpve-vm--113--disk--0      100G
  x   tqpve-vm--104--disk--0       60G
  x   tqpve-vm--105--disk--0       60G
  x   tqpve-vm--101--disk--0       32G
  x   tqpve-vm--103--disk--0       32G
  x   tqpve-vm--111--disk--0       16G
  x   tqpve-vm--107--disk--0        4M
  x   tqpve-vm--107--disk--1       16G
  x   tqpve-vm--103--state--test  8.5G
  x   tqpve-vm--102--disk--0       32G
  x   tqpve-vm--102--disk--1      100G
  x   tqpve-vm--108--disk--0       32G
  x   mqpve-vm--106--disk--0       60G
  mqpve-data_tdata                1.3T
    mqpve-data-tpool              1.3T
      tqpve-data                  1.3T
      tqpve-vm--100--disk--0        8G ext4
      tqpve-vm--112--disk--0      100G
      tqpve-vm--113--disk--0      100G
      tqpve-vm--104--disk--0       60G
      tqpve-vm--105--disk--0       60G
      tqpve-vm--101--disk--0       32G
      tqpve-vm--103--disk--0       32G
      tqpve-vm--111--disk--0       16G
      tqpve-vm--107--disk--0        4M
      tqpve-vm--107--disk--1       16G
      tqpve-vm--103--state--test  8.5G
      tqpve-vm--102--disk--0       32G
      tqpve-vm--102--disk--1      100G
      tqpve-vm--108--disk--0       32G
      mqpve-vm--106--disk--0       60G

root@pve:~# pvs
  WARNING: Not using device /dev/nvme1n1 for PV Ha4HvE-lWcM-FOsl-5dDU-wutl-WYb7-l41i2r.
  WARNING: PV Ha4HvE-lWcM-FOsl-5dDU-wutl-WYb7-l41i2r prefers device /dev/nvme2n1 because device is used by LV.
  PV             VG    Fmt  Attr PSize  PFree
  /dev/nvme0n1p3 pve   lvm2 a--   1.45t  16.00g
  /dev/nvme2n1   data2 lvm2 a--  <1.46t 120.00m
root@pve:~# vgs -o +devices
  WARNING: Not using device /dev/nvme1n1 for PV Ha4HvE-lWcM-FOsl-5dDU-wutl-WYb7-l41i2r.
  WARNING: PV Ha4HvE-lWcM-FOsl-5dDU-wutl-WYb7-l41i2r prefers device /dev/nvme2n1 because device is used by LV.
  VG    #PV #LV #SN Attr   VSize  VFree   Devices
  data2   1   1   0 wz--n- <1.46t 120.00m data2_tdata(0)
  pve     1  20   0 wz--n-  1.45t  16.00g data_tdata(0)
  pve     1  20   0 wz--n-  1.45t  16.00g /dev/nvme0n1p3(0)
  pve     1  20   0 wz--n-  1.45t  16.00g /dev/nvme0n1p3(2048)
  pve     1  20   0 wz--n-  1.45t  16.00g
  pve     1  20   0 wz--n-  1.45t  16.00g
  pve     1  20   0 wz--n-  1.45t  16.00g
  pve     1  20   0 wz--n-  1.45t  16.00g
  pve     1  20   0 wz--n-  1.45t  16.00g
  pve     1  20   0 wz--n-  1.45t  16.00g
  pve     1  20   0 wz--n-  1.45t  16.00g
  pve     1  20   0 wz--n-  1.45t  16.00g
  pve     1  20   0 wz--n-  1.45t  16.00g
  pve     1  20   0 wz--n-  1.45t  16.00g
  pve     1  20   0 wz--n-  1.45t  16.00g
  pve     1  20   0 wz--n-  1.45t  16.00g
  pve     1  20   0 wz--n-  1.45t  16.00g
  pve     1  20   0 wz--n-  1.45t  16.00g
  pve     1  20   0 wz--n-  1.45t  16.00g
  pve     1  20   0 wz--n-  1.45t  16.00g
  pve     1  20   0 wz--n-  1.45t  16.00g

root@pve:~# vgdisplay
  WARNING: Not using device /dev/nvme1n1 for PV Ha4HvE-lWcM-FOsl-5dDU-wutl-WYb7-l41i2r.
  WARNING: PV Ha4HvE-lWcM-FOsl-5dDU-wutl-WYb7-l41i2r prefers device /dev/nvme2n1 because device is used by LV.
  --- Volume group ---
  VG Name               data2
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <1.46 TiB
  PE Size               4.00 MiB
  Total PE              381546
  Alloc PE / Size       381516 / <1.46 TiB
  Free  PE / Size       30 / 120.00 MiB
  VG UUID               DKEqZc-tlbD-Ay1b-2GAF-WrAt-hEl4-0lM9rO

  --- Volume group ---
  VG Name               pve
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  205
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                20
  Open LV               8
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               1.45 TiB
  PE Size               4.00 MiB
  Total PE              381289
  Alloc PE / Size       377193 / <1.44 TiB
  Free  PE / Size       4096 / 16.00 GiB
  VG UUID               OXW3I3-CM2S-L6re-Ltf3-z8Xb-XwOY-m86lPT
```

---

## 4. なぜ警告が出るのか

### 4.1 LVM の UUID 衝突

出力されたメッセージには、

```
WARNING: Not using device /dev/nvme1n1 for PV <UUID>...
```

のように書かれています。これは **LVM が「同じ PV UUID」を /dev/nvme1n1 と /dev/nvme2n1 の両方で検出** し、実際に利用中の `/dev/nvme2n1` を優先したために出るものです。  
使われていない `/dev/nvme1n1` の署名をそのまま放置していると、LVM スキャンのたびに警告が出ます。

### 4.2 NVMe デバイス名が変わる背景

Linux では、**NVMe デバイス名はブート順や PCIe ポートの挿し替えなどで簡単に変化** します。  
- 以前は `/dev/nvme1n1` だったのが、今は `/dev/nvme2n1` として認識された  
- LVM は PV UUID で追跡するため、本来なら問題ないはずが、古いシグネチャが消えずに残ると衝突が起きる

---

## 5. 対処：古いシグネチャを消して別 PV として認識

今回のケースでは、**もはや `/dev/nvme1n1` に必要なデータは存在しない**（実際には `/dev/nvme2n1` が稼働中）と判断できたため、下記のような手順で「完全に別の PV」として利用できるようにしました。

1. **シグネチャ確認**  
   nvme1n1とnvme2n1のシグネチャを確認します。

   ```bash
   wipefs /dev/nvme1n1
   wipefs /dev/nvme2n1
   ```

```
root@pve:~# wipefs /dev/nvme1n1
DEVICE  OFFSET        TYPE        UUID                                   LABEL
nvme1n1 0x218         LVM2_member Ha4HvE-lWcM-FOsl-5dDU-wutl-WYb7-l41i2r
nvme1n1 0x1749a955e00 gpt
root@pve:~# wipefs /dev/nvme2n1
DEVICE  OFFSET        TYPE        UUID                                   LABEL
nvme2n1 0x218         LVM2_member Ha4HvE-lWcM-FOsl-5dDU-wutl-WYb7-l41i2r
nvme2n1 0x1749a955e00 gpt
```

   このように、両方のデバイスで同じUUIDとなっていることが確認できました。

2. **UUID削除**  
   ```bash
   wipefs -a /dev/nvme1n1
   ```
```bash
root@pve:~# wipefs -a /dev/nvme1n1
/dev/nvme1n1: 8 bytes were erased at offset 0x00000218 (LVM2_member): 4c 56 4d 32 20 30 30 31
/dev/nvme1n1: 8 bytes were erased at offset 0x1749a955e00 (gpt): 45 46 49 20 50 41 52 54
```

   これで LVM メタデータがすべて破棄され、未使用ディスク扱いになる

3. **新たに PV として初期化**  
   ```bash
   pvcreate /dev/nvme1n1
   pvdisplay
   ```

```bash
root@pve:~# pvcreate /dev/nvme1n1
  Physical volume "/dev/nvme1n1" successfully created.
root@pve:~# pvdisplay
  --- Physical volume ---
  PV Name               /dev/nvme0n1p3
  VG Name               pve
  PV Size               1.45 TiB / not usable <4.32 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              381289
  Free PE               4096
  Allocated PE          377193
  PV UUID               J7v3Ab-O3ro-nPDb-x8Om-NPJW-7CiX-52JfRa

  --- Physical volume ---
  PV Name               /dev/nvme2n1
  VG Name               data2
  PV Size               <1.46 TiB / not usable <1.34 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              381546
  Free PE               30
  Allocated PE          381516
  PV UUID               Ha4HvE-lWcM-FOsl-5dDU-wutl-WYb7-l41i2r

  "/dev/nvme1n1" is a new physical volume of "<1.46 TiB"
  --- NEW Physical volume ---
  PV Name               /dev/nvme1n1
  VG Name
  PV Size               <1.46 TiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               MmhAKM-7TXQ-C1Yu-bXdo-iBu5-KAIB-2J7Rk1
```

   - こうすることで、まったく新しい PV UUID が割り当てられる  

4. **VG に組み込む or 新規 VG を作る (用途に応じて)**  
   - 例:  
     ```bash
     vgcreate newvg /dev/nvme1n1
     ```  
     これで `newvg` のサイズが 1.5TB として使えるようになる。  
   - あるいは、既存の VG に容量を足したいなら:  
     ```bash
     vgextend data2 /dev/nvme1n1
     ```  

結果として **`/dev/nvme1n1` は別の PV として認識され**、バックアップ実行時の LVM スキャンでも衝突が発生せず、警告が消えました。  

---

## 6. 実害がないなら放置でも OK

- もし `/dev/nvme1n1` が古い署名を持ちながらも、まったく使用予定のないデバイスで、バックアップや日々の運用に問題が出ていない場合、ログに警告が出るだけで致命的ではありません。  
- ただし、ログが煩わしい・他の管理者が見たときに混乱する…といった理由で整理しておくのが無難でしょう。

---

## 7. まとめ

- **バックアップ時に出る LVM 警告** は、**NVMe デバイス名が変わり、古いシグネチャが残っていた** ために起きた  
- **対処法**:  
  1. `wipefs -a /dev/nvme1n1` で古いメタデータを消去  
  2. `pvcreate /dev/nvme1n1` し直す → 新規 or 既存 VG に追加  
- **ポイント**:  
  - NVMe デバイスは名前が変わりやすい → PV UUID を確認して衝突を解消する  
  - `lsblk` / `pvs` / `vgs -o +devices` などで現状把握  
  - 実害がなければ警告は無視可能だが、将来的に不要デバイスを活かすなら早めに整頓するのがおすすめ

以上の流れで、**古いシグネチャを消すことで /dev/nvme1n1 を無事「別の PV」として認識** でき、警告メッセージも解消しました。同様の事象に遭遇した方は参考にしてみてください。