Storage Configuration Guide · PVE 9.2

Hướng dẫn Cấu hình Ceph Storage
trên Proxmox VE 9

Từ cài đặt → MON/MGR → OSD → Pool RBD → CephFS → health check. Software-defined storage phân tán, tự phục hồi (self-healing), không cần SAN — license $0. Cập nhật Ceph Squid 19.2 & Tentacle 20.2.

7
Bước
3
Node tối thiểu
19.2
Ceph Squid
$0
License

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.

graph TB subgraph Clients["💻 Truy cập từ Proxmox VE"] RBD["RBD — Block
(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ị
MONMonitor — giữ bản đồ cluster (CRUSH map), điều phối quorum3 (số lẻ) — chịu được 1 MON down
MGRManager — thu thập metrics, chạy module (Dashboard, autoscaler)2 (active/standby)
OSDObject 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)
MDSMetadata Server — chỉ cần khi dùng CephFS (file system)2 (1 active + 1 standby)
Pool / RBDNhóm logic chứa data; RBD = block device gắn cho VM/LXC1+ pool replicated (size 3)

Phiên bản Ceph trên Proxmox VE 9.x

Codename Version Trạng thái (2026) Ghi chú
Tentacle20.2.xStable / mới nhấtBản cài mới trên PVE 9.2 mặc định chọn Tentacle
Squid19.2.xStable — mặc định PVE 9.0/9.1Support đến ~09/2026; đề xuất cho production đang chạy
Reef18.2.xSắp EOLBả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ố node33–5+ (đồng nhất cấu hình)
RAM+4GB/OSD+4–8GB cho mỗi OSD (ngoài RAM VM)
OSD disk1 SSD/nodeNVMe/SSD enterprise (PLP), JBOD/HBA — KHÔNG RAID
Mạng storage10 Gbps25/100 Gbps, tách Public & Cluster network, MTU 9000
OS disk1 SSD2× SSD RAID1 (tách riêng khỏi OSD)
Đồng bộ giờNTP bậtchrony/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):

# Ping với payload 8972 byte, cấm phân mảnh — phải THÀNH CÔNG nếu MTU 9000 đúng ping -c 4 -M do -s 8972 10.20.20.12

Quy trình cấu hình 7 bước

flowchart LR B1["1 · Install
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
B-1

Cài đặt Ceph trên tất cả node

~10 phút — lặp trên cả 3 node

  1. 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ặc Tentacle (20.2) → Repository No-SubscriptionStart Installation → gõ Y xác nhận. Lặp cho cả 3 node.

  2. 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:

# /etc/apt/sources.list.d/ceph.sources (no-subscription, Squid) Types: deb URIs: http://download.proxmox.com/debian/ceph-squid Suites: trixie Components: no-subscription Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg

Đổi ceph-squidceph-tentacle nếu dùng Tentacle. Repo enterprise cần subscription hợp lệ — bỏ qua nếu dùng no-subscription.

B-2

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):

# Chạy trên node1 — chỉ một lần cho cả cluster pveceph init \ --network 10.10.10.0/24 \ --cluster-network 10.20.20.0/24 # --network : Public network (client <-> Ceph) # --cluster-network: Cluster network (OSD <-> OSD replication)

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.

B-3

Tạo Monitor (MON) & Manager (MGR)

~10 phút — 3 MON + 2 MGR để đủ quorum & HA

  1. 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. 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.

B-4

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. 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. 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. 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.

B-5

Tạo Pool RBD & gắn làm Storage

~5 phút — nơi chứa disk VM/LXC

  1. 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
  2. 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.

B-6

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. 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. 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.

B-7

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

ceph -s # Kết quả mong đợi: # cluster: health: HEALTH_OK # services: mon: 3 daemons (quorum), mgr: active + standby # osd: 9 osds: 9 up, 9 in # data: pools: 1 pool, ~128 pgs — all active+clean

Bảng lệnh vận hành thường dùng

Lệnh Mục đích
ceph -s / ceph health detailTrạng thái tổng quan / chi tiết cảnh báo
ceph osd treeCây OSD theo host, up/down, device class
ceph osd df treeDung lượng & phân bố PG từng OSD (soi imbalance)
ceph dfDung lượng theo pool + %USED + MAX AVAIL
ceph osd pool autoscale-statusPG autoscaler đang tính toán gì
pveceph statusBả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 nooutNgăn rebalance khi bảo trì (nhớ unset sau)

Bật Ceph Dashboard (giao diện quản trị)

# Bật module dashboard trên MGR + tạo user admin ceph mgr module enable dashboard ceph dashboard ac-user-create admin -i password.txt administrator # Proxmox cũng hiển thị metrics Ceph ngay trong Web GUI (menu Ceph)

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:

# Tách pool chạy riêng trên SSD (khi cụm có cả HDD lẫn SSD) ceph osd crush rule create-replicated ssd-rule default host ssd ceph osd pool set vm-storage crush_rule ssd-rule # Xem rule & device class hiện có ceph osd crush rule ls ceph osd crush class ls

Đ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 detectedMON lệch giờ > 50msBật/đồng bộ chrony/NTP trên mọi node
OSD_NEARFULL / FULLPool vượt ~85%/95%Thêm OSD, xóa data, hoặc chỉnh nearfull ratio tạm thời
PG_DEGRADED / undersizedThiếu bản sao (OSD/node down)Chờ recovery; kiểm tra OSD down bằng ceph osd tree
too few/many PGs per OSDSố PG chưa hợp lýBật PG autoscaler; xem autoscale-status
slow ops / slow requestsDisk/mạng nghẽn hoặc OSD lỗiSoi ceph osd df tree, kiểm tra NIC/MTU, SMART disk
mon down / no quorumMất > nửa số MONKhôi phục node/MON; đảm bảo MON là số lẻ ≥ 3
# Điều tra nhanh khi HEALTH_WARN/ERR ceph health detail # chi tiết từng cảnh báo ceph crash ls # liệt kê daemon crash gần đây ceph osd df tree # phát hiện OSD lệch tải/đầy journalctl -u ceph-osd@N -e # log 1 OSD cụ thể

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

Bài liên quan