Ceph¶
Ceph — это свободная программная система распределённого хранения данных, объединяющая объектное, файловое и блочное хранилища в единую масштабируемую платформу. Ceph разрабатывается как отказоустойчивое, самовосстанавливающееся и самоуправляемое решение, способное работать на стандартном серверном оборудовании без использования специализированных аппаратных контроллеров. Система распространяется под лицензией LGPL.
¶История
Разработка Ceph была начата в 2004 году Сейджем Уэйлом (Sage Weil) в рамках его докторской диссертации в Калифорнийском университете в Санта-Крузе. Первая стабильная версия вышла в 2010 году. В 2012 году Уэйл основал компанию Inktank Storage для коммерческой поддержки и развития проекта. В 2014 году компания Red Hat приобрела Inktank, после чего Ceph стал одним из ключевых компонентов её продуктов, включая Red Hat Ceph Storage и OpenStack.
С 2014 года Ceph развивается при активном участии сообщества и корпораций (Red Hat, SUSE, Canonical, Intel, Cisco). В 2018 году вышел релиз Ceph 12.2 (Luminous), который ввёл поддержку BlueStore (нового бэкенда для хранения данных) и значительно улучшил производительность. Последние стабильные версии (например, Reef, выпущенная в 2023 году) продолжают расширять функциональность, включая улучшенную поддержку NVMe, шифрования на уровне дисков и интеграцию с Kubernetes.
¶Архитектура и принципы работы
Ceph основан на децентрализованной архитектуре, где все узлы (серверы хранения) равноправны. Ключевые компоненты системы:
- Ceph Monitor (MON) — хранит карту кластера (cluster map), которая содержит информацию о состоянии всех узлов, пулов и устройств. Мониторы обеспечивают консенсус через протокол Paxos и необходимы для работы кластера.
- Ceph Manager (MGR) — отвечает за сбор метрик, балансировку нагрузки и предоставление интерфейса управления (например, веб-панель Dashboard).
- Ceph OSD (Object Storage Daemon) — основной процесс, управляющий физическими дисками. Каждый OSD отвечает за хранение и репликацию объектов. OSD взаимодействуют друг с другом напрямую, без центрального сервера.
- Ceph Metadata Server (MDS) — необязательный компонент, необходимый для работы файловой системы CephFS. MDS управляет метаданными (имена файлов, права доступа, структура каталогов).
- Ceph RADOS Gateway (RGW) — шлюз для объектного хранилища, предоставляющий API, совместимый с Amazon S3 и OpenStack Swift.
¶CRUSH (Controlled Replication Under Scalable Hashing)
Вместо центральной таблицы размещения данных Ceph использует алгоритм CRUSH. Он вычисляет, на каких OSD должны находиться копии объекта, на основе его идентификатора (обычно хеша) и карты кластера. Это позволяет клиенту напрямую обращаться к нужному узлу без участия центрального сервера, что обеспечивает высокую масштабируемость и отказоустойчивость.
¶Репликация и кодирование с избыточностью (Erasure Coding)
Ceph поддерживает два основных способа защиты данных от потери:
- Репликация — каждая копия объекта хранится целиком на нескольких OSD (обычно 2 или 3 копии).
- Erasure Coding — данные разбиваются на фрагменты (k) и добавляются проверочные фрагменты (m). Потеря любого m фрагментов не приводит к потере данных. Это позволяет экономить дисковое пространство по сравнению с репликацией (например, k=4, m=2 даёт избыточность 50% против 200% при тройной репликации).
¶Типы хранилищ
Ceph предоставляет три основных интерфейса доступа к данным, которые могут использоваться одновременно в одном кластере:
¶Блочное хранилище (RBD — RADOS Block Device)
RBD позволяет создавать виртуальные диски, которые подключаются к клиентам (например, виртуальным машинам) как блочные устройства. Поддерживаются:
- Снимки (snapshots) и клонирование.
- Динамическое изменение размера.
- Интеграция с гипервизорами (KVM, QEMU, Xen).
- Протокол iSCSI (через шлюз).
RBD широко применяется в облачных платформах, таких как OpenStack (как бэкенд для Cinder и Glance).
¶Файловое хранилище (CephFS)
CephFS — это распределённая файловая система, совместимая с POSIX. Она позволяет монтировать единое файловое пространство на множество клиентов (Linux, Windows через Samba). Особенности:
- Высокая производительность на операциях с большими файлами.
- Поддержка метаданных и иерархической структуры каталогов.
- Возможность работы в режиме «только для чтения» или с кэшированием на стороне клиента.
CephFS используется в высокопроизводительных вычислительных кластерах (HPC), в системах контейнеризации (Kubernetes через CSI-драйвер) и как замена NFS.
¶Объектное хранилище (RADOS Gateway)
RGW предоставляет доступ к объектному хранилищу через HTTP-протоколы, совместимые с Amazon S3 и OpenStack Swift. Поддерживаются:
- Управление бакетами (bucket) и объектами.
- Версионирование, жизненные циклы, политики доступа.
- Мультитенантность (изоляция данных между разными проектами).
Объектное хранилище Ceph часто используется для хранения резервных копий, медиафайлов, архивов и данных аналитики.
¶Применение
Ceph применяется в следующих областях:
- Облачные вычисления — как бэкенд для OpenStack (Cinder, Glance, Manila, Swift), Kubernetes (через CSI-драйверы для блочных и файловых томов), а также для частных и публичных облаков.
- Высокопроизводительные вычисления (HPC) — CephFS используется для хранения данных научных расчётов, симуляций и обработки больших данных.
- Резервное копирование и архивирование — объектное хранилище RGW позволяет организовать надёжное и масштабируемое хранилище для резервных копий (например, через Bacula, Veeam, Duplicati).
- Медиа- и развлекательная индустрия — хранение видеофайлов, потоковая передача, обработка изображений.
- Корпоративные ЦОД — замена традиционных SAN/NAS-решений на единую платформу, снижающую стоимость владения.
¶Преимущества и недостатки
¶Преимущества
- Масштабируемость — кластер может расти от нескольких узлов до тысяч, не требуя остановки работы.
- Отказоустойчивость — данные автоматически реплицируются или кодируются, а при выходе из строя узла система перераспределяет нагрузку без вмешательства администратора.
- Единая платформа — один кластер может одновременно предоставлять блочное, файловое и объектное хранилище.
- Свободное ПО — отсутствие лицензионных отчислений, возможность модификации и аудита кода.
- Совместимость — поддержка стандартных протоколов (S3, iSCSI, NFS, POSIX).
¶Недостатки
- Сложность развёртывания и администрирования — требуется глубокое понимание архитектуры, правильная настройка сети, дисков и мониторов.
- Производительность — при неправильной конфигурации (например, использование медленных дисков или недостаточная пропускная способность сети) Ceph может работать медленнее, чем специализированные решения (например, Pure Storage или NetApp).
- Сетевые требования — для высокой производительности рекомендуется использование высокоскоростных сетей (10/25/40/100 Гбит/с) и раздельных сетей для клиентского и внутреннего трафика.
- Потребление ресурсов — OSD-процессы потребляют значительное количество оперативной памяти (рекомендуется 1–4 ГБ на OSD) и процессорного времени для вычислений CRUSH и Erasure Coding.
¶Критика
Основные критические замечания в адрес Ceph касаются его сложности и непредсказуемости производительности в некоторых сценариях. Например, при работе с большим количеством мелких файлов (менее 1 МБ) CephFS может демонстрировать высокую задержку из-за накладных расходов на метаданные. Также отмечается, что процесс восстановления данных после сбоя узла может занимать значительное время, особенно на больших кластерах с медленными дисками.
Некоторые администраторы критикуют Ceph за недостаточную документацию по продвинутым сценариям (например, настройка Erasure Coding для максимальной производительности) и за то, что обновление версий (upgrade) может быть рискованным и требовать тщательного планирования.
¶Интересные факты
- Название «Ceph» происходит от греческого слова «κεφαλή» (kephalē), означающего «голова», что символизирует многоголовую архитектуру системы (нет единой точки отказа).
- Ceph является одним из немногих проектов, который поддерживает одновременно три типа хранилищ (блочное, файловое, объектное) в одной кодовой базе.
- Крупнейшие развёртывания Ceph насчитывают сотни петабайт и тысячи узлов. Например, компания DreamHost использует Ceph для хранения данных своих клиентов.
- Ceph входит в состав дистрибутивов Linux (например, Ubuntu, RHEL, SUSE) и поддерживается в виде готовых пакетов.
¶Источники
- Официальная документация Ceph: https://docs.ceph.com/
- Sage Weil, «Ceph: A Scalable, High-Performance Distributed File System», 2007.
- Red Hat Ceph Storage — технические руководства и white papers.
- Статья «Ceph vs. GlusterFS: A Comparison» на сайте The New Stack, 2019.
- Материалы конференций OpenStack Summit и Ceph Days.
