Чи можна зберегти файл не послідовно на диску? Я маю на увазі, частина файлу знаходиться під фізичною адресою X, а інша частина під фізичною адресою Y, яка не є близькою до зміщення X +).
Так; це відоме як фрагментація файлів і не рідкість, особливо для великих файлів. Більшість файлових систем виділяють простір у міру необхідності, більш-менш послідовно, але вони не можуть здогадатися про майбутню поведінку - тому якщо ви запишете 200MiB у файл, а потім додасте ще 100MiB, є ненульовий шанс, що обидва набори даних зберігатись у різних областях диска (в основному будь-яке інше записування, що потребує більше місця на диску, яке відбувається після першого запису і до другого, може входити між двома). Якщо файлова система близька до повної, ситуація зазвичай буде гіршою: можливо, не буде суміжного простору вільного простору, достатньо великого, щоб вмістити новий файл, тому його доведеться фрагментувати.
Чи можу я якось контролювати послідовність файлів? Я хочу виділити великий файл 10 Гб. Я хочу, щоб він був послідовним на диску і не був розділений між різними зсувами.
Ви можете повідомити файловій системі про цільовий розмір вашого файлу під час його створення; це допоможе файловій системі зберігати її оптимально. Багато сучасних файлових систем використовують техніку, відому як затримка розподілу, де компонування на диску нового файлу обчислюється якомога пізніше, щоб максимізувати інформацію, доступну під час обчислення. Ви можете допомогти цьому процесу, скориставшись posix_fallocate(3)
функцією, щоб вказати файловій системі, скільки дискового простору має бути виділено загалом. Сучасні файлові системи намагатимуться виконувати це розподіл послідовно.
Чи діє вона по-різному між різними типами?
Різні файлові системи поводяться по-різному, так. Файлові системи на основі журналів, такі як NILFS2, не виділяють сховище так само, як файлові системи на основі масштабів, такі як Ext4, і це лише один приклад варіації.