Как оптимизировать скорость записи множества больших файлов в linux?
Используя fallocate создать файл нужного размера, если файловая система не поддерживает sparse files (дырявые файлы, не занимающие место на диске) то эта операция мгновенна а файл будет заполнен мусором (данными, которые лежали в секторах).
К сожалению (а точнее к счастью, ибо безопасность важнее) все современные файловые системы поддерживают дыры (они будут возвращать нули), т.е. физически файл не будет занимать место, и вам нужно будет либо самим заполнить файл нулями либо использовать опцию fallocate - FALLOC_FL_ZERO_RANGE, это физически записывает данные на диск, так что операция тратит время.
p.s. файловые системы со сжатием или online deduplication (типа zfs) тем более не позволят вам управлять процессом создания, точнее это нужно будет делать утилитами файловой системы.
upd. забыл еще напомнить, на файловых системах Copy On Write (типа zfs/btrfs/...) предварительное размещение файла бессмысленно, даже вредно, так как любая запись будет проходить в новое место на диске.
Что это за "перемещение файлов на диске"? Вы дефрагментацию имеете в виду, что ли?
Если критично иметь файл в виде непрерывной (как можно более) области на диске - дожидайтесь, пока запись закончится и копируйте данные на не занятое устройство, всё будет лежать красивенько. Ну или выделяйте место на основном диске сразу, а не по мере увеличения файлов.