Предотвратить фрагментацию файлов

У меня проблема с фрагментацией на моем диске. У меня есть программа, которая генерирует более 50000 файлов в разных папках, каждый файл со временем увеличивается. Каждый файл будет иметь размер около 500 МБ, и мне нужно быстро прочитать файлы. Проблема, с которой я столкнулся, заключается в том, что каждый файл будет распределен по диску, а дефрагментация займет более 4 недель.

Я слышал о файловой системе, которая будет распределять каждый файл на диске таким образом, чтобы расстояние между файлами было одинаковым. Я искал в Интернете эту файловую систему, но ничего не нашел.

Моя программа написана на Java, возможно, есть способ установить начало файла на определенную позицию байта на диске.

Я был бы рад, если бы кто-то мог помочь мне решить эту проблему.


person Marek Salzinger    schedule 09.10.2017    source источник
comment
Вы ничего не можете сделать с этим, используя Java. На самом деле Java предназначена для того, чтобы уберечь программиста от таких системно-зависимых вещей.   -  person Timothy Truckle    schedule 09.10.2017


Ответы (4)


Я слышал о файловой системе, которая будет распределять каждый файл на диске таким образом, чтобы расстояние между файлами было одинаковым. Я искал в Интернете эту файловую систему, но ничего не нашел.

Скорее всего вы этого не сделали, потому что его не существует...

Но у нас есть системы RAID (Rapid Array of Inexpensive Disks), которые могут облегчить вашу боль...

person Timothy Truckle    schedule 09.10.2017

Как сказал Тимоти, вы не можете достичь этого уровня, используя Java.

Я не слышал об этой файловой системе, хотя в ней мало логики.

Возможно, в случае, если вы храните текст, вы можете использовать базу данных NoSQL (например, MongoDB), которая хранит данные в двоичном формате. Вероятно, вы получите хорошие скорости, а коннектор Java прост в использовании.

person webo80    schedule 09.10.2017

Используйте файловую систему Linux, такую ​​​​как ext4, где фрагментация диска очень низкая, но также убедитесь, что у вас достаточно свободного места на диске, иначе фрагментация все равно произойдет.

person Nyamiou The Galeanthrope    schedule 09.10.2017

Я также не знаю файловой системы, которая делает это. Однако у меня есть некоторая информация, которая может помочь -

Если бы вы использовали SSD, то фрагментация не вызывала бы беспокойства из-за производительности чтения. Твердотельные накопители хранят данные фрагментами — например, страницы флэш-памяти NAND размером 16 КБ. Они всегда хранятся в разбросанном порядке из-за используемого алгоритма выравнивания износа. Это очень отличается от того, как жесткие диски работают на практике. Доступ к страницам на SSD также осуществляется очень параллельно. В результате у вас будет гораздо меньше влияния фрагментации на производительность чтения с SSD. Фрагментация по-прежнему будет иметь некоторые штрафы за запись/удаление.

RAID также позволит повысить производительность при чтении, как упоминает Тимоти.

person mikato    schedule 09.10.2017