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 и инфраструктуру вокруг него.