Ceph: распределённое хранилище для production — от планирования до эксплуатации

Зачем Ceph и когда он нужен

Компания «ВидеоХост» — платформа для хранения корпоративного видео. 80 ТБ данных, рост 5 ТБ/мес. Текущее хранилище: 2 сервера с RAID6, NFS для раздачи. Проблемы:

  • Единая точка отказа: умер NFS-сервер → все видео недоступны 6 часов
  • Масштабирование: RAID-массив заполнен, расширение = покупка нового сервера + миграция данных
  • Производительность: 200 одновременных стримов → NFS не справляется

Ceph — распределённое хранилище, которое объединяет диски нескольких серверов в единый пул. Данные автоматически реплицируются, при выходе сервера — автовосстановление.

КритерийRAID + NFSCeph
Отказоустойчивость1-2 дискаЦелые серверы
МасштабированиеВертикальноеГоризонтальное (добавь ноду)
ИнтерфейсыNFS/SMBBlock (RBD), File (CephFS), Object (S3)
СамовосстановлениеRAID rebuild (часы)Автоматическое (минуты)
Минимум нод13

Архитектура и планирование кластера

Кластер «ВидеоХост»: 5 нод, 100 ТБ raw, ~33 ТБ usable (3x replication).

# Компоненты Ceph:
# MON (Monitor) — кворум, карта кластера (минимум 3)
# MGR (Manager) — метрики, dashboard, модули
# OSD (Object Storage Daemon) — 1 на физический диск
# MDS (Metadata Server) — только для CephFS

# Планирование нод:
# Node 1-3: MON + MGR + OSD (6 × 4TB HDD = 24TB raw)
# Node 4-5: OSD only (6 × 4TB HDD = 24TB raw)
# Итого: 30 × 4TB = 120TB raw, usable ~40TB (3x replica)

# Сеть:
# Public: 10G — клиентский трафик
# Cluster: 10G — репликация между OSD (отдельный VLAN)
# Установка через cephadm (рекомендуемый метод)
# На первой ноде:
curl --silent --remote-name --location \
  https://download.ceph.com/rpm-reef/el9/noarch/cephadm

chmod +x cephadm
./cephadm bootstrap --mon-ip 10.0.1.1 \
  --cluster-network 10.0.2.0/24 \
  --dashboard-password-noupdate \
  --initial-dashboard-user admin \
  --initial-dashboard-password S3cureP@ss

# Добавляем остальные ноды
ceph orch host add node-02 10.0.1.2
ceph orch host add node-03 10.0.1.3
ceph orch host add node-04 10.0.1.4
ceph orch host add node-05 10.0.1.5

# Добавляем все доступные диски как OSD
ceph orch apply osd --all-available-devices

# Проверка
ceph -s
# cluster: OK
# osd: 30 osds: 30 up, 30 in
# mon: 3 daemons

RBD: блочное хранилище для виртуальных машин

RBD (RADOS Block Device) — блочные устройства из Ceph. Идеально для VM-дисков (Proxmox, OpenStack, Kubernetes PV).

# Создание пула для RBD
ceph osd pool create vm-disks 128
ceph osd pool application enable vm-disks rbd
rbd pool init vm-disks

# Создание блочного устройства 100 ГБ
rbd create vm-disks/web-server-01 --size 102400

# Подключение на хосте (для прямого использования)
rbd map vm-disks/web-server-01
# /dev/rbd0
mkfs.ext4 /dev/rbd0
mount /dev/rbd0 /mnt/vm-disk

# Snapshot (мгновенный, copy-on-write)
rbd snap create vm-disks/web-server-01@before-upgrade
# Откат
rbd snap rollback vm-disks/web-server-01@before-upgrade

Интеграция с Proxmox VE:

# /etc/pve/storage.cfg
rbd: ceph-rbd
    content images,rootdir
    krbd 0
    pool vm-disks
    monhost 10.0.1.1 10.0.1.2 10.0.1.3
    username admin
Совет: Для SSD-пулов включите erasure coding вместо 3x replication: экономия 50% места при тех же гарантиях надёжности. Для HDD с видео — 3x replication проще и надёжнее.

CephFS: распределённая файловая система

CephFS — POSIX-совместимая файловая система для замены NFS. Метаданные хранятся на MDS, данные — на OSD.

# Создание CephFS
ceph fs volume create videostore

# На клиенте: монтирование через kernel driver
mount -t ceph 10.0.1.1:/ /mnt/cephfs -o name=admin,secret=AQBxxxxxx

# Или через /etc/fstab
10.0.1.1,10.0.1.2,10.0.1.3:/ /mnt/cephfs ceph name=admin,secretfile=/etc/ceph/secret,_netdev 0 0

# Квоты на подкаталоги
setfattr -n ceph.quota.max_bytes -v 10737418240 /mnt/cephfs/project-alpha  # 10 ГБ
setfattr -n ceph.quota.max_files -v 100000 /mnt/cephfs/project-alpha       # 100K файлов

Производительность CephFS vs NFS (тест: 200 одновременных read 1GB файлов):

МетрикаNFS (1 сервер)CephFS (5 нод)
Throughput (read)1.2 GB/s4.8 GB/s
Throughput (write)800 MB/s3.2 GB/s
IOPS (4K random)45,000120,000
Макс. одновременных клиентов~50500+

Мониторинг и обслуживание кластера

Ежедневные команды для администратора Ceph:

# Общий статус
ceph -s
ceph health detail

# Статус OSD
ceph osd tree
ceph osd df

# Использование пулов
ceph df detail

# I/O статистика
ceph osd perf

# Медленные OSD (latency > 100ms)
ceph osd perf | awk '$4 > 100 {print}'

# Проверка consistency
ceph pg deep-scrub <pgid>

Интеграция с Prometheus:

# Ceph MGR module для Prometheus
ceph mgr module enable prometheus
# Метрики доступны на http://ceph-mgr:9283/metrics

# Ключевые метрики для алертов:
# ceph_health_status != 0 → кластер не HEALTH_OK
# ceph_osd_up < total_osd → OSD упал
# ceph_pool_bytes_used / ceph_pool_max_avail > 0.85 → пул заполнен

Результат «ВидеоХост» через 6 месяцев:

МетрикаRAID + NFSCeph (5 нод)
Доступность99.5%99.99%
Время восстановления6+ часов (ручное)Автоматическое
МасштабированиеПокупка нового сервераДобавить диски/ноду
Стоимость хранения ТБ~$80/мес~$35/мес (3x repl)
Важно: Ceph не подходит для кластеров менее 3 нод или для хранения менее 10 ТБ. На маленьких объёмах overhead управления Ceph не окупается. Для 1-5 ТБ используйте ZFS mirror/raidz или простой NFS.

Часто задаваемые вопросы

3 ноды (для кворума MON). На каждой ноде: 2+ CPU cores, 4+ GB RAM (+ 2GB на каждый OSD), отдельный SSD для WAL/DB (ускоряет HDD-based OSD в 5-10x). Сеть: минимум 10G для cluster network. 1G работает, но recovery будет медленным.

Ceph: блочное + файловое + объектное хранилище, сложнее в настройке, лучше масштабируется (100+ нод). GlusterFS: только файловое хранилище, проще в настройке, хорош для 3-10 нод. Для Kubernetes и VM-дисков — Ceph. Для простого распределённого файлового хранилища — GlusterFS.

Ceph автоматически начинает recovery: данные с потерянных OSD восстанавливаются из реплик на оставшихся нодах. При 3x replication потеря 1 ноды из 5 не приводит к потере данных. Recovery занимает от минут до часов в зависимости от объёма данных.

Да, HDD — основной тип дисков для Ceph в production. Рекомендуется использовать SSD для журнала (WAL/DB) каждого HDD-based OSD — это ускоряет запись в 5-10 раз. Формула: 1 NVMe SSD 480GB на 6-8 HDD OSD.

Replication 3x: каждый блок хранится в 3 копиях, overhead 200%, простой recovery. EC 4+2: 4 блока данных + 2 блока чётности, overhead 50%, выдерживает потерю любых 2 OSD. EC экономнее по месту, но медленнее на запись и recovery. Рекомендация: replication для горячих данных (VM, БД), EC для холодных (архивы, бэкапы).

Нужна помощь с внедрением?

Настроим, оптимизируем и возьмём на поддержку вашу инфраструктуру. 15+ лет опыта, 8 серверов Dell Xeon в дата-центре МТС.

📞 Связаться с нами

Комментарии 0

Оставить комментарий

8 + 2 =