Trên máy chủ mạng nội bộ của mình, tôi có phân vùng 100,00 GiB / dev / sda5, tôi sử dụng làm ổ đĩa vật lý cho lvm2.

  • Đây là tập vật lý duy nhất trong nhóm tập vg01 của tôi.
  • vg01 hiện chứa một ổ đĩa hợp lý lv01, sử dụng 100,00 GiB đầy đủ - tốt, thực tế là 99,99 GiB do một số làm tròn (đó là nơi sự cố bắt đầu).
  • lv01 chứa hệ thống tệp ext3, sử dụng toàn bộ không gian.

Tôi muốn giảm lv01 xuống còn khoảng 97 GiB, vì vậy tôi có thể tạo lv02 với khoảng. 3 GiB (Tôi cần nó để chụp nhanh lvm).

Những gì tôi đã làm cho đến nay:

e2fsck -f /dev/mapper/vg01-lv01
resize2fs /dev/mapper/vg01-lv01 97G

Điều này đã hoạt động tốt. Nhưng bây giờ tôi sẽ phải chạy

lvreduce --size ? /dev/mapper/vg01-lv01

Và tôi không chắc, tôi sẽ phải chỉ định giá trị chính xác nào . Các lvreducetrang người đàn ông cảnh báo một cách rõ ràng, rằng kích thước kết quả không phải là nhỏ hơn so với hệ thống tập tin. Tôi cũng không muốn làm cho nó lớn hơn nó phải có. Nhưng bây giờ tôi có những con số khác nhau:

  • Tôi đã chỉ định 97Gtrong resize2fs.
  • df -h nói, đó là 96 G.
  • df cho biết, đó là 100115936 khối 1K.
  • lvdisplay (tất nhiên) vẫn báo cáo 99,99 GiB cho khối lượng hợp lý.

Tôi sẽ phải chỉ định những lvreducegì?

Chỉnh sửa:

Câu trả lời hiện được chấp nhận cung cấp một giải pháp tốt. Tuy nhiên, để tích hợp những thứ như vậy trong các tập lệnh vững chắc, v.v., tôi thường thích sử dụng các phép đo chính xác để thay thế. Hoặc có thể đã có một tập lệnh hoặc công cụ đáng tin cậy (!) Thực hiện toàn bộ quy trình thay đổi kích thước trong một bước?

answer

Theo kinh nghiệm của tôi, LVM và resize2fs có cùng ý tưởng về ý nghĩa của "97G", vì vậy việc chỉ định cùng một kích thước ở cả hai nơi sẽ ổn. Tuy nhiên, tôi bị hoang tưởng và bất cứ khi nào có thể, luôn sử dụng chiến lược được đề xuất bởi larsks trong nhận xét câu hỏi và thay đổi kích thước để nhỏ hơn một GB so với tôi muốn, thực hiện kích thước lvresize thành kích thước tôi muốn, sau đó chạy lại resize2fs (không có kích thước) để cho phép nó mở rộng trở lại để lấp đầy toàn bộ LV.

Tôi nghĩ rằng điều này được thực hiện tốt nhất bằng cách sử dụng tùy chọn --resizefs để lvreduce / lvresize:

   -r, --resizefs
          Resize underlying filesystem together with the logical volume using fsadm(8).

Phải thừa nhận rằng điều đó không giúp được gì cho bạn bây giờ , nhưng nó có thể trong tương lai.