我需要找出图像的 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
您可以在中设置一个变量(found
)awk
,并在打印出后立即退出LV Size
。
$ lvdisplay | awk '/vm001/{found=1}; /LV Size/ && found{print $3; exit}'
25.00
- 如果
vm001
找到后,设置found
到1
(因为我们知道LV Size
正在关注这一行) - 如果
LV Size
和found!=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