Zum Inhalt springen

Fallocate: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
 
(13 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 2: Zeile 2:


== Beschreibung ==
== 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.
; Blöcke für eine Datei reservieren 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
Der von '''fallocate''' zurückgegebene Exit-Status ist 0    bei Erfolg und 1 bei Fehlschlag.
* 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 Nulle


== Installation ==
== Installation ==
[[fallocate]] ist Teil von [[Util-linux]]


== Aufruf ==
== Aufruf ==
<syntaxhighlight lang="bash" highlight="1" line copy>
<syntaxhighlight lang="bash" highlight="1-3" line copy>
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
</syntaxhighlight>
</syntaxhighlight>


'''fallocate''' ['''-c'''|'''-p'''|'''-z'''] ['''-o'''    ''Versatz''] '''-l''' ''Länge'' ['''-n''']  ''Dateiname''
=== Optionen ===
 
; Länge und Versatz
'''fallocate''' '''-d''' ['''-o''' ''Versatz''] ['''-l'''    ''Länge''] ''Dateiname''
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


'''fallocate''' '''-x''' ['''-o''' ''Versatz''] '''-l'''    ''Länge Dateiname''
The options --collapse-range, --dig-holes, --punch-hole, --zero-range and --posix are mutually exclusive


=== Optionen ===
{| class="wikitable sortable options gnu big"
{| class="wikitable sortable options gnu big"
|-
|-
! Unix !! GNU !! Parameter !! Beschreibung
! Unix !! GNU !! Parameter !! Beschreibung
|-
|-
| || || ||  
| -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


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.
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


The options '''--collapse-range''', '''--dig-holes''',    '''--punch-hole''', '''--zero-range''' and '''--posix''' are mutually    exclusive.
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


'''-c''', '''--collapse-range'''
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.&nbsp;h.&nbsp;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


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 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


Dies ist seit Linux 3.15 für ext4 (nur für   Extent-basierte Dateien) und XFS verfügbar.
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


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.
Die Option --keep-size kann angegeben werden, um Änderungen der Länge der Datei zu verhindern


'''-d''', '''--dig-holes'''
Dies ist seit Linux 3.14 für ext4 (nur für Extent-basierte Dateien) und XFS verfügbar
 
|-
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.
| -h || --help || || zeigt einen Hilfetext an und beendet das Programm
 
|-
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.
| -V || --version || || Display version and exit
 
|}
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 ===
=== Parameter ===
Zeile 105: Zeile 95:
| 0 || Erfolg
| 0 || Erfolg
|-
|-
| >0 || Fehler
| >0 || Fehler
|}
|}


Zeile 120: Zeile 110:
! Datei !! Beschreibung
! Datei !! Beschreibung
|-
|-
| ||  
| ||
|-
|-
| ||  
| ||
|}
|}


Zeile 136: Zeile 126:


=== 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)]
Zeile 151: Zeile 141:


</noinclude>
</noinclude>
= TMP =

Aktuelle Version vom 4. September 2025, 14:03 Uhr

fallocate - einer Datei Platz im Dateisystem zuweisen oder enziehen

Beschreibung

Blöcke für eine Datei reservieren 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 Nulle

Installation

fallocate ist Teil von Util-linux

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

Länge und Versatz

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

Unix GNU Parameter Beschreibung
-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
  1. fallocate (1)
  2. fallocate (2)

Links

Projekt

Weblinks

  1. https://superuser.com/questions/850267/how-to-append-data-in-a-file-by-dd