The OpenNET Project / Index page

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



"OpenNews: Вышел релиз сетевой файловой системы POHMELFS"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Присылайте удачные настройки в раздел примеров файлов конфигурации на WIKI.opennet.ru.
. "Вышел релиз сетевой файловой системы POHMELFS" +/
Сообщение от _umka_email (ok), 04-Май-08, 23:45 
>
>>то есть разговора о производительности метаданных не идет ?
>>для решения вопросов о локах - у люстры свой lockd, это один
>>из самых обольших ее кусков.
>
>Из чего вы сделали такой вывод о производительности метаданных?

хотя бы из ваших слов о fcntl lock - что они не быстрые, есть такая буква.
И о структуре транзакций.

>
>>так же как и при журналировании данных.
>
>Ога, а кто дожидется, что запись в журнал завершена :)

клиент - для этого есть средства. в Lustre book об этом была помоему глава.

>
>>>Надеюсь, что вы не пишете такой код... Задайте тот же самый вопрос,
>>>если у вас два потока, один делает lseek(), а второй просто
>>>write(). И тоже самое будет с двумя клиентами pohmelfs.
>>
>>судя по вашим словам "статистика не сихнронизиуется" - первый клиент будет иметь
>
>Статистика _пока_ не синхронизируется, это раз.

но ведь это уже названо релизом? скажите что это глубокая альфа - я оставлю свои коментарии :) или что я об этом не думал.


>[оверквотинг удален]
>>i_size = size_old, от первого ls -l (выполнен stat), и будет
>>писать ровно с этой позиции - оно закэшировано в его vfs
>>стеке.
>>
>>второй клиент i_size уже обновил - и писать надо с другой позиции
>>- но без когерентности meta-data  - как первый клиент узнает
>>что размер обновился? кто за него сделает этот lseek?
>
>Вы разве не видите огромный race в этом случае для локального VFS
>и двух потоков?

нету там race для локального VFS. оба клиента в этом случае работают с одной struct inode
и i_size будет одинаковый, а в вашем случае это не так. Оба клиента разделены по сети, и i_size у них разный. Нарушение POSIX.
Еще раз подчеркиваю
клиент1: statfs inode, open(O_APPEND); sleep
клиент2: open(,O_APPEND); write, exit;
клиент1: write, exit
по времени эти 2 действия не пересекаются - только i_size обновляется асинхронно.
такая последовательность действий запрещена с точки зрения pohmelfs ?

>Прямо один в один, только потоки локальные. Что будет, если один собрался
>делать write(), а второй lseek()?
>
>Так банально _НЕЛЬЗЯ_ делать, если вы заботитесь о сохранности данных, т.к. другой
>поток может вызвать lseek() и переписать указатель, откуда надо делать write().
>Для этого и изобрели pwrite() и остальных (собственно, они и используются
>в pohmelfs server).

в случае люстры - 2 клиента могут писать в EOF последовательно и это будет работать.
у вас это запрещено - ок, запишем.
Есть еще MPI - где это не запрещено, макс захотят что бы стояли барьеры.


>
>Еще раз повторю, что pohmelfs не будет поддерживать синзхронизацию более строгую, чем
>локальный VFS.

дай бог что бы она поддерживала хотя бы такую как есть в локальном VFS, пока и ее нету.

Я лиш пытаюсь показать подводные камни на этом пути, да и немного - не совсем привычных use case которые тем немеение существуют.

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

Оглавление
OpenNews: Вышел релиз сетевой файловой системы POHMELFS, opennews, 26-Апр-08, 21:56  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



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

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