В поисках сетевой файловой системы с расширенным кэшированием для ускорения доступа к файлам

У меня небольшой домашний сервер, на котором хранятся мои документы. Диски на этом сервере имеют конфигурацию RAID 1 (с использованием Linux md), и также периодически выполняется резервное копирование на внешний жесткий диск, чтобы не потерять их. Однако я всегда обращаюсь к файлам с других компьютеров в домашней сети, используя общий ресурс SMB, и это приводит к значительному снижению скорости (особенно при подключении через WLAN). Это очень раздражает при редактировании больших файлов, например, таких как RAW цифровых камер.

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

До сих пор я встречал следующие варианты:

  • что-то похожее на Dropbox. Кажется, iFolder - единственное, что близко, но его репутация (стабильность) и требования отталкивают меня.

  • Распределенная файловая система, такая как OpenAFS. Я не уверен, что это ускорит доступ к файлам. Это, вероятно, излишне для того, что мне нужно.

  • Возможно, NFS или даже Samba предлагают такие возможности. Я немного прочитал о автономных файлах Windows, но их работа кажется ограниченной (по крайней мере, в Windows XP).

Поскольку это только для личного использования, я не хочу тратить много денег. Свободное решение будет предпочтительным. Кроме того, сервер должен работать в Linux, а мне нужен клиент как минимум для Windows.

Изменить: с тех пор я установил OpenAFS (довольно сложный процесс). Кажется, для удовлетворения большинства моих потребностей. Файлы кэшируются локально, ускоряя доступ к кэшированным файлам. Первый доступ к файлу, конечно, все еще медленный. Я с нетерпением жду, когда в будущем выпуске OpenAFS планируется отключить AFS, поскольку это позволит предварительно кэшировать файлы. Это было бы идеально для редактирования наборов больших файлов, таких как RAW камеры.

2 ответа

Вы можете кэшировать чтение и запись для NFSv4 с помощью FS-Cache. Red Hat написал хорошую документацию.

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

Проблема с файловыми системами, которые работают в автономном режиме: 1) одновременный доступ и 2) синхронизация. Если вам не нужен одновременный доступ, просто возьмите съемный жесткий диск и носите его с собой. Если вам нужен одновременный доступ, то у вас будут проблемы с синхронизацией, потому что как клиент, работающий с локальной копией, сообщает другим клиентам, что копия в сети устарела? Если подумать, чем ближе к синхронизации, тем меньше смысла в кеше. Итак, две крайности - это то, что обычно побеждает; Вы можете получить портативный диск или использовать файловую систему, которая не кэшируется.

Что касается ваших фотографий, то, что вы, вероятно, на самом деле хотите, это локальный индекс, так что вы можете искать в нем локально, но получать реальные файлы из сети. Это то, что будет работать на более высоком уровне, чем сама файловая система, поэтому причина, по которой вы не нашли то, что вы ищете, заключается в том, что вы ищете не ту вещь.:) Вы, вероятно, должны искать программы для индексирования изображений; это проблема, которая, насколько я помню, была решена несколькими способами.

Для более общего решения что-то, вдохновленное Subversion или CVS или подобным, вероятно, будет работать довольно хорошо.

Другие вопросы по тегам