LVM + pvs + pvs 결과를 얻는 방법

LVM + pvs + pvs 결과를 얻는 방법

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/펄도움이 될 수 있는 문법

답변1

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

답변2

또는 약간 덜 우아하고 다소 불필요한 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

그러나 나는 개인적으로 위의 대답의 단순성을 고수할 것입니다.

관련 정보