Sergei
представь что у тебя write cache включён и свет вырубили
т.е. мы берем диск, запускаем на нем ext4 с writeback
Sergei
а потом говорим "сеф говно"?
Sn00part
я такого не говорил
Sn00part
там выше комментарии про xfs
Sergei
rbd синхронный. если он отозвался на sync, это значит что данные вкоммитились в xfs на кворум. если не отозвался - то не отозвался.
Sn00part
нормально работает /= гарантирует сохранность дангых
Sergei
нормально работает /= гарантирует сохранность дангых
вы кейс опишите, когда вы пишете в сеф, сеф вам говорит "ок", а потом показывает плохое чтение.
Sergei
а то магнитный диск так-то тоже не гарантирует сохранность. и рейд тоже. ошибки чтения всегда могут быть.
Sn00part
обычный кейс, дц вырубили в момент апдейта журнала цеф
Sergei
обычный кейс, дц вырубили в момент апдейта журнала цеф
это значит что журнал вышележащей файлухи покоррапчен тоже, на старте она пройдет fsck.
Sn00part
он отреплеится на другой ноде
Sn00part
но весь sync файлухи уже не попадёт никуда
Sn00part
это выглядит как кусок сислога внутри бинаря с таблицей
Sergei
это выглядит как кусок сислога внутри бинаря с таблицей
как это возможно, емое? ну вырубили мы дц, ок. там (в вырубленном дц) остались дохлые данные. сеф перешел в деградировавшее состояние. грязных данных в живой оставшейся части нет. вернули дц. грязные данные не возвращаются, пока не пройдет скраб/проверка версий объектов.
Sn00part
rbd ничего про файлуху не знает. поэтому кворум нужно делать и для fs
Sergei
rbd ничего про файлуху не знает. поэтому кворум нужно делать и для fs
блин! так вы все это время говорили про случай "мы замонтировали некластерную файлуху в нескольких местах"?
Sn00part
это работает и для одиночного монтирования
Sergei
для множественного - это гарантированный развал. для одиночного - дайте кейс. "отвалился дц" - это "некоторое небольшое время операции io от файлухи к диску зависают в нигде".
Sergei
а не "говорят что пишутся, но на самом деле пишется мусор"
Sn00part
журнал цефа отреплеится, файлуха сверху покорраптится, бд работать не будет
Sn00part
rbd placement group оперирует
Sn00part
ему вообще пофигу что там сверху
Sergei
rbd placement group оперирует
нет, rbd формирует объекты, которые попадают в плейсмент-группы. в этом легко убедиться, если посмотреть в физическое расположение данных.
Sn00part
ну объекты эти с файловой системой никак не связаны
Sn00part
это математика блоков
Sergei
в момент записи в rbd-устройство, происходит запись в объект(ы), соответствующие кусочку устройства. и ответ на клиентскую файлуху идет в тот момент, когда кворум объектов записался.
Sergei
грязное чтение в этом случае невозможно.
Sn00part
журнал цефа отреплеит на другой ноде все, что не смогло записаться на рбд
Sergei
Sergei
когда происходит запись объекта, ответ клиентскому коду (в данном случае rbd) произойдёт когда записался кворум объектов.
Михаил
Журнал цефа это что то вроде кеша, причем тут реплей с журнала другой ноде?
Sergei
и у сефа нет "глобального журнала". есть отдельные журналы на каждой osd. запись считается произведенной в osd в тот момент, когда запись зафиксирована в устройстве журнала.
Sn00part
ну емое
Sn00part
ну вот записали вы в osd и он тут же отвалился
Sergei
ну норм. у меня еще есть.
Sn00part
не факт что они консистентны
Sergei
не факт что они консистентны
факт. потому что когда мы пишем на кластер (а не на osd), запись считается произведенной при совершившейся записи на кворум в PG. то есть в случае 3:2 минимум на 2 osd.
Sn00part
должны быть некие consistency group с одним и тем же журналом
Sn00part
http://tracker.ceph.com/issues/13295 вот типа такого
Sergei
у вас 3 osd для pg (в pgmap). вы подключаетесь к лидеру. пишете в него объект. он пишет к себе, подключается к двум другим, дожидается ответа хотя бы от одного, отвечает вам "ок". в момент ответа "ок" в кластере есть уже минимум две копии объекта на разных osd. теперь один из osd падает. например, бывший primary. теперь osd обслуживается двумя osd, на одном из них есть актуальный объект, на другом - нет (или есть неактуальный). они сравнивают версии и неактуальный докатывается до актуального. выбирается новый osd для обслуживания этой pg. на нем нет объектов. он копирует их с оставшихся двух osd.
Sergei
где здесь грязное чтение?
Sergei
http://tracker.ceph.com/projects/ceph/wiki/Consistency_groups/2
Sergei
это не для основной функциональности (не для распределенного блокдевайса).
Etki
хлебом не корми, дай про цеф поговорить :3
Sn00part
с точки зрения ceph грязного чтения тут нет. с точки зрения файловой системы поверх тут никак гарантий нет. ибо эти две сущности никак не связаны
Михаил
Или может я)
Sergei
с точки зрения ceph грязного чтения тут нет. с точки зрения файловой системы поверх тут никак гарантий нет. ибо эти две сущности никак не связаны
у файловой системы есть свой журнал. блокдевайс под файловой системой ведет себя корректно, грязное чтение не делает, ненастоящую запись не делает, восстановление убитых не делает.
Knyage
Всем доброго дня! Коллеги, а есть у кого-то хорошие статьи по возможностям кластеризации мастера? На почитать-поосваивать.
Sn00part
ну ок) оставим этот спор для экспериментаторов. по факту никаких гарантий я для себя не вижу. Плюс ещё замаунтится ненароком в несколько мест и точно все.
Sergei
а если fio randwrite запустить на диск, так вообще! стораджа никуда не годятся по устойчивости к randwrite и dd if=/dev/urandom
Sn00part
гладко было на бумаге (с)
Sn00part
а потом 20 человек неделю бд чинят сидят с воплями она же не должна так работать)
Sergei
а потом 20 человек неделю бд чинят сидят с воплями она же не должна так работать)
возможно что-то не так в консерватории. если вы можете разломать rbd так, что он говорит, что ему хорошо, а на самом деле ему плохо - расскажите как, это интересный опыт.
Sergei
и нет, кейс "мы вырубили один osd на горячую" к такому не приводит.
Михаил
мб это как раз кейс "мы дёрнули 2 диска из кластера с двойной репликой" ?)
Sn00part
да конечно, прямо на горячую специально обученные мальчики дергали. обычный цеф, 6 дц в разных регионах. интернет штука ненадежная
Sn00part
Перманентно все сломано в разных местах, постоянно сеть флапает, самое время накатить на сетевой рейд файлуху с бд и жить счастливо ;-)
Михаил
А то что гланды через задницу удалить не удобно это гланды виноваты?
Sergei
То есть вы гоняете рбд трафик между дц, а виноват в глюках цеф?!
ну справедливости ради, от абстрактного софта в вакууме я ожидаю деградацию и замедление в случае мульти-дц, а не "работать не будет совсем".
Sn00part
а кто виноват? это распределенный блок девайс
Sergei
а кто виноват? это распределенный блок девайс
а вы расскажите таки, как сделать грязное чтение/несовершенную запись?
Sn00part
рбд трафик не вагонами же возить
Sergei
я добивался перехода в ридонли/peering путем внедрения задержек и пакетлосса
Sergei
но не грязных чтений
Михаил
ну справедливости ради, от абстрактного софта в вакууме я ожидаю деградацию и замедление в случае мульти-дц, а не "работать не будет совсем".
Срравдливости ради локальная сеть и интернет разные вещи и обеспечение мульти дц отдельный функционал, который обычно отдельно заявлен
Sergei
Срравдливости ради локальная сеть и интернет разные вещи и обеспечение мульти дц отдельный функционал, который обычно отдельно заявлен
локальная сеть тоже вполне может лоссить. и что называть локальной? :) вся сеть наша. просто до группы хостов пинг 3 мс, а до группы - 120 мкс.
Sn00part
я уже не вспомню, но такое точно встречали. эксперименты там закончились все пошло в прод, оставили только radosgw для cdn с картинками
Sn00part
работает ок
Sn00part
бд локально с нативной репликацией
Sn00part
поверх фронтендов ipvs
Sn00part
+pyball
Sn00part
фронтенд нджиникс на стероидах с lua