Ceph Commands: различия между версиями
Sirmax (обсуждение | вклад) (Новая страница: «=Полезные команды ceph=») |
Sirmax (обсуждение | вклад) (→Ссылки) |
||
(не показаны 3 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
=Полезные команды ceph= |
=Полезные команды ceph= |
||
+ | |||
+ | Для админа Ceph полезна шпаргалка с командами, особо помогающие при различных внештатных ситуациях. |
||
+ | |||
+ | =Общее для кластера= |
||
+ | <PRE> |
||
+ | ceph status |
||
+ | </PRE> |
||
+ | (она же ceph -s или ceph -w) |
||
+ | |||
+ | Самая полезная команда, позволяющая сразу понять многое: чем занят кластер, какое у него здоровье (надеюсь что у вас всё в порядке и HEALTH_OK), как там поживают placement group (PG), надеюсь они все active+clean, кто в строю из mon и osd, а кто пал смертью храбрых и т.д. |
||
+ | |||
+ | <PRE> |
||
+ | ceph df detail |
||
+ | </PRE> |
||
+ | Вы получите информацию какие пулы (pools) размещены в вашем кластере, сколько они занимают дискового пространства как есть (STORED) и реально занято (USED), учитывая ваш фактор репликации (по умолчанию 2) для пулов типа replicated или используемую вами формулу (k и m) для пулов типа erasure code. Если используете квоты (QUOTA) и сжатие (COMPR), то увидите не нулевые значения. |
||
+ | |||
+ | <PRE> |
||
+ | ceph versions |
||
+ | Совместно с watch удобно наблюдать при обновлении серверов кластера Ceph как меняется версия и количественный состав каждой версии. |
||
+ | </PRE> |
||
+ | |||
+ | <PRE> |
||
+ | ceph config dump |
||
+ | </PRE> |
||
+ | Не всё указаное вами находится в ceph.conf. Какие-то параметры были изменены "налету" и можно напомнить себе у какого компонента (WHO) какая опция (OPTION) и чему равна (VALUE). |
||
+ | |||
+ | =Демоны хранения= |
||
+ | Ceph - это программно-определяемое хранилище (software-defined storage, SDS), поэтому важнейшие команды связаны с object storage daemon (OSD). |
||
+ | <PRE> |
||
+ | ceph osd status |
||
+ | </PRE> |
||
+ | Информация больше про операции чтения-записи на каждый ваш OSD. |
||
+ | |||
+ | <PRE> |
||
+ | ceph osd df tree |
||
+ | </PRE> |
||
+ | (краткие вариации ceph osd df или ceph osd tree) |
||
+ | Тут больше про занятое место как собственно данными (DATA), в базе данных ключ-значение object map (OMAP) и метаданные (META = journals + WAL + DB). |
||
+ | <PRE> |
||
+ | ceph osd utilization |
||
+ | </PRE> |
||
+ | PG физически размещены на конкретных OSD и команда позволяет видеть вам - а как равномерно это сделано? Вы получите среднее (avg), стандартное отклонение (Standard Deviation, stddev), минимальное и максимальное значения. Количество PG управляется как вручную, так и в автоматическом режиме в новых версиях Ceph. Узнать текущий режим (AUTOSCALE) - ceph osd pool autoscale-status |
||
+ | |||
+ | <PRE> |
||
+ | ceph osd pool ls detail |
||
+ | </PRE> |
||
+ | Информация напомнит о количестве пулов, их типах и текущих параметрах, количестве PG и кто управляет числом - вы вручную или автомат. |
||
+ | |||
+ | <PRE> |
||
+ | ceph osd getcrushmap -o crushmap.txt && crushtool -d crushmap.txt -o crushmap-decompile.txt |
||
+ | </PRE> |
||
+ | Можно получить в текстовый файл текущую CRUSH map для дальнейшего анализа и разбирательства. |
||
+ | <PRE> |
||
+ | ceph device ls |
||
+ | </PRE> |
||
+ | |||
+ | Команда напомнит как связаны между собой диски, номера OSD и имена хостов, на которых они размещены и работают. |
||
+ | |||
+ | =Демоны мониторинга= |
||
+ | Кратко ceph mon dump и подробнее ceph quorum_status -f json-pretty |
||
+ | Mon хранят различные карты (map) и без их правильной работы невозможна работа кластера. Поэтому кворум мониторов и их работоспособность важнейшие вещи. |
||
+ | |||
+ | =Демоны-менеджеры= |
||
+ | <PRE> |
||
+ | ceph mgr dump > ceph_mgr_dump.json |
||
+ | </PRE> |
||
+ | Вывод команды очень информативен, но человеку тяжело оперировать JSON форматом, поэтому лучше перенаправить вывод в файл или на утилиту jq. |
||
+ | <PRE> |
||
+ | ceph mgr dump | jq -r '[.active_name, .active_addr, .active_change] | @csv' |
||
+ | </PRE> |
||
+ | <PRE> |
||
+ | ceph -s | grep mgr |
||
+ | </PRE> |
||
+ | Команды напомнят когда именно были выборы активного менеджера и кто выиграл эти выборы, а кто на скамейке запасных (standbys). |
||
+ | <PRE> |
||
+ | ceph mgr module ls > ceph_mgr_module_ls.json |
||
+ | </PRE> |
||
+ | Какие модули и в каком состоянии находятся: выключены, включены. |
||
+ | |||
+ | =Placement Group= |
||
+ | <PRE> |
||
+ | ceph pg dump all |
||
+ | </PRE> |
||
+ | <PRE> |
||
+ | ceph pg dump_stuck |
||
+ | </PRE> |
||
+ | Ожидаешь вывод ok, но если это не так, то вывод покажет какие pg и в каком состоянии находятся: unclean, inactive, stale, undersized, degraded. В помощь также полезна команда rados list-inconsistent-pg ИМЯ_ПУЛА |
||
+ | |||
+ | <PRE> |
||
+ | ceph pg dump pgs | tr -s ' ' | cut -d' ' -f1,21,23 |
||
+ | </PRE> |
||
+ | <PRE> |
||
+ | ceph pg dump --format json | jq -r '.pg_map | .pg_stats[] | [.pgid, .last_scrub_stamp, .last_deep_scrub_stamp] | @csv' > ceph_pg_dump.csv |
||
+ | </PRE> |
||
+ | Список всех PG с датами последней проверки (scrub) и глубокой проверки (deep scrub). |
||
+ | |||
+ | <PRE> |
||
+ | ceph pg dump pgs | tr -s ' ' | cut -d' ' -f1,16,17 |
||
+ | </PRE> |
||
+ | Список PG с указанием на каких именно OSD они находятся и какая OSD для первична. |
||
+ | |||
+ | =Выявление проблем и узких мест= |
||
+ | <PRE> |
||
+ | rbd perf image iotop |
||
+ | </PRE> |
||
+ | <PRE> |
||
+ | rbd perf image iostat |
||
+ | </PRE> |
||
+ | Команды дают информацию по текущему I/O (чтение/запись, байты/задержки) подобно одноимённым командам. |
||
+ | В современных версиях Ceph модуль rbd_support должен быть включён по умолчанию, но, если у вас это не так, то |
||
+ | <PRE> |
||
+ | ceph ceph mgr module enable rbd_support |
||
+ | </PRE> |
||
+ | <PRE> |
||
+ | watch -n 1 ceph osd perf |
||
+ | </PRE> |
||
+ | В комбинации с watch команда ceph osd perf покажет задержки записи поступающих данных: время, затраченное на фиксацию операций в журнале (commit_latency) и время, затраченное на сброс (flush) изменений на диск (apply_latency). |
||
+ | |||
+ | <PRE> |
||
+ | #!/bin/bash |
||
+ | ceph osd df plain | grep -F up | tr -s ' ' | sed 's/^ *//g' | cut -d' ' -f1 | \ |
||
+ | while read osd_id; do |
||
+ | echo --- OSD ${osd_id} --- |
||
+ | ceph tell osd.${osd_id} heap stats 2>&1 | grep -F "Actual" |
||
+ | done; |
||
+ | </PRE> |
||
+ | Создайте исполняемый скрипт, который покажет сколько ОЗУ использует каждый рабочий демон OSD. Обычно на практике на обслуживание 1 Тб дискового пространства нужно 1 Гб ОЗУ. Если у вас аномальное потребление памяти, то требуется дальнейшее разбирательство. |
||
+ | |||
+ | =Поломки= |
||
+ | <PRE> |
||
+ | ceph crash ls |
||
+ | </PRE> |
||
+ | <PRE> |
||
+ | ceph crash info ИДЕНТИФИКАТОР |
||
+ | </PRE> |
||
+ | Если модуль crash включён, то падения демонов mgr, mon, osd, mds фиксируются и информация хранится 1 год прежде чем удалится автоматически. |
||
+ | |||
+ | =Различные полезняшки= |
||
+ | Когда был создан кластер Ceph - |
||
+ | <PRE> |
||
+ | ceph mon dump | grep created |
||
+ | </PRE> |
||
+ | Список хранящегося в конкретном пуле - |
||
+ | <PRE> |
||
+ | rbd ls --long ИМЯ_ПУЛА |
||
+ | </PRE> |
||
+ | |||
+ | =Ссылки= |
||
+ | * https://vasilisc.com/useful-command-ceph |
||
+ | |||
+ | Еще тут все читать https://vasilisc.com/ceph |
Текущая версия на 13:04, 25 августа 2024
Полезные команды ceph
Для админа Ceph полезна шпаргалка с командами, особо помогающие при различных внештатных ситуациях.
Общее для кластера
ceph status
(она же ceph -s или ceph -w)
Самая полезная команда, позволяющая сразу понять многое: чем занят кластер, какое у него здоровье (надеюсь что у вас всё в порядке и HEALTH_OK), как там поживают placement group (PG), надеюсь они все active+clean, кто в строю из mon и osd, а кто пал смертью храбрых и т.д.
ceph df detail
Вы получите информацию какие пулы (pools) размещены в вашем кластере, сколько они занимают дискового пространства как есть (STORED) и реально занято (USED), учитывая ваш фактор репликации (по умолчанию 2) для пулов типа replicated или используемую вами формулу (k и m) для пулов типа erasure code. Если используете квоты (QUOTA) и сжатие (COMPR), то увидите не нулевые значения.
ceph versions Совместно с watch удобно наблюдать при обновлении серверов кластера Ceph как меняется версия и количественный состав каждой версии.
ceph config dump
Не всё указаное вами находится в ceph.conf. Какие-то параметры были изменены "налету" и можно напомнить себе у какого компонента (WHO) какая опция (OPTION) и чему равна (VALUE).
Демоны хранения
Ceph - это программно-определяемое хранилище (software-defined storage, SDS), поэтому важнейшие команды связаны с object storage daemon (OSD).
ceph osd status
Информация больше про операции чтения-записи на каждый ваш OSD.
ceph osd df tree
(краткие вариации ceph osd df или ceph osd tree) Тут больше про занятое место как собственно данными (DATA), в базе данных ключ-значение object map (OMAP) и метаданные (META = journals + WAL + DB).
ceph osd utilization
PG физически размещены на конкретных OSD и команда позволяет видеть вам - а как равномерно это сделано? Вы получите среднее (avg), стандартное отклонение (Standard Deviation, stddev), минимальное и максимальное значения. Количество PG управляется как вручную, так и в автоматическом режиме в новых версиях Ceph. Узнать текущий режим (AUTOSCALE) - ceph osd pool autoscale-status
ceph osd pool ls detail
Информация напомнит о количестве пулов, их типах и текущих параметрах, количестве PG и кто управляет числом - вы вручную или автомат.
ceph osd getcrushmap -o crushmap.txt && crushtool -d crushmap.txt -o crushmap-decompile.txt
Можно получить в текстовый файл текущую CRUSH map для дальнейшего анализа и разбирательства.
ceph device ls
Команда напомнит как связаны между собой диски, номера OSD и имена хостов, на которых они размещены и работают.
Демоны мониторинга
Кратко ceph mon dump и подробнее ceph quorum_status -f json-pretty Mon хранят различные карты (map) и без их правильной работы невозможна работа кластера. Поэтому кворум мониторов и их работоспособность важнейшие вещи.
Демоны-менеджеры
ceph mgr dump > ceph_mgr_dump.json
Вывод команды очень информативен, но человеку тяжело оперировать JSON форматом, поэтому лучше перенаправить вывод в файл или на утилиту jq.
ceph mgr dump | jq -r '[.active_name, .active_addr, .active_change] | @csv'
ceph -s | grep mgr
Команды напомнят когда именно были выборы активного менеджера и кто выиграл эти выборы, а кто на скамейке запасных (standbys).
ceph mgr module ls > ceph_mgr_module_ls.json
Какие модули и в каком состоянии находятся: выключены, включены.
Placement Group
ceph pg dump all
ceph pg dump_stuck
Ожидаешь вывод ok, но если это не так, то вывод покажет какие pg и в каком состоянии находятся: unclean, inactive, stale, undersized, degraded. В помощь также полезна команда rados list-inconsistent-pg ИМЯ_ПУЛА
ceph pg dump pgs | tr -s ' ' | cut -d' ' -f1,21,23
ceph pg dump --format json | jq -r '.pg_map | .pg_stats[] | [.pgid, .last_scrub_stamp, .last_deep_scrub_stamp] | @csv' > ceph_pg_dump.csv
Список всех PG с датами последней проверки (scrub) и глубокой проверки (deep scrub).
ceph pg dump pgs | tr -s ' ' | cut -d' ' -f1,16,17
Список PG с указанием на каких именно OSD они находятся и какая OSD для первична.
Выявление проблем и узких мест
rbd perf image iotop
rbd perf image iostat
Команды дают информацию по текущему I/O (чтение/запись, байты/задержки) подобно одноимённым командам. В современных версиях Ceph модуль rbd_support должен быть включён по умолчанию, но, если у вас это не так, то
ceph ceph mgr module enable rbd_support
watch -n 1 ceph osd perf
В комбинации с watch команда ceph osd perf покажет задержки записи поступающих данных: время, затраченное на фиксацию операций в журнале (commit_latency) и время, затраченное на сброс (flush) изменений на диск (apply_latency).
#!/bin/bash ceph osd df plain | grep -F up | tr -s ' ' | sed 's/^ *//g' | cut -d' ' -f1 | \ while read osd_id; do echo --- OSD ${osd_id} --- ceph tell osd.${osd_id} heap stats 2>&1 | grep -F "Actual" done;
Создайте исполняемый скрипт, который покажет сколько ОЗУ использует каждый рабочий демон OSD. Обычно на практике на обслуживание 1 Тб дискового пространства нужно 1 Гб ОЗУ. Если у вас аномальное потребление памяти, то требуется дальнейшее разбирательство.
Поломки
ceph crash ls
ceph crash info ИДЕНТИФИКАТОР
Если модуль crash включён, то падения демонов mgr, mon, osd, mds фиксируются и информация хранится 1 год прежде чем удалится автоматически.
Различные полезняшки
Когда был создан кластер Ceph -
ceph mon dump | grep created
Список хранящегося в конкретном пуле -
rbd ls --long ИМЯ_ПУЛА
Ссылки
Еще тут все читать https://vasilisc.com/ceph