เมื่อวอลุ่มแบบ Thin Provisioning บน SUSE Linux Enterprise Server แจ้งว่า “ไม่มีพื้นที่เหลือบนอุปกรณ์” ให้ตรวจสอบ Thin Pool Data%ก่อนMeta%หากพื้นที่ข้อมูลเต็มและ Volume Group มีพื้นที่ว่าง ให้ขยายThin Pool ด้วยlvextendพื้นที่ว่าง ไม่ใช่เพียงแค่ขนาดเสมือนของ Thin Logical Volume เท่านั้น ส่วนพื้นที่ Metadata ที่เต็มอย่างสมบูรณ์นั้นแตกต่างออกไป อาจต้องทำการซ่อมแซมแบบออฟไลน์ก่อนที่จะสามารถเขียนข้อมูลได้ตามปกติ
ขั้นตอนด้านล่างนี้ใช้คำสั่ง LVM2 ที่ระบุไว้สำหรับ Linux และโมเดลการจัดเก็บข้อมูลที่อธิบายไว้ในคู่มือการดูแลระบบจัดเก็บข้อมูล SUSE Linux Enterprise Server 15 SP7 ความพร้อมใช้งานของคำสั่งและการกำหนดค่าบริการอาจแตกต่างกันไปใน Service Pack อื่นของ SLES หรือการติดตั้งแบบคลัสเตอร์ ควรทำการสำรองข้อมูลที่สอดคล้องกับแอปพลิเคชันและจำกัดการเขียนข้อมูลจำนวนมากก่อนที่จะแก้ไขพื้นที่จัดเก็บข้อมูลที่ใช้งานจริง
1. ตรวจสอบว่าพื้นที่จัดเก็บข้อมูลหรือเมตาเดต้าเต็มหรือไม่
เรียกใช้คำสั่งต่อไปนี้บนโฮสต์ที่เป็นเจ้าของ thin pool ที่ใช้งานอยู่ โดยแทนที่vgdataด้วยชื่อ volume-group ของคุณ:
sudo lvs -a -o lv_name,lv_size,segtype,data_percent,metadata_percent,pool_lv vgdata
มองหาแถวที่มีthin-poolเครื่องหมายจุด ( SegType.) กำกับอยู่ เครื่องหมายจุด (. Data%) กำกับอยู่จะวัดบล็อกข้อมูลที่จัดสรรไว้ เครื่องหมายจุด Meta%(.) กำกับอยู่จะวัดเมตาเดต้าการแมปของพูล ซึ่งเป็นขีดจำกัดความจุที่แยกจากกัน หากData%ค่าใกล้เคียง 100 แต่Meta%ยังต่ำกว่านั้น การเพิ่มส่วนขยายข้อมูลเป็นวิธีแก้ไขที่ตรงที่สุด หากMeta%ค่าเท่ากับ 100 ให้ใช้ข้อควรระวังในการกู้คืนในส่วนที่ 4
ตัวอย่างการแสดงผลในเทอร์มินัล: เปอร์เซ็นต์ข้อมูลของพูลใกล้เต็มแล้ว ในขณะที่การใช้งานเมตาเดต้าต่ำกว่ามาก ค่าที่แสดงเป็นเพียงตัวอย่างของฟิลด์ที่ต้องตรวจสอบ ไม่ใช่ผลการวินิจฉัยแบบเรียลไทม์
สมมติเป็นตัวอย่างว่า พื้นที่จัด vgdata/pool0เก็บข้อมูลมีขนาด 100 GiB โดยมีการใช้งานข้อมูล 98.12% และการใช้งานเมตาเดต้า 40.26% พื้นที่จัดเก็บข้อมูลนี้จะมีความเสี่ยงทันที แม้ว่าdf -hจะรายงานว่ามีพื้นที่เหลือเฟือภายในวอลุ่มแบบ Thin Volume ที่ติดตั้งอยู่ก็ตาม ขนาดเสมือนของ Thin Volume อาจเกินความจุทางกายภาพที่รองรับพื้นที่จัดเก็บข้อมูลนั้นได้ ดังที่เอกสาร Expert Partitioner ของ SUSE อธิบายไว้
โปรดตรวจสอบข้อผิดพลาดล่าสุดด้วย:
sudo journalctl -k --since "-30 min" | grep -Ei 'thin|no space|I/O error'
อย่าตีความผลลัพธ์ grep ที่ว่างเปล่าว่าเป็นหลักฐานว่าไม่มีการเขียนข้อมูลที่ล้มเหลวเกิดขึ้น ตรวจสอบบันทึกของแอปพลิเคชันด้วย โดยเฉพาะอย่างยิ่งหากฐานข้อมูลหรือเครื่องเสมือนกำลังเขียนข้อมูลอยู่เมื่อพูลเต็ม
2. ตรวจสอบว่ากลุ่มปริมาตรมีพื้นที่ว่างเพียงพอหรือไม่
ก่อนที่จะเปลี่ยนแปลงขนาดของกลุ่มสระว่ายน้ำ โปรดตรวจสอบว่ากลุ่มปริมาณน้ำสามารถจัดหาเงินทุนสำหรับการขยายได้หรือไม่:
sudo vgs -o vg_name,vg_size,vg_free vgdata
ตัวอย่างการตรวจสอบกลุ่มวอลุ่ม: VG_FREE ระบุว่ามีพื้นที่ทางกายภาพเหลืออยู่หรือไม่ เพื่อขยายพูล 0 โดยไม่ต้องเพิ่มอุปกรณ์อื่น
ในตัวอย่างสมมติฐาน กลุ่มวอลุ่มขนาด 200 GiB มีพื้นที่ว่าง 40 GiB ดังนั้น การขยายพูลเพิ่มอีก 20 GiB จึงเป็นไปได้ในทางทฤษฎี โดยขึ้นอยู่กับข้อจำกัดในการจัดสรรและพื้นที่สำหรับการเติบโตของเมตาเดต้า ควรสำรองพื้นที่ VG บางส่วนไว้แทนที่จะจัดสรรพื้นที่ว่างทั้งหมดให้กับพูล
หากVG_FREEค่าเป็นศูนย์lvextendจะไม่สามารถสร้างความจุทางกายภาพได้ ให้เพิ่มวอลุ่มทางกายภาพที่ระบุและเตรียมไว้แล้วอย่างถูกต้องลงใน VG ขยายพื้นที่จัดเก็บข้อมูลพื้นฐานและ LVM PV ตามความเหมาะสม หรือเรียกคืนบล็อกก่อนที่จะลองใหม่อีกครั้ง เอกสารของ SUSE อธิบายวิธีการเพิ่มวอลุ่มทางกายภาพเมื่อปรับขนาดกลุ่มวอลุ่ม ห้ามดำเนินการpvcreateกับดิสก์ที่ไม่ได้รับการตรวจสอบ: อาจทำลายเมตาเดต้าของพื้นที่จัดเก็บข้อมูลที่มีอยู่ได้
3. ขยายสระน้ำที่บางแทนที่จะขยายปริมาตรที่บาง
เมื่อData%ปัจจัยจำกัดคืออะไร เมตาเดต้ายังไม่หมด และมีส่วนขยาย VG เหลืออยู่เพียงพอ ให้ขยายพูลนั้นเอง:
sudo lvextend -L +20G vgdata/pool0
ตัวอย่างการขยาย thin-pool: คำสั่งนี้กำหนดเป้าหมายไปที่ vgdata/pool0 ไม่ใช่ thin logical volume ที่อยู่ภายในนั้น ผลลัพธ์ที่แสดงเป็นเพียงตัวอย่างเท่านั้น
ไวยากรณ์ นี้+20Gจะเพิ่มขนาดพูลปัจจุบันอีก 20 GiB ไม่ได้กำหนดขนาดสุดท้ายให้เป็น 20 GiB ในตัวอย่างนี้ พูลสำรองจะเพิ่มจาก 100 GiB เป็น 120 GiB หากข้อมูลที่จัดสรรไว้ไม่เปลี่ยนแปลง พื้นที่ใช้งาน 98.12 GiB จะคิดเป็นประมาณ 81.8% ของพูลที่ขยายใหญ่ขึ้น เปอร์เซ็นต์ที่แท้จริงอาจแตกต่างออกไปหากมีการเขียนข้อมูลอย่างต่อเนื่องในระหว่างการดำเนินการ
ห้ามใช้ คำสั่ง อื่นแทนlvextend -L +20G vgdata/thin1การขยายพื้นที่แอดเดรสเสมือนของวอลุ่มแบบบางไม่ได้หมายความว่าจะเพิ่มความจุข้อมูลทางกายภาพให้กับพูลเสมอไป เนื่องจากคำสั่งนี้ขยายพูลที่อยู่เบื้องหลังแทนที่จะเป็นอุปกรณ์บล็อกเสมือนของระบบไฟล์ ดังนั้นโดยปกติแล้วจึงไม่จำเป็นต้องปรับขนาดระบบไฟล์สำหรับการดำเนินการนี้โดยเฉพาะคู่มือการจัดสรรพื้นที่แบบบางของ LVM ที่เชื่อถือได้ จะอธิบายกลไกการขยายพูลแบบบางและข้อจำกัดของมัน
เมื่อคุณไม่สามารถต่อเติมสระว่ายน้ำได้ทันที
หากไฟล์ถูกลบออกจากระบบไฟล์แบบบางแล้ว และระบบไฟล์ทั้งหมดรองรับการทิ้งไฟล์ โปรดพิจารณาเรียกคืนบล็อกที่ถูกทิ้ง:
sudo fstrim -v /srv/data
ใช้จุดเชื่อมต่อจริงของวอลุ่มแบบบาง ไม่ใช่ตัวอุปกรณ์พูลแบบบาง การตัดแต่งที่สำเร็จอาจลดขนาดลงได้Data%แต่การลบไฟล์เพียงอย่างเดียวมักจะไม่คืนบล็อกกลับไปยังพูล สแนปช็อตแบบบางสามารถเก็บบล็อกที่ใช้ร่วมกันได้ และพูลที่ตั้งค่าให้ไม่สนใจการทิ้งจะไม่ได้รับประโยชน์ อย่าใช้การตัดแต่งเป็นทางเลือกฉุกเฉินที่เชื่อถือได้สำหรับความจุทางกายภาพ โดยเฉพาะอย่างยิ่งหากการเขียนเริ่มล้มเหลว ลบสแนปช็อตเก่าหลังจากตรวจสอบความเป็นเจ้าของ การพึ่งพา และข้อกำหนดการเก็บรักษาแล้วเท่านั้น การลบสแนปช็อตไม่สามารถย้อนกลับได้
4. พิจารณาพื้นที่เมตาเดตาทั้งหมดเป็นเงื่อนไขการกู้คืน
หากMeta%ถึง 100% ให้หยุดการเขียนข้อมูลแอปพลิเคชันและวางแผนการหยุดทำงานอย่างเป็นระบบ LVM เตือนว่าการหมดของเมตาเดต้าอาจทำให้เมตาเดต้าและระบบไฟล์ของ thin-pool ไม่สอดคล้องกัน การเพิ่มขนาดข้อมูลพูล การลองเขียนใหม่ หรือการบังคับเปิดใช้งานเพียงอย่างเดียวไม่สามารถแก้ไขความเสี่ยงนั้นได้
ลำดับขั้นตอนการกู้คืนที่บันทึกไว้คือ การปิดใช้งานพูลที่ได้รับผลกระทบแบบออฟไลน์ ซ่อมแซมเมตาเดต้าที่บางเกินไปโดยใช้lvconvert --repair VG/ThinPoolเครื่องมือ ขยายความจุเมตาเดต้าโดยใช้lvextend --poolmetadatasizeเครื่องมือ และจากนั้นตรวจสอบระบบไฟล์ที่ได้รับผลกระทบแต่ละระบบด้วยเครื่องมือออฟไลน์ที่เหมาะสม ตัวอย่างเช่น พูลที่มีเมตาเดต้า LV ขนาดเล็กกว่า 2 GiB อาจต้องใช้เป้าหมายที่ได้รับการตรวจสอบแล้ว เช่น:
sudo lvextend --poolmetadatasize 2G vgdata/pool0
นี่ไม่ใช่คำสั่งที่จะรันโดยไม่ตรวจสอบให้ดีบนพูลที่ใช้งานอยู่และเสียหาย ขนาดของมันเป็นเพียงตัวอย่าง ไม่ใช่ข้อกำหนดสากล ตรวจสอบขนาดเมตาเดตาปัจจุบัน พื้นที่ว่าง การปิดใช้งานที่ถูกต้อง สื่อการกู้คืน และการสำรองข้อมูลก่อน การดำเนินการlvconvert --repairต้องวางแผนโดยคำนึงถึงเวลาหยุดทำงานและความเชี่ยวชาญด้านการกู้คืน คู่มือ LVM ระบุว่าอาจล้มเหลวและข้อมูลอาจยังคงไม่สามารถกู้คืนได้ เก็บ LV เมตาเดตาเก่าไว้จนกว่าพูลและระบบไฟล์จะได้รับการตรวจสอบแล้ว การสำรองข้อมูลการกำหนดค่า LVM จาก LV เก่าvgcfgbackupจะไม่สำรองข้อมูลเมตาเดตาของพูลแบบบาง สำหรับข้อมูลที่สำคัญต่อธุรกิจ โปรดติดต่อฝ่ายสนับสนุนของ SUSE หรือทีมกู้คืนข้อมูลของคุณก่อนที่จะพยายามซ่อมแซม
5. เปิดใช้งานการขยายอัตโนมัติ จากนั้นตรวจสอบการเขียน
หลังจากระบบเสถียรแล้ว ให้กำหนดค่านโยบายการเติบโตเชิงรุกในactivationส่วนของ/etc/lvm/lvm.conf. ตัวอย่างนี้เริ่มต้นการขยายเมื่อมีการใช้งาน 70% และขอการเติบโต 20% ปรับค่าเหล่านี้ให้เหมาะสมกับอัตราการเขียนและความจุ VG ที่ใช้งานได้:
activation {
thin_pool_autoextend_threshold = 70
thin_pool_autoextend_percent = 20
}
ตรวจสอบให้แน่ใจว่าได้ใช้การตั้งค่ากับขอบเขตการกำหนดค่าที่ถูกต้อง และมีการตรวจสอบพูลอย่างสม่ำเสมอ:
sudo lvchange --monitor y vgdata/pool0
ตัวอย่างคำสั่งตรวจสอบ: การเปิดใช้งานการตรวจสอบเหตุการณ์ LVM จะช่วยให้ระบบดำเนินการตามนโยบายการขยายพูลอัตโนมัติเมื่อมีส่วนขยายว่างเหลือเพียงพอ
การขยาย thin-pool อัตโนมัติขึ้นอยู่กับการตรวจสอบเหตุการณ์ LVM ( dmeventd) และพื้นที่ว่างที่เพียงพอ ตรวจสอบบริการตรวจสอบที่จัดให้โดยการติดตั้ง SLES ของคุณ—เช่นsystemctl status lvm2-monitorในกรณีที่หน่วยดังกล่าวมีอยู่—และตรวจสอบบันทึก การกำหนดค่าเกณฑ์ไม่รับประกันการป้องกันหากการเขียนเกินขีดจำกัดการขยายหรือ VG เต็มแล้ว ดูคำแนะนำเกี่ยวกับการขยายอัตโนมัติ และตัวเลือกการตรวจสอบ lvchange ในคู่มือ LVM
ตรวจสอบว่าการแก้ไขได้ผลหรือไม่
อ่านค่าการใช้ประโยชน์ของพูลและกำลังการผลิตที่เหลืออยู่ของ VG อีกครั้ง:
sudo lvs -o lv_name,lv_size,data_percent,metadata_percent vgdata/pool0
sudo vgs -o vg_name,vg_free vgdata
Data%ควรลดขนาดพื้นที่จัดเก็บข้อมูลลงหลังจากขยายพูลข้อมูลแล้วMeta%ต้องคงอยู่ต่ำกว่าระดับที่หมดลง และพูลควรทำงานได้อย่างไม่มีข้อผิดพลาด I/O ใหม่ ตรวจสอบสถานะของระบบไฟล์และบันทึกของแอปพลิเคชัน จากนั้นทำการทดสอบการเขียนและการอ่านขนาดเล็กที่เหมาะสมกับแอปพลิเคชันก่อนที่จะปล่อยเวิร์กโหลดที่ถูกระงับ หากยังคงมีข้อผิดพลาดหลังจากมีพื้นที่ว่างแล้ว ให้ปิดเวิร์กโหลดที่ได้รับผลกระทบไว้จนกว่าจะมีการประเมินความสมบูรณ์ของระบบไฟล์และแอปพลิเคชันแล้ว การเพิ่มความจุไม่สามารถย้อนกลับการเขียนที่ล้มเหลวหรือสูญหายไปแล้วได้