Установка Ceph на Ubuntu 16.04 — пошаговый гид
Введение
Ceph — это свободная распределённая платформа хранения данных с высокой производительностью, отказоустойчивостью и возможностью горизонтального масштабирования. Она предоставляет интерфейсы для объектного (RADOS), блочного (RBD) и файлового (CephFS) хранения и не имеет единой точки отказа.
В этом руководстве показаны практические шаги по созданию кластера Ceph на Ubuntu 16.04 с помощью инструмента ceph-deploy. Примерное аппаратное и логическое расположение:
- 1 узел для администрирования (ceph-admin)
- 1 узел монитора (mon1)
- 3 узла OSD для хранения данных (ceph-osd1, ceph-osd2, ceph-osd3)
- 1 клиентский узел (ceph-client)
Кратко о компонентах кластера
- Ceph OSD (ceph-osd) — демон, отвечающий за хранение данных, репликацию и восстановление данных.
- Ceph Monitor (ceph-mon) — следит за состоянием кластера и хранит карты OSD/CRUSH.
- Ceph Metadata Server (ceph-mds) — требуется при использовании CephFS (файловой системы).
Волосок локального контекста: Ubuntu 16.04 устарел и больше не получает полноценной поддержки; для продакшн-сред рекомендуется более свежая версия Ubuntu и совместимая версия Ceph. В этом руководстве сохраняется исходная цель — показать процесс на Ubuntu 16.04.
Входные данные примера (именования и IP)
hostname IP address
ceph-admin 10.0.15.10 mon1 10.0.15.11 osd1 10.0.15.21 osd2 10.0.15.22 osd3 10.0.15.23 client 10.0.15.15
Важно: сохраните таблицу соответствия хостнеймов и IP для всего окружения.

Требования и предпосылки
- 6 серверов с установленной Ubuntu 16.04 (root-доступ на всех узлах).
- Доступ по SSH между узлами; на всех узлах должен быть установлен ssh-server.
- Для демонстрации ожидается, что на OSD-узлах есть отдельный пустой диск (/dev/sdb в примере).
- Понимание базовой работы Linux (утилиты fdisk, parted, mkfs, systemctl, ufw и т. п.).
Примечание: в боевом развертывании учитывайте план резервирования, мониторинга и бэкапов.
Шаг 1 — Подготовка всех узлов
На всех узлах выполним одинаковые подготовительные операции: создадим пользователя для деплоя, включим NTP, установим зависимости и пропишем hosts.
Создайте пользователя cephuser на всех узлах:
useradd -m -s /bin/bash cephuser
passwd cephuserДать cephuser право sudo без запроса пароля:
echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser
chmod 0440 /etc/sudoers.d/cephuser
sed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoersУстановка и настройка NTP (синхронизация времени обязательна для корректной работы кластера):
sudo apt-get install -y ntp ntpdate ntp-doc
ntpdate 0.us.pool.ntp.org
hwclock --systohc
systemctl enable ntp
systemctl start ntpЕсли узлы работают внутри VMware, установите open-vm-tools:
sudo apt-get install -y open-vm-toolsУстановите Python и parted (они нужны для ceph-deploy и операций с дисками):
sudo apt-get install -y python python-pip partedОбновите /etc/hosts на всех узлах — это важно для безошибочной работы ceph-deploy и SSH-конфигурации:
vim /etc/hostsВставьте (пример):
10.0.15.10 ceph-admin
10.0.15.11 mon1
10.0.15.21 ceph-osd1
10.0.15.22 ceph-osd2
10.0.15.23 ceph-osd3
10.0.15.15 ceph-clientПроверьте сетевую доступность:
ping -c 5 mon1
Важно: синхронизированное время и корректный hosts — частая причина непредвиденных ошибок при создании кластера.
Шаг 2 — Настройка SSH и ключей на ceph-admin
ceph-admin будет использоваться для установки и управления кластером. На ceph-admin под пользователем cephuser настроим SSH для доступа без пароля ко всем узлам.
Войдите на ceph-admin и переключитесь на cephuser:
ssh root@ceph-admin
su - cephuserСгенерируйте ключи SSH для cephuser (пустая passphrase):
ssh-keygenСоздайте конфигурацию SSH (~/.ssh/config) для удобного доступа:
vim ~/.ssh/configВставьте конфигурацию (пример):
Host ceph-admin
Hostname ceph-admin
User cephuser
Host mon1
Hostname mon1
User cephuser
Host ceph-osd1
Hostname ceph-osd1
User cephuser
Host ceph-osd2
Hostname ceph-osd2
User cephuser
Host ceph-osd3
Hostname ceph-osd3
User cephuser
Host ceph-client
Hostname ceph-client
User cephuserУстановите права и добавьте ключи в known_hosts и на удалённые узлы:
chmod 644 ~/.ssh/config
ssh-keyscan ceph-osd1 ceph-osd2 ceph-osd3 ceph-client mon1 >> ~/.ssh/known_hosts
ssh-copy-id ceph-osd1
ssh-copy-id ceph-osd2
ssh-copy-id ceph-osd3
ssh-copy-id mon1Введите пароль cephuser при запросе. После этого протестируйте доступ без пароля:
ssh ceph-osd1
Если вход работает без пароля — переходите дальше.
Шаг 3 — Настройка брандмауэра (UFW)
Включите UFW на всех узлах и откройте необходимые порты. Внимание: если в инфраструктуре используется другой брандмауэр (iptables, firewalld, внешние ACL), применяйте эквивалентные правила.
На ceph-admin установите ufw и откройте общие порты:
ssh root@ceph-admin
sudo apt-get install -y ufw
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 2003/tcp
sudo ufw allow 4505:4506/tcp
sudo ufw enableДля монитора mon1 откройте порт 6789:
ssh mon1
sudo apt-get install -y ufw
sudo ufw allow 22/tcp
sudo ufw allow 6789/tcp
sudo ufw enableДля OSD-узлов откройте диапазон портов 6800–7300 (необходим для OSD-to-OSD и клиентских подключений в некоторых конфигурациях):
ssh ceph-osd1
sudo apt-get install -y ufw
sudo ufw allow 22/tcp
sudo ufw allow 6800:7300/tcp
sudo ufw enableПовторите на ceph-osd2 и ceph-osd3.

Примечание по безопасности: в продакшене рекомендуется ограничивать доступ по IP и использовать сетевые ACL, VPN или выделенные сети для кластерного трафика.
Шаг 4 — Подготовка дисков на OSD-узлах
В примере каждый OSD-узел имеет два диска:
- /dev/sda — корневой раздел
- /dev/sdb — пустой раздел ~20 ГБ (будет использован Ceph)
На ceph-admin подключитесь к каждому OSD-узлу и проверьте диски:
ssh ceph-osd1
ssh ceph-osd2
ssh ceph-osd3Проверка разделов:
sudo fdisk -l /dev/sdbСоздадим GPT-партиционирование и XFS-файловую систему на /dev/sdb (в примере используется parted и mkfs.xfs):
sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%
sudo mkfs.xfs -f /dev/sdbПроверьте тип файловой системы:
sudo fdisk -s /dev/sdb
sudo blkid -o value -s TYPE /dev/sdb
Совет: на реальных промышленных кластерах OSD лучше ставить на быстрые диски NVMe/SSD, разделять журналы/DB WAL на отдельные устройства (Bluestore), и внимательно проектировать CRUSH-правила.
Шаг 5 — Сборка кластера Ceph с ceph-deploy
На ceph-admin установим ceph-deploy и затем пропишем конфигурацию и развернём кластер.
Войдите под cephuser на ceph-admin:
ssh root@ceph-admin
su - cephuserУстановите ceph-deploy через pip:
sudo pip install ceph-deployОбновите пакеты на всех узлах (рекомендуется перед установкой).
Создайте рабочую директорию для конфигурации кластера:
mkdir cluster
cd cluster/Инициализируйте новый кластер определив монитор mon1:
ceph-deploy new mon1Команда сгенерирует файл ceph.conf в каталоге cluster.
Отредактируйте ceph.conf и под [global] укажите параметры сети и размер пула по умолчанию:
vim ceph.confДобавьте:
# Your network address
public network = 10.0.15.0/24
osd pool default size = 2Параметр osd pool default size = 2 означает, что у вас будет репликация 2x по умолчанию. Подумайте об увеличении до 3 в продакшене для большей отказоустойчивости.
Установите Ceph на все узлы (ceph-admin, ceph-osd1..3, mon1):
ceph-deploy install ceph-admin ceph-osd1 ceph-osd2 ceph-osd3 mon1Разверните монитор на mon1:
ceph-deploy mon create-initialСоберите ключи для доступа администратора:
ceph-deploy gatherkeys mon1
Добавление OSD в кластер
Проверьте видимые диски /dev/sdb на OSD-узлах:
ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3Для очистки диска используйте zap (удалит все данные):
ceph-deploy disk zap ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdbПодготовьте OSD-узлы:
ceph-deploy osd prepare ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdbЕсли подготовка прошла успешно — активируйте OSD:
ceph-deploy osd activate ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdbПроверка: на каждом OSD-диске появятся партиции, например /dev/sdb1 (данные) и /dev/sdb2 (журнал):
ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3
ssh ceph-osd1
sudo fdisk -l /dev/sdb
Разверните админский ключ на все узлы (чтобы sudo ceph команды работали с локального хоста):
ceph-deploy admin ceph-admin mon1 ceph-osd1 ceph-osd2 ceph-osd3Установите корректные права на keyring на всех узлах:
sudo chmod 644 /etc/ceph/ceph.client.admin.keyringПосле этих шагов кластер Ceph на Ubuntu 16.04 считается созданным.
Шаг 6 — Тестирование и базовая проверка кластера
Выполните базовые команды диагностики состояния с монитора (mon1) или с ceph-admin, имеющего ключ администратора:
ssh mon1
sudo ceph health
sudo ceph -sОжидаемый результат: статус кластера HEALTH OK, присутствие монитор-узла mon1, 3 OSD в состоянии up и in. В примере указано доступное пространство ~45 GB (3 × 15 GB разделы Ceph Data).

Если статус не OK — проверьте логи на мониторе и OSD, сетевую доступность, тайминг и правильность ключей.
Критерии приёмки
- Команда sudo ceph health возвращает OK.
- Команда sudo ceph -s показывает 1 монитор и 3 OSD в состоянии up и in.
- Все OSD соответствуют ожидаемым дискам и размечены корректно.
- ceph-admin может выполнять административные команды локально без ошибок прав доступа.
Частые ошибки и как их решать
- Проблема: ceph-deploy не может подключиться по SSH. Решение: проверьте ~/.ssh/authorized_keys и /etc/hosts, проверьте правильность пользователя и прав на ключи.
- Проблема: несинхронизированное время приводит к ошибкам авторизации. Решение: проверьте NTP и системные часы (ntpq -p, timedatectl).
- Проблема: OSD не поднимается. Решение: проверьте логи /var/log/ceph, права на устройства, корректность zap/prepare/activate.
- Проблема: HEALTH WARN/ERR. Решение: прочитайте сообщение ceph health detail, проверьте placement groups, OSD guilty, I/O errors.
Альтернативные подходы
- Использовать cephadm (официальный инструмент для управления современными релизами Ceph) вместо ceph-deploy — предпочтительно для новых развертываний.
- Развертывание Ceph в Kubernetes: Rook operator управляет Ceph-кластером в k8s-кластере.
- Использовать конфигурации Bluestore (рекомендуется) с отдельными DB/WAL устройствами для лучшей производительности.
Когда этот процесс не подойдёт
- Если вы разворачиваете кластер в корпоративной среде с политиками безопасности, которые запрещают passwordless sudo — необходимо адаптировать модель доступа.
- Для больших кластеров (>100 OSD) подойдет автоматизированный инструмент (cephadm, orchestration, Ansible playbooks), а не ручной ceph-deploy.
Рекомендации по безопасности и hardening
- Ограничьте доступ к административным ключам и /etc/ceph/ceph.client.admin.keyring.
- Разделите сеть: отдельная сеть для кластерного трафика (public/cluster networks).
- Настройте мониторинг и алерты (Prometheus + Grafana, Ceph Dashboard).
- Регулярно обновляйте Ceph и ОС: Ubuntu 16.04 устарел — планируйте миграцию.
Методология и контрольные проверки (SOP)
- Подготовка узлов: hosts, NTP, cephuser.
- Настройка SSH и проверка доступа.
- Настройка брандмауэра и открытие необходимых портов.
- Форматирование и валидация дисков OSD.
- Установка ceph-deploy и деплой пакетов Ceph.
- Создание монитора и добавление OSD.
- Валидация статуса и тесты отказоустойчивости.
Контрольные команды для проверки на каждом шаге: ping, ssh, fdisk, ceph-deploy list, ceph -s, ceph osd tree.
Роль-ориентированные контрольные списки
Storage администратор (перед развёртыванием):
- Проверка соответствия железа требованиям.
- Планирование сети и таблицы IP.
- Согласование политики репликации (replica size).
DevOps инженер (деплой):
- Создал cephuser и настроил ssh-key.
- Настроил ufw и открыл порт/диапазоны.
- Установил ceph-deploy и выполнил install/mon/osd.
Оператор (после развёртывания):
- Мониторит ceph health и метрики.
- Тестирует восстановление OSD (симуляция отказа).
- Ведёт журнал операций (change control).
Тест-кейсы и приёмочные проверки
- Перезапустить один OSD и проверить, что кластер остаётся HEALTH OK или переходит в HEALTH_WARN с автоматическим восстановлением.
- Удалить/заменить диск /dev/sdb на одном узле и проверить процедуру reweight/replace OSD.
- Нагрузочный тест: записать/прочитать данные через RBD/FS и проверить latencies.
Миграционные заметки и совместимость
- Ubuntu 16.04 выходит из поддержки — для долгосрочной эксплуатации рекомендуется Ubuntu 18.04/20.04 или совместимые дистрибутивы.
- ceph-deploy поддерживал старые релизы Ceph; современные релизы управляются cephadm и systemd-юнитами, требования к конфигурации изменились.
- При миграции планируйте downtime или последовательную миграцию OSD/mon узлов с резервными копиями ключей и конфигурации.
Ключевые параметры и справочная таблица (fact box)
- Количество узлов в примере: 6 (1 admin, 1 mon, 3 osd, 1 client).
- Порты: SSH 22, HTTP 80, Monitor 6789, OSD 6800–7300, Salt 4505–4506 (если используется).
- Диски на OSD: /dev/sdb (пример 20 GB), в результате — 2 партиции: sdb1 (data), sdb2 (journal).
- osd pool default size = 2 в конфиге (рекомендация: 3 для продакшена).
Короткое объявление (для рассылки / changelog, 100–200 слов)
Мы развернули Ceph-кластер на Ubuntu 16.04 с использованием ceph-deploy: подготовили 6 узлов, настроили SSH-ключи, синхронизацию времени, брандмауэр, выполнили форматирование дисков OSD в XFS и добавили OSD-демоны. После создания монитора и распределения ключей проверили состояние кластера командой ceph -s. В руководстве есть разделы по отладке, роли-ориентированные чеклисты, критерии приёмки и рекомендации по безопасности. Обратите внимание: Ubuntu 16.04 устарела — для новых развёртываний рассматривайте cephadm и современные дистрибутивы ОС.
Короткая галерея пограничных случаев
- Нет доступа к /dev/sdb — диск занят или смонтирован: отмонтируйте и выполните zap.
- Неверный public network в ceph.conf — OSD/мониторы не увидят друг друга.
- Неподходящий формат файловой системы — ceph-deploy ожидает чистый диск для подготовки OSD.
Глоссарий в одну строку
- OSD — демон, хранящий данные и обеспечивающий репликацию.
- MON — монитор, хранит карту кластера и контрольную информацию.
- CRUSH — алгоритм расположения данных без центрального метадиректа.
- ceph-deploy — утилита для простого развёртывания Ceph-кластеров (устаревающая в современном стеке).
Итог и рекомендации
- Следуйте шагам по порядку: подготовка хостов → SSH → UFW → подготовка дисков → ceph-deploy.
- Всегда тестируйте отказоустойчивость (например, отключая один OSD) и проверяйте, что кластер восстанавливается.
- Переходите на современные инструменты (cephadm) и актуальные версии ОС для продакшена.
Summary: мы собрали рабочий Ceph-кластер на Ubuntu 16.04 и дали набор практических проверок, SOP, чеклистов и рекомендаций по безопасности. Используйте этот материал как основу, адаптируя параметры репликации и аппаратные характеристики под ваши требования.
Справочная документация
- Официальная документация Ceph (релиз Jewel): http://docs.ceph.com/docs/jewel/
Похожие материалы
Как устроить идеальную вечеринку для просмотра ТВ
Как распаковать несколько RAR‑файлов сразу
Приватный просмотр в Linux: как и зачем
Windows 11 не видит iPod — способы исправить
PS5: как настроить игровые пресеты