Ответить на комментарий
Информация
Опубликовано vladimir в Сб, 12/20/2008 - 11:33Принципы cafs:
- Независимость от сервера (т.е. не требуется server-side конфигурации)
- Возможность работы поверх любой фс
- (пока) read-only
Примеры использования
1: мобильные клиенты
Ситуация: существует некий мобильный клиент (ноутбук), который часто оказывается в разных сетях и пользуется их сетевыми файлохранилищами. В такой ситуации часто может потребоваться получить файл из какой-то сети, находясь в другой. Однако из-за политик безопасности такое возможно редко.
CAFS частично решает эту проблему путем кеширования. А именно, находясь в режиме online и работая поверх какой-либо сетевой фс, cafs кеширует открываемые файлы и директории. Когда клиент оказывается в другой сети и исходная файловая система становится недоступной, cafs переходит в режим offline и позволяет читать кешированые файлы.
2: клиенты с медленным и/или нестабильным подключением
Если клиент работает с удаленными файлами по медленному или нестабильному подключению (Wi-Fi, Dial-Up, GPRS), cafs может помочь своим кешированием. Когда подключение падает, cafs автоматически переходит в режим offline, а через некоторое время снова пытается подключиться.
Для медленных клиентов может пригодиться возможность использования кеша в онлайн-режиме (т.е. фс некоторое время пользуется кешироваными данными даже в онлайн режиме).
3: горизонтальное масштабирование
Пример: высоко посещаемый фотосайт, несколько веб-серверов. Все фото хранятся на одном файловом сервере. Веб-сервера используют cafs для раздачи фото, чтобы во-первых снизить нагрузку на файловый сервер, а во-вторых чтобы в случае его отказа все еще иметь возможность раздавать хотя бы часть кешированых изображений.
Реализация
CAFS реализована в качестве виртуальной ФС fuse и написана на языке Python 2.4.
Требования
- python 2.4
- fuse 2.7 или 2.5
- pyFuse
- paramiko для работы по sftp
Реализованые возможности:
- поддержка sftp
- автоматический переход онлайн/оффлайн
- очистка кеша
Известные проблемы:
- невысокая производительности (причина: слишком простой кеш)
- очистка кеша реализована пока не полностью
- вызов statfs не реализован
