Trong Ceph, pool và kiểu dữ liệu (data type) đóng vai trò nền tảng để quyết định cách dữ liệu được lưu trữ, nhân bản và phân phối trong cluster. Hiểu đúng về RADOS, Pool, PGs, Replication, Erasure Coding (EC) sẽ giúp bạn xây dựng một hệ thống Ceph tối ưu, bền vững và hiệu quả về chi phí.
RADOS – Nền tảng lõi của Ceph
Ceph được xây dựng dựa trên RADOS (Reliable Autonomic Distributed Object Store) – một lớp lưu trữ phân tán có khả năng tự động mở rộng, tự phục hồi và không có single point of failure.
-
Dữ liệu trong Ceph không lưu dưới dạng file hay block trực tiếp, mà được chia nhỏ thành object.
-
Mỗi object có một ID duy nhất, chứa data + metadata.
-
Các object này được phân phối vào OSD dựa trên thuật toán CRUSH (Controlled Replication Under Scalable Hashing).
Nhờ RADOS, Ceph có thể lưu trữ nhiều loại dữ liệu (block, file, object) chỉ trên một hạ tầng thống nhất.
Pool trong Ceph
Pool là một tập hợp logic của các object placement groups (PGs), đại diện cho một không gian lưu trữ riêng biệt trong cluster.
-
Khi bạn tạo một pool, Ceph sẽ phân bổ PGs vào các OSD theo CRUSH map.
-
Các pool khác nhau có thể dùng cấu hình replication hoặc erasure coding khác nhau.
-
Thực tế, mỗi ứng dụng (VD: CephFS, RBD, RGW) thường sử dụng nhiều pool để tách biệt dữ liệu.
Ví dụ:
-
RBD có thể dùng pool
rbd. -
RGW có thể dùng pool
default.rgw.data,default.rgw.index. -
CephFS có pool
cephfs_data,cephfs_metadata.
Placement Groups (PGs)
PG (Placement Group) là lớp trung gian giữa object và OSD.
-
Khi một object được tạo, Ceph sẽ băm (hash) object ID → gán vào 1 PG → từ PG ánh xạ tới 1 nhóm OSD.
-
Mỗi PG thường ánh xạ tới 3 OSD (nếu replication size = 3).
Tại sao cần PG?
Nếu ánh xạ object trực tiếp tới OSD thì hệ thống sẽ quá lớn để quản lý. PG giúp:
-
Phân tán dữ liệu đồng đều hơn.
-
Giảm tải khi thêm/xóa OSD (Ceph chỉ cần remap PGs thay vì toàn bộ object).
Số lượng PG cần được tính toán cẩn thận (quá ít → mất cân bằng, quá nhiều → tốn RAM/CPU). Công thức tham khảo:
Replication trong Ceph
Replication là cơ chế lưu nhiều bản copy của dữ liệu để đảm bảo an toàn.
Ví dụ:
-
Nếu
size = 3, mỗi object sẽ được lưu trên 3 OSD khác nhau. -
Khi 1 OSD hỏng, dữ liệu vẫn tồn tại ở 2 OSD khác và Ceph sẽ tự động phục hồi (recovery).
Ưu điểm:
-
Đơn giản, tốc độ đọc/ghi nhanh.
-
Đảm bảo tính toàn vẹn dữ liệu.
Nhược điểm:
-
Tốn dung lượng lưu trữ (Replication 3x → 1TB dữ liệu thực chiếm 3TB).
Erasure Coding (EC) trong Ceph
Erasure Coding (EC) là phương pháp lưu trữ tiết kiệm dung lượng hơn so với replication.
-
Dữ liệu được chia thành
kphần (data chunks). -
Thêm
mphần (coding chunks) → tổng cộngk+mchunks. -
Ceph chỉ cần
kchunks để khôi phục dữ liệu.
Ví dụ: EC(4,2):
-
4 chunk dữ liệu, 2 chunk parity → lưu trên 6 OSD.
-
Nếu mất 2 OSD, dữ liệu vẫn khôi phục được.
-
Dung lượng overhead = 6/4 = 1.5x (tiết kiệm hơn replication 3x).
Ưu điểm:
-
Tiết kiệm dung lượng (hệ số overhead thấp).
-
Phù hợp cho dữ liệu dung lượng lớn, ít thay đổi (backup, archive).
Nhược điểm:
-
Hiệu năng ghi thấp hơn replication (cần tính toán parity).
-
Không phù hợp cho workload cần tốc độ cao (VD: database, VM disk).
So sánh Replication vs Erasure Coding
| Tiêu chí | Replication | Erasure Coding |
|---|---|---|
| Dung lượng overhead | Cao (3x) | Thấp (1.5x – 2x) |
| Hiệu năng | Nhanh | Chậm hơn |
| Độ phức tạp | Đơn giản | Phức tạp hơn |
| Ứng dụng | Database, VM | Backup, archive, object store |
Pool tiering – Hot & Cold Storage
Ceph hỗ trợ tiering để tối ưu chi phí:
-
Hot Pool: replication trên SSD/NVMe (cho workload cần tốc độ cao).
-
Cold Pool: erasure coding trên HDD (cho dữ liệu ít truy cập).
-
Có thể kết hợp chính sách tự động move dữ liệu từ hot → cold dựa trên thời gian.
✅ Như vậy, Pool + PG + Replication + EC chính là những thành phần cốt lõi giúp Ceph trở thành hệ thống lưu trữ mạnh mẽ, cân bằng giữa hiệu năng – chi phí – độ bền vững dữ liệu.
