พื้นที่พูลบางของ SLES ไม่เพียงพอ: ขยาย LVM อย่างปลอดภัยและกู้คืนการเขียน

เมื่อวอลุ่มแบบ 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

เทอร์มินัลแสดงรายการพูลแบบบาง (thin pool) ชื่อ pool0 โดยมี Data% อยู่ที่ 98.12% และ Meta% อยู่ที่ 40.26% รวมถึงวอลุ่มแบบบาง (thin volume) ชื่อ thin1
ตัวอย่างการแสดงผลในเทอร์มินัล: เปอร์เซ็นต์ข้อมูลของพูลใกล้เต็มแล้ว ในขณะที่การใช้งานเมตาเดต้าต่ำกว่ามาก ค่าที่แสดงเป็นเพียงตัวอย่างของฟิลด์ที่ต้องตรวจสอบ ไม่ใช่ผลการวินิจฉัยแบบเรียลไทม์

สมมติเป็นตัวอย่างว่า พื้นที่จัด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
เทอร์มินัลแสดงผลลัพธ์ของคำสั่ง vgs สำหรับวอลุ่มกรุ๊ป vgdata ที่มีพื้นที่ทั้งหมด 200 GiB และพื้นที่ว่าง 40 GiB
ตัวอย่างการตรวจสอบกลุ่มวอลุ่ม: 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
หน้าจอเทอร์มินัลแสดงคำสั่ง lvextend -L +20G vgdata/pool0 ตามด้วยข้อความแจ้งการปรับขนาดวอลุ่มลอจิกจาก 100 เป็น 120 GiB
ตัวอย่างการขยาย 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
หน้าจอเทอร์มินัลแสดงคำสั่ง 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 ใหม่ ตรวจสอบสถานะของระบบไฟล์และบันทึกของแอปพลิเคชัน จากนั้นทำการทดสอบการเขียนและการอ่านขนาดเล็กที่เหมาะสมกับแอปพลิเคชันก่อนที่จะปล่อยเวิร์กโหลดที่ถูกระงับ หากยังคงมีข้อผิดพลาดหลังจากมีพื้นที่ว่างแล้ว ให้ปิดเวิร์กโหลดที่ได้รับผลกระทบไว้จนกว่าจะมีการประเมินความสมบูรณ์ของระบบไฟล์และแอปพลิเคชันแล้ว การเพิ่มความจุไม่สามารถย้อนกลับการเขียนที่ล้มเหลวหรือสูญหายไปแล้วได้

ฝากความเห็น

SLES Zypper HTTP 500: ค้นหาแหล่งเก็บข้อมูลที่ล้มเหลว

SLES Zypper HTTP 500: ค้นหาแหล่งเก็บข้อมูลที่ล้มเหลว

ตรวจสอบหาสาเหตุของข้อผิดพลาดในการรีเฟรชของ Zypper ว่ามาจาก SUSE, RMT หรืออุปกรณ์ปลายทางของบุคคลที่สาม จากนั้นใช้การแก้ไขปัญหาฝั่งเซิร์ฟเวอร์หรือแคชที่ถูกต้องโดยไม่ต้องปิดใช้งานการอัปเดตที่จำเป็น

พื้นที่พูลบางของ SLES ไม่เพียงพอ: ขยาย LVM อย่างปลอดภัยและกู้คืนการเขียน

พื้นที่พูลบางของ SLES ไม่เพียงพอ: ขยาย LVM อย่างปลอดภัยและกู้คืนการเขียน

แก้ไขข้อผิดพลาดเกี่ยวกับพื้นที่ thin-pool ของ SUSE LVM โดยการตรวจสอบการใช้งานข้อมูลและเมตาเดต้า ขยายพูลอย่างปลอดภัย และป้องกันการหยุดทำงานซ้ำซ้อน

เมื่อ SLES Btrfs เข้าสู่โหมดอ่านอย่างเดียว: ตรวจสอบหาสาเหตุก่อนทำการเมานต์ใหม่

เมื่อ SLES Btrfs เข้าสู่โหมดอ่านอย่างเดียว: ตรวจสอบหาสาเหตุก่อนทำการเมานต์ใหม่

ตรวจสอบว่า Btrfs ถูกตั้งค่าเป็นโหมดอ่านอย่างเดียวโดยเจตนา พื้นที่เหลือน้อย หรือกำลังปกป้องข้อมูลหลังเกิดข้อผิดพลาด จากนั้นเลือกวิธีการกู้คืนที่เหมาะสมกับสาเหตุ

ลงทะเบียน SLES 15 กับ SUSE Manager ในเครือข่ายออฟไลน์

ลงทะเบียน SLES 15 กับ SUSE Manager ในเครือข่ายออฟไลน์

เตรียมช่องสัญญาณจำลอง สร้างคีย์การเปิดใช้งาน และบูตสแตรปไคลเอ็นต์ SLES 15 โดยไม่ต้องเข้าถึงอินเทอร์เน็ตโดยตรง ในขณะที่ยังคงรักษาการเชื่อมต่อที่จำเป็นสำหรับการเช็คอินของผู้จัดการไว้

ทำให้การส่งต่อ X11 ของ YaST ใช้งานได้ผ่าน SSH

ทำให้การส่งต่อ X11 ของ YaST ใช้งานได้ผ่าน SSH

แก้ไขข้อผิดพลาดในการเปิดใช้งาน XIO ของ YaST ผ่าน SSH ตรวจสอบการส่งต่อ X11 และ xauth และสลับไปใช้ส่วนติดต่อ ncurses เมื่อไม่จำเป็นต้องใช้หน้าต่างระยะไกล

ย้อนกลับการอัปเดต SLES ที่ล้มเหลวอย่างปลอดภัยด้วย Snapper

ย้อนกลับการอัปเดต SLES ที่ล้มเหลวอย่างปลอดภัยด้วย Snapper

ค้นหาสแนปช็อต Btrfs ก่อนการอัปเดต ทดสอบในโหมดอ่านอย่างเดียว และทำให้การกู้คืนเป็นแบบถาวรด้วย Snapper พร้อมทั้งทำความเข้าใจว่าข้อมูลใดบ้างที่อยู่นอกเหนือการย้อนกลับแบบรูท

การส่งต่อ Syslog ของ SLES อย่างปลอดภัยด้วย rsyslog และ Mutual TLS

การส่งต่อ Syslog ของ SLES อย่างปลอดภัยด้วย rsyslog และ Mutual TLS

ส่งบันทึกระบบ SLES ไปยังตัวเก็บรวบรวม rsyslog ระยะไกลผ่าน TLS ที่มีการตรวจสอบสิทธิ์ พร้อมด้วยการตรวจสอบใบรับรอง การบัฟเฟอร์เมื่อระบบขัดข้อง และการทดสอบการส่งมอบ

ตรวจสอบข้อผิดพลาดเกี่ยวกับหน่วยความจำระหว่างการอัปเกรด SLES ก่อนลองใหม่อีกครั้ง

ตรวจสอบข้อผิดพลาดเกี่ยวกับหน่วยความจำระหว่างการอัปเกรด SLES ก่อนลองใหม่อีกครั้ง

ใช้บันทึก RAM, swap, kernel และ Zypper เพื่อระบุแรงดันหน่วยความจำที่แท้จริง ป้องกันสถานะของแพ็กเกจ และเลือกวิธีการลองอัปเกรด SLES ที่ปลอดภัยยิ่งขึ้น

รักษาการอัปเดตความปลอดภัยของ Debian 12 ให้ทำงานได้บนเซิร์ฟเวอร์แบบไม่มีหน้าจอแสดงผล

รักษาการอัปเดตความปลอดภัยของ Debian 12 ให้ทำงานได้บนเซิร์ฟเวอร์แบบไม่มีหน้าจอแสดงผล

เปิดใช้งานการอัปเดตความปลอดภัยอัตโนมัติของ Debian ผ่าน SSH รักษาแหล่งแพ็กเกจเริ่มต้น และตรวจสอบการทำงานตามกำหนดเวลาผ่านบันทึกของ systemd และ APT

รับการแจ้งเตือน SMART Disk ของ Ubuntu ทางอีเมลด้วย smartd

รับการแจ้งเตือน SMART Disk ของ Ubuntu ทางอีเมลด้วย smartd

เปรียบเทียบตัวเลือกการรับอีเมล ตั้งค่า smartd บน Ubuntu และตรวจสอบว่าคำเตือนเกี่ยวกับสถานะของดิสก์ส่งไปถึงกล่องจดหมายของคุณหรือไม่