Ceph là gì & kiến trúc thành phần
Ceph là hệ thống lưu trữ phân tán (software-defined storage) mã nguồn mở, được tích hợp sẵn trong Proxmox VE. Ceph gộp ổ đĩa của nhiều node thành một storage pool thống nhất, dữ liệu được nhân bản (replication) trên nhiều node nên khi 1 disk/node hỏng, hệ thống vẫn chạy và tự phục hồi (self-healing). Đây là nền tảng cho kiến trúc Hyper-Converged (HCI) — mỗi node vừa chạy VM vừa làm storage, không cần đầu tư SAN/NAS riêng.
(disk VM/LXC)"] CFS["CephFS — File
(ISO, backup, template)"] end subgraph CephCluster["🗄️ Ceph Cluster"] MON["MON · Monitor
giữ bản đồ cluster + quorum"] MGR["MGR · Manager
metrics + Dashboard"] MDS["MDS · Metadata
(chỉ cho CephFS)"] subgraph OSDs["OSD · Object Storage Daemon"] O1[(OSD.0)] O2[(OSD.1)] O3[(OSD.n)] end end RBD --> MON CFS --> MDS MON --- MGR MDS --- MON MON --> OSDs RBD --> OSDs CFS --> OSDs style MON fill:#e0f2fe,stroke:#0ea5e9,stroke-width:2px style MGR fill:#e0f2fe,stroke:#0ea5e9 style MDS fill:#ede9fe,stroke:#8b5cf6 style OSDs fill:#dcfce7,stroke:#22c55e,stroke-width:2px
| Thành phần | Vai trò | Số lượng khuyến nghị |
|---|---|---|
| MON | Monitor — giữ bản đồ cluster (CRUSH map), điều phối quorum | 3 (số lẻ) — chịu được 1 MON down |
| MGR | Manager — thu thập metrics, chạy module (Dashboard, autoscaler) | 2 (active/standby) |
| OSD | Object Storage Daemon — mỗi disk vật lý = 1 OSD, lưu data thật | ≥ 1 OSD/node (càng nhiều càng tốt) |
| MDS | Metadata Server — chỉ cần khi dùng CephFS (file system) | 2 (1 active + 1 standby) |
| Pool / RBD | Nhóm logic chứa data; RBD = block device gắn cho VM/LXC | 1+ pool replicated (size 3) |
Phiên bản Ceph trên Proxmox VE 9.x
| Codename | Version | Trạng thái (2026) | Ghi chú |
|---|---|---|---|
| Tentacle | 20.2.x | Stable / mới nhất | Bản cài mới trên PVE 9.2 mặc định chọn Tentacle |
| Squid | 19.2.x | Stable — mặc định PVE 9.0/9.1 | Support đến ~09/2026; đề xuất cho production đang chạy |
| Reef | 18.2.x | Sắp EOL | Bản của PVE 8.x — nâng lên Squid trước khi upgrade PVE 8 → 9 |
Khi nào chọn Ceph — và khi nào không?
- Dùng Ceph khi cần: HA thực sự (live migration + failover), scale-out nhiều node, self-healing, không muốn single point of failure.
- Cân nhắc ZFS + Replication nếu chỉ có 2 node hoặc ngân sách mạng hạn chế — đơn giản hơn nhưng data replication theo lịch (async).
- Dùng NFS/SMB (NAS) cho ISO/backup/template dùng chung — không thay thế được Ceph cho disk VM cần HA.
- KHÔNG nên chạy Ceph production dưới 3 node hoặc trên mạng < 10Gbps.
Yêu cầu & chuẩn bị trước khi cấu hình
Bài này giả định cluster ĐÃ tạo xong
Ceph chỉ cấu hình được sau khi có Proxmox Cluster (≥ 3 node, quorum OK). Nếu chưa dựng cluster, xem trước bài Triển khai Proxmox Cluster 3-Node + Ceph từ A→Z (phần hardware, cài PVE, tạo cluster). Bài này tập trung chuyên sâu vào khâu cấu hình Ceph Storage.
| Hạng mục | Tối thiểu | Khuyến nghị production |
|---|---|---|
| Số node | 3 | 3–5+ (đồng nhất cấu hình) |
| RAM | +4GB/OSD | +4–8GB cho mỗi OSD (ngoài RAM VM) |
| OSD disk | 1 SSD/node | NVMe/SSD enterprise (PLP), JBOD/HBA — KHÔNG RAID |
| Mạng storage | 10 Gbps | 25/100 Gbps, tách Public & Cluster network, MTU 9000 |
| OS disk | 1 SSD | 2× SSD RAID1 (tách riêng khỏi OSD) |
| Đồng bộ giờ | NTP bật | chrony/NTP — lệch giờ > 50ms sẽ báo clock skew |
Tách Public Network vs Cluster Network
Đây là quyết định thiết kế quan trọng nhất ảnh hưởng hiệu năng Ceph. Nên tách 2 mạng riêng để traffic replication không nghẽn traffic client:
Public Network
Client (VM/LXC) & MON đọc/ghi data qua đây. VD: 10.10.10.0/24
Cluster Network
OSD-to-OSD: replication + recovery + heartbeat. VD: 10.20.20.0/24
Kiểm tra jumbo frame trên mạng Ceph trước khi init (rất hay bỏ sót):
Quy trình cấu hình 7 bước
Ceph packages"] --> B2["2 · Init
public/cluster net"] B2 --> B3["3 · MON + MGR"] B3 --> B4["4 · OSD
(mỗi disk)"] B4 --> B5["5 · Pool RBD
+ add storage"] B5 --> B6["6 · CephFS
(tùy chọn)"] B6 --> B7["7 · Health check
+ vận hành"] style B1 fill:#e0f2fe,stroke:#0ea5e9 style B4 fill:#dcfce7,stroke:#22c55e style B5 fill:#ede9fe,stroke:#8b5cf6 style B7 fill:#bbf7d0,stroke:#16a34a,stroke-width:2px
Cài đặt Ceph trên tất cả node
~10 phút — lặp trên cả 3 node
-
1
Cài qua Web GUI (khuyến nghị cho người mới)
Chọn từng node → menu Ceph → nút Install Ceph → chọn version
Squid (19.2)hoặcTentacle (20.2)→ Repository No-Subscription → Start Installation → gõYxác nhận. Lặp cho cả 3 node. -
2
Hoặc cài bằng CLI (nhanh, làm hàng loạt)
# Chạy trên TỪNG node. Chọn 1 trong 2 version: pveceph install --repository no-subscription --version squid # hoặc bản mới nhất: pveceph install --repository no-subscription --version tentacle
PVE 9 dùng repo định dạng deb822 (.sources)
Proxmox VE 9 (Debian 13 Trixie) chuyển sang định dạng deb822. Nếu không có subscription, pveceph install tự tạo file repo đúng; nếu cần chỉnh tay, file nằm ở /etc/apt/sources.list.d/ceph.sources:
Đổi ceph-squid → ceph-tentacle nếu dùng Tentacle. Repo enterprise cần subscription hợp lệ — bỏ qua nếu dùng no-subscription.
Khởi tạo cấu hình Ceph (init network)
~5 phút — CHỈ chạy 1 lần, trên 1 node
Khai báo public/cluster network cho cluster Ceph. Bước này tạo file /etc/pve/ceph.conf (đồng bộ tự động cho mọi node qua pmxcfs):
Nếu chỉ có 1 mạng storage
Bỏ --cluster-network — Ceph dùng chung public network cho cả replication. Chạy được nhưng hiệu năng kém hơn khi recovery. Có thể tách sau bằng cách sửa ceph.conf.
Tạo Monitor (MON) & Manager (MGR)
~10 phút — 3 MON + 2 MGR để đủ quorum & HA
-
1
Tạo 3 Monitor — mỗi node 1 MON
GUI: Ceph → Monitor → Create → chọn host → Create. Lặp cho cả 3 node.
# CLI — chạy trên MỖI node cần thành MON: pveceph mon create # Kiểm tra quorum ceph mon stat -
2
Tạo 2 Manager — active/standby
MON đầu tiên thường tự kèm 1 MGR. Tạo thêm 1 MGR trên node khác để dự phòng. GUI: Ceph → Manager → Create.
# CLI — trên node muốn đặt MGR (vd node2): pveceph mgr create
Vì sao 3 MON (số lẻ)?
MON quyết định theo đa số (quorum). 3 MON chịu được 1 MON chết; 2 MON thì mất 1 là mất quorum → cluster đứng. Luôn dùng số lẻ ≥ 3.
Tạo OSD từ các ổ đĩa
~15 phút — mỗi disk vật lý = 1 OSD, dùng backend BlueStore
Disk phải sạch & ở chế độ JBOD
OSD chỉ nhận disk trống (không partition, không LVM cũ, không RAID). Xóa dấu vết cũ nếu cần: ceph-volume lvm zap /dev/sdX --destroy hoặc GUI Disks → Wipe Disk.
-
1
Tạo OSD qua GUI
Ceph → OSD → Create: OSD → chọn Disk → (tùy chọn: tách DB/WAL sang NVMe, bật Encrypt) → Create. Lặp cho từng disk trên từng node.
-
2
Hoặc tạo hàng loạt bằng CLI
# Tạo nhanh mọi OSD trên node hiện tại (chạy trên từng node) for dev in /dev/sdb /dev/sdc /dev/sdd; do pveceph osd create $dev done # Tách DB/WAL sang ổ NVMe nhanh (khi OSD là HDD/SATA-SSD): pveceph osd create /dev/sdb --db_dev /dev/nvme0n1 --db_size 100 # Bật mã hóa OSD (dm-crypt): pveceph osd create /dev/sdb --encrypted 1 -
3
Kiểm tra cây OSD
ceph osd tree # Mỗi host phải xuất hiện với đủ OSD, STATUS = up, REWEIGHT = 1.00000 # CLASS (ssd/hdd/nvme) được Ceph tự nhận diện
DB/WAL — khi nào cần tách?
OSD toàn NVMe/SSD: để DB/WAL chung trên chính OSD (mặc định) — đơn giản, đủ nhanh. OSD là HDD hoặc SATA-SSD chậm: tách DB/WAL sang 1 NVMe nhỏ giúp tăng IOPS metadata rõ rệt. Chi tiết sizing xem bài Ceph Performance Tuning.
Tạo Pool RBD & gắn làm Storage
~5 phút — nơi chứa disk VM/LXC
-
1
Tạo pool qua GUI
Ceph → Pools → Create:
- Name:
vm-storage - Size: 3 — số bản sao (3 replicas)
- Min Size: 2 — vẫn ghi được khi 1 bản sao tạm mất
- PG Autoscale Mode: on — Ceph tự chỉnh số PG
- ✅ Add as Storage — tự tạo storage RBD trong Proxmox
- Name:
-
2
Hoặc bằng CLI
pveceph pool create vm-storage \ --size 3 \ --min_size 2 \ --pg_autoscale_mode on \ --application rbd \ --add_storages 1 # Xem danh sách pool + %USED ceph df
TUYỆT ĐỐI không đặt min_size = 1
size=3, min_size=2 là chuẩn production. Đặt min_size=1 cho phép ghi khi chỉ còn 1 bản sao → nguy cơ mất data vĩnh viễn nếu OSD đó chết trước khi recovery xong. Đừng làm để "tiết kiệm dung lượng".
Tính dung lượng dùng được & ngưỡng 80%
Usable ≈ Raw ÷ size. VD 9× 2TB = 18TB raw → size 3 = 6TB usable. Không dùng quá ~80% (≈ 4.8TB) để Ceph còn chỗ tự phục hồi khi 1 node/OSD hỏng. Vượt nearfull → cảnh báo; vượt full → dừng ghi.
Cấu hình CephFS (tùy chọn)
~10 phút — file storage dùng chung cho ISO, backup, template
RBD là block (chỉ cho disk VM/LXC). Nếu cần lưu ISO, snippet, template, backup dùng chung cho cả cluster, tạo CephFS (cần MDS):
-
1
Tạo MDS (Metadata Server) — 2 cái để HA
# GUI: Ceph → CephFS → Create MDS. Hoặc CLI trên 2 node: pveceph mds create -
2
Tạo CephFS + tự gắn storage
# GUI: Ceph → CephFS → Create CephFS (tick "Add as Storage") # CLI — tự tạo pool data + metadata và gắn vào Proxmox: pveceph fs create --name cephfs --add-storage 1 # Kiểm tra ceph fs status
Sau bước này
Storage cephfs xuất hiện ở mọi node, dùng được cho ISO image, VZDump backup, Container template, Snippets — không cần NAS riêng cho các nội dung này.
Kiểm tra sức khỏe & vận hành
~5 phút — xác nhận HEALTH_OK trước khi đưa VM lên
Bảng lệnh vận hành thường dùng
| Lệnh | Mục đích |
|---|---|
| ceph -s / ceph health detail | Trạng thái tổng quan / chi tiết cảnh báo |
| ceph osd tree | Cây OSD theo host, up/down, device class |
| ceph osd df tree | Dung lượng & phân bố PG từng OSD (soi imbalance) |
| ceph df | Dung lượng theo pool + %USED + MAX AVAIL |
| ceph osd pool autoscale-status | PG autoscaler đang tính toán gì |
| pveceph status | Bản tóm tắt Ceph tích hợp Proxmox |
| ceph osd out/in osd.N | Đưa 1 OSD ra/vào (trước khi thay disk) |
| ceph osd set noout | Ngăn rebalance khi bảo trì (nhớ unset sau) |
Bật Ceph Dashboard (giao diện quản trị)
CRUSH & Device Classes (nâng cao — tóm tắt)
CRUSH là thuật toán quyết định data nằm ở OSD nào — không cần bảng tra tập trung. Mặc định failure domain = host (3 bản sao nằm trên 3 host khác nhau), đúng chuẩn cho cụm 3 node. Vài chỉnh hay dùng:
Đi sâu hơn
PG sizing, Erasure Coding (tiết kiệm ~50% dung lượng), failure domain theo rack, tuning BlueStore/NUMA/RDMA... được trình bày đầy đủ trong bài Ceph Performance Tuning — Tối ưu IOPS & Latency.
Troubleshooting — cảnh báo hay gặp
| Cảnh báo | Nguyên nhân | Cách xử lý |
|---|---|---|
| clock skew detected | MON lệch giờ > 50ms | Bật/đồng bộ chrony/NTP trên mọi node |
| OSD_NEARFULL / FULL | Pool vượt ~85%/95% | Thêm OSD, xóa data, hoặc chỉnh nearfull ratio tạm thời |
| PG_DEGRADED / undersized | Thiếu bản sao (OSD/node down) | Chờ recovery; kiểm tra OSD down bằng ceph osd tree |
| too few/many PGs per OSD | Số PG chưa hợp lý | Bật PG autoscaler; xem autoscale-status |
| slow ops / slow requests | Disk/mạng nghẽn hoặc OSD lỗi | Soi ceph osd df tree, kiểm tra NIC/MTU, SMART disk |
| mon down / no quorum | Mất > nửa số MON | Khôi phục node/MON; đảm bảo MON là số lẻ ≥ 3 |
Best Practices & bước tiếp theo
Checklist cấu hình
- ✅ 3 MON (số lẻ) + 2 MGR active/standby
- ✅ Public & Cluster network tách riêng, MTU 9000
- ✅ Pool
size=3, min_size=2, PG autoscale on - ✅ OSD dùng JBOD, disk enterprise có PLP
- ✅ Không dùng quá 80% dung lượng usable
- ✅ HEALTH_OK trước khi đưa VM production lên
Vận hành & bảo vệ
- ✅ Bật email alert cho Ceph (postfix + mgr)
- ✅ Giám sát %USED, slow ops, OSD down hàng ngày
- ✅ Backup VM ra PBS — Ceph replication ≠ backup
- ✅ Test thay disk OSD (out → replace → in) định kỳ
- ✅ Luôn nâng Ceph lên Squid trước khi upgrade PVE 8→9