Fallocate fehlgeschlagen: Operation nicht unterstützt


10

Beim Laufen,

fallocate -l 10G /path/to/file

Ich habe den folgenden Fehler zurückgegeben:

fallocate: file: fallocate failed: Operation not supported

Das Erstellen der Datei mit dd (if = / dev / zero oder if = / dev / urandom) funktioniert, aber wenn ich versuche, große Dateien mit einer Größe von mehreren zehn GB zu erstellen, dauert der Vorgang mehrere Stunden.

Ausführen von Ubuntu 14.04. Bei Verwendung einer ext4-Partition scheint die Angabe eines Dateityps das Ergebnis nicht zu ändern.

Funktioniert gut auf meinen CentOS6-Computern, nur nicht auf Ubuntu.


Welches Dateisystem verwenden Sie?
g_p

Aktualisieren Sie uns auch den Dateityp, den Sie erstellen.
Vembutech

Bei Verwendung von ext4 scheint der Dateityp keine Rolle zu spielen. Unabhängig davon, ob ich eine leere Datei, eine TXT- oder eine IMG-Datei erstelle, wird der gleiche Fehler angezeigt.
John J Johnson

Antworten:


11

Wenn spärliche Dateien für Sie in Ordnung sind (z. B. wenn Sie ein Bild erstellen möchten, um es mit einem Dateisystem zu füllen), werden sie in kürzester Zeit erstellt

100 GB dauern 3 Millisekunden:

# time dd if=/dev/zero of=tmptst.dat bs=1G seek=100 count=0
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0,00037726 s, 0,0 kB/s

real    0m0.003s
user    0m0.000s
sys 0m0.002s

Die resultierende Datei:

# ls -lh tmptst.dat
-rw-r--r-- 1 root root 100G 2015-01-22 16:39 tmptst.dat

Seine tatsächliche Größe im Moment: 0 Bytes

# ls -lsh tmptst.dat
0 -rw-r--r-- 1 root root 100G 2015-01-22 16:39 tmptst.dat

In Bezug auf die Erstellung eines dm-crypt / LUKS-Containers wurde davon ausgegangen, dass das Erstellen eines Containers mit / dev / urandom sicherer ist als das Erstellen eines Containers mit / dev / zero und das schrittweise Füllen mit Daten. Ich habe seitdem gelernt, dass die Verwendung von Fallocate mein Problem nicht gelöst hätte, da die langsame Geschwindigkeit lediglich eine Einschränkung der Geschwindigkeit war, mit der der pRNG von / dev / urandom funktioniert, aber ich habe immer noch keine Ahnung, warum Fallocate selbst sich weigert zu arbeiten. Prost auf die Antwort, akzeptiert, wie ich mir nach all der Zeit vorstelle, es ist die beste Antwort, die ich bekommen werde, haha.
John J Johnson

Ich frage mich, ob Fallocate nicht zurückgreifen kann, um dasselbe zu tun. Das würde für mich Sinn machen.
unfa

3

Wenn Sie sich nicht für den Inhalt interessieren, sondern nur einige Daten benötigen,

Zuerst tun,

dd if=/dev/urandom of=tmp.txt bs=1M count=1

Es wird schaffen,

-rw-r--r-- 1 root root 1.0M Oct 17 00:30 tmp1.txt.

Wenn Sie dann eine 10M-Datei erstellen möchten, verwenden Sie die oben generierte Datei zum wiederholten Anhängen.

for i in {1..10}; do dd if=tmp.txt of=tmp1.txt bs=1M oflag=append conv=notrunc; done;

2

Ich bin auch auf dieses Problem gestoßen.

Ein symbolischer Link im Verzeichnispfad scheint das Problem zu sein. Versuchen Sie den gleichen Befehl auf / tmp und es sollte funktionieren.

Ich konnte das Problem umgehen, indem ich dem Fallocate-Befehl ein '-x' hinzufügte. Dieser erzwungene 'Posix-Modus' sollte länger dauern.

Obwohl das Dateisystem ext4 war, verursachte der symbolische Link den Fehler "Auf diesem Dateisystem nicht unterstützt". Wenn ich direkt zum Verzeichnisnamen ging (ohne symbolische Links), funktionierte der Aufruf von fallocate ().

A1: Der vollständige Pfadname der von Ihnen erstellten Datei enthält keine symbolischen Links.

A2: Verwenden Sie das '-x', obwohl es länger dauert.

b \ 375

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.