- ระบบไฟล์แบบกระจายที่เรียบง่ายและขยายระบบได้ดี
- มีเป้าหมายเพื่อจัดเก็บไฟล์นับพันล้านไฟล์และให้บริการได้อย่างรวดเร็ว
- นำแนวคิดจากดีไซน์ Haystack ของ Facebook และ f4: ระบบจัดเก็บ Warm BLOB ของ Facebook มาพัฒนาใช้งาน
- ที่เก็บ Blob มีการค้นหาดิสก์แบบ O(1) และความสามารถด้าน cloud tiering
- Filer รองรับไดเรกทอรีและคุณสมบัติ POSIX รวมถึง cloud drive, การทำ active-active replication ข้าม DC, Kubernetes, POSIX FUSE mount, S3 API, S3 gateway, Hadoop, WebDAV, การเข้ารหัส, erasure coding และความสามารถอื่น ๆ
ฟีเจอร์
- มีตัวเลือกการทำ replication หลากหลาย เช่น ระดับ replication, การรับรู้ rack และ data center
- ไม่มี single point of failure ด้วยการทำ automatic failover ของ master server
- รองรับการบีบอัด Gzip อัตโนมัติตาม MIME type ของไฟล์
- ทำ compact อัตโนมัติเพื่อกู้คืนพื้นที่ดิสก์หลังการลบหรืออัปเดตข้อมูล
- เพิ่มพื้นที่จัดเก็บรวมได้ด้วยการเพิ่มเซิร์ฟเวอร์
- ไม่มีการ rebalance ข้อมูลเมื่อเพิ่ม/ลบเซิร์ฟเวอร์ โดยจะเกิดขึ้นเมื่อมีคำสั่งจากผู้ดูแลระบบเท่านั้น
- รองรับ image resizing, ETag, Accept-Range, Last-Modified และอื่น ๆ
- รองรับการปรับแต่งโหมด in-memory/leveldb/readonly เพื่อสมดุลด้านหน่วยความจำและประสิทธิภาพ
- มีหลาย storage tier ที่ปรับแต่งได้และการเชื่อมต่อคลาวด์แบบโปร่งใส
- ใช้ rack-aware 10.4 erasure coding สำหรับ warm storage เพื่อลดต้นทุนการจัดเก็บและเพิ่มความพร้อมใช้งาน
ความสามารถของ Filer
- Filer server ให้บริการไดเรกทอรีและไฟล์แบบ "ปกติ" ผ่าน HTTP
- ใช้ file TTL เพื่อหมดอายุทั้ง metadata ของไฟล์และข้อมูลไฟล์จริงโดยอัตโนมัติ
- อ่านและเขียนไฟล์ได้โดยตรงผ่าน filer ที่ mount ด้วย FUSE
- ทำ HA ให้ metadata store ได้ด้วยการ replication ของ Filer storage
- เข้าถึงไฟล์ได้ด้วยเครื่องมือ S3 ผ่าน API ที่เข้ากันได้กับ Amazon S3
- เข้าถึงไฟล์ได้จาก Hadoop/Spark/Flink เป็นต้น ในฐานะ file system ที่เข้ากันได้กับ Hadoop
- จัดเก็บข้อมูลอย่างปลอดภัยด้วย encrypted storage แบบ AES256-GCM
- รองรับการจัดเก็บไฟล์ขนาดใหญ่มากระดับหลายสิบ TB
- รองรับการอ่านและเขียนอย่างรวดเร็วด้วย cloud drive ที่ mount cloud storage เข้ากับ local cluster
Kubernetes
- รองรับ Kubernetes CSI driver และ SeaweedFS operator
ตัวอย่างการใช้งาน Seaweed object storage
- แนะนำพอร์ตเริ่มต้นและวิธีรันของ master node และ volume node
- มีตัวอย่างวิธีเขียน อ่าน และลบไฟล์
- อธิบายการทำ replication แบบ rack-aware และ data center-aware รวมถึงวิธีกำหนด file key ไปยัง data center ที่ต้องการ
สถาปัตยกรรม
- SeaweedFS จัดการ data volume โดยไม่แบ่งไฟล์ออกเป็น chunk
- Master server จัดการเฉพาะ metadata ของ volume ส่วน file metadata จริงจะจัดการโดย volume server
- มีคำอธิบายโดยละเอียดของกระบวนการเขียนและอ่านไฟล์
การเปรียบเทียบกับ file system อื่น
- อธิบายข้อดีของ SeaweedFS เมื่อเทียบกับ HDFS, GlusterFS, Ceph, MooseFS, MinIO และอื่น ๆ
- SeaweedFS ถูกปรับให้เหมาะกับไฟล์ขนาดเล็ก และให้การเข้าถึงไฟล์ที่รวดเร็วด้วยการอ่านดิสก์แบบ O(1)
แผนการพัฒนา
- มีแผนจะเพิ่มเครื่องมือและเอกสารสำหรับการดูแลและขยายระบบให้มากขึ้น
- รองรับการอ่านและเขียนข้อมูลแบบสตรีม
- รองรับข้อมูลแบบมีโครงสร้าง
คู่มือการติดตั้ง
- มีคู่มือการติดตั้งสำหรับผู้ใช้ที่ไม่คุ้นเคยกับ Golang
หัวข้อเกี่ยวกับดิสก์
- อธิบายประสิทธิภาพของฮาร์ดไดรฟ์และ SSD
- SeaweedFS มีโครงสร้างที่เป็นมิตรกับ SSD
เบนช์มาร์ก
- มีผลการทดสอบเบนช์มาร์กบนเครื่องเดียวแบบไม่เป็นทางการและไม่เคร่งครัดทางวิทยาศาสตร์
- แนะนำวิธีรัน mixed benchmark โดยใช้ WARP
ไลเซนส์
- เผยแพร่ภายใต้ Apache License, Version 2.0
ความเห็นของ GN⁺:
- SeaweedFS เป็นระบบไฟล์แบบกระจายที่มุ่งเน้นการจัดการไฟล์ขนาดเล็กอย่างมีประสิทธิภาพและส่งมอบไฟล์ได้อย่างรวดเร็ว จึงเหมาะมากกับบริการเว็บสมัยใหม่ที่ต้องจัดการข้อมูลปริมาณมาก
- มีความยืดหยุ่นจากการรองรับการทำงานร่วมกับ storage และฐานข้อมูลหลากหลายประเภท และสามารถบริหารข้อมูลได้คุ้มค่าด้วยความสามารถด้าน cloud integration
- ในฐานะโครงการโอเพนซอร์สที่ได้รับการสนับสนุนจากชุมชนและพัฒนาอย่างต่อเนื่อง นี่จึงเป็นโครงการที่น่าสนใจในมุมมองทางเทคนิค
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
การกล่าวถึง JuiceFS
ประสบการณ์การใช้งาน SeaweedFS
ประสบการณ์ด้านลบกับ SeaweedFS
ความเห็นจากนักพัฒนา SeaweedFS
กรณีใช้งานของ SeaweedFS
ความเห็นเกี่ยวกับ SeaweedFS และ Min.io
ผู้ใช้ SeaweedFS ระยะยาว
ประวัติเทคโนโลยีสตอเรจของ Microsoft
สิ่งที่ควรพิจารณาเมื่อเลือก distributed storage
การเปรียบเทียบประสิทธิภาพของ SeaweedFS กับ Min.io