The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Опубликован выпуск SDS Vitastor 1.5.0 с поддержкой кластерной ФС, opennews (??), 23-Мрт-24, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


50. "Опубликован выпуск SDS Vitastor 1.5.0 с поддержкой кластерно..."  –1 +/
Сообщение от Аноним (49), 25-Мрт-24, 12:02 
> Если нет поддержки блокировок - это всё.

Вернее: если не предусмотрено место, в которое можно добавить код нужной функциональности. (Сырцы не читал, не знаю.)

Ответить | Правка | К родителю #46 | Наверх | Cообщить модератору

51. "Опубликован выпуск SDS Vitastor 1.5.0 с поддержкой кластерно..."  +/
Сообщение от нах. (?), 25-Мрт-24, 13:06 
извините, пройдите на-й

никто за авторов не будет ничего добавлять.  Потому что есть-то за себя они собираются - сами.

Ответить | Правка | Наверх | Cообщить модератору

61. "Опубликован выпуск SDS Vitastor 1.5.0 с поддержкой кластерно..."  +/
Сообщение от Tron is Whistling (?), 25-Мрт-24, 22:10 
Тут всё гораздо хуже: если нет блокировок, значит необходимая для них синхронизация отсутствует. Естественно при этом latency никакая, но и синхронизироваться нечем, и кеш не когерентный, и вообще смысла нет, потому что в т.н. "кластерной" FS в файл можно при этом можно писать только с одной ноды, причём очень аккуратно - чтобы никто ещё в этот момент не читал и не писал. По сути в такой конфигурации с каждым отдельным файлом можно либо "только на чтение" со всех нод, либо только "всё с одной", и такой кластер - мертворождённый труп.

Чтобы её нагородить - надо очень сильно об угол стукнуться, в общем случае придётся делать свой DLM или интегрироваться в существующий кластерный стек. Первое - очень непросто, второе ставит крест на latency и простоте использования, ещё и STONITH понадобится.

Ответить | Правка | К родителю #50 | Наверх | Cообщить модератору

65. "Опубликован выпуск SDS Vitastor 1.5.0 с поддержкой кластерно..."  +/
Сообщение от Tron is Whistling (?), 25-Мрт-24, 22:36 
Там смотрю оно через NFS вывернуто. То есть в качестве обеспечения когерентности выбран сброс кеша при открытии и проверку атрибутов? Если так - то даже блокировки уже не помогут.
Ответить | Правка | Наверх | Cообщить модератору

68. "Опубликован выпуск SDS Vitastor 1.5.0 с поддержкой кластерно..."  +/
Сообщение от vitalif (ok), 25-Мрт-24, 23:34 
Хм, ну да, единственный трабл это page cache конечно. Ну типа если писать-читать из NFS с O_DIRECT, то когерентность будет. А там случайно нет в линуксовом NFS опции чтобы принудительно всем direct включить?.. :-)
Ответить | Правка | Наверх | Cообщить модератору

70. "Опубликован выпуск SDS Vitastor 1.5.0 с поддержкой кластерно..."  +/
Сообщение от Tron is Whistling (?), 25-Мрт-24, 23:41 
И даже с O_DIRECT может не быть когерентности, потому что кто-то решил почитать после записи с другой ноды, но запись ещё не долетела и другие ноды о записи не проинформированы. Будет stale read. Всё это придётся синхронизировать, в т.ч. информировать ноды о записи.
Ответить | Правка | Наверх | Cообщить модератору

71. "Опубликован выпуск SDS Vitastor 1.5.0 с поддержкой кластерно..."  +/
Сообщение от Tron is Whistling (?), 25-Мрт-24, 23:42 
- Нода A прочитала блок, он попал в кеш
- Нода Б отправила блок на запись, он попал в буфер и ждёт пока его реально пропишут в сторейдж
- Нода A снова читает блок - УПС
Ответить | Правка | Наверх | Cообщить модератору

72. "Опубликован выпуск SDS Vitastor 1.5.0 с поддержкой кластерно..."  +/
Сообщение от vitalif (ok), 25-Мрт-24, 23:42 
Не, если пишут и читают с O_DIRECT, то всё железобетонно синхронно будет, по крайней мере если кэш дисков отключён (immediate_commit=all). Т.к. любая завершённая запись уже точно будет на всех OSD, и любое последующее чтение пойдёт на эти же OSD и оттуда данные прочитает

"попала в буфер" - что за буфер, у меня нет никакого такого буфера. А на дисках предполагается по дефолту отрубать кэш и юзать ssd с конденсаторами

Ответить | Правка | К родителю #70 | Наверх | Cообщить модератору

73. "Опубликован выпуск SDS Vitastor 1.5.0 с поддержкой кластерно..."  +/
Сообщение от Tron is Whistling (?), 25-Мрт-24, 23:44 
С O_DIRECT блок в теории должен уйти сразу в сторейдж, но тут будут нюансы с задержками для пересылки на OSD, если в этот момент кто-то решит почитать - он с OSD получит всё такой же старый лежалый блок.

Т.е. синхронизировать ноды надо в момент появления записи.

Ответить | Правка | К родителю #70 | Наверх | Cообщить модератору

74. "Опубликован выпуск SDS Vitastor 1.5.0 с поддержкой кластерно..."  +/
Сообщение от vitalif (ok), 25-Мрт-24, 23:44 
> он с OSD получит всё такой же старый лежалый блок.

Не получит. У меня синхронная репликация абсолютно всегда.

Ответить | Правка | Наверх | Cообщить модератору

76. "Опубликован выпуск SDS Vitastor 1.5.0 с поддержкой кластерно..."  +/
Сообщение от Tron is Whistling (?), 25-Мрт-24, 23:57 
До неё ещё даже дело не дойдёт.
Ну и да, я вот тут расписал немножко - оно может из собственного кеша получить.
Тогда надо O_DIRECT брать и тем, кто читает - да, решение, но блин O_DIRECT на чтение? Системный кеш мимо?
Ответить | Правка | Наверх | Cообщить модератору

77. "Опубликован выпуск SDS Vitastor 1.5.0 с поддержкой кластерно..."  +/
Сообщение от Tron is Whistling (?), 25-Мрт-24, 23:58 
Если так сделать - то при рандомных мелких чтениях будет полный трындец.
Ответить | Правка | Наверх | Cообщить модератору

81. "Опубликован выпуск SDS Vitastor 1.5.0 с поддержкой кластерно..."  +/
Сообщение от vitalif (ok), 26-Мрт-24, 00:18 
> Если так сделать - то при рандомных мелких чтениях будет полный трындец.

Да нормально всё будет, у меня же везде оптимизация под задержку, на чистой блочке даже в один поток задержка чтения на нормальном кластере ~0.1 мс. Т.е. сравнимо со скоростью локального ссд. Ну с NFS добавится ещё один раундтрип до NFS сервера (т.е. клиент -> vitastor-nfs -> OSD). Но если vitastor-nfs запущен локально, то этот раундтрип будет через локальный loopback, т.е. добавит какие-нибудь 20 микросекунд. Ну будет в конце концов 0.15 мс скажем, нормально.

Собственно а как ещё-то делать, если у тебя сетевая ФС и тебе нужна когерентность? Если ты юзаешь кэш клиента, понятно что из него могут данные отдаться. Если нужна когерентность только и остаётся на сервер ходить.

Теоретически если бы был собственный модуль ядра с реализацией ФС, можно было бы наверное сделать оптимальнее, либо какие-то уведомления от сервера, либо как у меня в vitastor-kv перепроверки номера версии, но это же пипец, модуль ядра свой пилить)

Ответить | Правка | Наверх | Cообщить модератору

86. "Опубликован выпуск SDS Vitastor 1.5.0 с поддержкой кластерно..."  +/
Сообщение от Tron is Whistling (?), 26-Мрт-24, 08:13 
NFS-серверов сколько может быть? Их тоже придётся синхронизировать.
Если один, единый SPOF - это очень плохо.

> Собственно а как ещё-то делать, если у тебя сетевая ФС и тебе нужна когерентность?

В OCFS2 сделано очень хитро и более-менее правильно, можно посмотреть.

Ответить | Правка | Наверх | Cообщить модератору

90. "Опубликован выпуск SDS Vitastor 1.5.0 с поддержкой кластерно..."  +/
Сообщение от vitalif (ok), 26-Мрт-24, 09:56 
Можно сколько угодно делать, они стейтлесс, их синхронизировать не надо

Можно вообще NFS сервер запускать локально, как FUSE, там даже есть команда vitastor-nfs mount - сразу запускает и монтирует сервер на локалхосте на случайном порту

Ответить | Правка | Наверх | Cообщить модератору

91. "Опубликован выпуск SDS Vitastor 1.5.0 с поддержкой кластерно..."  +/
Сообщение от Tron is Whistling (?), 26-Мрт-24, 10:24 
Случайно запускает и случайно монтирует, понятное дело.
Проблема в том, что в случае множественного монтирования без блокировок не выжить.

Даже если вы и найдёте юзкейс, при котором можно, и далеко их не один - всё равно это уже не ФС общего назначения, и подойдёт только под такие вот неслучайные юзкейсы.

Ответить | Правка | К родителю #90 | Наверх | Cообщить модератору

92. "Опубликован выпуск SDS Vitastor 1.5.0 с поддержкой кластерно..."  +/
Сообщение от vitalif (ok), 26-Мрт-24, 11:15 
Да чо ты троллишь :-) там специально сделано так что всё стейтлесс. Я даже БД специальную накурил на основе оптимистичного Б-дерева, допускающую параллельный доступ с разных нод. :-) на основе CAS-"транзакций".

Без блокировок вполне можно выжить, выше же обсудили про O_DIRECT, а вообще и проще, простой close-to-open сработает всегда, даже с пейдж кэшем

Ответить | Правка | К родителю #91 | Наверх | Cообщить модератору

75. "Опубликован выпуск SDS Vitastor 1.5.0 с поддержкой кластерно..."  +/
Сообщение от Tron is Whistling (?), 25-Мрт-24, 23:56 
Ну и да, какой ещё O_DIRECT в NFS?

Синхронизация "в лоб" выглядит следующим образом (есть более хитрые способы):

- Все ноды обмениваются информацие об открытиях файлов
- Видим запись на одной из нод, видим, что файл открыт ещё где-то
- Информируем все остальные ноды, открывшие файл (если первый пункт пропустить - вообще все ноды, а это тормоза), о том, что блок X файла Y взят на запись нодой N
- В этот момент - кто не спрятался, я не виноват, ноды могут ещё прочесть старое, разрешено, стрижка только начата - вот тут как раз и нужны блокировки
- Все проинформированные ноды при прочих попытках чтения этого блока встают колом и ждут продолжения банкета
- Новые ноды, открывающие файлы, принимаются, но информируются об in-flight записи блока
- Производим запись
- Уведомляем писавшего об успехе
- Информируем все участвовавшие в трындеце ноды и новые появившиеся о том, что запись блока завершена
- Проинформированные ноды сбрасывают кеш блока, те, что пытались его читать - выдыхают, и начинают читать

Как быть с блокировками, и чем они страшны

- Если взята эксклюзивная блокировка файла на запись, к счастью, никто читать блок не попытается, но механизм выше всё равно должен быть, так как блокировки банально нестрогие, и у нас могут быть ноды, которые всё равно попытаются читать. Но наличие таких можно отследить по запросам на блокировку - те, что встали колом на попытке взять прочую блокировку - можно проинформировать только о конце записи, чтобы кеш сбросили, можно даже оптом по всем блокам после снятия эксклюзива - тут как раз целое поле непаханое для оптимизации

Ответить | Правка | К родителю #68 | Наверх | Cообщить модератору

82. "Опубликован выпуск SDS Vitastor 1.5.0 с поддержкой кластерно..."  +/
Сообщение от vitalif (ok), 26-Мрт-24, 00:21 
O_DIRECT с NFS пашет, я проверял. Причём что забавно - даже с невыровненными блоками :-).

А с блокировками - насколько я понял из man 5 nfs, там сам NFS-клиент кэш сбросит за тебя, если ты блокировки юзаешь. Но там же и написано про O_DIRECT:

If absolute cache coherence among clients is required, applications should use file locking. Alternatively, applications can also open their files with the O_DIRECT flag to disable data caching entirely.

Ответить | Правка | Наверх | Cообщить модератору

85. "Опубликован выпуск SDS Vitastor 1.5.0 с поддержкой кластерно..."  +/
Сообщение от Tron is Whistling (?), 26-Мрт-24, 07:51 
> If absolute cache coherence among clients is required, applications should use file locking.

Именно так оно в идеальном случае и работает, ну, вот потому, о чём я писал.
Возможность отхватить stale read без блокировок есть - в NFS не стали заморачиваться.
Поэтому на кластерах, увы и ах :), только OCFS2/GFS2.


Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру