lvm 命令在 lvextend 之后报告无数据

lvm 命令在 lvextend 之后报告无数据

昨天我们的 Ubuntu 18.04 服务器上发生了一个奇怪的问题。团队中的一个人试图向这个 LV 添加 30G 的空间:

Disk /dev/mapper/rootvg-pgexecstsqllv: 32 GiB, 34359738368 bytes, 67108864 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

系统应该有一个卷组 (rootvg),但在执行 lvextend 和 resize2fs 命令后,系统停止显示 pvscan、vgscan、lvscan 的所有值。以下是启用详细功能的 vgscan 示例。该系统应该有一个名为 rootvg 的卷组。读取缓存报告“未找到卷组”。

vgscan -vv
      devices/global_filter not found in config: defaulting to global_filter = [ "a|.*/|" ]
      Setting global/locking_type to 1
      Setting global/use_lvmetad to 1
      global/lvmetad_update_wait_time not found in config: defaulting to 10
      Setting response to OK
      Setting protocol to lvmetad
      Setting version to 1
      Setting global/use_lvmpolld to 1
      Setting devices/sysfs_scan to 1
      Setting devices/multipath_component_detection to 1
      Setting devices/md_component_detection to 1
      Setting devices/fw_raid_component_detection to 0
      Setting devices/ignore_suspended_devices to 0
      Setting devices/ignore_lvm_mirrors to 1
      devices/filter not found in config: defaulting to filter = [ "a|.*/|" ]
      Setting devices/cache_dir to /run/lvm
      Setting devices/cache_file_prefix to
      devices/cache not found in config: defaulting to /run/lvm/.cache
      Setting devices/write_cache_state to 1
      Setting global/use_lvmetad to 1
      Setting activation/activation_mode to degraded
      metadata/record_lvs_history not found in config: defaulting to 0
      Setting activation/monitoring to 1
      Setting global/locking_type to 1
      Setting global/wait_for_locks to 1
      File-based locking selected.
      Setting global/prioritise_write_locks to 1
      Setting global/locking_dir to /run/lock/lvm
      Setting global/use_lvmlockd to 0
      Locking /run/lock/lvm/P_global WB
    Wiping cache of LVM-capable devices
    Wiping internal VG cache
      Setting response to OK
      Setting token to filter:3239235440
      Setting daemon_pid to 665
      Setting response to OK
      Setting global_disable to 0
  Reading volume groups from cache.
      Setting response to OK
      Setting response to OK
      Setting response to OK
    No volume groups found.
      Unlocking /run/lock/lvm/P_global
      Setting global/notify_dbus to 1

命令报告称无法再看到 PV、LV 和 VG。尽管系统仍在运行,设备文件似乎完好无损。

ls -ld /dev/rootvg /dev/rootvg/* /dev/mapper/root* /dev/dm*
brw-rw---- 1 root disk 253,  0 Jul 13 22:07 /dev/dm-0
brw-rw---- 1 root disk 253,  1 Jul 13 22:07 /dev/dm-1
brw-rw---- 1 root disk 253, 10 Jul 13 22:07 /dev/dm-10
brw-rw---- 1 root disk 253, 11 Jul 13 22:07 /dev/dm-11
brw-rw---- 1 root disk 253,  2 Jul 13 22:07 /dev/dm-2
brw-rw---- 1 root disk 253,  3 Jul 13 22:07 /dev/dm-3
brw-rw---- 1 root disk 253,  4 Jul 13 22:07 /dev/dm-4
brw-rw---- 1 root disk 253,  5 Jul 13 22:07 /dev/dm-5
brw-rw---- 1 root disk 253,  6 Jul 13 22:07 /dev/dm-6
brw-rw---- 1 root disk 253,  7 Jul 13 22:07 /dev/dm-7
brw-rw---- 1 root disk 253,  8 Jul 13 22:07 /dev/dm-8
brw-rw---- 1 root disk 253,  9 Jul 13 22:07 /dev/dm-9
lrwxrwxrwx 1 root root       7 Jul 13 22:07 /dev/mapper/rootvg-appslv -> ../dm-2
lrwxrwxrwx 1 root root       7 Jul 13 22:07 /dev/mapper/rootvg-execdirstsqllv -> ../dm-6
lrwxrwxrwx 1 root root       7 Jul 13 22:07 /dev/mapper/rootvg-execstsqlddlv -> ../dm-8
lrwxrwxrwx 1 root root       8 Jul 13 22:07 /dev/mapper/rootvg-inbacklv -> ../dm-10
lrwxrwxrwx 1 root root       7 Jul 13 22:07 /dev/mapper/rootvg-nodeapplv -> ../dm-9
lrwxrwxrwx 1 root root       7 Jul 13 22:07 /dev/mapper/rootvg-pgarcloglv -> ../dm-4
lrwxrwxrwx 1 root root       7 Jul 13 22:07 /dev/mapper/rootvg-pgbackuplv -> ../dm-3
lrwxrwxrwx 1 root root       7 Jul 13 22:07 /dev/mapper/rootvg-pgexecstsqllv -> ../dm-5
lrwxrwxrwx 1 root root       7 Jul 13 22:07 /dev/mapper/rootvg-rootlv -> ../dm-0
lrwxrwxrwx 1 root root       8 Jul 13 22:07 /dev/mapper/rootvg-tempfslv -> ../dm-11
lrwxrwxrwx 1 root root       7 Jul 13 22:07 /dev/mapper/rootvg-tmplv -> ../dm-1
lrwxrwxrwx 1 root root       7 Jul 13 22:07 /dev/mapper/rootvg-workdirlv -> ../dm-7
drwxr-xr-x 2 root root     280 Jul 13 20:32 /dev/rootvg
lrwxrwxrwx 1 root root       7 Jul 13 22:07 /dev/rootvg/appslv -> ../dm-2
lrwxrwxrwx 1 root root       7 Jul 13 22:07 /dev/rootvg/execdirstsqllv -> ../dm-6
lrwxrwxrwx 1 root root       7 Jul 13 22:07 /dev/rootvg/execstsqlddlv -> ../dm-8
lrwxrwxrwx 1 root root       8 Jul 13 22:07 /dev/rootvg/inbacklv -> ../dm-10
lrwxrwxrwx 1 root root       7 Jul 13 22:07 /dev/rootvg/nodeapplv -> ../dm-9
lrwxrwxrwx 1 root root       7 Jul 13 22:07 /dev/rootvg/pgarcloglv -> ../dm-4
lrwxrwxrwx 1 root root       7 Jul 13 22:07 /dev/rootvg/pgbackuplv -> ../dm-3
lrwxrwxrwx 1 root root       7 Jul 13 22:07 /dev/rootvg/pgexecstsqllv -> ../dm-5
lrwxrwxrwx 1 root root       7 Jul 13 22:07 /dev/rootvg/rootlv -> ../dm-0
lrwxrwxrwx 1 root root       8 Jul 13 22:07 /dev/rootvg/tempfslv -> ../dm-11
lrwxrwxrwx 1 root root       7 Jul 13 22:07 /dev/rootvg/tmplv -> ../dm-1
lrwxrwxrwx 1 root root       7 Jul 13 22:07 /dev/rootvg/workdirlv -> ../dm-7

看起来好像 LVM 缓存或类似内容已损坏或丢失。看来以前其他人也遇到过这种情况,因为我发现了一系列类似的问题。这个问题看起来很有希望: https://superuser.com/questions/421896/vgdisplay-and-lvdisplay-no-volume-groups-found

不幸的是,它没有解决问题。有人知道如何重建 LVM 缓存吗?除了重新安装之外,还有其他方法可以解决这个问题吗?

谢谢,

史蒂夫

答案1

重新启动(即使进入恢复模式)仍会让我们进入维护 shell,并显示“rootvg 不存在”的消息,尽管 /dev 文件全部显示正常。缺少的是与 /dev/mapper 关联的所有 /dev/dm* 文件。

我怀疑操作员执行的 lvextend 可能覆盖了存储 rootvg 卷组信息的 O/S 磁盘存储的另一部分。检查历史记录,他们执行的命令似乎很正常。我注意到的唯一错误是尝试以非 root 用户身份执行 lvextend 和 resize2fs(没有 sudo)。

长话短说,我们再次无法恢复此系统。 pvscan/vgscan 几乎是所建议的全部内容,并且使用 -vvv 标志,它表明问题很可能是缓存。这种情况之前发生过两次,这让我对 Ubuntu 16、18 和 20 中的 LVM 的可靠性产生了怀疑。

我们用 Ubuntu 22.04 重建了这个系统,然后从夜间备份中恢复了该系统上使用的 PostgreSQL 数据库。我希望我们能找出导致这种情况的原因,因为据我从谷歌搜索中观察到,这种情况似乎至少被报告过 3-4 次。只是没有人有解决方案,甚至没有人建议检查什么,这台服务器不能保持原样。一天结束前就需要它。

我们现在将拥有两台配备 PostgreSQL 流复制的服务器(早就应该有了!),因此,如果再次发生这种情况,我们可以让机器停止服务并尝试进行更多分析,同时不会影响我们的用户。

相关内容