Linux

LVM + pvs + 如何得到 pvs 結果

  • January 11, 2021

我們想編寫取Pfree大小但整數而不是浮點數的命令

pvs
 PV         VG   Fmt  Attr PSize   PFree
 /dev/sda2  vg   lvm2 a--  277.97g 111.97g

例如在下面pvs我們可以做

pvs --units g | awk '{print $NF}' | sed s'/\./ /g' | awk '{print $1}' | tail -1

它給了

111

但在不同的情況下,我們得到兩條或多PV條線,然後需要計算總數Pfree

範例 1

pvs
 PV         VG   Fmt  Attr PSize   PFree
 /dev/sda2  vg   lvm2 a--  149.51g 53.51g
 /dev/sda3  vg   lvm2 a--   50.00g   2.1g
 

範例 2

  pvs
 PV         VG   Fmt  Attr PSize   PFree
 /dev/sda2  vg   lvm2 a--  149.51g 520.00m
 /dev/sda3  vg   lvm2 a--   50.00g  3.51g

所以我們想搜尋可以用 Giga 給出計算結果的 lvm 命令

關於範例 1,我們應該得到55.6

或者

關於範例 2,我們應該得到4.2

任何已經做到這一點的 lvm 建議?

如果不是,我會很感激獲得可以提供幫助的awk/sed/perl語法

僅獲得 PV 可用空間pvs

# pvs -o pv_free --unit=g --no-suffix --no-heading 
  1.00
  0.31

並與bc

# pvs -o pv_free --unit=g --no-suffix --no-heading | paste -s -d+ - | bc
1.31

或者稍微不雅且相當不必要的 awk 使用(與 Vojtech 的解決方案相比)可以適應您的目的(因為您提到了您對 awk 的渴望):

[root@localhost Documente]# lvs --no-heading --unit=g
 root cl -wi-ao---- 17,00g
 swap cl -wi-ao----  2,00g
[root@localhost Documente]# lvs --no-heading --unit=g | awk '{sum+=$4} END {print sum}'
19

但我個人會堅持上面答案的簡單性。

引用自:https://unix.stackexchange.com/questions/628633