We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Развёртывание распределённого файлового хранилища на базе Ceph в Termux: настройка OSD, MON и клиентских компонентов

Ceph — распределённая система хранения с архитектурой Monitor (MON), Object Storage Daemon (OSD) и клиентами, которые обращаются к кластерам по сети. Запуск полного кластера Ceph в одном окружении Termux на смартфоне/планшете — это не производственная схема, а лабораторная: для обучения, тестов и понимания принципов. Тем не менее грамотная настройка MON, OSD и клиентской части в Termux позволяет смоделировать поведение кластера в рамках локальной сети и проверить базовую работоспособность компонентов.

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

Требования и подготовка

Оборудование и сеть

  • Android-устройство с Termux (последняя стабильная версия).
  • Одна или несколько машин для узлов кластера: минимально — MON и минимум один OSD. Практичнее разнести узлы по разным устройствам/VM.
  • Локальная сеть (Wi‑Fi/кабель). Для изоляции лаборатории можно использовать создание локальной сети через VPN/туннель, но только чтобы объединить устройства в одну адресную область, а не для обхода блокировок.

Требования по системе

  • Достаточно свободного места в файловой системе Termux под данные и конфигурации.
  • Желательно устойчивое питание и отключение энергосбережения для Termux.
  • Возможность использовать доступ к блочным устройствам на Android часто ограничена, поэтому для обучения обычно используют файловые устройства (loopback) или выделенную директорию под «OSD-like» схему. Для реального Ceph-подобного поведения лучше тестировать в среде с доступом к устройствам хранения.

Примечание о реалистичности

Ceph в официальном виде рассчитан на Linux-среды с соответствующими системными компонентами. В Termux можно собрать и/или запустить часть tooling, но для надёжной работы OSD обычно нужен «полноценный Linux» (например, через контейнер/виртуализацию). В этой статье мы делаем акцент на принципах настройки: MON-файл конфигураций, структура ключей, примеры сервисных команд и корректная связка клиента. Если вы работаете в Termux строго «без виртуализации», используйте шаблоны и проверяйте совместимость на конкретном устройстве.

Подготовка Termux: окружение, пакеты и доступ

Начните с обновления пакетов и установки базовых утилит. Далее установите необходимые зависимости для сборки/запуска (на практике состав может отличаться в зависимости от выбранного способа установки Ceph).

pkg update && pkg upgrade -y
pkg install -y wget curl gnupg coreutils tar proot util-linux openssh net-tools

Далее создайте рабочую директорию для лаборатории Ceph:

mkdir -p ~/ceph-lab && cd ~/ceph-lab

Проверьте адрес вашего устройства в локальной сети:

ip addr show

Запишите IP-адреса узлов, которые будут участвовать в кластере (MON и OSD узлы).

Архитектура: что именно настраиваем

  • MON — поддерживает карту кластера (cluster map), следит за состоянием мониторов и обеспечивает консистентность метаданных.
  • OSD — хранит объекты. В лаборатории вы моделируете OSD, обеспечивая каталог/устройство под «данные» и корректные ключи.
  • Клиент — подключается к кластеру через конфигурацию (ceph.conf) и ключи, выполняет операции с пулом/файловой системой (если включена соответствующая подсистема).

Создание конфигурации кластера и идентификаторов

Для Ceph ключевым является FSID (уникальный идентификатор кластера) и имя кластера (обычно ceph). На узле MON определите FSID. В лабораторном режиме можно сгенерировать UUID.

FSID="$(python -c 'import uuid; print(uuid.uuid4())')"
echo "FSID=$FSID"

Создайте директории MON:

mkdir -p ~/ceph-lab/mon-store
mkdir -p ~/ceph-lab/etc

Далее создайте базовый ceph.conf. В реальном сценарии параметры подбираются с учётом сети. Ниже пример: MON адрес и порты. Подставьте ваш IP и выберите список MON узлов (можно начать с одного MON).

cat > ~/ceph-lab/etc/ceph.conf <<'EOF'
[global]
fsid = '$FSID'
mon_initial_members = mon1
mon_host = IP_МОН_УЗЛА:6789
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

public_network = 192.168.0.0/24
cluster_network = 192.168.0.0/24

osd_pool_default_size = 3
osd_pool_default_min_size = 1
EOF

Замените IP_МОН_УЗЛА и диапазон public_network / cluster_network под вашу лабораторную сеть.

Инициализация MON

MON должен иметь свой «store» и конфигурацию. В стандартном Ceph это делается командой ceph-authtool/ceph-mon или утилитой ceph-volume для OSD. В Termux набор команд может отличаться, поэтому используйте ниже как практический каркас: ключи, мон-ключи, заполнение mon-store.

Если вы используете окружение/сборку Ceph, где доступны команды ceph-mon, ceph-authtool, придерживайтесь логики:

  • Сгенерировать ключи (mon и cluster).
  • Инициализировать mon-store.
  • Поднять процесс MON.

Примерные команды (шаблон):

# 1) Создайте mon keyring
MON_NAME="mon1"
MON_KEYRING="~/ceph-lab/etc/ceph.mon.$MON_NAME.keyring"

# 2) (Псевдо)генерация содержимого keyring — в зависимости от доступных утилит.
# Если вы собираете Ceph в Termux, используйте штатные инструменты Ceph для генерации keyring.

echo "Монитор $MON_NAME: ключевой материал (заполните штатной генерацией)"

Чтобы не вводить вас в заблуждение из‑за возможной несовместимости утилит Ceph с вашей средой Termux, ниже дан универсальный принцип: после генерации keyring и ceph.conf вы должны выполнить инициализацию mon-store и запуск монитора с правильными параметрами имени и пути.

Запуск MON (пример-каркас):

# Инициализация mon-store (каркас; команда/параметры могут отличаться в вашей сборке)
# ceph-mon --mkfs -i $MON_NAME --monmap /path/to/monmap --keyring $MON_KEYRING --mon-data ~/ceph-lab/mon-store

# Запуск
# ceph-mon -i $MON_NAME --keyring $MON_KEYRING --mon-data ~/ceph-lab/mon-store

Практика проверки

  • Проверьте, что процесс MON слушает порт 6789 (или ваш выбранный).
  • Попробуйте подключиться клиентом и запросить карту кластера (если клиентские компоненты доступны).

Настройка OSD: подготовка диска/каталога, keyring и запуск

OSD требует «хранилище» (device) и правильных ключей. В лабораторной среде под Termux чаще всего используют файл/директорию. Однако важно понимать, что поведение будет приближённым: многие низкоуровневые оптимизации Ceph для реальных дисков недоступны.

Шаг 1. Подготовка «данных» OSD

Создайте каталог OSD data. В зависимости от вашей стратегии, можно использовать отдельный каталог на файловой системе или loopback-файл (если доступна поддержка loop в вашем окружении).

OSD_ID=0
mkdir -p ~/ceph-lab/osd/osd$OSD_ID

Шаг 2. Создание OSD keyring

OSD регистрируется в системе авторизации Cephx. Вам нужен keyring для osd.$OSD_ID (или аналогичный в вашей сборке/версии).

Каркас:

OSD_KEYRING="~/ceph-lab/etc/ceph.osd.$OSD_ID.keyring"
echo "Сгенерируйте cephx ключ для osd.$OSD_ID и сохраните в $OSD_KEYRING (штатными утилитами Ceph)"

Шаг 3. Инициализация OSD (mkfs) и запуск

В реальном Ceph часто используются команды ceph-volume. В Termux метод зависит от доступной сборки. Пример каркаса:

# Примерная логика (параметры уточните по вашей версии Ceph):
# ceph-osd --mkfs -i $OSD_ID --osd-data ~/ceph-lab/osd/osd$OSD_ID --osd-journal ...
# ceph-osd -i $OSD_ID --osd-data ~/ceph-lab/osd/osd$OSD_ID

Проверка статуса OSD

  • Логи OSD должны показывать инициализацию, привязку к MON и успешную авторизацию.
  • На стороне MON-клиента (если он доступен) должен появиться OSD в составе кластера.

Конфиг клиента: ceph.conf, ключи и базовые команды

Чтобы клиентские компоненты могли подключаться к кластеру, необходимы:

  • ceph.conf с fsid, mon_host и сетями.
  • cephx client key — keyring для пользователя (например, client.admin или выделенный client.user).
  • Утилиты клиента Ceph (например, ceph), доступные в вашей среде.

Создайте клиентский ключ

Если у вас есть инструменты управления авторизацией, создайте ключ пользователя. В каркасном виде:

CLIENT_NAME="client.admin"
CLIENT_KEYRING="~/ceph-lab/etc/ceph.client.admin.keyring"

echo "Сгенерируйте keyring для $CLIENT_NAME (cephx) и сохраните в $CLIENT_KEYRING"

Подготовьте конфигурацию для клиента

Скопируйте ceph.conf и keyring в рабочую директорию клиента (на том же устройстве или на другом узле).

mkdir -p ~/ceph-lab/client
cp ~/ceph-lab/etc/ceph.conf ~/ceph-lab/client/
cp ~/ceph-lab/etc/ceph.client.admin.keyring ~/ceph-lab/client/

Далее задайте переменные окружения, чтобы клиент понимал, где конфиг и ключ. Пример:

export CEPH_CONF="$HOME/ceph-lab/client/ceph.conf"
export CEPH_AUTH_UID="admin"
export CEPH_KEYRING="$HOME/ceph-lab/client/ceph.client.admin.keyring"

Проверка карты кластера

Если команда ceph доступна:

# ceph -s
# ceph mon stat
# ceph osd tree

Создание пула и базовая проверка

# ceph osd pool create rbd-pool 128
# rados lspools

Дальше можно проверить запись/чтение через rados (каркас):

# echo "hello ceph" | rados put testobj rados-demo-object
# rados get testobj /sdcard/testobj.out

Подобные команды зависят от того, какие клиентские утилиты и пути доступны в Termux.

Развёртывание в локальной сети: объединение узлов

Если MON и OSD разнесены по разным устройствам, обеспечьте:

  • Доступность порта MON (по mon_host) из OSD-узлов.
  • Равномерность сетей в ceph.conf (поля public_network и cluster_network соответствуют вашей подсети).
  • Корректную резолюцию IP: либо статические адреса, либо работающий DNS/hosts.

Для лабораторной «склейки» устройств можно использовать VPN для создания локальной сети (общей адресной области). Но это должно быть именно для удобства адресации и маршрутизации в вашей собственной сети, а не для обхода ограничений доступа.

Типовые ошибки и как их диагностировать

  • MON не доступен с OSD узла: проверьте mon_host в ceph.conf, доступность порта 6789, маршрут до IP.
  • Ошибка авторизации (cephx): проверьте keyring для MON/OSD/клиента и соответствие auth_*_required.
  • OSD падает на инициализации: проверьте права на директорию данных OSD, свободное место, корректность параметров mkfs (у некоторых сборок команды отличаются).
  • Нет OSD в карте: проверьте логи OSD и на стороне MON, а также верность идентификаторов и путей.

Заключение

Развёртывание распределённого файлового хранилища на базе Ceph в Termux — это мощный учебный кейс: вы научитесь связывать MON и OSD через ceph.conf и ключи cephx, подготовите клиентскую часть и выполните базовые проверки работоспособности кластера. Из‑за особенностей Android и Termux важно воспринимать результат как лабораторный: тщательно подбирайте способ запуска OSD и проверяйте совместимость утилит Ceph с вашей средой.

Если вы хотите сделать это системно (с подбором окружения, совместимой схемой запуска OSD, корректной сетевой конфигурацией и чек-листом диагностики), обратитесь за консультацией — РыбинскЛАБ выполняет внедрение и настройку лабораторных и учебных стендов, включая Ceph и инфраструктуру вокруг него.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен и доработан перед публикацией.

Нужна помощь с настройкой Termux, Linux и серверов?

Я оказываю ИТ-услуги: настройка серверов, автоматизация, безопасность, помощь с Linux и инфраструктурой. Материалы сайта — только в ознакомительных и образовательных целях.

Связаться со мной
Поддержать проект