Ceph là gì? Giới thiệu Ceph, kiến trúc, ưu nhược điểm và ứng dụng trong Cloud Storage

ceph

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ì?

Mục lục nội dung

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.

ceph là gì

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?

, 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 Thường proprietary
Block Storage
File/Object Tùy hệ thống
HA
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/