потому что на операцию записи вам бы потребовалось
1. найти блок в таблице блоков
2. сформировать патч
3. сохранить патч в памяти или на диске в таблице метаданных
4. потенциально потебовался gabarge collector который бы сливал распухшие дифы. и его реализация была бы не тривиальной ибо запись одного файла могла потенциально перестроить половину файловой системы. в результате каскада мержей
запрос на чтение бы потребовал
1. постоянного random read ибо данные в результате дедпубликации лежали бы в разных областях диска
2. примение всех патчей которые нужны для чтения файла
Тут вопрос в архитектуре. Например, можно при записи файла просто вычислять перцептивный хэш и индексировать его.
Тогда запись выглядела бы так:
- Вычислить хэш файла
- Поискать в списке индексов самый близкий хэш
- Если найден достаточно близкий, посчитать разницу
- Если целесобразно - записать на диск только патч