使用 AWK 获取 LVM 大小?

使用 AWK 获取 LVM 大小?

我需要找出图像的 LVM 大小vm001。假设我有一个名为的 LVM 卷/dev/VGgroup/vm001。现在使用lvdisplay我可以找出大小:

--- Logical volume ---
  LV Name                /dev/VGgroup/vm001
  VG Name                VGgroup
  LV UUID                i0aYKs-Hpfv-q64V-9Rqu-6Wrq-eV3C-pZzo0D
  LV Write Access        read/write
  LV Status              available
  # open                 2
  LV Size                25.00 GB
  Current LE             6400
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:41

如何使用仅输出的脚本/命令找出 LV 大小25?我知道awk您可以水平查找字符串,但不能垂直查找(据我所知)。

编辑 有更多的逻辑卷,使用lvdisplay | awk '/LV Size/ { print $3 }'将输出所有大小(显然),我如何仅获取我想要的卷的大小?(在这种情况下vm001)。

答案1

您可以在中设置一个变量(foundawk,并在打印出后立即退出LV Size

$ lvdisplay | awk '/vm001/{found=1}; /LV Size/ && found{print $3; exit}'
25.00
  • 如果vm001找到后,设置found1(因为我们知道LV Size正在关注这一行)
  • 如果LV Sizefound!=0,然后打印第 3 列,然后exit立即地。

答案2

lvs /dev/vg/lvname -o LV_SIZE --noheadings --units G --nosuffix

您可以以有用的形式获得 LV 的大小。

答案3

您可以使用正则表达式来选择带有“//”前缀的行。例如在您的 lvdisplay 输出中。

awk '/LV Size/ { print $3 }'

答案4

您也可以lvs直接询问信息:

lvs vm001 --nosuffix --units g -o size --no-headings

或者更具体地说,

lvs VGgroup/vm001 --nosuffix --units g -o size --no-headings

相关内容