Ceph là gì? Ceph là một nền tảng lưu trữ phân tán mã nguồn mở, được thiết kế để xây dựng hệ thống storage có khả năng mở rộng theo chiều ngang, chịu lỗi và không phụ thuộc vào một thiết bị lưu trữ trung tâm.
Ceph được sử dụng rộng rãi trong Cloud Computing, OpenStack, Kubernetes, Private Cloud, VPS, Object Storage, Block Storage và Distributed Storage. Thay vì xây dựng một hệ thống lưu trữ tập trung với một storage controller duy nhất, Ceph gom nhiều máy chủ và nhiều ổ đĩa thành một storage cluster thống nhất.
Điểm đặc biệt của Ceph là dữ liệu được phân phối tự động trên nhiều OSD thông qua thuật toán CRUSH, giúp hệ thống có thể mở rộng bằng cách thêm node hoặc thêm disk mà không cần thay đổi kiến trúc tổng thể. CRUSH cũng cho phép xây dựng các chính sách phân bổ dữ liệu theo failure domain như host, rack hoặc datacenter.
DataOnline cung cấp dịch vụ VPS sử dụng OpenStack + CEPH. Quý khách tham khảo bảng giá dịch vụ cho thuê VPS (Giá từ 25k)
Bài viết này sẽ giúp bạn hiểu rõ:
- Ceph là gì?
- Ceph hoạt động như thế nào?
- Kiến trúc Ceph gồm những thành phần nào?
- RADOS, OSD, MON, MGR, MDS là gì?
- Ceph cung cấp những loại storage nào?
- Ceph khác gì SAN, NAS và Storage truyền thống?
- Ưu nhược điểm của Ceph.
- Ceph phù hợp với Cloud VPS và OpenStack như thế nào?
- Replication và Erasure Coding trong Ceph.
- Ceph cần bao nhiêu server?
- Cấu hình phần cứng và network cho Ceph.
- Những vấn đề cần lưu ý khi triển khai Ceph production.
Ceph là gì?
Ceph là một hệ thống lưu trữ phân tán mã nguồn mở (open source distributed storage system).
Thay vì sử dụng một storage server duy nhất, Ceph sử dụng nhiều server kết hợp với nhau để tạo thành một storage cluster.
Ví dụ một hệ thống đơn giản:
Ceph Cluster
+---------------------------+
| Ceph Cluster |
+---------------------------+
| | |
+-----+ +-----+ +-----+
|Node1| |Node2| |Node3|
+-----+ +-----+ +-----+
| | | | | |
SSD SSD SSD
HDD NVMe NVMe
Các server trong cluster cùng tham gia cung cấp tài nguyên lưu trữ.
Khi thêm server:
3 Nodes
↓
5 Nodes
↓
10 Nodes
↓
20 Nodes
dung lượng và khả năng xử lý của cluster có thể được mở rộng theo chiều ngang.
Đây là một trong những lý do Ceph được sử dụng nhiều trong các hệ thống Cloud Storage và Private Cloud.
Ceph hoạt động như thế nào?
Kiến trúc Ceph dựa trên một lớp lưu trữ đối tượng phân tán có tên RADOS – Reliable Autonomic Distributed Object Store.
RADOS là nền tảng bên dưới để các thành phần storage của Ceph hoạt động.
Có thể hình dung:
Application
|
+--------------+--------------+
| | |
RBD CephFS RGW
Block Device File System Object Storage
| | |
+--------------+--------------+
|
RADOS
|
+----------+----------+
| |
OSD MON/MGR
|
+------+------+------+
| | | |
Disk Disk Disk Disk
Trong đó:
- RADOS là nền tảng storage.
- RBD cung cấp Block Storage.
- CephFS cung cấp File Storage.
- RGW cung cấp Object Storage tương thích S3/Swift.
- OSD chịu trách nhiệm lưu trữ dữ liệu.
- MON quản lý trạng thái và membership của cluster.
- MGR cung cấp chức năng quản lý và monitoring.
- MDS quản lý metadata cho CephFS.
Ceph có những loại Storage nào?
Một ưu điểm lớn của Ceph là một cluster có thể cung cấp nhiều mô hình storage khác nhau.
Ba giao diện quan trọng nhất là:
Ceph Object Storage
Thông qua Ceph RGW (RADOS Gateway).
Ceph Block Storage
Thông qua RBD (RADOS Block Device).
Ceph File System
Thông qua CephFS.
Nhờ đó, một Ceph cluster có thể phục vụ đồng thời nhiều workload.
Ví dụ:
Ceph Cluster
|
+----------------+----------------+
| | |
RBD CephFS RGW
| | |
OpenStack Shared Files S3
VM Disk Kubernetes Backup
Kho lưu trữ đối tượng Ceph – Ceph Object Storage
Ceph Object Storage được cung cấp thông qua RADOS Gateway (RGW).
RGW cho phép ứng dụng truy cập dữ liệu theo mô hình Object Storage.
Mô hình:
Application
|
| S3 API
↓
Ceph RGW
|
RADOS
|
OSDs
Ceph RGW thường được sử dụng cho:
- Object Storage.
- Backup.
- Image Storage.
- Video Storage.
- Log Storage.
- Static Files.
- Data Lake.
- S3-compatible Storage.
Đối với doanh nghiệp muốn xây dựng một hệ thống Object Storage nội bộ, Ceph RGW là một lựa chọn đáng cân nhắc.
Thiết bị khối Ceph – Ceph Block Device
Ceph RBD (RADOS Block Device) cung cấp block storage trên Ceph.
Đây là thành phần đặc biệt quan trọng đối với OpenStack và Cloud VPS.
Ví dụ:
OpenStack
|
Cinder
|
RBD
|
Ceph
|
OSDs
Một VM có thể sử dụng một volume RBD giống như một block device thông thường.
Ví dụ:
VM
|
+-- /dev/vda
|
RBD
|
Ceph
|
OSD Cluster
RBD hỗ trợ nhiều tính năng quan trọng như:
- Snapshot.
- Clone.
- Thin Provisioning.
- Resize.
- Replication.
- High Availability.
Đây là lý do Ceph RBD thường được sử dụng làm backend storage cho các nền tảng Cloud.
Ceph File System – CephFS
CephFS là filesystem phân tán của Ceph.
Nó cho phép nhiều client truy cập cùng một filesystem.
Kiến trúc cơ bản:
Client 1 ----\
Client 2 -----+---- CephFS ---- Ceph Cluster
Client 3 ----/
CephFS sử dụng Metadata Server (MDS) để quản lý metadata của filesystem.
CephFS phù hợp với:
- Shared Storage.
- Kubernetes.
- Container.
- File Sharing.
- User Home Directory.
- Application Data.
- HPC.
Điểm cần phân biệt là CephFS và RBD phục vụ hai mô hình khác nhau:
| Thành phần | Loại Storage | Ví dụ |
|---|---|---|
| RBD | Block | Disk cho VM |
| CephFS | File | Shared filesystem |
| RGW | Object | S3 Storage |
Kiến trúc Ceph gồm những gì?
Một Ceph cluster thông thường gồm nhiều thành phần.
Các thành phần quan trọng nhất:
- Ceph Monitor – MON.
- Ceph Manager – MGR.
- Ceph OSD.
- Metadata Server – MDS.
- RADOS Gateway – RGW.
- RADOS.
- CRUSH.
- Pool.
- PG – Placement Group.
Ceph Monitor – MON là gì?
Ceph Monitor (MON) chịu trách nhiệm duy trì thông tin quan trọng về trạng thái cluster.
MON theo dõi và quản lý:
- Cluster map.
- Monitor map.
- OSD map.
- CRUSH map.
- MDS map.
- Trạng thái quorum.
Trong production, thường triển khai số lượng MON là số lẻ, ví dụ:
MON01
MON02
MON03
hoặc:
MON01
MON02
MON03
MON04
MON05
Mục tiêu là duy trì quorum khi một hoặc một số MON gặp sự cố.
Ceph Manager – MGR là gì?
Ceph Manager (MGR) cung cấp các chức năng quản lý và monitoring cho cluster.
MGR có thể cung cấp:
- Metrics.
- Dashboard.
- Monitoring.
- Module quản trị.
- Thông tin hiệu năng.
- Một số API quản lý.
Một mô hình phổ biến:
3 × MON
2 × MGR
N × OSD
MGR có thể triển khai redundancy bằng cách sử dụng nhiều instance.
Ceph OSD là gì?
OSD – Object Storage Daemon là một trong những thành phần quan trọng nhất của Ceph.
Một OSD thường tương ứng với một storage device hoặc một logical storage device.
Ví dụ:
Node01
├── OSD.0 → NVMe
├── OSD.1 → NVMe
├── OSD.2 → NVMe
└── OSD.3 → NVMe
OSD chịu trách nhiệm:
- Lưu dữ liệu.
- Đọc dữ liệu.
- Replication.
- Recovery.
- Backfill.
- Rebalancing.
- Heartbeat.
- Tham gia vào quá trình xác định vị trí dữ liệu.
Nếu có 100 ổ đĩa trong cluster:
100 Drives
↓
100 OSDs
↓
Ceph Cluster
Ceph có thể phân phối dữ liệu trên toàn bộ các OSD này.
CRUSH là gì?
CRUSH – Controlled Replication Under Scalable Hashing là thuật toán quan trọng của Ceph dùng để xác định dữ liệu sẽ được đặt ở đâu.
Thay vì phụ thuộc vào một storage controller trung tâm để quyết định vị trí dữ liệu, Ceph sử dụng CRUSH để tính toán placement của object.
Điều này giúp client có thể giao tiếp trực tiếp với OSD thay vì phải đi qua một storage broker trung tâm.
Ví dụ:
Object A
↓
CRUSH
↓
OSD.12
OSD.34
OSD.56
Nếu sử dụng replication 3:
Object A
├── OSD.12
├── OSD.34
└── OSD.56
CRUSH cũng có thể sử dụng failure domain.
Ví dụ:
Rack 01
├── OSD
└── OSD
Rack 02
├── OSD
└── OSD
Rack 03
├── OSD
└── OSD
Có thể thiết lập policy để các replica được phân bổ sang những failure domain khác nhau. Điều này giúp giảm nguy cơ mất dữ liệu khi một server hoặc rack gặp sự cố.
Pool trong Ceph là gì?
Pool là một logical storage pool trong Ceph.
Ví dụ:
Ceph Cluster
|
+-- rbd-pool
|
+-- volumes
|
+-- images
|
+-- backups
|
+-- data
Mỗi pool có thể có chính sách riêng về:
- Replication.
- Erasure Coding.
- CRUSH Rule.
- Device Class.
- PG.
- Application.
Ví dụ:
SSD Pool
↓
NVMe OSD
HDD Pool
↓
HDD OSD
Nhờ CRUSH device class, Ceph có thể xây dựng các rule để dữ liệu của pool chỉ sử dụng một nhóm thiết bị nhất định.
Placement Group – PG là gì?
PG – Placement Group là một lớp logic trung gian giữa pool và OSD.
Có thể hình dung:
Pool
|
+-- PG.1
+-- PG.2
+-- PG.3
+-- PG.4
|
+-- OSD
+-- OSD
+-- OSD
PG giúp Ceph quản lý việc phân phối object hiệu quả hơn thay vì phải quản lý placement của từng object trực tiếp ở cấp cluster.
Việc lựa chọn số lượng PG cần được tính toán dựa trên:
- Số OSD.
- Số pool.
- Kích thước cluster.
- Loại workload.
- Phiên bản Ceph.
- Cấu hình autoscaler.
Không nên áp dụng một con số PG cố định cho mọi cluster.
Replication trong Ceph là gì?
Replication là cơ chế lưu nhiều bản sao của dữ liệu.
Ví dụ:
Replication = 3
Data
|
+-- Copy 1 → Node 1
+-- Copy 2 → Node 2
+-- Copy 3 → Node 3
Nếu Node 1 bị lỗi:
Node 1 ❌
Node 2 ✓
Node 3 ✓
Ceph vẫn có thể duy trì dữ liệu và thực hiện quá trình recovery khi cluster có đủ tài nguyên.
Replication 3 thường được sử dụng trong các hệ thống yêu cầu độ an toàn dữ liệu cao, nhưng đổi lại dung lượng usable sẽ giảm đáng kể.
Ví dụ lý thuyết:
Raw = 30 TB
Replication 3
Usable ≈ 10 TB
Thực tế còn phải tính đến:
- Reserved capacity.
- Full ratio.
- Nearfull ratio.
- Metadata.
- Recovery headroom.
- CRUSH distribution.
Erasure Coding trong Ceph là gì?
Ngoài replication, Ceph còn hỗ trợ Erasure Coding.
Ví dụ:
k = 6
m = 3
Tổng cộng:
6 data chunks
+
3 parity chunks
Thay vì lưu 3 bản sao hoàn chỉnh của dữ liệu, Erasure Coding chia dữ liệu thành các shard và tạo thêm parity.
Ưu điểm:
- Tiết kiệm dung lượng.
- Storage efficiency tốt hơn replication.
Nhược điểm:
- Tính toán phức tạp hơn.
- Có thể ảnh hưởng performance.
- Random write có thể phức tạp hơn.
- Recovery cần nhiều I/O và network.
Erasure Coding phù hợp với một số workload như:
- Object Storage.
- Backup.
- Archive.
- Large sequential workload.
Không nên mặc định sử dụng Erasure Coding cho mọi loại workload.
Ceph Replication và Erasure Coding khác nhau thế nào?
| Tiêu chí | Replication | Erasure Coding |
|---|---|---|
| Độ đơn giản | Cao | Thấp hơn |
| Dung lượng | Tốn hơn | Tiết kiệm hơn |
| Performance | Tốt | Phụ thuộc workload |
| Random Write | Tốt hơn | Có thể phức tạp |
| Recovery | Đơn giản hơn | Tốn tài nguyên hơn |
| VM Storage | Phù hợp | Cần cân nhắc |
| Object Storage | Phù hợp | Rất phù hợp |
| Archive | Có thể | Phù hợp |
Với Cloud VPS sử dụng RBD, replication thường là lựa chọn dễ triển khai và dễ vận hành hơn.
Ceph có ưu điểm gì?
Khả năng mở rộng
Ceph được thiết kế để scale-out.
Có thể mở rộng:
3 Nodes
↓
6 Nodes
↓
12 Nodes
↓
30 Nodes
bằng cách bổ sung tài nguyên vào cluster.
Không phụ thuộc Storage Controller trung tâm
CRUSH giúp Ceph phân phối dữ liệu theo thuật toán thay vì phụ thuộc vào một controller trung tâm.
Điều này giúp loại bỏ nhiều dạng single point of failure thường gặp ở kiến trúc storage tập trung.
High Availability
Dữ liệu có thể được phân phối trên nhiều OSD và nhiều host.
Nếu một OSD hoặc server gặp lỗi, Ceph có thể thực hiện recovery tùy theo trạng thái cluster và chính sách dữ liệu.
Hỗ trợ nhiều loại Storage
Một Ceph cluster có thể cung cấp:
- Block Storage.
- File Storage.
- Object Storage.
Đây là ưu điểm rất lớn đối với Private Cloud.
Open Source
Ceph là phần mềm mã nguồn mở.
Doanh nghiệp có thể tự triển khai và kiểm soát hạ tầng thay vì phụ thuộc hoàn toàn vào một nhà cung cấp storage độc quyền.
Ceph có nhược điểm gì?
Ceph rất mạnh nhưng không phải giải pháp storage đơn giản.
Khó triển khai hơn Storage truyền thống
Để vận hành Ceph production cần hiểu:
- OSD.
- MON.
- MGR.
- PG.
- CRUSH.
- Pool.
- Recovery.
- Backfill.
- Network.
- Failure Domain.
Yêu cầu network tốt
Ceph tạo ra nhiều traffic giữa các node.
Đặc biệt khi:
- Recovery.
- Backfill.
- Rebalancing.
- Replication.
- Scrubbing.
Vì vậy network có thể trở thành bottleneck.
Recovery có thể ảnh hưởng performance
Khi một OSD bị lỗi, Ceph phải di chuyển dữ liệu để khôi phục redundancy.
Nếu cluster đang gần full hoặc network/storage yếu, quá trình recovery có thể kéo dài và ảnh hưởng workload.
Không nên chạy cluster quá sát đầy
Đây là một nguyên tắc rất quan trọng.
Không nên coi:
100 TB raw
là:
100 TB usable
và cũng không nên cố sử dụng gần 100% capacity.
Cluster cần giữ lại headroom cho:
- Recovery.
- Backfill.
- Rebalancing.
- Disk failure.
- Maintenance.
Ceph cần bao nhiêu server?
Về mặt triển khai production, một cluster Ceph thường nên có nhiều node để tạo failure domain và redundancy phù hợp.
Mô hình phổ biến:
3 Ceph Nodes
Node 1
├── MON
├── MGR
└── OSDs
Node 2
├── MON
├── MGR
└── OSDs
Node 3
├── MON
└── OSDs
Tuy nhiên, số lượng node không thể quyết định chỉ dựa vào “Ceph cần 3 server”.
Cần xem:
- Dung lượng.
- Số OSD.
- Replication.
- Failure domain.
- IOPS.
- Bandwidth.
- Workload.
- Mức độ HA.
- Khả năng bảo trì.
Một cluster 3 node phù hợp cho một số hệ thống nhỏ, nhưng với Cloud Storage lớn có thể cần nhiều node hơn đáng kể.
Cấu hình phần cứng cho Ceph
Một Ceph cluster tốt cần cân bằng giữa:
CPU + RAM + Disk + Network
CPU
Ceph OSD có thể sử dụng nhiều CPU khi:
- Compression.
- Encryption.
- Erasure Coding.
- Recovery.
- High IOPS.
Với cluster NVMe hiệu năng cao, không nên sử dụng CPU quá yếu.
RAM
RAM phụ thuộc vào:
- Số OSD.
- Workload.
- BlueStore.
- Cache.
- Network.
- Services.
NVMe Ceph thường yêu cầu nhiều tài nguyên hơn HDD cluster.
Storage
Có thể sử dụng:
- HDD.
- SATA SSD.
- SAS SSD.
- NVMe SSD.
Trong các hệ thống Cloud VPS yêu cầu IOPS cao, NVMe thường được ưu tiên.
Ceph NVMe có nhanh không?
Có thể rất nhanh nếu kiến trúc được thiết kế đúng.
Ví dụ:
NVMe OSD
+
PCIe Gen4/Gen5
+
100GbE
+
CPU đủ mạnh
có thể tạo ra cluster có IOPS rất lớn.
Tuy nhiên, không thể chỉ nhìn thông số IOPS của một NVMe rồi suy ra hiệu năng Ceph.
Hiệu năng thực tế còn phụ thuộc:
- Replication.
- Network.
- CPU.
- BlueStore.
- PG.
- Client.
- RBD.
- Queue depth.
- Recovery.
- Scrubbing.
- Workload pattern.
Network cho Ceph quan trọng như thế nào?
Network là một trong những yếu tố quan trọng nhất của Ceph.
Ví dụ:
Client
|
100GbE
|
Ceph Node
|
100GbE
|
Ceph Node
Ceph có thể tạo traffic:
Client I/O
Replication
Recovery
Backfill
Heartbeat
Monitoring
Nếu sử dụng network 10GbE cho một cluster NVMe hiệu năng cao, network rất dễ trở thành bottleneck.
Với hệ thống Ceph hiện đại, đặc biệt khi sử dụng NVMe, nên cân nhắc:
- 25GbE.
- 40GbE.
- 100GbE.
- 200GbE.
tùy quy mô.
Ceph Public Network và Cluster Network
Trong một số kiến trúc Ceph, network có thể được phân tách thành:
Public Network
|
Client traffic
Cluster Network
|
OSD replication
Recovery
Backfill
Mục tiêu là tránh để traffic recovery ảnh hưởng trực tiếp đến client I/O.
Tuy nhiên, với các hệ thống hiện đại có network bandwidth cao, việc tách network hay dùng chung network cần được đánh giá dựa trên kiến trúc thực tế.
Không nên mặc định rằng “tách network luôn nhanh hơn”.
Ceph và OpenStack
Đây là một trong những ứng dụng phổ biến nhất của Ceph.
Một kiến trúc Cloud có thể như sau:
OpenStack
|
+--------------+--------------+
| | |
Nova Cinder Glance
| | |
+--------------+--------------+
|
RBD
|
Ceph Cluster
|
+---------------+---------------+
| | |
Ceph01 Ceph02 Ceph03
| | |
NVMe NVMe NVMe
Trong mô hình này:
- Nova tạo VM.
- Cinder quản lý volume.
- Glance lưu image.
- RBD cung cấp storage.
- Ceph đảm nhiệm lớp storage backend.
Đây là kiến trúc rất phù hợp để xây dựng Cloud VPS, Private Cloud và OpenStack Cloud.
Ceph và Kubernetes
Ceph cũng có thể được sử dụng làm storage backend cho Kubernetes.
Thông qua các cơ chế tích hợp như CSI, Kubernetes có thể yêu cầu:
PersistentVolume
↓
Ceph RBD / CephFS
↓
Ceph Cluster
Ứng dụng container có thể sử dụng persistent storage mà không cần biết dữ liệu đang nằm trên OSD nào.
Mô hình này phù hợp với:
- Kubernetes.
- OpenShift.
- Stateful Application.
- Database.
- Container Platform.
Ceph và Cloud VPS
Đây là một trong những mô hình ứng dụng thực tế nhất.
Ví dụ:
Cloud VPS
|
OpenStack
|
Ceph RBD
|
Ceph
|
NVMe
Khi khách hàng tạo VPS:
VPS 01 → RBD
VPS 02 → RBD
VPS 03 → RBD
VPS 04 → RBD
Các volume này được Ceph phân phối trên cluster.
Khi thêm Ceph node:
Ceph Node 01
Ceph Node 02
Ceph Node 03
↓
Add Node
↓
Ceph Node 04
cluster có thêm tài nguyên để mở rộng.
Ceph có phù hợp cho Cloud VPS hiệu năng cao không?
Có, nhưng cần thiết kế đúng.
Đặc biệt với Cloud VPS sử dụng NVMe:
NVMe
+
25/100GbE
+
CPU mạnh
+
RAM đủ
+
Ceph tuning
có thể đạt hiệu năng rất cao.
Nhưng hiệu năng Cloud VPS không chỉ phụ thuộc vào Ceph.
Cần đánh giá toàn bộ:
VM
↓
QEMU/KVM
↓
OpenStack
↓
RBD
↓
Ceph
↓
Network
↓
NVMe
Một bottleneck ở bất kỳ tầng nào cũng có thể làm giảm IOPS.
Ceph có phù hợp làm Backup không?
Có.
Ceph có thể được sử dụng làm backend cho backup, đặc biệt khi kết hợp Object Storage hoặc Erasure Coding.
Tuy nhiên, Ceph cluster không nên được xem là backup duy nhất của chính nó.
Một hệ thống backup tốt cần có:
- Backup độc lập.
- Failure domain độc lập.
- Snapshot/replication phù hợp.
- Off-site copy.
- Chính sách retention.
- Khả năng restore đã được kiểm thử.
Nếu cả production và backup đều nằm trên cùng một Ceph cluster, khi cluster gặp sự cố nghiêm trọng thì cả dữ liệu chính và backup có thể bị ảnh hưởng.
Ceph có phải RAID không?
Không.
Ceph và RAID giải quyết các bài toán khác nhau.
RAID:
Server
|
RAID Controller
|
Disks
Ceph:
Cluster
|
+-- Server 1
| +-- OSD
|
+-- Server 2
| +-- OSD
|
+-- Server 3
+-- OSD
RAID thường bảo vệ dữ liệu ở cấp disk/server.
Ceph cung cấp khả năng phân phối dữ liệu ở cấp cluster và có thể xây dựng failure domain như host hoặc rack.
Ceph khác SAN như thế nào?
| Đặc điểm | Ceph | SAN |
|---|---|---|
| Kiến trúc | Distributed | Centralized/Controller-based |
| Mở rộng | Scale-out | Tùy hệ thống |
| Phần cứng | Commodity/Enterprise | Thường chuyên dụng |
| Open Source | Có | Thường proprietary |
| Block Storage | Có | Có |
| File/Object | Có | Tùy hệ thống |
| HA | Có | Có |
| Quản trị | Phức tạp | Tùy vendor |
Ceph phù hợp với doanh nghiệp muốn xây dựng storage software-defined và chủ động kiểm soát hạ tầng.
Ceph khác NAS như thế nào?
NAS thường cung cấp:
Client
↓
NFS / SMB
↓
NAS
↓
Storage
Ceph có thể cung cấp nhiều interface:
RBD
CephFS
RGW
Do đó Ceph có phạm vi sử dụng rộng hơn NAS truyền thống.
Khi nào nên sử dụng Ceph?
Ceph phù hợp khi doanh nghiệp cần:
- Distributed Storage.
- High Availability.
- Scale-out Storage.
- Cloud VPS.
- OpenStack.
- Kubernetes.
- Private Cloud.
- Object Storage.
- Block Storage.
- File Storage.
- S3-compatible Storage.
- Storage cluster lớn.
Khi nào không nên sử dụng Ceph?
Không nên triển khai Ceph chỉ vì “Ceph đang phổ biến”.
Nếu chỉ cần:
1 Server
+
4 HDD
+
NFS
thì Ceph có thể là quá phức tạp.
Ceph phát huy giá trị khi bài toán yêu cầu:
Multiple Nodes
+
HA
+
Scale-out
+
Distributed Storage
Một storage cluster nhỏ nhưng được triển khai quá phức tạp có thể khiến chi phí vận hành tăng mà lợi ích không đáng kể.
Những lỗi thường gặp khi triển khai Ceph
Dùng quá ít network bandwidth
Ví dụ:
NVMe
+
10GbE
có thể khiến network trở thành bottleneck.
Cluster quá đầy
Khi cluster gần full:
- Recovery khó khăn.
- Backfill khó khăn.
- Hiệu năng giảm.
- Khả năng xử lý failure giảm.
Không phân bổ failure domain đúng
Nếu 3 replica đều nằm trên cùng một host thì khi host đó chết, cả 3 replica có thể bị ảnh hưởng.
CRUSH cho phép thiết kế placement theo host, rack hoặc các failure domain khác.
Sử dụng ổ đĩa không phù hợp
Không phải SSD nào cũng phù hợp làm Ceph OSD.
Đối với production nên ưu tiên:
- Enterprise SSD.
- Enterprise NVMe.
- SSD có PLP – Power Loss Protection.
Không kiểm tra recovery
Một cluster có thể chạy bình thường nhưng gặp vấn đề khi:
OSD failed
Do đó cần kiểm tra khả năng recovery trong môi trường test trước khi đưa vào production.
Tối ưu benchmark nhưng bỏ qua workload thực tế
Ceph benchmark 1 VM có thể rất khác:
1000 VPS
+
Random I/O
+
Snapshots
+
Recovery
Do đó cần benchmark theo workload thực tế.
Ceph cần thiết kế như thế nào cho Cloud VPS?
Một kiến trúc tham khảo:
Internet
|
Cloud Network
|
+------+------+
| OpenStack |
+------+------+
|
RBD/CSI
|
+------+------+
| Ceph |
+-------------+
| |
+---+---+ +---+---+
| Ceph01| | Ceph02|
+-------+ +-------+
| |
OSD OSD
\ /
\ /
+---------+
Ceph03
Với hệ thống lớn hơn:
Compute Nodes
|
|
100GbE
|
Ceph Storage Network
|
+----+----+----+----+
| | | | |
C01 C02 C03 C04
Điều này cho phép tách compute và storage, đồng thời mở rộng độc lập.
Có nên dùng Ceph với NVMe Gen4/Gen5?
Có, nhưng cần cân bằng toàn bộ hệ thống.
Ví dụ:
NVMe Gen5
↓
Ceph OSD
↓
100GbE
↓
Switch
↓
Client
Nếu chỉ nâng NVMe lên Gen5 nhưng network vẫn là 10GbE thì hiệu năng của toàn hệ thống sẽ không tăng tương ứng.
Tương tự, nếu network 100GbE nhưng CPU không đủ mạnh để xử lý OSD workload, CPU có thể trở thành bottleneck.
Do đó cần tối ưu theo nguyên tắc:
Storage → CPU → RAM → Network → Client
Ceph có phù hợp cho hệ thống Cloud của Data Center không?
Ceph đặc biệt phù hợp với mô hình Data Center muốn xây dựng:
- Cloud VPS.
- Private Cloud.
- OpenStack.
- S3 Storage.
- Backup Storage.
- Kubernetes Storage.
- VM Storage.
- Distributed Storage.
Một hệ thống Cloud có thể mở rộng:
Compute
+
Storage
+
Network
độc lập.
Đây chính là lợi thế lớn của mô hình Software Defined Storage.
Checklist trước khi triển khai Ceph Production
Trước khi triển khai Ceph, nên kiểm tra:
Hardware
- CPU đủ mạnh.
- RAM đủ.
- Enterprise SSD/NVMe.
- SSD có PLP.
- HBA phù hợp.
- PSU redundancy.
- Server redundancy.
Network
- 25GbE trở lên cho workload hiệu năng cao.
- 100GbE cho cluster NVMe lớn.
- Switch đủ backplane.
- MTU được cấu hình đồng nhất nếu sử dụng Jumbo Frame.
- Không có packet loss.
- Kiểm tra latency giữa các node.
Ceph
- MON có quorum.
- MGR hoạt động.
- OSD đầy đủ.
- CRUSH topology đúng.
- Failure domain hợp lý.
- Pool configuration đúng.
- PG/autoscaler được kiểm tra.
- Replication/EC phù hợp.
- Recovery được kiểm thử.
Monitoring
- Monitor cluster health.
- OSD latency.
- IOPS.
- Throughput.
- Network utilization.
- Capacity.
- Recovery rate.
- Scrubbing.
- SMART/NVMe health.
Các lệnh Ceph cơ bản cần biết
Kiểm tra trạng thái cluster:
ceph -s
Xem trạng thái chi tiết:
ceph health detail
Xem danh sách OSD:
ceph osd tree
Xem OSD đang hoạt động:
ceph osd status
Xem dung lượng:
ceph df
Xem CRUSH tree:
ceph osd crush tree
Các lệnh này đặc biệt hữu ích khi troubleshooting cluster.
CRUSH tree cho phép administrator nhìn thấy hierarchy của OSD và các bucket như host/rack, từ đó kiểm tra việc phân bổ dữ liệu theo topology vật lý.
Ceph có phải giải pháp Storage tốt nhất không?
Không có một giải pháp storage tốt nhất cho mọi hệ thống.
Ceph rất mạnh khi cần:
Distributed + HA + Scale-out + Open Source
Nhưng nếu hệ thống chỉ có một server nhỏ, NAS hoặc ZFS có thể đơn giản hơn.
Có thể lựa chọn:
1 Server
→ ZFS / RAID / NAS
Multiple Servers
→ Ceph
Cloud / OpenStack
→ Ceph RBD
Object Storage
→ Ceph RGW
Shared File Storage
→ CephFS
Việc lựa chọn nên dựa trên workload và yêu cầu HA thay vì chỉ dựa trên dung lượng.
Kết luận: Ceph là gì và tại sao Ceph quan trọng với Cloud?
Ceph là nền tảng lưu trữ phân tán mã nguồn mở, cho phép kết hợp nhiều server và nhiều ổ đĩa thành một storage cluster có khả năng mở rộng, chịu lỗi và cung cấp nhiều loại storage.
Ba thành phần storage quan trọng nhất là:
Ceph RBD
↓
Block Storage
CephFS
↓
File Storage
Ceph RGW
↓
Object Storage
Bên dưới các thành phần này là RADOS, OSD và CRUSH.
Điểm mạnh nhất của Ceph nằm ở khả năng scale-out và phân phối dữ liệu trên nhiều failure domain. CRUSH giúp xác định vị trí lưu trữ của dữ liệu mà không cần một storage controller trung tâm, đồng thời hỗ trợ các chính sách placement theo topology của hệ thống.
Đối với các nền tảng OpenStack, Cloud VPS, Kubernetes và Private Cloud, Ceph đặc biệt hữu ích vì có thể cung cấp block, file và object storage trên cùng một nền tảng.
Tuy nhiên, Ceph cũng là một hệ thống tương đối phức tạp. Hiệu năng và độ ổn định không chỉ phụ thuộc vào ổ đĩa mà còn phụ thuộc vào CPU, RAM, network, CRUSH topology, replication, PG, recovery và cách thiết kế toàn bộ cluster.
Vì vậy, nếu triển khai Ceph cho production, cần coi đây là một hệ thống storage phân tán hoàn chỉnh, không đơn thuần là việc cài Ceph lên vài máy chủ.
Câu hỏi thường gặp về Ceph
Ceph là gì?
Ceph là phần mềm lưu trữ phân tán mã nguồn mở, dùng để xây dựng storage cluster có khả năng mở rộng và chịu lỗi.
Ceph dùng để làm gì?
Ceph được sử dụng cho Block Storage, File Storage và Object Storage, đặc biệt phổ biến trong Cloud, OpenStack, Kubernetes và Private Cloud.
Ceph có miễn phí không?
Ceph là phần mềm mã nguồn mở. Tuy nhiên doanh nghiệp vẫn phải đầu tư chi phí cho server, ổ đĩa, network, datacenter, monitoring và nhân sự vận hành.
Ceph có cần 3 server không?
Một cluster production thường nên có nhiều node để xây dựng quorum và failure domain phù hợp. Ba node là một mô hình phổ biến cho cluster nhỏ, nhưng không phải mọi hệ thống Ceph đều chỉ cần 3 server.
Ceph có nhanh hơn RAID không?
Không thể so sánh trực tiếp. RAID và Ceph có kiến trúc khác nhau. Ceph có lợi thế về distributed storage và scale-out, trong khi RAID phù hợp với storage ở cấp một server.
Ceph có phù hợp với OpenStack không?
Có. Ceph RBD là một backend phổ biến cho OpenStack Cinder, Glance và các workload VM.
Ceph có chạy được trên NVMe không?
Có. Ceph có thể sử dụng NVMe làm OSD và phù hợp với workload yêu cầu IOPS cao. Tuy nhiên khi dùng NVMe tốc độ cao cần đặc biệt chú ý CPU và network.
Ceph có hỗ trợ S3 không?
Có. Ceph RGW cung cấp Object Storage với giao diện tương thích S3, phù hợp cho Object Storage và các ứng dụng cần API kiểu S3.
Ceph có an toàn dữ liệu không?
Ceph có nhiều cơ chế redundancy như replication và erasure coding. Tuy nhiên độ an toàn thực tế phụ thuộc vào thiết kế failure domain, số lượng replica, phần cứng, network và quy trình vận hành.
Có nên dùng Ceph cho Cloud VPS?
Có, đặc biệt khi xây dựng Cloud VPS có nhiều compute node và yêu cầu storage HA. Ceph RBD có thể cung cấp block storage cho các máy ảo.
Ceph có khó quản trị không?
Có mức độ phức tạp cao hơn RAID hoặc NAS thông thường. Người quản trị cần hiểu OSD, MON, MGR, CRUSH, PG, pool, recovery và network.
Đọc thêm docs tại đây
Nếu Bạn là lập trình viên, có thể tham gia dự án tại đây
Tham khảo https://ceph.io/en/
