4

lsblk 以这种格式提供输出:

NAME                        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sr0                          11:0    1  1024M  0 rom
sda                           8:0    0   300G  0 disk
sda1                          8:1    0   500M  0 part /boot
sda2                          8:2    0 299.5G  0 part
vg_data1-lv_root (dm-0)  253:0    0    50G  0 lvm  /
vg_data2-lv_swap (dm-1)  253:1    0   7.7G  0 lvm  [SWAP]
vg_data3-LogVol04 (dm-2) 253:2    0  46.5G  0 lvm
vg_data4-LogVol03 (dm-3) 253:3    0  97.7G  0 lvm  /map1
vg_data5-LogVol02 (dm-4) 253:4    0  97.7G  0 lvm  /map2
sdb                           8:16   0    50G  0 disk

对于已安装的卷说 /map1 我如何直接获取与其关联的物理卷。是否有任何直接命令来获取信息?

4

4 回答 4

8

没有直接命令可以显示安装的信息。你可以

lvdisplay -m

这将显示逻辑卷当前正在使用哪些物理卷。

记住,思考一下,逻辑卷和物理卷之间没有直接关联。逻辑卷与卷组相关联。卷组有一个物理卷池,它们可以在其中分发任何卷组。如果您总是想知道给定的lv在给定的pv上,则必须将vg限制为只有一个pv。那反而没有抓住重点。您可以使用pvmove将扩展区推离pv(有时对维护很有用),但如果扩展或创建了逻辑卷,则无法停止在其上创建新扩展区。

至于为什么没有这种潜在有用的命令......

LVM 不是 ZFS。ZFS 是一个完整的存储和文件系统管理系统,管理存储(在几个抽象级别)和文件系统的挂载。相比之下,LVM 只是 Linux 虚拟文件系统的一层。它在物理存储设备之上提供了一个抽象层,并且不假设如何使用逻辑卷。

于 2015-02-18T10:07:30.230 回答
6

将 grep/awk/cut/whatever 留给您,这将显示每个 LV 实际使用的 PV:

lvs -o +devices

对于给定 LV 使用的每个 PV,您将获得一个单独的行,因此如果一个 LV 在三个 PV 上具有范围,您将看到该 LV 的三行。PV 设备节点路径后面是括号中该 PV 上数据的起始范围(我认为)。

于 2015-07-10T17:16:58.830 回答
4

我需要强调的是,挂载点(逻辑卷)和 LVM 中的物理卷之间没有直接关系。这是它的设计目标之一。

但是,您可以遍历逻辑卷、卷组和分配给该组的物理卷之间的关联。然而,这只告诉您:数据存储在这些物理卷之一上,但不确切地存储在哪里。


我找不到可以直接产生输出的命令。mount但是,您可以使用、lvdisplay和修补一些vgdisplay东西awk|sed

mp=/mnt vgdisplay -v $(lvdisplay $(mount | awk -vmp="$mp" '$3==mp{print $1}') | awk '/VG Name/{print $3}')

我正在使用环境变量mp将挂载点传递给命令。(您需要以root身份或使用执行命令sudo

对于我的测试场景,它输出:

  ...
  --- Volume group ---
  VG Name               vg1
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  ...
  VG Size               992.00 MiB
  PE Size               4.00 MiB
  Total PE              248
  Alloc PE / Size       125 / 500.00 MiB
  Free  PE / Size       123 / 492.00 MiB
  VG UUID               VfOdHF-UR1K-91Wk-DP4h-zl3A-4UUk-iB90N7

  --- Logical volume ---
  LV Path                /dev/vg1/testlv
  LV Name                testlv
  VG Name                vg1
  LV UUID                P0rgsf-qPcw-diji-YUxx-HvZV-LOe0-Iq0TQz
  ...
  Block device           252:0

  --- Physical volumes ---
  PV Name               /dev/loop0     
  PV UUID               Qwijfr-pxt3-qcQW-jl8q-Q6Uj-em1f-AVXd1L
  PV Status             allocatable
  Total PE / Free PE    124 / 0

  PV Name               /dev/loop1     
  PV UUID               sWFfXp-lpHv-eoUI-KZhj-gC06-jfwE-pe0oU2
  PV Status             allocatable
  Total PE / Free PE    124 / 123

如果您只想显示物理卷,您可以将上述命令的结果通过管道传输到 sed:

above command | sed -n '/--- Physical volumes ---/,$p'
于 2015-02-18T09:08:53.960 回答
-1
dev=$(df /map1  | tail -n 1|awk  '{print $1}')
echo $dev | grep -q ^/dev/mapper && lvdisplay -m $dev 2>/dev/null  | awk '/Physical volume/{print $3}' || echo $dev
于 2022-01-21T02:56:02.820 回答