Шардинг в MongoDB шикарен. Однако скорость отдачи файлов не является лучшей стороной MongoDB GridFS. Есть модуль Nginx-а для раздачи файлов из GridFS, но коннекты у него блокирующие с вытекающими из этого последствиями. Как аналог, приходит в голову rsync + MongoDB capet collection + MongoDB tailable cursor. а если подумать то монгу предложенном варианте можно заменить на redis: в редисе заводится очередь на каждый сервера, на каждом сервер висит скрипт с blPop (очень интересная команда, в асинхронной модели будет работать отлично), когда есть изменения (добавили/удалил/изменили файл) другой скрипт, который принял данную комманду, делает rpop в очереди серверов у redis с соответвующий opcod-ом, ну а дальше rsync или что либо ещё. тем самым получаю синхронизацию фс. Скорость редиса ничуть не уступает скорости memcached, проверено. Это то, что сходу пришло в голову.