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

หากระบบไฟล์ Btrfs ของ SUSE Linux Enterprise รายงานว่า “ระบบไฟล์อ่านอย่างเดียว” ให้ตรวจสอบก่อนว่าระบบไฟล์นั้นถูกเมานต์ในโหมดอ่านอย่างเดียวโดยตั้งใจ หรือเปลี่ยนเป็นโหมดอ่านอย่างเดียวหลังจากเกิดข้อผิดพลาด ตรวจสอบตัวเลือกการเมานต์ พื้นที่ว่าง และบันทึกเคอร์เนลก่อนที่จะพยายามเมานต์ใหม่ ใช้ Snapper rollback เพื่อสร้างสแนปช็อตของระบบที่สามารถบูตได้ หาก Btrfs บันทึกข้อผิดพลาด I/O หรือเมตาเดตา ให้ปกป้องข้อมูลและวินิจฉัยเส้นทางการจัดเก็บข้อมูลก่อนที่จะเขียนลงในระบบไฟล์อีกครั้ง

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

1. แยกแยะการเมานต์แบบอ่านอย่างเดียวโดยเจตนาออกจากข้อผิดพลาดของระบบไฟล์

แทนที่/dataด้วยจุดเชื่อมต่อที่ได้รับผลกระทบ หรือ/สำหรับ root

findmnt -T /data -o SOURCE,FSTYPE,OPTIONS
sudo btrfs filesystem show /data

ในคำสั่งแรก ให้มองหาroหรือrwในตัวเลือก สแนปช็อต Snapper แบบอ่านอย่างเดียวคาดว่าจะปฏิเสธการเขียน การเมานต์ที่กำหนดค่าด้วยroใน/etc/fstabอาจเป็นไปโดยเจตนาเช่นกัน Btrfs ยังสามารถเปลี่ยนเป็นแบบอ่านอย่างเดียวหลังจากเกิดข้อผิดพลาดร้ายแรงในการทำธุรกรรม เมตาเดต้า หรืออุปกรณ์ ในกรณีนั้น การเรียกใช้ซ้ำๆmount -o remount,rwจะไม่สามารถแก้ไขสาเหตุได้และอาจล้มเหลวทันที

หากระบบไฟล์ถูกเมานต์ในโหมดอ่านอย่างเดียวโดยเจตนา อุปกรณ์อยู่ในสภาพสมบูรณ์ และบันทึกเคอร์เนลไม่มีข้อผิดพลาดเกี่ยวกับ Btrfs หรือ I/O การเมานต์ข้อมูลตามปกติสามารถทำได้ในโหมดอ่านเขียน:

sudo mount -o remount,rw /data
findmnt -T /data -o TARGET,OPTIONS

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

2. ตรวจสอบว่าแรงดันในอวกาศเป็นปัญหาที่แท้จริงหรือไม่

ตัวอย่างเทอร์มินัลเปรียบเทียบพื้นที่ว่างทั่วไปกับพื้นที่ที่จัดสรรและไม่ได้จัดสรรในระบบไฟล์ Btrfs
เปรียบเทียบพื้นที่ว่างในระบบไฟล์กับรายละเอียดการจัดสรรของ Btrfs ค่าตัวอย่างเป็นเพียงภาพประกอบเท่านั้น

ระบบไฟล์ Btrfs อาจมีพื้นที่ไม่เพียงพอแม้ว่าการตรวจสอบพื้นที่ดิสก์แบบพื้นฐานจะดูปกติดีก็ตาม เนื่องจากระบบจะติดตามการจัดสรรข้อมูลและเมตาเดต้าแยกกัน ตรวจสอบทั้งพื้นที่ว่างปกติและการใช้งาน Btrfs:

df -hT /data
sudo btrfs filesystem usage -T /data

หากระบบรายงานNo space left on deviceและบันทึกเคอร์เนลไม่แสดงความล้มเหลวของอุปกรณ์หรือข้อผิดพลาดเชิงโครงสร้าง ให้ตรวจสอบการใช้งาน Snapper ก่อนที่จะลบสิ่งใดๆ:

sudo snapper list

ลบเฉพาะสแนปช็อตที่นโยบายการเก็บรักษาอนุญาตให้คุณลบได้ โดยใช้sudo snapper delete SNAPSHOT_IDสำหรับแต่ละ ID ที่เลือก เก็บสแนปช็อตก่อนการอัปเดตที่ใช้งานได้ดีไว้หากคุณต้องการตัวเลือกการย้อนกลับ การลบสแนปช็อตจะกู้คืนพื้นที่ได้ แต่จะลบจุดกู้คืนออกไป การล้างข้อมูลอาจไม่คืนพื้นที่ทันที และสแนปช็อตจะไม่แก้ไขข้อผิดพลาด I/O อย่าเรียกใช้การปรับสมดุลเพื่อบังคับให้ระบบไฟล์แบบอ่านอย่างเดียวสามารถเขียนได้ เพราะมันจะย้ายข้อมูลและมีจุดประสงค์เพื่อแก้ไขปัญหาการจัดสรรที่ได้รับการวินิจฉัยแล้วบนระบบไฟล์ที่เขียนได้และใช้งานได้ปกติ

3. อ่านบันทึกเคอร์เนลก่อนเลือกวิธีการซ่อมแซม

ตัวอย่างเทอร์มินัลที่แสดงข้อความแสดงข้อผิดพลาดเกี่ยวกับ Btrfs และการรับส่งข้อมูล I/O ของอุปกรณ์บล็อกในบันทึกของเคอร์เนล
ข้อความจากเคอร์เนลสามารถแยกแยะความแตกต่างระหว่างปัญหาพื้นที่ไม่เพียงพอ ปัญหาการอ่าน การตรวจสอบผลรวม หรือข้อผิดพลาดของอุปกรณ์ได้ บรรทัดที่แสดงเป็นเพียงตัวอย่าง

มองหาข้อผิดพลาดแรกของ Btrfs, อุปกรณ์บล็อก, ตัวควบคุม หรือการขนส่ง ไม่ใช่แค่ข้อความสุดท้ายที่ระบุว่าระบบไฟล์กลายเป็นโหมดอ่านอย่างเดียว:

sudo journalctl -k -b --no-pager | grep -Ei 'btrfs|I/O error|nvme|ata|scsi'

ข้อความเกี่ยวกับการอ่านล้มเหลว ความไม่ตรงกันของค่าตรวจสอบความถูกต้อง อุปกรณ์หายไป หรือข้อผิดพลาด I/O บ่งชี้ถึงปัญหาที่แตกต่างจากroตัวเลือกการเมานต์แบบง่ายๆ ตรวจสอบดิสก์ คอนโทรลเลอร์ RAID/HBA SAN หรือเลเยอร์ดิสก์เสมือน และข้อมูลสถานะของผู้ผลิตที่รายงาน แก้ไขปัญหาฮาร์ดแวร์หรือการเชื่อมต่อที่ไม่เสถียรก่อน หากข้อมูลมีความสำคัญ ให้ลดการเขียนให้น้อยที่สุดและจัดเตรียมการสำรองข้อมูลหรืออิมเมจระดับบล็อกกับผู้ดูแลระบบก่อนที่จะพยายามซ่อมแซมระบบไฟล์

4. เลือกวิธีการรักษาที่มีความเสี่ยงน้อยที่สุดที่สอดคล้องกับหลักฐาน

สิ่งที่คุณพบการดำเนินการถัดไปการแลกเปลี่ยน
roได้รับการกำหนดค่าแล้ว หรือการเมานต์ถูกตั้งใจให้เป็นแบบอ่านอย่างเดียว ไม่มีข้อผิดพลาดของเคอร์เนลที่เกี่ยวข้องแก้ไขการตั้งค่าการเมานต์หากไม่ถูกต้อง หรือเมานต์ซับวอลุ่มที่เขียนได้ตามปกติอีกครั้งหลังจากตรวจสอบแล้วว่าอุปกรณ์อยู่ในสภาพสมบูรณ์แม้จะรวดเร็ว แต่การเมานต์ใหม่ไม่สามารถล้างสถานะอ่านอย่างเดียวที่เกิดจากข้อผิดพลาด หรือทำให้สแนปช็อตแบบอ่านอย่างเดียวสามารถเขียนได้
การสร้างสแนปช็อตรูทที่สามารถบูตได้นั้นใช้งานได้ และปัญหาดังกล่าวเกิดขึ้นหลังจากการเปลี่ยนแปลงระบบบูตเครื่องและทดสอบสแนปช็อต จากนั้นเรียกใช้งานsudo snapper rollbackและรีบูตเครื่องเพื่อกลับไปยังค่าเริ่มต้นกู้คืนซับโวลุ่มรูทให้กลับสู่สถานะสแนปช็อต ข้อมูลในซับโวลุ่มที่ถูกยกเว้นหรือแยกต่างหากจะไม่ถูกย้อนกลับ SLES 15 SP7 รองรับการย้อนกลับนี้เฉพาะกับโครงสร้างซับโวลุ่มรูทเริ่มต้นและระบบไฟล์รูทแบบอุปกรณ์เดียวเท่านั้น
บันทึกเคอร์เนลประกอบด้วยข้อผิดพลาด I/O ของหน่วยเก็บข้อมูลหรือข้อผิดพลาดโครงสร้างของ Btrfsรักษาเสถียรภาพการจัดเก็บข้อมูลและปกป้องข้อมูล ใช้สภาพแวดล้อมการกู้คืนและยกระดับสิทธิ์เพื่อการกู้คืนเฉพาะระบบไฟล์ช้ากว่า แต่ช่วยหลีกเลี่ยงการซ่อนปัญหาฮาร์ดแวร์ที่ยังแก้ไม่ตกด้วยการติดตั้งใหม่แบบเขียนได้
มีการรายงานเพียงว่าพื้นที่จัดเก็บข้อมูลหมดเท่านั้น ไม่มีข้อผิดพลาดในการจัดเก็บข้อมูลตรวจสอบระยะเวลาการเก็บรักษาข้อมูลของ Snapper และจำนวนสแนปช็อตหรือข้อมูลที่ได้รับอนุญาตฟรี จากนั้นตรวจสอบการใช้งาน Btrfs อีกครั้งเพิ่มพื้นที่จัดเก็บข้อมูลโดยแลกกับการสูญเสียจุดกู้คืนหรือไฟล์ที่เลือกไว้
ตัวอย่างเมนูบูตที่มีการไฮไลต์รายการเก่าในรายการสแนปช็อตที่สามารถบูตได้
เลือกสแนปช็อตจากช่วงเวลาก่อนเกิดข้อผิดพลาด ตรวจสอบการบูตทดสอบแบบอ่านอย่างเดียว จากนั้นทำการย้อนกลับด้วย Snapper หากวิธีนี้ช่วยแก้ปัญหาได้

บน SLES สแนปช็อตที่สามารถบูตได้จะใช้การกำหนดค่ารูท Snapper ตามค่าเริ่มต้น รูทต้องเป็น Btrfs บนอุปกรณ์หนึ่งตัว บูตโหลดเดอร์ต้องรองรับ และจะย้อนกลับเฉพาะซับโวลุ่มรูทเท่านั้น ตรวจสอบตัวเลือกก่อนที่จะยืนยัน หากไม่เหมาะสม ให้รีบูตไปยังระบบปัจจุบันหรือสภาพแวดล้อมกู้คืน ดู ขั้นตอนการย้อนกลับ Snapper ใน SLES 15 SP7

เมื่อใดจึงเหมาะสมที่จะทำการตรวจสอบแบบออฟไลน์หรือทำการคัดกรองข้อมูล

หากระบบไฟล์ไม่สามารถเมานต์ได้ หรือข้อความจากเคอร์เนลบ่งชี้ถึงความเสียหายทางโครงสร้าง ให้บูตระบบกู้คืน SLES หรือสภาพแวดล้อมการกู้คืนที่เหมาะสมอื่นๆ ระบุอุปกรณ์ที่ถูกต้อง และตรวจสอบให้แน่ใจว่าได้ยกเลิกการเมานต์อุปกรณ์นั้นแล้ว ก่อนที่จะเรียกใช้การตรวจสอบแบบอ่านอย่างเดียวตามค่าเริ่มต้น:

sudo btrfs check /dev/DEVICE

ใช้บล็อกอุปกรณ์ Btrfs จริง ไม่ใช่ตัวยึดตำแหน่งจุดเชื่อมต่อ การตรวจสอบอาจใช้เวลานานและใช้หน่วยความจำมาก และจะรายงานเฉพาะข้อบกพร่องเชิงโครงสร้างเท่านั้น การตรวจสอบนี้ไม่รับประกันว่าจะซ่อมแซมได้ อย่าเพิ่ม--repairเป็นขั้นตอนถัดไปตามปกติ เอกสาร Btrfs เตือนว่าการซ่อมแซมอาจทำให้สถานการณ์แย่ลง และควรใช้ภายใต้คำแนะนำของผู้เชี่ยวชาญหลังจากยอมรับความเสี่ยงด้านข้อมูลแล้วเท่านั้น โปรดติดต่อฝ่ายสนับสนุนของ SUSE หรือผู้เชี่ยวชาญด้าน Btrfs เมื่อการตรวจสอบรายงานข้อผิดพลาดหรืออุปกรณ์มีข้อบกพร่องด้าน I/O

หลังจากที่ระบบจัดเก็บข้อมูลเสถียรและติดตั้งระบบไฟล์แบบอ่านเขียนแล้วsudo btrfs scrub start -B /dataสามารถตรวจสอบค่าตรวจสอบความถูกต้อง (checksum) ได้ Scrub ไม่ใช่โปรแกรมตรวจสอบโครงสร้าง มันสามารถซ่อมแซมความเสียหายได้จากสำเนาสำรองที่ใช้งานได้ดีเท่านั้น ในระบบที่มีสำเนาเดียว มันจะตรวจจับข้อผิดพลาดได้ แต่ไม่สามารถกู้คืนข้อมูลที่สูญหายได้ โปรดอ่านเอกสารประกอบการใช้งาน Btrfs scrubนอกจากนี้ โปรดดูคู่มือระบบไฟล์ SLES 15 SP7 ของ SUSE บทความเกี่ยวกับการกู้คืน Btrfs ของ SUSEและคู่มือการตรวจสอบ Btrfsด้วย

ตรวจสอบผลลัพธ์

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

findmnt -T /data -o TARGET,SOURCE,FSTYPE,OPTIONS
sudo touch /data/.rw-check && sudo rm /data/.rw-check

สำหรับการย้อนกลับสแนปช็อตหลัก ให้รีบูตเครื่องก่อนและตรวจสอบให้แน่ใจว่าระบบเริ่มต้นทำงานตามปกติ จากนั้นตรวจสอบบันทึกเคอร์เนลใหม่เพื่อหาข้อผิดพลาด Btrfs หรือข้อผิดพลาดของอุปกรณ์ที่เกิดขึ้นซ้ำๆ สถานะการอ่าน-เขียนเพียงอย่างเดียวไม่ได้หมายความว่าระบบทำงานได้อย่างสมบูรณ์ หากเกิดข้อผิดพลาดซ้ำ ให้หยุดการเขียนและกลับไปที่การวินิจฉัยระบบจัดเก็บข้อมูล

ฝากความเห็น

เมื่อ 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 และตรวจสอบว่าคำเตือนเกี่ยวกับสถานะของดิสก์ส่งไปถึงกล่องจดหมายของคุณหรือไม่

ข้อผิดพลาดในการค้นหา DNS ของ Debian 12: ซ่อมแซม systemd-resolved

ข้อผิดพลาดในการค้นหา DNS ของ Debian 12: ซ่อมแซม systemd-resolved

กู้คืนการค้นหา DNS บน Debian 12 โดยตรวจสอบ systemd-resolved ซ่อมแซม resolv.conf เมื่อจำเป็น และตรวจสอบการแก้ไข DNS ต้นทางและการแก้ไขแอปพลิเคชัน

Ubuntu 24.04 ไม่แสดงเสียง HDMI ใช่ไหม? กู้คืนเอาต์พุต

Ubuntu 24.04 ไม่แสดงเสียง HDMI ใช่ไหม? กู้คืนเอาต์พุต

ตั้งค่า Ubuntu ให้ตรวจจับจอภาพหรือทีวีของคุณเป็นอุปกรณ์ส่งสัญญาณเสียง เลือกอุปกรณ์นั้นในการตั้งค่าเสียง และตรวจสอบการเชื่อมต่อหรือรายการอุปกรณ์ PipeWire หากไม่มี HDMI