Come posso scoprire lo spazio libero su un PV LVM in formato leggibile dall'uomo?


9

Sto cercando un modo per ottenere lo spazio libero su un volume fisico LVM senza dover usare una calcolatrice.

So che il pvdisplaycomando mi mostrerà la dimensione di una dimensione PE così come la PE libera, e quindi moltiplicando la dimensione PE per la PE libera conosco lo spazio libero in KB. Ma vorrei un comando che mi dica lo spazio libero in megabyte, gigabyte, ecc.

L'output di pvdisplayè:

[root@df02 mysql]# pvdisplay
  /dev/cdrom: open failed: No medium found
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               MMB
  PV Size               29.71 GB / not usable 19.77 MB
  Allocatable           yes 
  PE Size (KByte)       32768
  Total PE              950
  Free PE               221
  Allocated PE          729
  PV UUID               QfZGfn-a3VV-IRkw-bV9g-6iqm-zXjN-y5e6gr

Quindi lo spazio libero in questo caso è 32768 KByte * 221 PE libero = 7241728 KiB, o 6.90625 GiB. Ma è un sacco di matematica da fare senza una calcolatrice ;-)

Esiste un comando che può darmi lo spazio libero su un volume fisico LVM in megabyte / gigabyte?


Sono sicuro che un maestro perl potrebbe montare un oneliner. Sto lavorando su un rubino, ma le mie abilità di rubino on line sono un po 'arrugginite ...
Josh

La matematica potrebbe essere fatta anche in Bash, anche se probabilmente stai cercando un passaggio a una delle 1/2 dozzine di strumenti correlati a LVM.
slm

1
@terdon - aggiunto un po 'di output
slm

Grazie @sim! L'ho modificato per mostrare il mio output effettivo più la formula, solo perché il mio PV in realtà ha ~ 7 GiB gratuiti.
Josh,

Risposte:


13

Lo strumento pvsmostra l'output in qualunque unità ti piaccia.

$ pvs
  PV         VG   Fmt  Attr PSize  PFree
  /dev/sda2  MMB  lvm2 a--  29.69G 6.91G

Ho notato questa menzione nella pagina man:

--units hHbBsSkKmMgGtTpPeE
       All  sizes  are  output in these units: (h)uman-readable, (b)ytes, 
       (s)ectors, (k)ilobytes, (m)egabytes, (g)igabytes,(t)erabytes, 
       (p)etabytes, (e)xabytes.  Capitalise to use multiples of 1000 (S.I.) 
       instead of 1024.  Can also specify custom units e.g. --units 3M

Esempio

Puoi sovrascrivere le unità in questo modo:

$ pvs --units m
  PV         VG             Fmt  Attr PSize     PFree
  /dev/sda2  vg_switchboard lvm2 a--  37664.00m    0m

perfetto e mi salva dal terribile oneliner che stavo cercando di creare!
Josh,

3

Bene, ho detto che ti avrei dato una fodera, quindi eccola qui, ma in realtà non è molto buona. La risposta di @ slm è ovviamente la strada da percorrere. Ad ogni modo, il one-liner di seguito presuppone che le dimensioni del PV siano espresse in KByte (che non è sempre il caso) e stampa GiB per impostazione predefinita.

$ pvdisplay | perl -plne '$f=$1 if /Free PE\s*(\d+)/; 
                        $s=$1 if /PE Size.*?(\d+)/; 
                        print "  Free Space\t\t",($s*$f)/1048576," GiB" if /UUID/'
  /dev/cdrom: open failed: No medium found
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               MMB
  PV Size               29.71 GB / not usable 19.77 MB
  Allocatable           yes 
  PE Size (KByte)       32768
  Total PE              950
  Free PE               221
  Allocated PE          729
  Free Space            6.90625 GiB
  PV UUID               QfZGfn-a3VV-IRkw-bV9g-6iqm-zXjN-y5e6gr

1

so che sono un po 'in ritardo per rispondere, ma penso che il modo più semplice sia solo: (le stesse opzioni funzionano anche per vgs),

$ pvs -o name,free --units g --noheadings

/dev/sda2      0g
/dev/sdb   18.40g
/dev/sdc    5.00g
/dev/sdd   14.00g
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.