如何以人类可读的格式找出LVM PV上的可用空间?


9

我正在寻找一种无需使用计算器即可获取LVM物理卷上的可用空间的方法。

我知道该pvdisplay命令将向我显示PE大小以及可用PE的大小,因此通过将PE大小乘以可用PE可以知道以KB为单位的可用空间。但是我想要一个告诉我可用空间的命令,以兆字节,千兆字节等为单位。

的输出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

因此,这种情况下的可用空间为32768 KByte * 221可用PE = 7241728 KiB或6.90625 GiB。但是,没有计算器,这是很多数学工作;-)

是否有命令可以给我LVM物理卷上的可用空间(以兆字节/千兆字节为单位)?


我确定Perl管理员可以鞭打Oneliner。我正在研究红宝石,但我的红宝石oneline技能有点生锈...
乔什(Josh)

虽然您可能正在寻找切换到1/2打LVM相关工具之一的方法,但数学运算也可以在Bash中完成。
slm

1
@terdon-添加了一些输出
slm

谢谢@sim!我对其进行了编辑以显示我的实际输出以及公式,仅因为我的PV实际上有大约7 GiB的可用空间。
乔什(Josh)

Answers:


13

该工具pvs以您喜欢的任何单位显示输出。

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

我在手册页中注意到了这一点:

--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

您可以像这样覆盖单位:

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

完美,将我从试图创建的可怕的oneliner中解救出来!
乔什(Josh)

3

好吧,我说过要给您一支衬板,就可以了,但确实不是很好。@slm的答案显然是要走的路。无论如何,下面的单线假定PV大小以千字节表示(并非总是如此),并且默认情况下会打印GiB。

$ 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

我知道我回答得有点晚了,但我认为最简单的方法就是:(相同的选项也适用于vgs),

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

/dev/sda2      0g
/dev/sdb   18.40g
/dev/sdc    5.00g
/dev/sdd   14.00g
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.