Гид по технологиям

Установка Ceph на Ubuntu 16.04 — пошаговый гид

9 min read Хранилище Обновлено 22 Nov 2025
Установка Ceph на Ubuntu 16.04
Установка 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 для всего окружения.

Схема кластера Ceph: узлы ceph-admin, mon1, ceph-osd1/2/3 и клиент

Требования и предпосылки

  • 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

Проверка сетевого соединения между узлами Ceph

Важно: синхронизированное время и корректный 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

Деплой SSH-ключей с ceph-admin на все узлы кластера

Если вход работает без пароля — переходите дальше.

Шаг 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.

Конфигурация UFW для узлов Ceph

Примечание по безопасности: в продакшене рекомендуется ограничивать доступ по IP и использовать сетевые ACL, VPN или выделенные сети для кластерного трафика.

Шаг 4 — Подготовка дисков на OSD-узлах

В примере каждый OSD-узел имеет два диска:

  1. /dev/sda — корневой раздел
  2. /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

Форматирование диска /dev/sdb на OSD-узлах в XFS

Совет: на реальных промышленных кластерах 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

Генерация конфигурации и ключей Ceph

Добавление 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

OSD-демоны и разбиение дисков созданы

Разверните админский ключ на все узлы (чтобы 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).

Статус кластера Ceph — пример вывода ceph -s

Если статус не 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)

  1. Подготовка узлов: hosts, NTP, cephuser.
  2. Настройка SSH и проверка доступа.
  3. Настройка брандмауэра и открытие необходимых портов.
  4. Форматирование и валидация дисков OSD.
  5. Установка ceph-deploy и деплой пакетов Ceph.
  6. Создание монитора и добавление OSD.
  7. Валидация статуса и тесты отказоустойчивости.

Контрольные команды для проверки на каждом шаге: 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-кластеров (устаревающая в современном стеке).

Итог и рекомендации

  1. Следуйте шагам по порядку: подготовка хостов → SSH → UFW → подготовка дисков → ceph-deploy.
  2. Всегда тестируйте отказоустойчивость (например, отключая один OSD) и проверяйте, что кластер восстанавливается.
  3. Переходите на современные инструменты (cephadm) и актуальные версии ОС для продакшена.

Summary: мы собрали рабочий Ceph-кластер на Ubuntu 16.04 и дали набор практических проверок, SOP, чеклистов и рекомендаций по безопасности. Используйте этот материал как основу, адаптируя параметры репликации и аппаратные характеристики под ваши требования.

Справочная документация

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как устроить идеальную вечеринку для просмотра ТВ
Развлечения

Как устроить идеальную вечеринку для просмотра ТВ

Как распаковать несколько RAR‑файлов сразу
Инструменты

Как распаковать несколько RAR‑файлов сразу

Приватный просмотр в Linux: как и зачем
Приватность

Приватный просмотр в Linux: как и зачем

Windows 11 не видит iPod — способы исправить
Руководство

Windows 11 не видит iPod — способы исправить

PS5: как настроить игровые пресеты
Консоли

PS5: как настроить игровые пресеты

Как переключить камеру в Omegle на iPhone и Android
Руководство

Как переключить камеру в Omegle на iPhone и Android