Fallocate: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
Zeile 2: | Zeile 2: | ||
== Beschreibung == | == Beschreibung == | ||
'''fallocate''' wird verwendet, um Blöcke für eine | '''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 | Der von '''fallocate''' zurückgegebene Exit-Status ist 0 bei Erfolg und 1 bei Fehlschlag | ||
== Installation == | == Installation == | ||
Zeile 10: | Zeile 13: | ||
== Aufruf == | == Aufruf == | ||
<syntaxhighlight lang="bash" highlight="1-3" line copy> | <syntaxhighlight lang="bash" highlight="1-3" line copy> | ||
fallocate [-c|-p|-z] [-o | fallocate [-c|-p|-z] [-o ''Versatz''] -l ''Länge'' [-n] ''Dateiname'' | ||
fallocate -d [-o ''Versatz''] [-l | fallocate -d [-o ''Versatz''] [-l ''Länge''] ''Dateiname'' | ||
fallocate -x [-o ''Versatz''] -l | fallocate -x [-o ''Versatz''] -l ''Länge Dateiname'' | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Zeile 20: | Zeile 23: | ||
! Unix !! GNU !! Parameter !! Beschreibung | ! Unix !! GNU !! Parameter !! Beschreibung | ||
|- | |- | ||
| || || || | | || || || | ||
|- | |- | ||
|} | |} | ||
Nachfolgend kann den Argumenten ''Länge'' und | 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 | ||
The options --collapse-range, --dig-holes, | The options --collapse-range, --dig-holes, --punch-hole, --zero-range and --posix are mutually exclusive | ||
-c, --collapse-range | -c, --collapse-range | ||
entfernt einen Bereich aus einer Datei, ohne ein | 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 | 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 | 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 | -d, --dig-holes | ||
Erkennen und Erstellen von | 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 | 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 | Mit der Option --punch-hole erhalten Sie eine Liste der unterstützten Dateisysteme | ||
-i, --insert-range | -i, --insert-range | ||
fügt ein Loch der Länge ''Länge'' | fügt ein Loch der Länge ''Länge'' Bytes bei ''Versatz'' ein und verschiebt bestehende Daten | ||
-l, --length ''Länge'' | -l, --length ''Länge'' | ||
gibt die Länge des Zuweisungsbereiches in Byte | gibt die Länge des Zuweisungsbereiches in Byte an | ||
-n, --keep-size | -n, --keep-size | ||
verhindert die Änderung der eigentlichen | 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'' | -o, --offset ''Versatz'' | ||
gibt den Anfang des Zuweisungsbereiches in Byte an | gibt den Anfang des Zuweisungsbereiches in Byte an | ||
-p, --punch-hole | -p, --punch-hole | ||
löscht eine Zuweisung (d.h. erzeugt ein | 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 | 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 | -v, --verbose | ||
aktiviert den ausführlichen Modus | aktiviert den ausführlichen Modus | ||
-x, --posix | -x, --posix | ||
aktiviert den POSIX-Betriebsmodus | 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 | -z, --zero-range | ||
Belegt den Raum in dem bei ''Versatz'' beginnenden | 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 | 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 | 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 | Dies ist seit Linux 3.14 für ext4 (nur für Extent-basierte Dateien) und XFS verfügbar | ||
-h, --help | -h, --help | ||
zeigt einen Hilfetext an und beendet das Programm | zeigt einen Hilfetext an und beendet das Programm | ||
-V, --version | -V, --version | ||
Display version and exit | Display version and exit | ||
=== Parameter === | === Parameter === | ||
Zeile 101: | Zeile 122: | ||
| 0 || Erfolg | | 0 || Erfolg | ||
|- | |- | ||
| >0 | | >0 || Fehler | ||
|} | |} | ||
Zeile 116: | Zeile 137: | ||
! Datei !! Beschreibung | ! Datei !! Beschreibung | ||
|- | |- | ||
| || | | || | ||
|- | |- | ||
| || | | || | ||
|} | |} | ||
Zeile 132: | Zeile 153: | ||
=== Dokumentation === | === Dokumentation === | ||
; Man-Page | ; Man-Page | ||
# [https://manpages.debian.org/stable/util-linux-locales/fallocate.1.de.html fallocate (1)] | # [https://manpages.debian.org/stable/util-linux-locales/fallocate.1.de.html fallocate (1)] | ||
# [https://manpages.debian.org/trixie/manpages-dev/fallocate.2.en.html fallocate (2)] | # [https://manpages.debian.org/trixie/manpages-dev/fallocate.2.en.html fallocate (2)] |
Version vom 4. September 2025, 13:48 Uhr
fallocate - einer Datei Platz im Dateisystem zuweisen oder enziehen
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
Installation
Aufruf
fallocate [-c|-p|-z] [-o ''Versatz''] -l ''Länge'' [-n] ''Dateiname''
fallocate -d [-o ''Versatz''] [-l ''Länge''] ''Dateiname''
fallocate -x [-o ''Versatz''] -l ''Länge Dateiname''
Optionen
Unix | GNU | Parameter | Beschreibung |
---|---|---|---|
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
The options --collapse-range, --dig-holes, --punch-hole, --zero-range and --posix are mutually exclusive
-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
-i, --insert-range
fügt ein Loch der Länge Länge Bytes bei Versatz ein und verschiebt bestehende Daten
-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
-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
Display version and exit
Parameter
Umgebungsvariablen
Exit-Status
Wert | Beschreibung |
---|---|
0 | Erfolg |
>0 | Fehler |
Anwendung
Problembehebung
Konfiguration
Dateien
Datei | Beschreibung |
---|---|
Anhang
Siehe auch
Dokumentation
- Man-Page
Links
Projekt
Weblinks