LINUX.ORG.RU

Вопросов про Ceph пост, для тех, кто его админит

 ,


0

3

Гритингс, товарищи.

Есть вопросы про Ceph. Есть кто, кто его в продакшене держит? Есть кто, кто его девелопает?

Пока общее понимание нужно. В голове сумбур, но это ненадолго.

Есть желание добиться следующего поведения: Делаем цеф-кластер. Из 2 нод. Стартуем. Заливаем. На 50-60% добавляем еще одну ноду. Меняем с реплика=2 на erasure 2+1. PROFIT!!!

1) Возможно ли переконфигурировать пул (скажем, заменить replicated на erasure code)? 2) Возможно ли изменить коэффиценты erasure таким образом, чтобы при следующем скрабе данные переразложились по новой схеме?

3) Возможно ли создать degraded пул, и добавить osd позже?

4) Возможно ли создать sparse pool и наращивать его новыми osd?

5) Возможно ли отключать osd от пула, сокращая его емкость, а не отказоустойчивость?

6) Как оно сейчас чувствует себя на ZFS? Все данные и упоминания окаменели :(

7) Как сейчас сотояние CephFS? В доках пишут, мол «мы ссым», но «оно уже работает». Что-то про отсутствие FSCK. И там же, что FSCK умеет. Данные скрабятся на чексуммы, метаданные хранятся параноидально... Давайте так, чего в FSCK не хватает? Чого им еще ннада?

К самому лютому использователю возможно нескромное предложение.

ЗЫ А что там у Cloudmouse умерло? Ткните ссылкой на грязные подробности!

1) нет, хочешь изменить тип пула с реплики на ец? Придется создавать новый пул и делать rados cppool или подключить старый пул в качестве кеша к новому.

2) нет

3) не понял.. degraded пул это когда ты добавил OSD а потом некоторые из них умерли или были выключены. А так, ты можешь сделать пул хоть из одного OSD и добавить остальные потом.

4) Что за sparse pool?

5) В каждом failure-domain должна быть примерно одинаковая общая емкость дисков.

Если у тебя есть replicated pool с max_size 3 и, например, 3 хоста и на каждом из них по 2 osd: на первых двух диски по 2тб, а на 3м по 500гб, то больше 1ТБ ты не сможешь записать сюда. Если ты удалишь один из дисков на 2тб, то только снизишь скорость работы пула и его отказоустойчивость, а максимальный размер не поменяется. А если удалишь один из 500гб дисков, то теперь предельный размер пула у тебя будет всего 500гб.

6)не использую out-of-tree модули ядра, но на btrfs работает нормально.

7)Я пока только планирую ее использовать для почты(пока там трудится rbd + ocfs2), и тестирую ее на тестовом стенде: пока с ней проблем не было, думаю, что еще месяц издевательства над этим кластером и можно будет использовать ее и на боевом сервере, ибо cephfs быстрее ocfs2 -_-. Кстати, cephfs не работает на ec пуле. Нужно использовать cache tiering, что в итоге дает дополнительную нагрузку на cpu и ram.

Lindows
()
Ответ на: комментарий от Lindows

1), 2) понятно. Второе было бы круто, нуок.

3) Можно ли degraded пул (с потеряными osd) перестроить под новое количество osd? Чтобы он стал снова healthy? Без потери данных?

4) Sparse это я придумал пальцем в потолок. В общем, ответ на 3) это объяснил.

5) А faliure domains задаются только при создании/добавлении? Можно ли их изменять отключать? В реальности ZFS, например, добавлять новые ветки можно, а убирать их - нельзя. Вот я и спрашиваю, можно ли шринкать как-то пул? что записать нельзя – это понятно, но если там данных 499гб, можно ли заставить его пересчитать расположение под новую схему? Это тот же вопрос из 3), только в профиль.

6) Бтрфс меня год назад удручил, потеряв данные ноута. Пичалька.

7) Понял. Про FSCK интересно, все таки. OCFS2 юзал, но как-то не взлетело, хватило CLVM. GlusterFS вот опять же, понравилось, но а)тогда умело только реплики б)ls делается чудовищно долго. Тиеринг я и хотел использовать, но тут вопрос архитектуры сейчас. 14 нод ec и 2 кешпула, или 4 ноды-слонопотама.

8) А по процессору оно сейчас прожорливое? Сколько 1 osd реально ест? Ясно что рекомендовать будут 1 ядро, чтобы iowait размазать, но если мне не под виртуалки а под файлокладбище... Скажем, r/w 20/1, требования к latency – ну чтоб самба незатаймаутилась.

Еще были вопросы, но пока не сформулировал. Но начинает проясняться.

gutleib
() автор топика
Ответ на: комментарий от gutleib

3) Можно ли degraded пул (с потеряными osd) перестроить под новое количество osd? Чтобы он стал снова healthy? Без потери данных?

Можно. Вообще, это будет автоматически сделано.

4..

У ceph пулов нет размера в байтах, так что пока есть место на osd в каждом failure-domain'е, то данные можно будет записывать. Удалив или потеряв osd с какого нибудь хоста, те данные, что были на нем среплицируются на все оставшиеся osd в данном failure-domain'e. Опять же, главное, чтобы на этих osd хватило места.

failure-domain задается c помощью crush-rules, ну например:

step chooseleaf firstn 0 type host

Тут случайным образом выбираются корзинки типа «хост», в количестве равном pool_size(т.к. указан 0), затем берутся случайным образом с этих хостов osd, на которые и ведется запись. Т.е. если pool_size у нас 3, то будет выбрано по одному osd на трех разных хостах.

изменив правило, например так:

step chooseleaf firstn 0 type room

имея тот же пул с pool_size=3 мы сначала выбираем случайные 3 «комнаты», затем, в этих комнатах мы выбираем по одному osd со случайного хоста в этой комнате. Таким образом, в каждой комнате хранится 1 копия данных.

Разумеется, ты в любой момент работы можешь отредактировать или поменять правила для пула и ceph перераспределит данные в кластере. Производительность конечно очень сильно упадет при этом, так что такие изменения лучше делать в периоды наименьшей активности на схд.

6.

Лично я бы не стал советовать btrfs для обычных задач, но в случае кластера, даже если файловая система на каком нибудь диске решит отдохнуть, то достаточно всего лишь переформатировать диск и удалить/добавить его в кластер. Данные ceph сам реплицирует. Я выбрал btrfs из-за компрессии, сейчас у меня экономится около 20% дискового пространства с compress=lzo. К тому же, некоторые ущербные операционные системы не умеют scsi_unmap, а нули очень хорошо жмутся +)

7.

Ну, я пока на какой либо fsck вообще не рассчитываю. А EC пулы вместе с кеш пулами... Сeph - достаточно сложная штука, а чем сложнее система, тем больше вероятность что что-то сломается, поэтому я использую только replicated пулы + в планах переделать ssd пул на cache-tier readonly.

8.

Процессор ceph-osd процессы не сильно кушают при обычном режиме работы, даже при реаквери/изменении pg/добавлении osd нагрузка незначительна, а вот c использованием cache-tier в режиме writeback у меня при тестах fio с randwrite/4k все ceph-osd процессы упирались в cpu =\

По поводу latency.. нужны ssd под журнал(т.к. как ни крути но у тебя будет двойная запись: с o_direct в журнал и с o_buffered на диск) + правильно настроенное кеширование в ядре(чтобы отложить запись на диск) и побольше памяти для него, ибо использовать ceph без ssd можно только для «поиграться».

Конечно, если использовать его только для самбы, то думаю, можно и без ссд обойтись, но учти, что из-за того, что ceph - объектная схд, то последовательное чтение или запись на cephfs/rbd в реальности для самих жестких дисков во многих случаях будет случайной, с соответствующим падением в скорости. Не говоря уж о двойной записи =\

Lindows
()
6 августа 2015 г.
Ответ на: комментарий от Lindows

Господа, подскажите: если создаю 3 монитора, 12 осд, 3 мдс под xfs для хранилища картинок (95% чтение, 5%-запись) - сколько пулов создавать нужно? делаю 4096 pg, но по пулам не могу понять сколько надо

sergm
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.