Ceph-кластер в среднем бизнесе: когда — АйТи Фреш
Москва, Щёлковское шоссе, д. 92, корп. 7 · Пн–Пт 9:00–19:00 · +7 903 729-62-41
· 13 мин чтения

Ceph-кластер в среднем бизнесе: когда он оправдан и как его собрать без боли

Ceph-кластер в среднем бизнесе: когда он оправдан и как его собрать без боли

История из октября 2025 года: у нашего клиента — крупной логистической компании с 80 сотрудниками и собственным дата-центром под Москвой — внезапно закончилась поддержка хранилища NetApp FAS2750. Это крупный проект-исключение: обычно мы работаем с компаниями до 50 рабочих мест. Годовое продление стоило бы 720 тысяч рублей, а запчастей пришлось бы ждать 6-8 недель. Клиенту срочно понадобилось мощное альтернативное распределённое хранилище на сотни терабайт для виртуальных машин на Proxmox и корпоративных файловых шар. Мы развернули Ceph-кластер на пяти узлах — 76 ТБ доступной ёмкости за 3.4 миллиона рублей. Дальше — кому Ceph подходит идеально и как мы его внедряем.

Когда Ceph оправдан, а когда нет

Ceph — система действительно сложная, и все инвестиции в неё — время админа, затраты на сеть, само железо — окупаются только при очень конкретных условиях. Вот моё главное правило:

Ceph нужен, если одновременно:

Ceph НЕ нужен, если:

Сравнение условий для использования Ceph-кластера в среднем бизнесе
Ceph оправдан при масштабируемых и отказоустойчивых инфраструктурах, но не подходит для небольших проектов.

Архитектурные блоки Ceph

КомпонентНазначениеСколько нужно
OSD (Object Storage Daemon)Хранит данные, один демон на дискОт 12 (4 диска × 3 узла)
MON (Monitor)Держит кластерную карту, кворум3 или 5 (нечётное)
MGR (Manager)Метрики, web-UI, модули2 (активный + standby)
MDS (Metadata Server)Для CephFS — метаданные файлов2+ если используется CephFS
RGW (RADOS Gateway)S3/Swift API шлюз2+ если нужен S3

На одном сервере иногда прекрасно уживаются сразу несколько ролей Ceph. Обычно мы делаем так: на первых трёх узлах ставим MON, MGR и OSDs вместе. А остальные узлы уже используем чисто под OSD — для хранения данных.

Типовая конфигурация 5-узлового кластера

Какое железо мы подбираем, когда работаем с клиентом, у которого примерно 50-100 рабочих мест? Вот наш типовой набор:

Каждый узел (5 шт):
  Supermicro SuperServer 2U б/у
  2 × Intel Xeon Silver 4316 (20 core total)
  128 ГБ DDR4 ECC
  2 × 480 ГБ SSD (ZFS mirror для ОС)
  2 × 1.92 ТБ NVMe U.2 (Samsung PM9A3) — для WAL+DB
  10 × 12 ТБ HDD SAS 12G 7200rpm — OSD-данные
  2 × 25G Mellanox ConnectX-5 (public+cluster сеть)
  Redundant PSU 1000W
  Total raw: 600 ТБ × 5 узлов = 3 ПБ
  Usable at size=3: ~1 ПБ
  Usable at EC 4+2: ~2 ПБ

Что касается сети: мы используем 25G LACP, завязанный на два коммутатора Mikrotik CRS520 с MLAG. И очень важный момент — обязательно разделяем трафик: отдельные VLAN идут для 'public' (это всё, что касается клиентских данных) и для 'cluster' (для репликации между OSD, чтобы ничего не мешало друг другу).

Установка через cephadm

Начиная с версии Quincy (вышла в 2022 году), процесс установки Ceph стал гораздо проще. Теперь всё делается через cephadm, а все компоненты упакованы в containerd. Это прямо сильно облегчило нам жизнь при развёртывании!

# На первом узле
apt install cephadm
cephadm bootstrap --mon-ip 10.30.0.11 --initial-dashboard-user admin
# Получаем URL dashboard + пароль

# На других узлах — устанавливаем SSH-ключ от bootstrap-узла
ssh-copy-id root@10.30.0.12
ssh-copy-id root@10.30.0.13
ssh-copy-id root@10.30.0.14
ssh-copy-id root@10.30.0.15

# Добавляем в кластер
ceph orch host add node02 10.30.0.12 _admin
ceph orch host add node03 10.30.0.13 _admin
ceph orch host add node04 10.30.0.14
ceph orch host add node05 10.30.0.15

# MON на первых трёх + MGR
ceph orch apply mon 3
ceph orch apply mgr 2

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

Через 10-20 минут кластер готов. Проверяем ceph -s — должно быть HEALTH_OK.

Подготовка узлов перед установкой

Перед bootstrap настоятельно рекомендую выполнить базовую подготовку каждой ноды. Это занимает 15–20 минут, но избавляет от трудно диагностируемых проблем в будущем.

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

# Синхронизация времени критична для MON-консенсуса
systemctl enable --now chrony

# Если нет DNS — прописываем хосты
cat >> /etc/hosts << 'EOF'
10.30.0.11  node01
10.30.0.12  node02
10.30.0.13  node03
10.30.0.14  node04
10.30.0.15  node05
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

Расхождение времени между MON-узлами всего на 50 мс уже способно дестабилизировать кворум. Поэтому chrony — не рекомендация, а обязательное условие.

BlueStore: правильное размещение WAL+DB

BlueStore — это наш стандартный движок хранения. Если вам нужна высокая производительность, жизненно важно вынести WAL и DB на быстрые NVMe-диски. А основные данные, конечно, можно оставить на обычных HDD. Наша рекомендация здесь простая:

Команда создания:

ceph orch daemon add osd node01:data_devices=/dev/sda,db_devices=/dev/nvme0n1
# повторить для каждой связки HDD+NVMe

Иначе, поверьте, всё будет работать в разы медленнее! Запись на HDD, особенно случайная, просто убивает производительность, а WAL как раз требует невероятной скорости. Так что, пожалуйста, не экономьте на NVMe — оно того стоит.

Пулы и размеры репликации

Создаём пулы под разные задачи:

# Для VM-дисков Proxmox — реплика 3, быстрый
ceph osd pool create rbd-vm 128 128 replicated
ceph osd pool set rbd-vm size 3
ceph osd pool set rbd-vm min_size 2
ceph osd pool application enable rbd-vm rbd

# Для бэкапов — Erasure Coding 4+2 (5 узлов достаточно)
ceph osd erasure-code-profile set ec42 k=4 m=2 crush-failure-domain=host
ceph osd pool create backup-ec 64 64 erasure ec42
ceph osd pool set backup-ec allow_ec_overwrites true

# Для файловой шары — реплика 3, CephFS
ceph fs volume create corpfs

Для виртуальных машин мы всегда используем replicated size=3. Да, это расходует больше места, но зато работает значительно быстрее, чем Erasure Coding. А вот для архивов и бэкапов, где важна экономия, а скорость не так критична, идеально подходит EC 4+2 или 8+2. Это позволяет сэкономить от 33% до 50% дискового пространства, хоть и работает немного медленнее.

RBD для Proxmox

Интегрировать Ceph с Proxmox — проще простого! Заходите в GUI: Datacenter, потом Storage, затем Add, и выбираете RBD.

Pool:         rbd-vm
Monitor(s):   10.30.0.11,10.30.0.12,10.30.0.13
User:         admin
KeyringFile:  /etc/pve/priv/ceph/rbd-vm.keyring

Как только всё настроено, вы можете создавать диски для своих виртуальных машин прямо на Ceph-пуле. А знаете, что самое крутое? Live migration между узлами Proxmox работает просто мгновенно! Диск при этом никуда не перемещается, двигается только сам процесс виртуальной машины.

Снапшоты и откат RBD

Помимо live-миграции, у RBD есть ещё один мощный инструмент — мгновенные снапшоты. Они работают по принципу copy-on-write и не требуют остановки виртуальной машины. Это особенно выручает перед обновлениями или изменениями конфигурации.

# Создание снапшота диска ВМ
rbd snap create vm-disks/web-server-01@before-upgrade

# Просмотр снапшотов
rbd snap ls vm-disks/web-server-01

# Откат к состоянию до обновления
rbd snap rollback vm-disks/web-server-01@before-upgrade

# Удаление ненужного снапшота
rbd snap rm vm-disks/web-server-01@before-upgrade

В Proxmox снапшоты RBD доступны прямо из GUI: выберите ВМ → Snapshots → Take Snapshot. При этом снапшот создаётся мгновенно, а откат занимает секунды, даже для дисков на сотни гигабайт.

CephFS для файловых шар

CephFS — это полноценная файловая система, она полностью совместима с POSIX и, конечно, работает прямо поверх Ceph. Её можно без проблем смонтировать на любой Linux-машине, используя либо FUSE, либо нативный kernel-client. А для тех, кому нужно работать с Windows, мы настраиваем Samba Gateway.

# На Linux-клиенте
mount -t ceph 10.30.0.11:6789:/ /mnt/corp \
  -o name=admin,secret=AQCTxAlnwsw6CRAA...

# Либо через fstab
10.30.0.11,10.30.0.12,10.30.0.13:/ /mnt/corp ceph \
  name=admin,secretfile=/etc/ceph/admin.secret,_netdev 0 2

Для Windows-клиентов мы делаем так: ставим Samba вместе с ceph-volume, а затем экспортируем SMB-шару, используя CephFS как бэкенд.

Квоты на подкаталоги CephFS

Когда CephFS используют несколько отделов или проектов, важно ограничивать потребление места. CephFS поддерживает квоты на уровне подкаталогов через расширенные атрибуты — без создания отдельных пулов.

# Ограничение размера подкаталога (10 ГБ)
setfattr -n ceph.quota.max_bytes -v 10737418240 /mnt/corp/project-alpha

# Ограничение количества файлов (100 000)
setfattr -n ceph.quota.max_files -v 100000 /mnt/corp/project-alpha

# Проверка текущих квот
getfattr -n ceph.quota.max_bytes /mnt/corp/project-alpha

Квоты применяются мгновенно и не требуют размонтирования. Это удобно для многопользовательских файловых шар: бухгалтерия, отдел продаж и разработка получают гарантированные лимиты, а один «разросшийся» отдел не завалит всё хранилище.

RGW как S3-совместимый объектный storage

И, конечно, Ceph отлично подходит для бэкапов — будь то Veeam или Proxmox PBS. А ещё он идеален для хранения объектов различных приложений. В общем, вариантов масса:

ceph orch apply rgw corp --port=7480
# Создаём пользователя
radosgw-admin user create --uid=backup --display-name="Backup User"
# Получаем access_key и secret_key

Дальше в Veeam или Proxmox PBS указываем endpoint http://ceph-rgw.example.ru:7480 и полученные ключи.

Кейс: миграция логистической компании с NetApp

Хронология проекта (32 рабочих дня):

  1. **Недели 1-2:** Начинаем с детального аудита вашего NetApp (напомним, там занято 36 ТБ). Одновременно проектируем будущий Ceph-кластер, который будет состоять из пяти узлов.
  2. **Недели 3-4:** Приступаем к закупке: пять б/у серверов Supermicro, 25G-коммутатор Mikrotik, плюс все нужные кабели DAC. После этого сразу монтируем оборудование в стойку и настраиваем сеть.
  3. **Недели 5-6:** Это уже кульминация! Устанавливаем Debian 12, настраиваем cephadm bootstrap. Далее — самое интересное: поднимаем наш новенький 5-узловой Ceph-кластер и создаем все необходимые пулы.
  4. На седьмой неделе, когда пришло время проверять систему на прочность, мы взялись за тестирование производительности. Работали с `fio` и `rados bench` – всё по классике. Представляете, на RBD-пуле удалось выжать 38 000 IOPS при случайном чтении 4K блоков! А последовательная скорость? Целых 2.4 ГБ/с. Вот это мощь!
  5. На протяжении восьмой и девятой недель мы решали непростую задачу: мигрировали 24 виртуальные машины. Переезд был с Proxmox+NetApp на новенькую связку Proxmox+Ceph. И что самое интересное? Всё это происходило в онлайне, не останавливая работу! Мы применяли `qm move-disk`, и на каждую VM уходило от получаса до полутора часов. По-моему, отличный результат.
  6. Десятая неделя была целиком посвящена миграции файловых шар. Как их перенести надежно и безболезненно? Мы решили использовать проверенную комбинацию: `robocopy` для копирования, а затем подключили SMB Gateway, чтобы всё легло ровненько на CephFS. Работа на удивление быстро завершилась.
  7. На одиннадцатой неделе мы подключили RGW и сразу же интегрировали его с Proxmox PBS. Знаете, что это дало? Бэкапы всех виртуальных машин теперь просто летят в Ceph-S3! Забудьте о медленных сохранениях, с этим решением процесс стал молниеносным.
  8. И вот двенадцатая, финальная неделя! Здесь мы доводили всё до идеала. Настроили полный мониторинг: `Prometheus` вместе с `Grafana` и, конечно же, `CephExporter`. Разработали удобные дашборды, чтобы вся картина была на виду. Затем что? Обучили администратора клиента, подробно показав, как управлять новой системой. И, разумеется, передали все доступы и необходимую документацию. Клиент теперь полностью в курсе!

Давайте посчитаем бюджет. Железо (мы использовали б/у, что очень выгодно) обошлось в 2.4 млн рублей, сеть — 580 тысяч, а наши услуги — 460 тысяч. Итого, общая сумма составила 3.44 млн рублей. А теперь сравните: годовое продление того самого NetApp стоило 720 тысяч, а новая аналогичная система от NetApp вытянула бы 9-11 миллионов! Выгода очевидна, верно? Наше решение окупилось для клиента уже в первый год.

Мониторинг и ежедневная эксплуатация

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

За пять лет эксплуатации трёх прод-кластеров мы вывели несколько жёстких правил. Первое: никогда не запускайте кластер с параметрами size=2 и min_size=1 — split-brain при потере связи между узлами практически гарантирован, и решается он очень болезненно.

Второе: не занимайте больше 75% ёмкости. После 80% производительность деградирует настолько заметно, что это сразу сказывается на всех сервисах. Третье: для расчёта количества PG используйте формулу количество OSD × 100 / replication_size, округляя результат до ближайшей степени двойки.

И обязательно включите балансировщик — он сам следит за равномерным распределением placement groups:

ceph balancer on
ceph balancer mode upmap

И не забывайте про резервную копию MON-карты — раз в сутки в отдельное место:

ceph mon getmap -o monmap.bin

FAQ — Ceph для бизнеса

Ceph — это сложно. Нужен ли он среднему бизнесу?
Нужен, если одновременно: 1) виртуалок 20+; 2) нужна отказоустойчивость без простоя (SSD и HDD disks fail); 3) рост объёма данных прогнозируется 30-50% в год. Для офиса 20-30 мест со статичной нагрузкой и ZFS-репликацией Ceph — overkill. Для 50+ мест с растущими VM, S3-бэкапами, файловыми шарами — оправдан.
Сколько минимум узлов для прод-Ceph?
Три — минимум для кворума monitor и для size=3 репликации. Но при этом вы теряете только один узел безопасно. Оптимум — 4-5 узлов: можно потерять два одновременно без потери данных. Каждый узел: 2 CPU / 32 ГБ RAM / 4-8 OSD (SSD или NVMe). Сеть — обязательно 25G или 10G минимум.
BlueStore или FileStore?
BlueStore — начиная с Luminous (2017) это дефолт. FileStore уже deprecated. В 2026 году никаких FileStore — всегда BlueStore. WAL и DB на NVMe, основные данные на SSD/HDD. Для HDD-only нужны отдельные NVMe-диски для WAL+DB, иначе производительность будет в разы хуже.
Ceph vs NetApp/EMC для МСБ?
NetApp/Dell EMC — коробочное решение с техподдержкой, 'просто работает'. Стоимость — 3-8 млн руб за начальный уровень + 400-900 тыс руб/год поддержка. Ceph — open source, стоит сэкономленных денег, но требует админа с опытом. Для компании, которая может себе позволить Ceph-админа (своего или через аутсорс), Ceph даёт 2-3x экономии.
Сколько стоит развёртывание Ceph-кластера на 50 ТБ usable?
5 серверов Supermicro с 10× 12ТБ HDD + 2× 1.92ТБ NVMe каждый (для WAL+DB) — около 2.4-2.8 млн руб б/у. Сеть 25G (коммутатор + карты) — 600-900 тыс руб. Работа под ключ (установка, настройка, обучение администратора) — от 420 тыс руб. Итого ~3.5-4 млн руб против 8-12 млн за NetApp-аналог.

Столкнулись с похожей задачей? Обращайтесь — решим

Если у вас происходит что-то из описанного в этой статье — или любая другая проблема с ИТ-инфраструктурой, — обращайтесь в любое время. Мои специалисты и я лично разберём ситуацию, найдём настоящую причину и доведём до решения.

Возьмёмся и за разовую задачу, и за постоянное обслуживание. Первичная консультация — бесплатно и без обязательств.

📞 +7 903 729-62-41 ✈ Telegram @ITfresh_Boss

С уважением, Семёнов Евгений Сергеевич, директор «АйТи Фреш» — IT-аутсорсинг для компаний до 50 рабочих мест, 15+ лет практики

Похожие статьи

📄
Скачайте подробный разбор в PDF Кейсы, статистика, типовые ошибки и чек-лист самопроверки — 12 страниц
Скачать PDF

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

Каждый руководитель IT или сисадмин знает, как ценны практические знания. Мы еженедельно публикуем новые гайды, где делимся лайфхаками из наших реальных проектов. Узнайте всё о безопасности, 1С, миграциях, резервных копиях — и сразу применяйте в работе!

Письмо придёт в течение минутыНе нашли его во «Входящих» — загляните в папку «Спам» или «Промоакции» и нажмите «Не спам». Так все следующие выпуски будут приходить прямо в основную почту.
Реквизиты оператора персональных данных

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