Я хотел бы сократить время доступа к некоторым файлам, переместив их в начало файловой системы.
Задача 1: Очистить определенный диапазон блоков в начале файловой системы (переместить существующие файлы на свободное место в другом месте).
Задача 2: Переместить соответствующие файлы в этот диапазон блоков (должна быть возможность немного увеличиться).
Как бы я это сделал?
решение1
С чего вы взяли, что это имеет значение?
Вы, возможно, думаете о том, что большинство жестких дисков имеют более высокую скорость чтения на внешних дорожках, чем на внутренних? Я не уверен, что разница существенна, учитывая время поиска и другие накладные расходы. Даже если это так, между физическим диском и файловой системой есть несколько уровней абстракции, поэтому я не уверен, что вы вообще можете надежно размещать данные на определенной части физического диска.
Поэтому сначала вам следует выяснить, действительно ли то, что вы делаете, осуществимо и действительно ли принесет пользу. Боюсь, что это не так...
решение2
Современные файловые системы существуют, чтобы освободить администратора от этих деталей. Если вы хотите изолировать некоторые файлы, используйте разбиение на разделы.
решение3
Шаг 1: размонтируйте файловую систему. Файловые системы обычно разрабатываются так, чтобы к ним мог обращаться только один драйвер за раз, и Ext4 не является исключением.
Шаг 2: Вы меняете выделенные блоки, а не иноды. Кэшируйте список свободных блоков в памяти.
Шаг 3: скопируйте содержимое блока и обновите экстенты в инодах.
решение4
Это не прямой ответ на вопрос, но, возможно, проще будет использовать небольшой раздел в начале диска для хранения этих файлов.