【2025年02月版】proxmox の thin-pool を間違って消してしまった時のメモ

# はじめに

間違って proxmox の `thin-pool` の領域を消してしまった時のメモ
データは救えないけど、proxmoxから認識できる `local-thin` は戻せる

# 領域を消してしまった過程

```terminal
# lsblk
NAME               MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda                  8:0    0 465.8G  0 disk 
├─sda1               8:1    0  1007K  0 part 
├─sda2               8:2    0     1G  0 part /boot/efi
└─sda3               8:3    0 464.8G  0 part 
  ├─pve-swap       252:0    0     8G  0 lvm  [SWAP]
  ├─pve-root       252:1    0    96G  0 lvm  /
  ├─pve-data_tmeta 252:2    0    92M  0 lvm  
  │ └─pve-data     252:4    0 360.6G  0 lvm  
  └─pve-data_tdata 252:3    0 360.6G  0 lvm  
    └─pve-data     252:4    0 360.6G  0 lvm  
nvme0n1            259:0    0 476.9G  0 disk 
├─nvme0n1p1        259:1    0 476.9G  0 part 
└─nvme0n1p9        259:2    0     8M  0 part 
# lvs
  LV   VG  Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  data pve twi-a-tz-- <360.58g             0.00   10.42                           
  root pve -wi-ao----   96.00g                                                    
  swap pve -wi-ao----    8.00g 
# lvremove /dev/pve/data
Do you really want to remove active logical volume pve/data? [y/n]: y
  Logical volume "data" successfully removed.
```

# 削除内容の確認

`pve-data_tmeta`、`pve-data-tdata` がなくなっている。。。
`lvs` でも、 `data` がなくなっているのがみえる

```terminal
# lsblk
NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda            8:0    0 465.8G  0 disk 
├─sda1         8:1    0  1007K  0 part 
├─sda2         8:2    0     1G  0 part /boot/efi
└─sda3         8:3    0 464.8G  0 part 
  ├─pve-swap 252:0    0     8G  0 lvm  [SWAP]
  └─pve-root 252:1    0    96G  0 lvm  /
nvme0n1      259:0    0 476.9G  0 disk 
├─nvme0n1p1  259:1    0 476.9G  0 part 
└─nvme0n1p9  259:2    0     8M  0 part 
# lvs
  LV   VG  Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root pve -wi-ao---- 96.00g                                                    
  swap pve -wi-ao----  8.00g            
```

# 復旧手順

lvcreate で `thin-pool` を作るだけ

```terminal
# lvcreate -n data -l 100%FREE --type thin-pool pve
  Thin pool volume with chunk size 256.00 KiB can address at most 63.50 TiB of data.
  Logical volume "data" created.
```

# 復旧内容の確認

`pve-data_tmeta`、`pve-data-tdata` が戻っている
`lvs` でも、 `data` も戻っている


```terminal
# lsblk
NAME               MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda                  8:0    0 465.8G  0 disk 
├─sda1               8:1    0  1007K  0 part 
├─sda2               8:2    0     1G  0 part /boot/efi
└─sda3               8:3    0 464.8G  0 part 
  ├─pve-swap       252:0    0     8G  0 lvm  [SWAP]
  ├─pve-root       252:1    0    96G  0 lvm  /
  ├─pve-data_tmeta 252:2    0    92M  0 lvm  
  │ └─pve-data     252:4    0 360.6G  0 lvm  
  └─pve-data_tdata 252:3    0 360.6G  0 lvm  
    └─pve-data     252:4    0 360.6G  0 lvm  
nvme0n1            259:0    0 476.9G  0 disk 
├─nvme0n1p1        259:1    0 476.9G  0 part 
└─nvme0n1p9        259:2    0     8M  0 part 
# lvs
  LV   VG  Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  data pve twi-a-tz-- <360.58g             0.00   10.42                           
  root pve -wi-ao----   96.00g                                                    
  swap pve -wi-ao----    8.00g   
```

:::note warn

最初は、 `_tdata` を含む領域を `lvcreate` で作ろうとしていたが、
LVMが Thin Pool を内部管理するための予約済みサフィックスのため作成できなかった。

```terminal
# lvcreate -n data_tdata -l 100%FREE pve
  Names including "_tdata" are reserved. Please choose a different LV name.
  Run `lvcreate --help' for more information.
```

Proxmox の初期インストール時に見えていた pve-data_tdata や pve-data_tmeta などの「_tdata」「_tmeta」という名前は、LVM では、ユーザが明示的に _tdata や _tmeta を含む名前で LV を作ろうとすると、エラーがでるようになっている。

代わりに、Thin Pool LV（たとえば pve/data）を一括で作成または変換する操作を行うと、LVM が自動的に内部的な _tdata / _tmeta 名の LV を生成してくれる。
:::

# さいごに

かんたんでしたね