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

Установка 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
Автор
Редакция

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

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство