Всем привет.
Доковырял до более-менее работоспособного состояния распределенную ФС на редисе. Штука пока экспериментальная, косяков и прочих недочетов много. В качестве проверки заливал авишку на 2 гига и пару альбомов - работает адекватно. Еще файрфокс запускал - тоже не жаловался. А вот скомпилить ядро не удалось: make после CC, наверное, во время линкования крашится, жалуясь на память.
Все вкучу:
- нет flush()
- как следствие, запись без буфера
- нет lock()
- по какой-то причине link() вызвать так и не удалось, поэтому жестких ссылок нет
- таблица файлов в мускуле
- файлы разбитые на чанки хранятся в редисах
- запись с пересечением границы в chunk_size дико тормозит, возможно, из-за необходимости чтения (и еще почему-то медленно Queue.put() работает)
- сам Fuse() работает в одном потоке (чтение/запись многопоточная)
- буфер чтения пока растет неограниченно, а убивается только во время записи
- ноды для хранения выбираются автоматически (правда статистика пока не сохраняется, поэтому выбор всегда один и тот же)
- load_balance на уровне выбора ноды с минимальным read_requests
- save/load чанков происходит через бэкенд, поэтому вместо редиса можно будет попробовать что-нибудь другое
mysqlfiletable.py занимается сохранением/чтением из мускула
rcluster.py занимается самими данными
Критика кода и все остальное приветствуется. Хотя я сильно сомневаюсь, что это все кому-то надо :D