LVM 缓存的 LV 上的 PV 失败

LVM 缓存的 LV 上的 PV 失败

我创建了一个 LVM 缓存的 LV:

# lvcreate local --name BigCached -L32T /dev/sda3
# lvcreate -n LVcache -L500G local /dev/sdb
# lvcreate -n LVcacheMeta -L1G local /dev/sdb
# lvconvert --type cache --cachepool local/LVcache local/BigCached
# lvs
  LV        VG    Attr       LSize   Pool    Origin            Data%  Meta%  Move Log Cpy%Sync Convert
  BigCached local Cwi-a-C---  32,00t LVcache [BigCached_corig]
  LVcache   local Cwi---C--- 500,00g
  root      local -wi-ao----  30,00g

一切都很好,我创建了一个 ext4 文件系统BigCached并运行了一些基准测试,结果令人满意,然后将其卸载。

之后,我尝试在缓存卷上创建一个 PV:

# pvcreate /dev/local/BigCached
Physical volume "/dev/local/BigCached" successfully created
# pvs
  Found duplicate PV t3eDn0GGYTfOxRhnwnzF0C1DHWjiEg4l: using /dev/mapper/local-BigCached_corig not /dev/local/BigCached
  PV                                VG    Fmt  Attr PSize   PFree
  /dev/mapper/local-BigCached_corig       lvm2 ---   32,00t  32,00t
  /dev/sda3                         local lvm2 a--   32,74t 729,76g
  /dev/sdb                          local lvm2 a--  744,62g 243,62g

哎呀 :( 不知何故,未缓存的原件而不是缓存的原件被用作 PV。

好的,让我们删除 PV 并使用其他一些参数重试:

# pvremove /dev/local/BigCached
  Found duplicate PV t3eDn0GGYTfOxRhnwnzF0C1DHWjiEg4l: using /dev/mapper/local-BigCached_corig not /dev/local/BigCached
  Internal error: Physical Volume /dev/local/BigCached has a label, but is neither in a VG nor orphan.
# pvremove -ff /dev/local/BigCached
  Found duplicate PV t3eDn0GGYTfOxRhnwnzF0C1DHWjiEg4l: using /dev/mapper/local-BigCached_corig not /dev/local/BigCached
  Internal error: Physical Volume /dev/local/BigCached has a label, but is neither in a VG nor orphan.

我真的被困在这里:我无法删除 PV,但也无法真正安全地使用底层 LV。请帮忙!

答案1

我可以直接使用 dmsetup 删除缓存卷:

# dmsetup remove /dev/mapper/local-BigCached

此后,我能够删除 PV:

# pvremove /dev/mapper/local-BigCached_corig
  Labels on physical volume "/dev/mapper/local-BigCached_corig" successfully wiped

好的,让我们看看 LV 还剩下什么:

# lvs
  LV        VG    Attr       LSize   Pool    Origin            Data%  Meta%  Move Log Cpy%Sync Convert
  BigCached local Cwi---C---  32,00t LVcache [BigCached_corig]
  LVcache   local Cwi---C--- 500,00g
  root      local -wi-ao----  30,00g

哇,它仍然在那里,尽管没有活动……

但是,当我尝试激活它们时,BigCached失败了,所以我被迫将其删除。我又回到了原点,所以我尝试了一种不同的方法:直接使用 dm-cache,而不是使用 lvmcache。

然而,它产生了几乎相同的结果:

Found duplicate PV rkVmi4Pm5ijJXYM50cz6pI5ZhMeljpic: using /dev/mapper/big-cached not /dev/local/big

虽然它目前正在使用正确的设备(/dev/mapper/big-cached),但我不能确定这种情况是否总是如此,所以这仍然不是一个好的解决方案。

然后我发现这种情况类似于拥有多路径设备,因此需要类似的解决方案,即 /etc/lvm/lvm.conf 中的 lvm 过滤器:

      filter = [ "r|/dev/local/big|" ]

相关内容