9 คะแนน โดย GN⁺ 2024-02-03 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ระบบไฟล์แบบกระจายที่เรียบง่ายและขยายระบบได้ดี
  • มีเป้าหมายเพื่อจัดเก็บไฟล์นับพันล้านไฟล์และให้บริการได้อย่างรวดเร็ว
  • นำแนวคิดจากดีไซน์ 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 ความคิดเห็น

 
GN⁺ 2024-02-03
ความคิดเห็นจาก Hacker News
  • การกล่าวถึง JuiceFS

    • ในคอมเมนต์มีการพูดถึงทางเลือกหลายตัว เช่น Minio, Ceph และ GarageFS
    • อีกทางเลือกหนึ่งที่ยังไม่มีใครพูดถึงคือ JuiceFS
    • มีข้อมูลเปรียบเทียบระหว่าง JuiceFS และ SeaweedFS
  • ประสบการณ์การใช้งาน SeaweedFS

    • มีการใช้ SeaweedFS เพื่อเก็บเอกสาร XML ขนาดกลางหลายพันล้านไฟล์, รูปภาพ thumbnail, ไฟล์ PDF เป็นต้น
    • มันช่วยอุดช่องว่างระหว่างฐานข้อมูลกับระบบไฟล์
    • เอกสารและเครื่องมือปฏิบัติการอาจดูขัด ๆ เล็กน้อยในตอนแรก แต่ฟีเจอร์ครบและทำงานได้ดี
    • สามารถกู้คืนข้อมูลจากไฟดับ, ฮาร์ดแวร์ขัดข้อง และปัญหาอื่น ๆ ได้
    • ผู้ใช้รู้สึกว่าช่องว่างในโลกของโอเพนซอร์ส S3 API blob store นั้นน่าประหลาดใจ
  • ประสบการณ์ด้านลบกับ SeaweedFS

    • มีคนตัดสินใจไม่ใช้ SeaweedFS เพราะ Postgres ไม่สามารถ initialize ได้บน POSIX FS volume ที่ mount ผ่าน CSI driver ของ SeaweedFS
    • ต้องการระบบ SDS ที่ให้ทั้ง POSIX FS แบบสมบูรณ์และ S3 volume, เป็น FOSS และสามารถจัดการ, มอนิเตอร์, ทำ disaster recovery ฯลฯ ได้อย่างมีประสิทธิภาพ
    • ระบบอย่าง Ceph ถูกตัดออกไป ส่วน GarageFS รองรับแค่ S3
  • ความเห็นจากนักพัฒนา SeaweedFS

    • SeaweedFS ถูกสร้างขึ้นบน blob storage ที่อิงจากงานวิจัย Haystack ของ Facebook
    • แม้ฟีเจอร์ทั้งหมดจะยังพัฒนาไม่เสร็จสมบูรณ์ แต่ก็เสนอวิธีเขียนโปรแกรมแบบใหม่ที่เหมาะกับยุคคลาวด์
    • เมื่อต้องการพื้นที่เก็บข้อมูล ก็ทำการจัดสรรพื้นที่และรับ file ID มาใช้เหมือน pointer ที่ชี้ไปยัง memory block
  • กรณีใช้งานของ SeaweedFS

    • มีการใช้ SeaweedFS เพื่อเก็บบันทึกการแข่งขัน multiplayer (replay) มากกว่า 50TB
    • ใช้ฟีเจอร์ expiration ที่มีมาในตัว และไม่พบปัญหาในการใช้งาน การเพิ่มฟีเจอร์ใหม่ หรือการย้ายระบบ
  • ความเห็นเกี่ยวกับ SeaweedFS และ Min.io

    • เมื่อถามถึงประสบการณ์กับโซลูชัน self-hosted แบบ S3 ผู้ใช้ SeaweedFS แนะนำ Min.io ส่วนผู้ใช้ Min.io ก็แนะนำ SeaweedFS
  • ผู้ใช้ SeaweedFS ระยะยาว

    • มีการเก็บอ็อบเจ็กต์ประมาณ 250,000 รายการไว้ใน SeaweedFS โดยหลายส่วนเป็น cold storage ที่อยู่หลัง Cloudflare
    • ผู้ใช้หลงใหลใน Haystack ของ Facebook จึงใช้ SeaweedFS มานาน และมองว่ามันเสถียรมากและมีประสิทธิภาพสูง
  • ประวัติเทคโนโลยีสตอเรจของ Microsoft

    • ในอดีต Microsoft เคยพยายามอุดช่องว่างระหว่างไฟล์กับฐานข้อมูลหลายครั้ง แต่ส่วนใหญ่ล้มเหลว
    • มีการกล่าวถึงความสนใจของ Bill Gates ต่อเทคโนโลยีประเภทนี้ และความผิดหวังของเขา
  • สิ่งที่ควรพิจารณาเมื่อเลือก distributed storage

    • ควรพิจารณาก่อนว่าจำเป็นต้องใช้ distributed storage จริงหรือไม่ และสามารถทำ sharding เองได้หรือเปล่า
    • ต้องดูว่าจำเป็นต้องแก้ไข blob หรือแค่ read/modify/replace ก็เพียงพอ
    • ควรพิจารณาสัดส่วนระหว่างการอ่านและการเขียน
    • ควรพิจารณาความถี่ของการเปลี่ยนแปลง metadata
    • ควรพิจารณาวิธีจัดการการเขียนลงอ็อบเจ็กต์เดียวกันพร้อมกัน
    • ต้องเลือกว่าสิ่งใดสำคัญกว่า ระหว่าง availability, consistency และ speed
    • ควรพิจารณาวิธีการกู้คืนจากความล้มเหลวพร้อมกันใน distributed storage
    • ควรพิจารณาวิธีควบคุมการเข้าถึง
  • การเปรียบเทียบประสิทธิภาพของ SeaweedFS กับ Min.io

    • มีการทดสอบ SeaweedFS และ Min.io เพื่อเก็บข้อมูลเสียงมากกว่า 100TB ลงบน HDD ในราคาประหยัด
    • SeaweedFS ให้ประสิทธิภาพดีกว่าสำหรับกรณีใช้งานนี้