Есть файловая система, нужно в ней собрать размазанные куски файлов вместе. Допустим, что примитивы вроде «переместить кусок файла вот сюда» уже есть. Интересует высокоуровневое описание того, как это делать.
Поиск в интернете даёт простые алгоритмы вроде упаковки всех файлов один за другим, начиная с начала диска. Так работал speeddisk под DOS, так работают многие дефрагментаторы под Windows. Но для целевой ОС этот подход плохо работает: нет и не может быть одного сплошного непрерывного пространства. Есть обязательные блоки как минимум раз в 128 Мб. Плюс ещё блоки внутренних структур. Кроме этого есть необязательное, но очень желательное условие: данные файла хорошо бы хранить недалеко от от соответствующих метаданных ФС.
Что можно почитать по этой теме?