Совместное использование большого файла данных mmaped между машинами в кластере Linux

Скажем, у меня есть файл данных объемом 1 ТБ, предназначенный для чтения/записи из локально смонтированной файловой системы жесткого диска «главной» системы Linux в виртуальное адресное пространство процесса, работающего в той же «главной» системе.

У меня есть 20 выделенных «ведомых» Linux-серверов, подключенных через гигабитный коммутатор к «главной» системе. Я хочу предоставить произвольный доступ для чтения к этому 1 ТБ на этих «подчиненных» серверах, отобразив его только для чтения в их адресные пространства процессов.

Мой вопрос: каков наиболее эффективный способ синхронизации (возможно, ленивой) набора данных из главной системы в подчиненные системы? (например, можно ли смонтировать файл по NFS, а затем перенести его оттуда? Если да, то является ли это лучшим решением? Если нет, то какое решение?)


person Andrew Tomazos    schedule 17.04.2012    source источник


Ответы (1)


Недавно я обдумывал такую ​​​​идею на работе (конечно, это было со значительно меньшими размерами файлов). Я считаю, что NFS подойдет для чтения, но у вас могут возникнуть проблемы с параллельной записью. Если у вас есть только один «писатель», ваша идея должна работать достаточно хорошо. Если файл данных структурирован, я бы рекомендовал использовать распределенный кеш с некоторым описанием и разрешить несколько копий данных, распределенных по кластеру (для избыточности).

В конце концов мы остановились на SAN и решении с кластерной файловой системой (в нашем случае это Symantec VCS, но подойдет и любая универсальная кластерная файловая система). Причина, по которой мы это сделали, заключается в том, что мы не могли получить требуемую производительность при использовании чистой NFS. Выбранная вами кластерная файловая система должна правильно поддерживать mmap и распределенный кэш.

person Shaun Campbell    schedule 08.12.2013