Ceph шпаргалка

ceph

Ceph - проект с открытым исходным кодом. Назначение - распределённое объектное хранение данных. Является высокопроизводительной и масштабируемой системой с отсутствием единой точки отказа.

OSD (Object Storage Daemon) - устройство хранения объектов в Ceph. Обрабатывает такие состояния PG как replication, recovery, backfilling, rebalancing. Так же предоставляет информацию для мониторинга Ceph. Как правило, один демон OSD соответствует одному физическому диску.

Mon (Monitor) - отслеживает состояние всего кластера путём хранения карты состояния кластера, включая карты OSD, PG и CRUSH.

MDS (Metadata Server) - хранит метаданные файловой системы CFS. MDS делает возможным обрабатывать запросы пользователей POSIX-файловой системы, не нагружая кластер.

CRUSH Map - содержит список OSD и buckets (стоек) для объединения OSD, а так же список правил, которые говорят CRUSH, как он должен реплицировать данные в пулах кластера Ceph.

Primary OSD - OSD устройство, которое обрабатывает запросы от клиентов.

Replica OSD - OSD устройство, которое используется только для создания реплик от Primary OSD.

CRUSH (Controlled Replication Under Scalable Hashing) - алгоритм, использующий хэширование для расчёта хранения и извлечения данных в распределенных системах на основе кластерного типа хранения. CRUSH распределяет данные по запоминающим устройствам равномерно, но псевдослучайным образом. Распределение контролируется иерархической картой кластера. Карта, которую настраивает администратор, информирует кластер о структуре и емкости узлов в сети хранения данных. CRUSH был разработан для Ceph, распределенного сетевого хранилища.

PG (Placement Groups) - группа размещения или логическая коллекция объектов в Ceph, которые реплицируются в OSD. Одна группа может сохранять данные на несколько OSD, в зависимости уровня сложности системы. Формула для вычисления групп размещения для Ceph следующая:

            (кол-во OSD * 100)
Кол-во PG =  ---------------
              кол-во реплик

При этом результат должен быть округлён до ближайшей степени двойки (например, по формуле = 700, после округления = 512).

PGP (Placement Group for Placement purpose) - группы размещения для целей расположения. Количество должно быть равным общему числу групп размещения.

Pool- логический раздел для хранения объектов. Каждый пул содержит определённое количество групп размещения, которые содержат объекты кластеризованные на OSD. Концепция пула обеспечивает устойчивость. При создании пула можно выбрать только один тип доступности данных - репликации или коды удаления. Пул при записи данных руководствуется наборами правил CRUSH.

RADOS (Reliable Autonomic Distributed Object Store) - безотказное автономное распределённое хранилище объектов. Имеет возможность масштабирования до одной тысячи устройств путем использования программного обеспечения на каждом из отдельных узлов хранения.

RBD (RADOS Block Device) - программное обеспечение с открытым исходным кодом для хранения данных на основе блочного устройства в распределенных системах хранения.

CFS (Ceph File System) - файловая система, совместимая с POSIX (Portable Operating System Interface), использующая для хранения данных кластер Ceph. CFS использует для хранения блочные устройства CBD (Ceph Block Device) основанные на RBD.

Состояния PG: * Active - в этом состоянии Ceph может обрабатывать запросы к этой группе. * Backfill - сканирование и синхронизация всего содержимого PG без использования журнала операций. Это частный случай восстановления. * Backfill-toofull- состояние backfill в ожидании, потому что OSD назначения имеет высокий коэффициент заполнения. * Clean - данные группы размещения реплицировались нужное количество раз. * Creating - состояние создания группы. * Degraded - PG имеет нереплицированные данные. * Down - отсутствует реплика с необходимыми данными. * Incomplete - состояние в котором Ceph обнаружил в PG отсутствующую информацию о записи или "больные" копии объекта. * Inconsistent - обнаружены несоответствия в одной или нескольких репликах объекта в PG. * Recovering - синхронизация объектов и их реплик. * Repair - проверка группы на несоответствия и восстановление найденных несоответствий, если это возможно. * Replay - группа ждёт клиентов, чтобы повторить операции после крэша OSD. * Peered - состояние, в котором PG не может обработать запросы клиента, так как не имеет достаточно реплик объект. * Peering - процесс приведения всех OSD одной группы размещения в соглашение о состоянии всех объектов и их метаданных в этой PG. * Remapped - PG временно отображается в другие OSD, в отличие от тех, что указаны в карту CRUSH. *Scrubbing - PG проверяется на несоответствия. * Splitting - состояние расщепления одной PG на несколько PG. * Stale - PG находится в неизвестном состоянии, так как мониторы не получили обновления от неё и её отображение изменилось. * Undersized- PG содержит меньше копий, чем установленный размер пула. * Wait-backfill - в очереди на состояние backfill.

Порядок обновления уровней при обновление версии ПО кластера Ceph: 1. Монитор 2. OSD (устройства хранения объектов) 3. Сервер метаданных (MDS) 4. Шлюз RADOS

Команды: (команды, с окончанием на dump, показывают более детальную информацию)

# показать схему (дерево) OSD
ceph osd tree
ceph osd dump

# показать чёрный список клиентов
ceph osd blacklist ls

# показать текущие значения числа PG и PGP
ceph osd pool get <pool-name> pg_num
ceph osd pool get <pool-name> pgp_num

# получить значение уровня репликаций
ceph osd dump | grep size

# получить перечень пулов (2 способа)
ceph osd dump | grep -i pool
ceph osd lspools

# показать карты OSD для объекта внутри пула
ceph osd map <pool-name> <object-name>

# проверить состояние кластера (2 способа)
ceph -s
ceph status

# более подробное состояние кластера
ceph -w

# проверить статус мониторов
ceph mon stat

# проверить статус OSD
ceph osd stat

# показать список дисков
ceph-disk list

# проверить состояние кластера
ceph health

# детализированное состояние кластера
ceph health detail

# показать статистику использования кластера
ceph df

# показать списки ключей аутентификации кластера
ceph auth list

# показать состояние мониторов (2 способа)
ceph mon stat
ceph mon dump

# показать состояние кворума
ceph quorum_status

# показать карту CRUSH
ceph osd crush dump

# показать состояние PG
ceph pg stat
ceph pg dump

# показать состояние MDS
ceph mds stat
ceph mds dump
# создать блочное устройство RADOS
rbd create <rbd-name> --size <size>

# изменить размер устройства RBD
rbd resize <pool-name> --size <size>

# установить значения PG и PGP для пула
ceph osd pool set <pool-name> pg_num <size>
ceph osd pool set <pool-name> pgp_num <size>

# создать пул
ceph osd pool create <pool-name> <pg-size> <pgp-size>

# сделать моментальный снимок пула 
ceph osd pool mksnap <pool-name> <snap-name>

# переименовать пул
ceph osd pool rename <old-name> <new-name>

# задать уровень репликаций
ceph osd pool set <pool-name> size <size>

# удалить OSD из карты CRUSH
ceph osd crush remove <name>

# удалить ключ аутентификации OSD
ceph auth del <name>

# исключить OSD из кластера
ceph osd out <name>

# удалить совсем OSD из кластера
ceph osd rm <name>

# запуск/остановка всех демонов 
start|stop ceph-all

# запуск/остановка по типу
start|stop ceph-osd-all
start|stop ceph-mon-all
start|stop ceph-mds-all

# запуск/остановка конкретного демона
start|stop ceph-osd id=<id>
start|stop ceph-mon id=<id>
start|stop ceph-mds id=<id>
Комментарии