fallocate fallito: operazione non supportata


10

Quando corri,

fallocate -l 10G /path/to/file

Sono tornato il seguente errore:

fallocate: file: fallocate failed: Operation not supported

La creazione del file usando dd (if = / dev / zero o if = / dev / urandom) funziona, ma se sto cercando di creare file di grandi dimensioni, di dimensioni di decine di GB, occorrono diverse ore per il completamento.

Esecuzione di Ubuntu 14.04. Usando una partizione ext4, specificare un tipo di file non sembra alterare il risultato.

Funziona bene con le mie macchine CentOS6, ma non con Ubuntu.


quale file system stai usando?
g_p,

Aggiornaci anche il tipo di file che stai creando.
Vembutech,

Usando ext4, il tipo di file non sembra importare. Se sto creando un file vuoto, un .txt, un .img, ricevo lo stesso errore.
John J Johnson,

Risposte:


11

Se i file sparsi sono adatti a te (ad esempio, vuoi creare un'immagine per popolarla con un file system), vengono creati in pochissimo tempo

100 GB richiedono 3 millisecondi:

# 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

Il file risultante:

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

La sua dimensione reale al momento: 0 byte

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

Riguardava la creazione di un contenitore dm-crypt / LUKS, operando presupponendo che la creazione di un contenitore usando / dev / urandom sarebbe stata più sicura della creazione di uno con / dev / zero e il riempimento graduale di dati. Da allora ho imparato che usare fallocate non avrebbe risolto il mio problema, dato che la bassa velocità era semplicemente una limitazione della velocità con cui funziona il pRNG di / dev / urandom, ma non ho ancora idea del perché lo stesso fallocate si rifiuti di funzionare. Saluti per la risposta, però, accettato come immagino dopo tutto questo tempo è la migliore risposta che avrò ahah.
John J Johnson,

Mi chiedo se il fallocate non può fallback per fare la stessa cosa? Ciò avrebbe senso per me.
Unfa,

3

Se non ti interessa il contenuto ma hai solo bisogno di alcuni dati,

Per prima cosa,

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

Creerà,

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

Quindi, se ti piace creare un file 10M, usa ripetutamente il file generato sopra per aggiungere,

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

2

Ho anche riscontrato questo problema.

Un collegamento simbolico nel percorso della directory sembra essere il problema. prova lo stesso comando su / tmp e dovrebbe funzionare.

Sono stato in grado di aggirare il problema aggiungendo '-x' al comando fallocate. Questa forzata "modalità posix", e avrebbe dovuto richiedere più tempo.

Anche se il filesystem era ext4, il collegamento simbolico stava causando l'errore "non supportato su questo filesystem". In effetti se andassi direttamente al nome della directory (senza alcun collegamento simbolico), la chiamata fallocate () funzionava.

A1: non avere collegamenti simbolici da nessuna parte nel percorso completo del file che si sta creando.

A2: usa '-x', anche se impiega più tempo.

b \ 375

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.