การส่งเสริม Bcachefs เป็น Linux Kernel

Kent Overstreet ผู้เขียนระบบแคชอุปกรณ์บล็อก BCache SSD ซึ่งเป็นส่วนหนึ่งของเคอร์เนล Linux ได้สรุปผลงานการส่งเสริมระบบไฟล์ Bcachefs ในสุนทรพจน์ของเขาที่การประชุม LSFMM 2023 (Linux Storage, Filesystem, Memory Management & การประชุมสุดยอด BPF) เป็นองค์ประกอบหลักของเคอร์เนล Linux และพูดถึงแผนการพัฒนาต่อไปของ FS นี้ ในเดือนพฤษภาคม มีการเสนอชุดแพตช์ที่อัปเดตพร้อมการใช้งาน Bcachefs FS เพื่อตรวจสอบและรวมไว้ในองค์ประกอบหลักของเคอร์เนล Linux FS Bcachefs ได้รับการพัฒนามาประมาณ 10 ปีแล้ว ความพร้อมในการตรวจสอบการใช้งาน Bcachefs ก่อนที่จะรวมไว้ในแกนหลักได้รับการประกาศเมื่อสิ้นปี 2020 และแพทช์เวอร์ชันปัจจุบันจะคำนึงถึงความคิดเห็นและข้อบกพร่องที่ระบุระหว่างการตรวจสอบครั้งก่อน

เป้าหมายการพัฒนา Bcachefs คือการไปให้ถึงระดับ XFS ในด้านประสิทธิภาพ ความน่าเชื่อถือ และความสามารถในการปรับขนาด ในขณะที่ให้คุณสมบัติเพิ่มเติมที่มีอยู่ใน Btrfs และ ZFS เช่น การรวมอุปกรณ์หลายชิ้นในพาร์ติชัน เค้าโครงพื้นที่เก็บข้อมูลหลายชั้น การจำลองแบบ (RAID 1/10) การแคช, การบีบอัดข้อมูลแบบโปร่งใส (โหมด LZ4, gzip และ ZSTD), การแบ่งส่วนสถานะ (สแน็ปช็อต), การตรวจสอบความถูกต้องโดย checksums, ความสามารถในการจัดเก็บรหัสแก้ไขข้อผิดพลาด Reed-Solomon (RAID 5/6), การจัดเก็บข้อมูลที่เข้ารหัส (ChaCha20 และ Poly1305 มาใช้) ในแง่ของประสิทธิภาพ Bcachefs นำหน้า Btrfs และระบบไฟล์อื่นๆ ที่ใช้กลไก Copy-on-Write และแสดงประสิทธิภาพใกล้เคียงกับ Ext4 และ XFS

จากความสำเร็จล่าสุดในการพัฒนา Bcachefs ความเสถียรของการใช้งานสแน็ปช็อตที่มีให้สำหรับการเขียนนั้นถูกบันทึกไว้ เมื่อเทียบกับ Btrfs ตอนนี้ สแน็ปช็อตใน Bcachefs ปรับขนาดได้ดีกว่ามากและปราศจากปัญหาที่มีอยู่ใน Btrfs ในทางปฏิบัติ มีการทดสอบการทำงานของสแน็ปช็อตเมื่อจัดระเบียบการสำรองข้อมูล MySQL นอกจากนี้ Bcachefs ยังทำงานหลายอย่างเพื่อปรับปรุงความสามารถในการขยายขนาด ระบบไฟล์ทำงานได้ดีในการทดสอบพื้นที่จัดเก็บ 100 TB และคาดว่า Bcachefs จะถูกนำไปใช้ในพื้นที่จัดเก็บ 1 PB ในอนาคตอันใกล้นี้ เพิ่มโหมด nocow ใหม่เพื่อปิดใช้งานกลไก "copy-on-write" (nocow) ในช่วงฤดูร้อน พวกเขาวางแผนที่จะนำโค้ดแก้ไขข้อผิดพลาดและ RAIDZ ไปใช้ในสถานะเสถียร ตลอดจนแก้ปัญหาการใช้หน่วยความจำสูงเมื่อกู้คืนและตรวจสอบระบบไฟล์ด้วยยูทิลิตี้ fsck

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

สำหรับการย้าย Bcachefs เข้าสู่กระแสหลักของเคอร์เนล Linux กระบวนการยอมรับอาจล่าช้าเนื่องจากการเปลี่ยนแปลงขนาดใหญ่ (แพตช์ 2500 รายการและโค้ดประมาณ 90 บรรทัด) ซึ่งตรวจสอบได้ยาก เพื่อเพิ่มความรวดเร็วในการตรวจสอบ ผู้พัฒนาบางรายได้แนะนำให้แยกซีรีส์แพตช์ออกเป็นส่วนย่อยๆ และแยกตามเหตุผล ในระหว่างการสนทนา ผู้เข้าร่วมบางคนยังดึงความสนใจไปที่การพัฒนาโครงการโดยนักพัฒนารายหนึ่ง และอันตรายที่โค้ดอาจถูกทิ้งไว้โดยไม่ได้รับการดูแลหากมีบางอย่างเกิดขึ้นกับผู้พัฒนา (พนักงาน Red Hat สองคนสนใจในโครงการ แต่งานของพวกเขายังคงอยู่ การแก้ไขข้อบกพร่องที่จำกัด)

Bcachefs ได้รับการพัฒนาโดยใช้เทคโนโลยีที่ทดสอบแล้วในการพัฒนาอุปกรณ์บล็อก Bcache ซึ่งออกแบบมาเพื่อแคชการเข้าถึงฮาร์ดไดรฟ์ที่ช้าบน SSD ที่รวดเร็ว (รวมอยู่ในเคอร์เนลตั้งแต่รีลีส 3.10) Bcachefs ใช้กลไก Copy-on-Write (COW) ซึ่งการเปลี่ยนแปลงจะไม่นำไปสู่การเขียนทับข้อมูล - สถานะใหม่จะถูกเขียนไปยังตำแหน่งใหม่ หลังจากนั้นตัวบ่งชี้สถานะปัจจุบันจะเปลี่ยนไป

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

ที่มา: opennet.ru

เพิ่มความคิดเห็น