13 คะแนน โดย xguru 2023-09-22 | 4 ความคิดเห็น | แชร์ทาง WhatsApp
  • FUSE ช่วยให้เขียนไดรเวอร์ไฟล์ซิสเต็มได้โดยไม่ต้องมีเคอร์เนลโมดูล
    • มีไคลเอนต์ไฟล์ซิสเต็มหลากหลายแบบใช้งาน เช่น NTFS, SFTP, S3
    • ยังสามารถสร้างสิ่งที่ไม่ใช่ไฟล์ซิสเต็มจริง ๆ ได้ด้วย เช่น WikipediaFS
  • แต่ FUSE ไม่ค่อยสะดวกต่อการพัฒนา
    • ต้องเลือกจาก 2 API: Low-Level และ High-Level
    • มี API 2 เวอร์ชันที่เข้ากันไม่ได้: libfuse2 และ libfuse3
    • API เปลี่ยนไปเรื่อย ๆ ทีละนิด (FUSE_USE_VERSION)
    • บน Mac และ Windows ไม่ได้เป็นเนทีฟ ต้องติดตั้งไดรเวอร์จากภายนอกอย่าง MacFuse, WinFuse ก่อนเท่านั้น
  • เรา (XetHub) ต้องการให้เข้าถึงเวอร์ชันต่าง ๆ ของชุดข้อมูลภาพได้สะดวกจากโน้ตบุ๊กส่วนตัว โดยไม่ต้องใช้คำสั่ง S3
  • จากคำถามว่า "จะสร้างไฟล์ซิสเต็มใน userspace ที่เป็น cross-platform อย่างแท้จริงได้ไหม?" จึงมาลงเอยที่ NFSv3

NFS

  • NFSv3 เป็นโปรโตคอลไฟล์ซิสเต็มผ่านเครือข่ายที่มีอายุกว่า 20 ปี ซึ่งเรียบง่ายและแพร่หลายมาก จนแทบทุกระบบปฏิบัติการมีการติดตั้งมาให้โดยพื้นฐาน
  • หลักการออกแบบที่เรียบง่ายและสวยงาม
    • เซิร์ฟเวอร์เป็นแบบ stateless อย่างสมบูรณ์
    • เซิร์ฟเวอร์ NFS ฉลาดน้อย ส่วนไคลเอนต์ NFS ฉลาดมาก
    • มีกฎเรื่องความสอดคล้องของแคชที่เรียบง่าย (เซิร์ฟเวอร์ไม่กำหนดนโยบายแคช ส่วนไคลเอนต์จัดการได้ตามต้องการ)
    • ไคลเอนต์ NFS รับรู้อยู่แล้วว่ากำลังสื่อสารข้ามเครือข่าย
    • ในทางปฏิบัติให้ประสิทธิภาพที่ยอดเยี่ยมมาก
  • สรุปคือ หากใช้ local host NFS แทน FUSE เพื่อสร้างไฟล์ซิสเต็มใน user mode ก็จะได้ทั้งประสิทธิภาพและความทนทาน (resiliency) ได้ง่ายกว่า
  • เมื่อทำโปรโตคอลฝั่งเซิร์ฟเวอร์เพียงครั้งเดียว ก็สามารถใช้ประโยชน์จากระบบแคชเดิมและความสามารถที่ผ่านการปรับปรุงมานาน 20 ปีได้ทันที

วิธีที่ XetHub ใช้ NFS

  • พัฒนาอิมพลีเมนเทชันไฟล์ซิสเต็มใน user mode แบบเนทีฟข้ามแพลตฟอร์ม
  • เมานต์ชุดข้อมูลขนาดใหญ่บนเครื่องผู้ใช้ได้โดยไม่ต้องมีเคอร์เนลไดรเวอร์
    • เช่น เมานต์โมเดล Llama 2 ขนาด 660GB หรือวิเคราะห์ไฟล์ Parquet ขนาดใหญ่ด้วย DuckDB query
  • รองรับ Linux, Mac และ Windows Pro ขึ้นไป (Windows Home ใช้งานไม่ได้)
  • เปิดซอร์สบน GitHub แล้วสำหรับ nfsserve ซึ่งเป็นเซิร์ฟเวอร์ NFS ที่พัฒนาด้วย Rust
  • ประสิทธิภาพการอ่านค่อนข้างดี ส่วนการเขียนใช้งานได้แล้ว แต่ยังต้องปรับแต่งเพิ่มเติม

4 ความคิดเห็น

 
ntpd3300 2023-09-22

ต่างจากชื่อเรื่อง แต่กลับไม่ได้บอกไว้เลยว่าจริงๆ แล้วทำไมถึงเขียนด้วย Rust

 
botplaysdice 2023-09-23

ประเด็นหลักของต้นฉบับคือเหตุผลที่พวกเขาพัฒนาเซิร์ฟเวอร์ NFS ของตัวเองขึ้นมา...... แต่ดูเหมือนว่าจะใส่ไว้ในชื่อเรื่องเพราะพลาดคีย์เวิร์ดยอดนิยมอย่าง Rust ไปไม่ได้ :-)

 
blueprajna 2023-09-22

ดูเหมือนว่าเนื้อหาต้นฉบับไม่ได้พูดถึงเหตุผลที่เขียนด้วย Rust แต่เป็นเรื่องว่าทำไมถึงเลือก NFS แทน FUSE มากกว่านะครับ

 
xguru 2023-09-22

อ๊ะ พอมาคิดดูแล้วก็ไม่มีอะไรนอกจากบอกว่าเร็วเพราะเป็น Rust สินะ ผมสรุปไปแบบไม่ได้คิดเลย