LINUX.ORG.RU
ФорумAdmin

Ceph, size=3 min_size=1

 , ,


0

1

Добрый день! Кто-нибудь может подсказать, какими последствиями может обернуться если выставить минимальное количество реплик на пул - 1 (min_size), при общем количестве в 3? Я пытаюсь отыскать в интернетах, чем чревата такая ситуация, но не нахожу.. я просто не пойму, ну стоит у нас общее значение в 3 (мин. - 2), два OSD у меня падают, по закону Мерфи там располагались пересекающиеся PG и я получаю ситуацию с растущими block requests. Я просто не могу понять на кой черт оно так сделано? Это такая подстраховка, чтобы пока единственная оставшаяся PG реплицируется, при работе с ней клиенты ее не побили?


Если я правильно понял, если 2 ноды у тебя падает, кластер не перейдёт в readonly, при условии что мониторы вынесены на отдельные серваки. То есть минимальное количество живых реплик. Имхо, это выстрел себе в ногу, так делать нельзя. Если чё, поправьте меня.

ZeroNight ()

Из доков цэфа:


	# By default, Ceph makes 3 replicas of objects. If you want to make four
	# copies of an object the default value--a primary copy and three replica
	# copies--reset the default values as shown in 'osd pool default size'.
	# If you want to allow Ceph to write a lesser number of copies in a degraded
	# state, set 'osd pool default min size' to a number less than the
	# 'osd pool default size' value.

	osd pool default size = 3  # Write an object 3 times.
	osd pool default min size = 2 # Allow writing two copies in a degraded state.

	# Ensure you have a realistic number of placement groups. We recommend
	# approximately 100 per OSD. E.g., total number of OSDs multiplied by 100
	# divided by the number of replicas (i.e., osd pool default size). So for
	# 10 OSDs and osd pool default size = 4, we'd recommend approximately
	# (100 * 10) / 4 = 250.

	osd pool default pg num = 250
	osd pool default pgp num = 250

ZeroNight ()

Min_size == 2 необходим для для того, чтобы сохранить консистентность данных. В общих чертах, это происходит так. Когда необходимо восстановление данных, возникает вопрос, откуда восстанавливать и что. В кластере имеется две версии данных. Старая была создана до падения osd, а новая - уже после. Но новая, в силу min_size, равному двум, будет иметь две копии и поэтому автоматически будет считаться актуальной для восстановления. Когда min_size равен единице, вопрос становится неочевидным и в данном случае потребуется руками решать вопрос.

Короче говоря, min_size = 2 обеспечивает гарантию восстановления данных без головной боли. Размеры меньше 3 и 2 соответственно в проде несут за собой уйму весёлых вечеров - это просто плата за отказоустойчивость.

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

Вообще то, у объекта есть версия, и кто истиный а кто отсталый решается по ней. А то про что вы тут говорите это попытка защититься от silent data corruption.

Nastishka ★★★★★ ()

Очень просто. Был случай на заре молодости). Кластер 3/1, в состоянии degraded, ребелансируется после отключения части osd по питанию. В один прекрасный момент во время ребалансировки вылетает один жесткий диск. Поскольку схема 3/1 означает, что разрешена запись даже в случае если осталась одна рабочая копия данных, то те pg, у которых мастер копия была на вышедшем из строя диске, а остальные копии в процессе ребелансировки отстали от мастера, выпали в состояние incomplite. И пришлось их ручками, с помощью утилиты ceph-objectstore-tool, восстанавливать. Такая печаль.

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

Ну в принципе, мы можем пойти на такие риски, мне главное, чтоб у нас виртуалки не останавливались все в работе, а особо критичные сервера, использующие ДП с сефа у нас бэкапятся.

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