Làm cách nào tôi có thể tìm ra không gian trống trên PV LVM ở định dạng có thể đọc được?


9

Tôi đang tìm cách để tôi có thể có được không gian trống trên âm lượng vật lý LVM mà không phải sử dụng máy tính.

Tôi biết pvdisplaylệnh sẽ chỉ cho tôi kích thước của kích thước PE cũng như PE miễn phí, và do đó bằng cách nhân kích thước PE với PE miễn phí, tôi biết không gian trống trong KB. Nhưng tôi muốn một lệnh cho tôi biết không gian trống tính bằng megabyte, gigabyte, v.v.

Đầu ra của pvdisplaylà:

[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

Vì vậy, không gian trống trong trường hợp này là 32768 KByte * 221 PE miễn phí = 7241728 KiB, hoặc 6,90625 GiB. Nhưng đó là rất nhiều toán phải làm mà không cần máy tính ;-)

Có lệnh nào có thể cho tôi không gian trống trên âm lượng vật lý LVM tính bằng megabyte / gigabyte không?


Tôi chắc rằng một bậc thầy perl có thể đánh bật một oneliner. Tôi đang làm việc với một viên ruby ​​nhưng kỹ năng chơi ruby ​​của tôi hơi thô lỗ ...
Josh

Toán học cũng có thể được thực hiện ở Bash, mặc dù bạn có thể đang tìm kiếm một công tắc cho một trong số 1/2 tá công cụ liên quan đến LVM.
slm

1
@terdon - đã thêm một số đầu ra
slm

Cảm ơn @sim! Tôi đã chỉnh sửa nó để hiển thị đầu ra thực tế của mình cộng với công thức, chỉ vì PV của tôi thực sự có ~ 7 GiB miễn phí.
Josh

Câu trả lời:


13

Công cụ pvshiển thị đầu ra trong bất kỳ đơn vị nào bạn thích.

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

Tôi nhận thấy đề cập này trong trang người đàn ông:

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

Thí dụ

Bạn có thể ghi đè các đơn vị như vậy:

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

hoàn hảo và cứu tôi khỏi oneliner khủng khiếp mà tôi đang cố gắng tạo ra!
Josh

3

Chà, tôi đã nói là tôi sẽ cho bạn một lớp lót nên nó ở đây nhưng nó thực sự không tốt lắm. Câu trả lời của @ slm rõ ràng là cách để đi. Dù sao, một lớp lót bên dưới giả định rằng kích thước PV được biểu thị bằng KBytes (không phải luôn luôn như vậy) và in GiB theo mặc định.

$ 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

Tôi biết tôi hơi muộn để trả lời nhưng tôi nghĩ cách dễ nhất chỉ là: (Các tùy chọn tương tự cũng hoạt động với vss),

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

/dev/sda2      0g
/dev/sdb   18.40g
/dev/sdc    5.00g
/dev/sdd   14.00g
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.