· 18 мин чтения

Ceph: распределённое хранилище для серьёзной корпоративной инфраструктуры

Семёнов Евгений Сергеевич, директор АйТи Фреш. Ceph — единственная система хранения, которая одновременно даёт блочный, файловый и объектный доступ, масштабируется до петабайтов и при этом бесплатна. У меня на практике три собственных кластера в дата-центре МТС Москва: один для клиентских виртуальных машин (RBD), второй под CephFS для инженерных файловых шар, третий под S3-совместимый RGW для бэкапов. За пять лет эксплуатации — ни одной потери данных, и я готов делиться опытом развёртывания.

Архитектура Ceph — ключевые компоненты

КомпонентРольСколько нужно
MON (Monitor)Хранит карту кластера, консенсус через Paxos3 или 5 (нечётное)
MGR (Manager)Dashboard, метрики, оркестрация2 (active + standby)
OSD (Object Storage Daemon)Хранит данные, один на физический дискОт 6 (по 2 на ноду × 3)
MDS (Metadata Server)Для CephFS2+ (active + standby)
RGW (RADOS Gateway)S3/Swift-совместимый API2+ за балансировщиком

Принцип работы: данные делятся на объекты, объекты раскидываются по PG (Placement Groups), PG распределяются по OSD согласно CRUSH-карте. Клиент обращается к MON за актуальной картой и дальше работает напрямую с OSD — нет центрального прокси, нет узкого места.

Подбор железа

Это самый важный этап. Ceph неприхотлив к топологии, но жёсткий к дискам и сети.

Подготовка нод

# На каждой ноде (Debian 12 или Rocky 9)
apt install -y podman lvm2 chrony

# Настройка времени (критично для MON-консенсуса)
systemctl enable --now chrony

# Настройка /etc/hosts (если нет DNS)
cat >> /etc/hosts << 'EOF'
10.10.10.11  ceph01
10.10.10.12  ceph02
10.10.10.13  ceph03
10.10.10.14  ceph04
10.10.10.15  ceph05
EOF

# Отключаем swap (важно для OSD)
swapoff -a
sed -i 's|^/swap|#/swap|' /etc/fstab

# Тюнинг sysctl
cat >> /etc/sysctl.d/99-ceph.conf << 'EOF'
kernel.pid_max = 4194303
fs.file-max = 26234859
vm.swappiness = 1
net.ipv4.tcp_rmem = 4096 87380 33554432
net.ipv4.tcp_wmem = 4096 65536 33554432
EOF
sysctl --system

Развёртывание через cephadm

cephadm — современный способ развёртывания через контейнеры. Ставим на первую ноду:

# Bootstrap на ceph01
apt install -y cephadm
cephadm bootstrap --mon-ip 10.10.10.11 \
  --cluster-network 10.20.20.0/24 \
  --initial-dashboard-user admin \
  --initial-dashboard-password TempPass123

# Вывод — адрес дашборда, пароль, cephadm shell alias
cephadm install ceph-common
ceph -s   # HEALTH_WARN пока нет OSD — нормально

Добавляем остальные ноды в оркестратор:

# SSH-ключ cephadm-а раздаём на все хосты
ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph02
ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph03
# ... и так далее

# Добавляем ноды
ceph orch host add ceph02 10.10.10.12
ceph orch host add ceph03 10.10.10.13
ceph orch host add ceph04 10.10.10.14
ceph orch host add ceph05 10.10.10.15

# Проверка
ceph orch host ls

Разворачиваем MON и MGR

# 5 MON с меткой для автопривязки
ceph orch apply mon --placement="5 ceph01 ceph02 ceph03 ceph04 ceph05"
ceph orch apply mgr --placement="2 ceph01 ceph02"

ceph -s
# Должно стать mons: 5 daemons, mgrs: 2 daemons

Добавляем OSD

cephadm сам найдёт неиспользованные диски:

# Посмотреть доступные диски
ceph orch device ls

# Добавить все подходящие автоматически
ceph orch apply osd --all-available-devices

# Или вручную по конкретным дискам
ceph orch daemon add osd ceph01:/dev/nvme0n1
ceph orch daemon add osd ceph01:/dev/nvme1n1
ceph orch daemon add osd ceph02:/dev/nvme0n1
# ...

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

Пулы и replication

# Replication pool size=3, min_size=2
ceph osd pool create vms 128 128 replicated
ceph osd pool set vms size 3
ceph osd pool set vms min_size 2
rbd pool init vms

# EC pool 4+2 (для холодных данных/бэкапов)
ceph osd erasure-code-profile set ec42 \
  k=4 m=2 crush-failure-domain=host
ceph osd pool create cold_backup 128 128 erasure ec42
ceph osd pool set cold_backup allow_ec_overwrites true

RBD — блочное хранилище для гипервизоров

# Создание образа
rbd create --size 100G vms/vm-web01
rbd info vms/vm-web01

# Маппинг на клиенте (Linux)
rbd map vms/vm-web01 --name client.admin
mkfs.xfs /dev/rbd0
mount /dev/rbd0 /mnt/data

# В Proxmox Datacenter -> Storage -> Add -> RBD
# Указываем ID, Pool, Monitor Host, keyring

CephFS — файловая система

# Два пула — под метаданные и данные
ceph osd pool create cephfs_data 64 64
ceph osd pool create cephfs_metadata 32 32
ceph fs new officefs cephfs_metadata cephfs_data

# Разворачиваем MDS
ceph orch apply mds officefs --placement="2 ceph01 ceph02"

# Клиент (Linux)
mount -t ceph 10.10.10.11:6789:/ /mnt/officefs \
  -o name=admin,secretfile=/etc/ceph/admin.key

RGW — S3-совместимый API

# Развёртывание RGW
ceph orch apply rgw default --placement="2 ceph03 ceph04"

# Создание пользователя
radosgw-admin user create --uid=backup --display-name="Backup User"
# Сохраняем access_key и secret_key

# Проверка с AWS CLI
aws --endpoint-url http://ceph03:7480 s3 mb s3://bareos-daily
aws --endpoint-url http://ceph03:7480 s3 ls

Реальный кейс: 5-нодовый кластер на 120 ТБ

В июне 2024 запускали кластер для клиента — ИТ-интегратор с собственным облаком. Задача: 120 ТБ usable storage под VMware/Proxmox, S3 для бэкапов собственных клиентов, CephFS для файловой шары разработчиков. SLA — 99.95%, RTO после сбоя одной ноды — не более 30 минут.

Железо — 5 серверов Dell PowerEdge R750 с 10 × 15.36 ТБ NVMe Intel D7, 2 × 40G Mellanox, 384 ГБ RAM. Сеть — выделенные MLAG-свитчи Mellanox SN2410. Размещение в нашем дата-центре МТС Москва, дизель + батареи на 6 часов автономии.

Развёртывание заняло 4 рабочих дня, настройка pool-ов и клиентских шлюзов — ещё 3 дня. Финальная конфигурация:

Стоимость работ по развёртыванию и интеграции — 420 000 руб. Через три месяца упал один SSD на ноде ceph03 — 45 минут, recovery прошёл автоматически без простоя сервисов. Клиент сейчас использует ёмкость на 68%, продолжаем сопровождение.

Мониторинг и алерты

# Встроенный dashboard
ceph dashboard set-login-credentials admin StrongPass
# Открываем https://ceph01:8443

# Prometheus-модуль
ceph mgr module enable prometheus
# На :9283 метрики, цепляем внешний Prometheus

# Ключевые метрики для алертов
ceph_health_status           # 0=OK, 1=WARN, 2=ERR
ceph_osd_up / ceph_osd_in
ceph_pg_active               # Должно совпадать с ceph_pg_total
ceph_cluster_total_used_bytes / ceph_cluster_total_bytes

Эксплуатационные правила

Спроектируем и развернём Ceph под ваши задачи

От подбора железа и сетевой топологии до боевой эксплуатации. У нас свои 8 серверов Dell Xeon Platinum 8280 с 40G Mellanox в дата-центре МТС Москва — можем разместить ваш кластер или сдать мощности в аренду. Проект от 350 000 руб., сопровождение от 45 000 руб./мес. Бесплатная оценка совместимости текущего железа за 1 день.

Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш

FAQ — частые вопросы о Ceph

Сколько минимум нод нужно для продакшн Ceph?
Три ноды — минимум для replication size=3. Для production с erasure coding рекомендую пять нод.
Какую сеть закладывать под Ceph?
Минимум 10 GbE, рекомендовано 25-40 GbE для кластерной сети. Боевые кластеры работают на 40G Mellanox — комфортный запас под recovery.
Replication vs Erasure Coding — что выбрать?
Replication (size=3) — быстрее, проще в эксплуатации, но 33% usable. EC 4+2 даёт 66% usable, но медленнее на random write. Для горячих данных — replication, для холодных — EC.
Какие диски ставить под OSD?
Enterprise-класс с Power Loss Protection. Идеально — NVMe Intel/Samsung DC-серии. Консьюмерские SSD под Ceph НЕ ставить.
Как подключить Ceph к Proxmox или OpenStack?
Proxmox имеет встроенную интеграцию RBD. OpenStack — через cinder-volume с RBD backend. VMware — через iSCSI-шлюз.

Подпишитесь на рассылку ITfresh

Раз в неделю — практические гайды для руководителя IT и сисадмина: безопасность, 1С, миграции, резервные копии, лайфхаки из реальных проектов.

Реквизиты оператора персональных данных

ООО «АЙТИ-ФРЕШ», ИНН 7719418495, КПП 771901001. Юридический адрес: 105523, г. Москва, Щёлковское шоссе, д. 92, корп. 7. Контакт: info@itfresh.ru, +7 903 729-62-41. Оператор обрабатывает e-mail подписчика в целях рассылки информационных и рекламных материалов до момента отзыва согласия.