Отложенное выделение места

Выделение-на-сбросе (также называется «отложенное выделение», англ. late allocation, delayed allocation) — это функция файловой системы компьютера, реализованная в HFS+, XFS, Reiser4, ZFS, Btrfs и ext4. Эта функция также очень напоминает старую технологию файловой системы UFS под названием «перераспределение блоков» (block reallocation).

Когда требуется выделить место для ожидающих записи блоков, размер дискового пространства для новых данных вычитается из счетчика свободного пространства, но на самом деле не выделяется в карте свободного пространства. Вместо этого новые данные хранятся в памяти, пока не будут сброшены на носитель из-за нехватки памяти или пока ядро не решит сбросить «грязные» буфера, или пока какое-нибудь приложение не выполнит системный вызов Unix «sync».

Этот способ выделения собирает мелкие задачи записи в более крупные. Такая задержка обработки уменьшает использование процессора и имеет тенденцию к снижению фрагментации диска, особенно для файлов, которые растут медленно. Она также может помочь в сохранении непрерывности выделенного пространства, когда есть несколько одновременно растущих файлов. При использовании в сочетании с технологией копирования при записи, как в ZFS, она может превратить медленные случайные записи в быстрые последовательные записи.

Таким образом, выделение блоков для хранения данных файла происходит перед физической записью на диск, а на диске выделяется место только при физической записи файла. В результате место на диске под файл выделяется более оптимально, так как операции выделения блоков делаются не по одной, а группами, что в свою очередь минимизирует фрагментацию диска и ускоряет процесс выделения блоков.

С другой стороны, такая стратегия увеличивает риск потери данных в случае внезапного пропадания питания.