การปรับขนาดโลจิคัลวอลุ่ม lvm2 และระบบไฟล์: ขนาดที่แน่นอน?


10

บนเซิร์ฟเวอร์อินทราเน็ตของฉันฉันมีพาร์ติชัน / dev / sda5 100.00 GiB ซึ่งฉันใช้เป็นฟิสิคัลวอลุ่มสำหรับ lvm2

  • เป็นฟิสิคัลวอลุ่มเดียวในกลุ่มวอลุ่มของฉัน vg01
  • ปัจจุบัน vg01 มีโลจิคัลวอลุ่มหนึ่งรายการ lv01 โดยใช้ 100.00 GiB เต็ม - จริงแล้ว 99.99 GiB เนื่องจากการปัดเศษ (นั่นคือที่ที่ปัญหาเริ่มต้นขึ้น)
  • lv01 มีระบบไฟล์ ext3 โดยใช้พื้นที่ทั้งหมด

ฉันต้องการลด lv01 เหลือประมาณ 97 GiB ดังนั้นฉันจึงสามารถสร้าง lv02 ได้โดยประมาณ 3 GiB (ฉันต้องการใช้สแนปชอต lvm)

สิ่งที่ฉันทำจนถึงตอนนี้:

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

สิ่งนี้ใช้ได้ดี แต่ตอนนี้ฉันจะต้องวิ่ง

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

และฉันไม่แน่ใจว่าต้องระบุค่าที่แน่นอน lvreduceหน้าคนเตือนอย่างชัดเจนว่าขนาดที่เกิดขึ้นจะต้องไม่น้อยกว่าระบบไฟล์ ฉันไม่ต้องการทำให้มันใหญ่กว่าที่เป็นอยู่ แต่ตอนนี้ฉันมีตัวเลขต่างกัน:

  • ฉันระบุ97Gใน resize2fs
  • df -h บอกว่ามันคือ 96 กรัม
  • df บอกว่ามันคือ 100115936 1K-blocks
  • lvdisplay (แน่นอน) ยังคงรายงาน 99.99 GiB สำหรับโลจิคัลวอลุ่ม

ฉันจะต้องระบุlvreduceอะไร

แก้ไข:

คำตอบที่ยอมรับในปัจจุบันให้วิธีแก้ปัญหาที่ดี อย่างไรก็ตามเพื่อที่จะรวมสิ่งต่าง ๆ ในสคริปต์ที่เป็นของแข็งเป็นต้นโดยทั่วไปฉันต้องการใช้การวัดที่แม่นยำแทน หรืออาจมีสคริปต์หรือเครื่องมือ (!) ที่เชื่อถือได้ซึ่งดำเนินการขั้นตอนการปรับขนาดทั้งหมดในขั้นตอนเดียว


3
คุณสามารถใช้resize2fsเพื่อลดระบบไฟล์ลงเหลือ 90GiB หรือมากกว่านั้นจากนั้นโคลนรอบ ๆ ด้วยอาร์กิวเมนต์lvreduce(ตามด้วยresize2fs) เพื่อดูว่าอะไรดีที่สุด
larsks

@ larsks: ความคิดที่ดี (เพราะ resize2fs สามารถปรับได้โดยอัตโนมัติตามขนาดของพาร์ติชันในขณะที่ lvreduce ไม่สามารถปรับได้โดยอัตโนมัติตามขนาด fs) หากไม่มีใครรู้คำตอบที่ชัดเจนสำหรับคำถามของฉันฉันคิดว่านี่จะเป็นทางออก
Chris Lercher

ทำไมไม่ส่งขนาดเท่ากันไปยัง lvreduce? หากคุณไม่พิมพ์ดีด lvm ควรจำไว้ว่ามันมีขนาดเท่ากัน และถ้าคุณพิมพ์ผิดอย่างน้อยก็หลีกเลี่ยงการทำลายระบบไฟล์ของคุณ lvreduce -r -L 97G / dev / mapper / vg01-lv01
Bill

คำตอบ:


5

จากประสบการณ์ของฉัน LVM และ resize2fs มีความคิดเหมือนกันเกี่ยวกับความหมายของ "97G" ดังนั้นการระบุขนาดเดียวกันในสถานที่ทั้งสองควรจะดี อย่างไรก็ตามฉันหวาดระแวงและทุกครั้งที่เป็นไปได้ควรใช้กลยุทธ์ที่แนะนำโดย larsks ในความคิดเห็นคำถามและปรับขนาดให้เล็กกว่าที่ฉันต้องการหนึ่งกิกะไบต์ทำขนาด lvresize ให้ได้ขนาดที่ฉันต้องการแล้วเรียกใช้ resize2fs อีกครั้ง ขนาด) เพื่อให้มันขยายออกไปด้านล่างเพื่อเติมเต็ม LV ทั้งหมด


ฉันคิดว่ามันเป็นสิ่งสำคัญที่จะต้อง "หวาดระแวง" ที่นี่ - เพราะไม่เพียง แต่มีความเป็นไปได้ที่ไฟล์ปัจจุบันจะเสียหาย: หากระบบไฟล์มีขนาดใหญ่กว่าเลเวลฉันคิดว่ามันสามารถเล่นความเสียหายด้วยโวลุ่มดังต่อไปนี้ได้ตลอดเวลา ในอนาคต.
Chris Lercher

ไม่ LVM จะห้ามไม่ให้มีความพยายามในการเขียนเกินกว่าจุดสิ้นสุดของ LV ดังนั้นจึงไม่มี LV อื่น ๆ ที่เสียหายได้ หากระบบไฟล์ถูกตัดทอนมันจะส่งผลให้เกิดผลลัพธ์ที่เป็นภัยพิบัติ
womble

น่าสนใจมาก - ฉันไม่รู้ว่ามันตรวจสอบทุกการเขียน! ดีแล้วที่รู้.
Chris Lercher

14

ฉันคิดว่าสิ่งนี้ทำได้ดีที่สุดโดยใช้ตัวเลือก --resizefs เพื่อ lvreduce / lvresize:

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

เป็นที่ยอมรับว่าไม่ได้ช่วยคุณในขณะนี้แต่อาจเป็นในอนาคต


นั่นคือสิ่งที่ฉันกำลังมองหา! ดูเหมือนว่าจะเป็นตัวเลือกใหม่: มีอยู่ในรุ่น2.02.74 (2) -RHELแต่มันหายไปในเครื่องมือ LVM เวอร์ชัน2.02.66ของฉัน
Chris Lercher

1
เมื่อฉันปรับขนาด fs โดยใช้เครื่องมืออื่น ๆ แล้วตัวเลือกนี้จะระงับคำเตือนตามปกติและพิมพ์ข้อความ "ระบบไฟล์มีความยาว 3932160 บล็อกแล้วไม่มีอะไรที่ต้องทำ!" เพียงเท่าที่ต้องการ
D Coetzee

แม้ในปี 2020 ไม่มีบทเรียนใด ๆ เกี่ยวกับการขยาย / ลดขนาด lvm ที่เสนอโดย Google ในหน้าผลการค้นหาหน้าแรกที่กล่าวถึงตัวเลือกนี้ ขอบคุณมาก!
Ivan Shatsky
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.