FALLOCATE(1)

BEZEICHNUNG
fallocate - einer Datei Platz im Dateisystem zuweisen oder die Zuweisung lösen

ÜBERSICHT

fallocate [-c|-p|-z|-w] [-o Versatz] -l Länge [-n] Dateiname

fallocate -d [-o Versatz] [-l Länge] Dateiname

fallocate -r [-o Versatz] Dateiname

fallocate -x [-o Versatz] -l Länge Dateiname

BESCHREIBUNG

fallocate wird verwendet, um Blöcke für eine Datei vorzureservieren oder die Reservierung aufzuheben. Wenn das Dateisystem den fallocate(2)-Systemaufruf unterstützt, geschieht dies schnell durch Zuweisung von Blöcken und Markierung dieser Blöcke als nicht initialisiert. Dadurch ist direkter E/A-Zugriff auf die Datenblöcke unnötig. Diese Vorgehensweise ist bedeutend schneller als die Erzeugung der Datei durch Füllen mit Nullen.

Der von fallocate zurückgegebene Exit-Status ist 0 bei Erfolg und 1 bei Fehlschlag.

OPTIONEN

Nachfolgend kann den Argumenten Länge und Versatz eines der multiplikativen Suffixe KiB (=1024), MiB (=1024*1024) und so weiter für GiB, TiB, PiB, EiB, ZiB und YiB folgen (das »iB« ist optional, zum Beispiel ist »K« gleichbedeutend mit »KiB«) oder die Suffixe KB (=1000), MB (=1000*1000) und so weiter für GB, TB, PB, EB, ZB und YB folgen.

Die Optionen --collapse-range, --dig-holes, --report-holes, --punch-hole, --zero-range, --write-zeroes und --posix schließen sich gegenseitig aus.

-c, --collapse-range
    entfernt einen Bereich aus einer Datei, ohne ein »Loch« zu hinterlassen. Der »zusammenzuklappende« Dateibereich beginnt bei Versatz und erstreckt sich über die angegebene Länge in Byte. Nach Abschluss des Vorgangs ist der Inhalt der Datei, der ursprünglich an der Stelle Versatz+Länge stand, nun an der Stelle Versatz und die Datei ist Länge Byte kleiner. Die Option --keep-size kann für die Anwendung von »collapse-range« nicht angegeben werden.

    Dies ist seit Linux 3.15 für ext4 (nur für Extent-basierte Dateien) und XFS verfügbar.

    Ein Dateisystem kann Einschränkungen bezüglich der Granularität der Aktion setzen, um eine effiziente Implementierung sicherzustellen. Typischerweise müssen der Versatz und die Länge Vielfache der logischen Blockgröße des Dateisystems, die vom Dateisystemtyp und der Konfiguration abhängt, sein. Falls ein Dateisystem so eine Anforderung hat, wird die Aktion mit dem Fehler EINVAL fehlschlagen, falls diese Anforderung verletzt ist.

-d, --dig-holes
    Erkennen und Erstellen von »Löchern«. Hierdurch wird am Speicherort der Datei eine Sparse-Datei erstellt, ohne zusätzlichen Platz auf der Platte zu verwenden. Die minimale Größe des »Lochs« hängt von der E/A-Blockgröße des Dateisystems ab (üblicherweise 4096 Byte). Außerdem ist --keep-size impliziert, wenn diese Option verwendet wird. Wenn kein Bereich durch --offset und --length angegeben wurde, wird die gesamte Datei auf »Löcher« hin analysiert.

    Sie können sich diese Option wie das Ergebnis des Befehls »cp --sparse« vorstellen, wobei die Zieldatei den Namen der Ursprungsdatei erhält und kein zusätzlicher Speicherplatz erforderlich ist.

    Mit der Option --punch-hole erhalten Sie eine Liste der unterstützten Dateisysteme.

-r, --report-holes
    scannt die Datei und meldet die Verteilung der Lücken, ohne sie zu verändern. Es werden zwei Arten von Lücken angezeigt: Dateilücken – Blöcke, die das Dateisystem nicht zugewiesen hat (gemeldet durch SEEK_HOLE); Datenlücken – Bereiche innerhalb der Datei, die logisch mit Nullbytes gefüllt sind, aber dennoch Speicherplatz belegen.

    Für jede Lücke werden Anfangsposition, Endposition und Größe in Bytes im ausführlichen Modus ausgegeben,gefolgt von einer Zusammenfassung, die die Gesamtgröße und den prozentualen Anteil der Datei angibt,den jeder Lückentyp standardmäßig repräsentiert. Wenn kein Versatz mit*--offset* angegeben wird, wird die gesamte Datei durchsucht.

    Diese Option ist schreibgeschützt und kann auf jede Datei angewendet werden, um zu ermitteln, wieviel Platz durch --dig-holes zurückgewonnen werden könnte.

    Mit der Option --punch-hole erhalten Sie eine Liste der unterstützten Dateisysteme.

-i, --insert-range
    fügt ein Loch der Länge Länge Bytes bei Versatz ein und verschiebt bestehende Daten.

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

-l, --length Länge
    gibt die Länge des Zuweisungsbereiches in Byte an.

-n, --keep-size
    verhindert die Änderung der eigentlichen Länge der Datei. Dadurch können tatsächlich auch Blöcke nach dem Dateiende (EOF) zugewiesen werden, die durch Abschneiden entfernt werden können.

-o, --offset Versatz
    gibt den Anfang des Zuweisungsbereiches in Byte an.

-p, --punch-hole
    löscht eine Zuweisung (d.h. erzeugt ein »Loch«) im Bereich, der bei Versatz beginnt und sich über die angegebene Länge in Bytes erstreckt. Innerhalb des angegebenen Bereiches werden Dateisystemblöcke partiell auf Null gesetzt und ganze Dateisystemblöcke aus der Datei entfernt. Nach erfolgreichem Aufruf geben nachfolgende Aufrufe Nullen aus diesem Bereich zurück. Diese Option darf nicht gleichzeitig mit --zero-range angegeben werden. Außerdem wird in dieser Option --keep-size impliziert.

    Dies wird für XFS (seit Linux 2.6.38), ext4 (seit Linux 3.0), Btrfs (seit Linux 3.7), tmpfs (seit Linux 3.5) und gfs2 (seit Linux 4.16) unterstützt.

-v, --verbose
    aktiviert den ausführlichen Modus.

-w, --write-zeroes
    belegt den Raum in dem bei Versatz beginnenden Byte-Bereich für Länge Bytes mit Nullen. Innerhalb des angegebenen Bereichs werden geschriebene Blöcke für die Regionen, die die Löcher in der Datei überbrücken, vorbelegt. Nach einem erfolgreichen Aufruf liefern nachfolgende Leseanforderungen aus diesem Bereich Nullen zurück. Für nachfolgende Schreibvorgänge in diesen Bereich sind keine weiteren Änderungen an den Dateizuordnungsmetadaten erforderlich.

    Das Nullsetzen erfolgt innerhalb des Dateisystems. Das Dateisystem kann einen hardwarebeschleunigten Nullsetzungsbefehl verwenden oder reguläre Schreibvorgänge durchführen. Das Verhalten hängt vom Dateisystemdesign und der verfügbaren Hardware ab.

    Die Option --keep-size kann für den Schreibvorgang mit Nullen nicht angegeben werden, da das Zuweisen von geschriebenen Blöcken über die Inode-Größe hinaus nicht zulässig ist.

-x, --posix
    aktiviert den POSIX-Betriebsmodus. In diesem Modus wird die Zuweisung immer abgeschlossen, aber es kann länger dauern, wenn schnelle Zuweisung nicht vom darunterliegenden Dateisystem unterstützt wird.

-z, --zero-range
    Belegt den Raum in dem bei Versatz beginnenden Byte-Bereich für Länge Bytes mit Nullen. Innerhalb des angegebenen Bereichs werden Blöcke für die Regionen, die die Löcher in der Datei überbrücken, vorbelegt. Nach einem erfolgreichen Aufruf liefern nachfolgende Leseanforderungen aus diesem Bereich Nullen zurück.

    Das Nullen erfolgt innerhalb des Dateisystems, vorzugsweise durch Umwandlung des Bereichs in ungeschriebene Extents. Dieser Ansatz bedeutet, dass der angegebene Bereich nicht physisch auf dem Gerät mit Nullen gefüllt wird (außer für Teilblöcke an beiden Enden des Bereichs) und E/A (andernfalls) nur zur Aktualisierung von Metadaten benötigt wird.

    Die Option --keep-size kann angegeben werden, um Änderungen der Länge der Datei zu verhindern.

    Dies ist seit Linux 3.14 für ext4 (nur für Extent-basierte Dateien) und XFS verfügbar.

-h, --help
    zeigt einen Hilfetext an und beendet das Programm.

-V, --version
    zeigt Versionsinformationen an und beendet das Programm.

AUTOREN

SIEHE AUCH

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

FEHLER MELDEN

Nutzen Sie zum Melden von Fehlern das

VERFÜGBARKEIT

Der Befehl fallocate ist Teil des Pakets util-linux, welches aus dem heruntergeladen werden kann.