Blog chia sẻ về công nghệ ...
Published on

Kiến trúc hệ thống CubeFS: Giải thích dễ hiểu cho người mới

Authors

🧱 Kiến trúc hệ thống CubeFS

Đây là bài viết chi tiết và dễ hiểu dành cho người mới tìm hiểu CubeFS, trình bày kiến trúc tổng thể và vai trò từng thành phần trong hệ thống.


📑 Mục Lục

  1. Tổng quan hệ thống
  2. Thành phần quản lý tài nguyên (Master)
  3. Hệ thống Metadata
  4. Hệ thống Dữ liệu (Data Subsystem)
  5. Cổng đối tượng (Object Subsystem)
  6. Khái niệm Volume

📦 Tổng quan hệ thống

cubefs-architecture-beginner

CubeFS là một hệ thống lưu trữ phân tán hỗ trợ nhiều giao thức truy cập như:

  • 📁 POSIX (thông qua FUSE mount)
  • 🗃️ HDFS (cho big data)
  • ☁️ S3 (cho object storage)

Các thành phần chính:

  • Resource Management (Master)
  • Metadata Subsystem
  • Data Subsystem (Replica & Erasure Code)
  • Object Subsystem
  • Volume (khái niệm logic cho người dùng)

👑 Resource Management Node (Master)

  • Bao gồm nhiều node master chạy song song
  • Quản lý:
    • Metadata shards (Meta Partition)
    • Data shards
    • Tạo / xóa / cập nhật shards
    • Kiểm tra tình trạng node
    • Duy trì thông tin về Volume

⚙️ Dùng thuật toán Raft để đồng bộ dữ liệu và đảm bảo tính nhất quán. Dữ liệu được lưu vào RocksDB.

✅ Cho phép mở rộng nhiều master để đảm bảo HA (High Availability).


📚 Metadata Subsystem

  • Gồm nhiều Meta Nodemetadata shards (Meta Partition)
  • Mỗi Meta Partition đại diện cho một khoảng inode (Inode Range)
  • Sử dụng Multi-Raft replication

Trong mỗi shard:

  • Có 2 cây B-Tree:
    • inode B-Tree: lưu inode (thông tin file)
    • dentry B-Tree: lưu cấu trúc thư mục

📌 Cần ít nhất 3 Meta Node để đảm bảo HA và quorum hoạt động tốt.

✅ Hỗ trợ mở rộng ngang (horizontal scaling)


💾 Data Subsystem

Chia thành 2 kiểu lưu trữ có thể dùng song song:

1. Replica Subsystem

  • Gồm các DataNode
  • Mỗi node lưu nhiều data shard
  • Một nhóm nhiều DataNode tạo thành replica group
  • Giống như hệ thống lưu trữ dạng nhân bản 3x

2. Erasure Code Subsystem (Blobstore)

  • Gồm các BlobNode
  • Mỗi node chứa một phần data block
  • Tạo thành stripe dùng kỹ thuật mã hóa Erasure Coding
  • Hiệu quả lưu trữ cao hơn so với replica

✅ DataNode và BlobNode đều hỗ trợ scaling ngang.


🪣 Object Subsystem

  • Gồm các ObjectNode
  • Hỗ trợ truy cập chuẩn S3 API
  • Có thể dùng công cụ như:
    • AWS SDK
    • s3cmd
    • MinIO client

✅ Cho phép triển khai CubeFS như một hệ thống object storage hoàn chỉnh.


📦 Volume - Khái niệm logic

  • Là một khối logic gồm metadata và data shard
  • Từ góc nhìn client:
    • Là một hệ thống file (POSIX-like)
    • Có thể mount vào nhiều container/pod
  • Từ góc nhìn S3:
    • Là một bucket (thùng dữ liệu)
  • Volume có thể được truy cập đồng thời bởi nhiều client

✅ Thích hợp dùng cho:

  • Cloud native apps
  • Kubernetes PVC
  • Hệ thống data lake

🎯 CubeFS cung cấp hệ thống lưu trữ phân tán đa năng, dễ mở rộng, phù hợp cho cả block, file và object workload với khả năng tương thích cao (POSIX, HDFS, S3).