Назад | Перейти на главную страницу

Распределенная файловая система с локальным дисковым кешем

Моя серверная инфраструктура быстро растет, и я решил создать распределенный кластер хранения. Я искал подходящую файловую систему для этой задачи, которая соответствовала бы моим требованиям, но ни одна из них не поддерживает функцию кеширования локального диска. На каждом из моих серверов есть два жестких диска SAS по 600 ГБ, и я предпочитаю использовать их в качестве кеш-хранилища для наиболее часто используемых файлов из распределенного хранилища.

Поддерживает ли какая-либо файловая система с открытым исходным кодом эту функцию? Мне нравится использовать Ceph или GlusterFS, но я ничего не нашел о локальном дисковом кеше. Я думаю, что это одна из основных функций, которую должна поддерживать распределенная файловая система.

Проверять, выписываться OpenAFS у него есть локальный дисковый кеш, см .: http://docs.openafs.org/Reference/5/afs_cache.html

Другой претендент XtreemFS: the набор функций включает

Помимо полных реплик, содержащих полную копию, XtreemFS также поддерживает частичные реплики. Эти реплики заполняются по запросу, когда клиент обращается к данным.

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

Другие варианты включают

  • используя реплицирующую базу данных nosql
  • bcache (который обеспечит повышение производительности, но не повышение устойчивости, а также проблемы с частыми операциями записи / согласованности кеширования)
  • NAS / SAN

OpenAFS имеет локальный файловый кеш, но также имеет NFSv4 с соответствующей конфигурацией.

http://www.cyberciti.biz/faq/centos-redhat-install-configure-cachefilesd-for-nfs/

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

IPFS стоит изучить, хотя он еще относительно молод, а производительность еще не на уровне Ceph или GlusterFS.

Я рекомендую это, потому что дизайн именно то, что вам нужно для эффективного локального кеша. Все содержимое (включая структуру каталогов) неизменяемо и обрабатывается криптографически проверяемым хешем. Это означает, что контент можно получить откуда угодно - в памяти, на диске или даже с недоверенного однорангового узла. Кроме того, вы получаете бесплатную дедупликацию.

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

Можешь попробовать MooseFS распределенная файловая система. В машине MooseFS Master вся структура файловой системы кэшируется в ОЗУ для большей скорости.

Похоже, gluster выполняет локальное кеширование файлов. Несколько из настраиваемые значения являются

Option  Description     Default Value   Available Options 
performance.cache-size          Size of the read cache.     32 MB   size in bytes
performance.cache-max-file-size     Sets the maximum file size cached by the io-cache translator. Can use the normal size descriptors of KB,MB,GB,TB or PB (ie. 6GB). Maximum size uint64.  2 ^ 64 -1 bytes     size in bytes
performance.cache-min-file-size     Sets the minimum file size cached by the io-cache translator. Values same as "max" above.   0B  size in bytes
performance.cache-refresh-timeout   The cached data for a file will be retained till 'cache-refresh-timeout' seconds, after which data re-validation is performed.  1 sec   0 < cache-timeout < 61