Bcachefs 1.33: การวินิจฉัยขั้นสูง เมตริกแบบเรียลไทม์ และการเพิ่มประสิทธิภาพ Btree

ประเด็นสำคัญ:
  • ข้อความแสดงข้อผิดพลาดโดยละเอียด: อธิบายสาเหตุ ประเภท (ร้ายแรง/ไม่ร้ายแรง) และวิธีแก้ไข
  • คำสั่ง bcachefs fs top ตอนนี้แสดงความเร็วในการถ่ายโอนข้อมูลแบบเรียลไทม์แล้ว
  • การรวมโหนด Btree แบบอะซิงโครนัสเพื่อปรับปรุงประสิทธิภาพภายใต้ภาระงานหนัก
  • ตัวเลือกใหม่ mount_trusts_udev และ writeback_timeout
  • ลดจำนวนคำสั่ง goto ในโค้ดลงอย่างมาก (จาก 2500 เหลือ 600) เพื่อเตรียมพร้อมสำหรับการใช้งาน Rust
แบคเชฟ

Bcachefs เป็นระบบไฟล์แบบคัดลอกเมื่อเขียนสำหรับระบบปฏิบัติการที่ใช้ Linux

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

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

"Reconcile": ยุคใหม่สำหรับความสมบูรณ์ของข้อมูล

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

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

การทำความสะอาดโค้ดและการเตรียม Rust

ภายใต้ระบบภายใน เวอร์ชัน 1.33.0 ได้มีการปรับโครงสร้างโค้ดภาษา C ครั้งใหญ่ เพื่อให้มีความปลอดภัยมากขึ้นและเข้ากันได้กับการใช้งานในอนาคต สนิมนักพัฒนาได้ทำการล้างข้อมูลอย่างละเอียด ทำให้จำนวนคำสั่งลดลง goto จาก 2.500 เหลือเพียง 600 ซึ่งช่วยลดความซับซ้อนของลำดับการทำงานของโปรแกรมได้อย่างมาก

นอกจากนี้ ยังมีการเพิ่มมาโครใหม่ๆ เข้ามา เช่น DARRAY() y try()ส่วนประกอบเหล่านี้ได้รับการออกแบบมาเพื่อเลียนแบบพฤติกรรมเวกเตอร์แบบไดนามิกและการจัดการข้อผิดพลาดของ Rust และ C++ ซึ่งไม่เพียงแต่จะปรับปรุงโค้ดปัจจุบันให้ทันสมัยขึ้นเท่านั้น แต่ยังช่วยให้สามารถพอร์ตไปยังแพลตฟอร์มอื่นได้ง่ายขึ้นและลดพื้นที่เสี่ยงต่อข้อผิดพลาดด้านหน่วยความจำในอนาคตอีกด้วย

การวินิจฉัยที่ดีขึ้นและความยืดหยุ่นในการจัดเก็บข้อมูล

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

ความโปร่งใสนี้ครอบคลุมหลายระดับ:

  • ข้อผิดพลาด I/O โดยละเอียด: เมื่อเลเยอร์บล็อกรายงานความล้มเหลว Bcachefs จะส่งรหัสเฉพาะ (เช่น BLK_STS_IOERRซึ่งจะช่วยระบุว่าฮาร์ดดิสก์เป็นสาเหตุของปัญหาหรือไม่
  • ข้อผิดพลาดในการประกอบ: หากอุปกรณ์ใดขาดหายไปในการประกอบแผ่นเสียง ระบบจะระบุอย่างแม่นยำว่าอุปกรณ์ใดขาดหายไป โดยแสดงชื่อและรุ่นตามครั้งล่าสุดที่พบเห็น
  • ข้อจำกัดอัตราข้อผิดพลาด: ขอบเขตของข้อผิดพลาด "อ่อน" (ซอฟต์แวร์) และ "แข็ง" (ฮาร์ดแวร์) ได้ถูกแยกออกจากกัน เพื่อให้แน่ใจว่าข้อผิดพลาดเล็กน้อยจำนวนมากจะไม่บดบังความล้มเหลวที่สำคัญของดิสก์

นอกจากนี้ คำสั่งดังกล่าว bcachefs fs top มีการปรับปรุงแล้ว ตัวนับภายในแสดงความเร็วในการถ่ายโอนข้อมูลแทนที่จะเป็นเพียงตัวเลขคงที่ ทำให้การเชื่อมโยงเหตุการณ์ต่างๆ (เช่น data_update_fail) ส่งผลให้ประสิทธิภาพการทำงานลดลงแบบเรียลไทม์

การปรับปรุงประสิทธิภาพใน Btrees และตัวเลือกการติดตั้งใหม่

ภายใต้ระบบการทำงาน ประสิทธิภาพการทำงานภายใต้ภาระงานหนักได้รับการปรับปรุงให้ดีขึ้นด้วยการเปลี่ยนแปลงในการจัดการ B-tree การรวมโหนดว่างจะเกิดขึ้นแบบอะซิงโครนัส ซึ่งช่วยขจัดปัญหาคอขวดของบัฟเฟอร์การเขียน นอกจากนี้ ยังมีการเพิ่มขั้นตอนการกู้คืนเพิ่มเติมเข้ามาด้วย merge_btree_nodesเพื่อปรับโครงสร้างต้นไม้ด้วยตนเองหากจำเป็น

อีกหนึ่งคุณสมบัติเพิ่มเติมที่ใช้งานได้จริงมากคือ ความสามารถในการบูตระบบไฟล์ด้วยการกำหนดค่า replicas=2 บนแผ่นดิสก์แผ่นเดียววิธีนี้ช่วยให้ผู้ใช้เริ่มต้นใช้งานด้วยไดรฟ์เพียงตัวเดียว โดยรู้ว่าระบบ "ต้อง" มีระบบสำรองข้อมูล เมื่อเชื่อมต่อไดรฟ์ตัวที่สองแล้ว Bcachefs จะทำการจำลองข้อมูลโดยอัตโนมัติโดยไม่ต้องมีการแทรกแซงด้วยตนเองที่ซับซ้อน

สุดท้ายนี้ ควรกล่าวถึงว่าเวอร์ชันใหม่ ซึ่งมีให้ใช้งานแล้วสำหรับระบบปฏิบัติการต่างๆ เช่น Debian, Fedora, Arch Linux และ NixOS นั้น ต้องการเคอร์เนล Linux เวอร์ชัน 6.16 หรือสูงกว่า และถูกแจกจ่ายในสองแพ็กเกจหลัก ได้แก่ โมดูลเคอร์เนล (bcachefs-kernel-dkms) และเครื่องมือสำหรับผู้ใช้ (bcachefs-tools)


เพิ่มเป็นแหล่งข้อมูลที่ต้องการใน Google