FALLOCATE(1) Användarkommandon FALLOCATE(1)

fallocate - förallokera eller avallokera utrymme till en fil

fallocate [-c|-p|-z|-w] [-o position] -l längd [-n] filnamn

fallocate -d [-o offset] [-l längd] filnamn

fallocate -r [-o position] filnamn

fallocate -x [-o offset] -l length filename

fallocate används för att manipulera det allokerade diskutrymmet för en fil, antingen för att avallokera eller förallokera det. För filsystem som stöder systemanropet fallocate(2) sker förallokering snabbt genom att block allokeras och markeras som oinitialiserade, vilket inte kräver någon IO till datablocken. Detta är mycket snabbare än att skapa en fil genom att fylla den med nollor.

Avslutningsstatusen som returneras av fallocate är 0 vid framgång och 1 vid misslyckande.

Argumenten längd och offset kan följas av de multiplikativa suffixen KiB (=1024), MiB (=1024*1024) och så vidare för GiB, TiB, PiB, EiB, ZiB och YiB (iB är valfritt, t.ex. har "K" samma betydelse som "KiB") eller suffixen KB (=1000), MB (=1000*1000) och så vidare för GB, TB, PB, EB, ZB och YB.

Flaggorna --collapse-range, --dig-holes, --report-holes, --punch-hole, --zero-range, --write-zeroes och --posix kan inte kombineras.

-c, --collapse-range

Tar bort ett byteintervall från en fil utan att lämna ett hål. Byteintervallet som ska kollapsas börjar vid offset och fortsätter i längd bytes. När operationen är klar kommer innehållet i filen som börjar på platsen offset+längd att läggas till på platsen offset, och filen kommer att vara längd bytes mindre. Flaggan --keep-size får inte anges för operationen collapse-range.

Tillgänglig sedan Linux 3.15 för ext4 (endast för extent-baserade filer) och XFS.

Ett filsystem kan lägga begränsningar på operationens granularitet för att säkerställa en effektiv implementering. Vanligtvis måste offset och längd vara en multipel av filsystemets logiska blockstorlek, som varierar beroende på filsystemets typ och konfiguration. Om ett filsystem har ett sådant krav kommer åtgärden att misslyckas med felet EINVAL om detta krav inte uppfylls.

-d, --dig-holes

Upptäck och gräv hål. Detta gör filen gles på plats, utan att använda extra diskutrymme. Den minsta storleken på hålet beror på filsystemets I/O-blockstorlek (vanligtvis 4096 byte). När du använder den här flaggan är --keep-size underförstått. Om inget intervall anges med --offset och --length analyseras hela filen efter hål.

Du kan se den här flaggan som att göra en "cp --sparse" och sedan byta namn på destinationsfilen till originalfilen, utan att det behövs extra diskutrymme.

Se --punch-hole för en lista över filsystem som stöds.

-r, --report-holes

Sök igenom filen och rapportera fördelningen av hål utan att ändra den. Två typer av hål visas: filhål – block som filsystemet inte har allokerat (rapporterade av SEEK_HOLE); datahål – intervall i filen som logiskt är fyllda med nollbyte men fortfarande upptar diskutrymme.

För varje hål skrivs startposition, slutposition och storlek i byte ut i utförligt läge, följt av en sammanfattning som som standard anger total storlek och andel av filen för varje håltyp. Om ingen position anges med --offset söks hela filen igenom.

Denna flagga är skrivskyddad och kan användas på vilken fil som helst för att uppskatta hur mycket utrymme som skulle kunna återvinnas med --dig-holes.

Se --punch-hole för en lista över filsystem som stöds.

-i, --insert-range

Infoga ett hål på längd byte från offset och flytta befintliga data.

Supported for XFS (since Linux 4.1) and ext4 (since Linux 4.2).

-l, --length längd

Anger längden på intervallet i byte.

-n, --keep-size

Ändra inte den synliga längden på filen. Detta kan effektivt allokera block efter EOF, som kan tas bort med en truncate.

-o, --offset offset

Anger startoffset för intervallet, i byte.

-p, --punch-hole

Avallokerar utrymme (dvs. skapar ett hål) i byteintervallet som börjar vid offset och fortsätter i längd bytes. Inom det angivna intervallet nollställs partiella filsystemblock och hela filsystemblock tas bort från filen. Efter ett lyckat anrop kommer efterföljande läsningar från detta intervall att returnera nollor. Den här flaggan får inte anges samtidigt som flaggan --zero-range. När du använder den här flaggan är --keep-size underförstått.

Stöd för XFS (sedan Linux 2.6.38), ext4 (sedan Linux 3.0), Btrfs (sedan Linux 3.7), tmpfs (sedan Linux 3.5) och gfs2 (sedan Linux 4.16).

-v, --verbose

Aktivera utförligt läge.

-w, --write-zeroes

Nollställer utrymmet i byteintervallet som börjar vid position och omfattar längd byte. Inom intervallet förallokeras skrivna block för områden som sträcker sig över hålen i filen. Efter ett lyckat anrop returnerar efterföljande läsningar från intervallet nollor och efterföljande skrivningar till intervallet kräver inga ytterligare ändringar av filens mappningsmetadata.

Nollställningen görs inom filsystemet. Filsystemet kan använda ett maskinvaruaccelererat nollställningskommando eller vanliga skrivningar. Beteendet beror på filsystemets utformning och tillgänglig maskinvara.

Flaggan --keep-size kan inte anges för åtgärden write-zeroes eftersom det inte är tillåtet att allokera skrivna block bortom inodens storlek.

-x, --posix

Aktivera POSIX-operationsläge. I det läget slutförs allokeringen alltid, men det kan ta längre tid när snabb allokering inte stöds av det underliggande filsystemet.

-z, --zero-range

Nollställer utrymmet i byteintervallet som börjar vid offset och fortsätter i längd bytes. Inom det angivna intervallet förallokeras block för de regioner som sträcker sig över hålen i filen. Efter ett lyckat anrop kommer efterföljande läsningar från detta intervall att returnera nollor.

Nollställningen görs inom filsystemet, företrädesvis genom att omvandla intervallet till oskrivna extenter. Detta tillvägagångssätt innebär att det angivna intervallet inte kommer att nollställas fysiskt på enheten (med undantag för partiella block i vardera änden av intervallet), och I/O krävs (annars) endast för att uppdatera metadata.

Flaggan --keep-size kan anges för att förhindra ändring av fillängd.

Tillgänglig sedan Linux 3.14 för ext4 (endast för extent-baserade filer) och XFS.

-h, --help

Visa hjälptext och avsluta.

-V, --version

Visa version och avsluta.

Eric Sandeen <sandeen@redhat.com>, Karel Zak <kzak@redhat.com>

truncate(1), fallocate(2), posix_fallocate(3)

För felrapporter, använd felhanteraren https://github.com/util-linux/util-linux/issues.

Kommandot fallocate ingår i paketet util-linux som kan hämtas från Linux Kernel Archive https://www.kernel.org/pub/linux/utils/util-linux/.

2026-09-21 util-linux 2.42.4