Fallo en Falocate: operación no admitida

10

Cuando se ejecuta,

fallocate -l 10G /path/to/file

Me devuelve el siguiente error:

fallocate: file: fallocate failed: Operation not supported

Crear el archivo usando dd (if = / dev / zero o if = / dev / urandom) funciona, pero si estoy tratando de crear archivos grandes, decenas de GB de tamaño, toma varias horas completarlo.

Ejecutando Ubuntu 14.04. Al usar una partición ext4, especificar un tipo de archivo no parece alterar el resultado.

Funciona bien en mis máquinas CentOS6, solo que no Ubuntu.

John J Johnson
fuente
¿Qué sistema de archivos estás usando?
g_p
También actualícenos el tipo de archivo que está creando.
vembutech
Usando ext4, el tipo de archivo no parece importar. Ya sea que esté creando un archivo en blanco, un .txt, un .img, recibo el mismo error.
John J Johnson

Respuestas:

11

Si los archivos dispersos están bien para usted (por ejemplo, si desea crear una imagen para llenarla con un sistema de archivos), se crean de inmediato.

100GB toman 3 milisegundos:

# 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

El archivo resultante:

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

Su tamaño real en este momento: 0 Bytes

# ls -lsh tmptst.dat
0 -rw-r--r-- 1 root root 100G 2015-01-22 16:39 tmptst.dat
murxo
fuente
Se trataba de crear un contenedor dm-crypt / LUKS, operando bajo el supuesto de que crear un contenedor usando / dev / urandom sería más seguro que crear uno con / dev / zero y llenarlo gradualmente con datos. Desde entonces, he aprendido que usar Falocate no habría resuelto mi problema de todos modos, ya que la baja velocidad era simplemente una limitación de la rapidez con que funciona el pRNG de / dev / urandom, pero todavía no tengo idea de por qué Falocate se niega a funcionar. Sin embargo, salud por la respuesta, aceptada como me imagino, después de todo este tiempo es la mejor respuesta que obtendré jaja.
John J Johnson
Me pregunto si Falcocate no puede recurrir para hacer lo mismo. Eso tendría sentido para mí.
unfa
3

Si no te importa el contenido pero solo necesitas algunos datos,

Primero hazlo

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

Creará,

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

Luego, si desea crear un archivo de 10M, use el archivo generado anteriormente para agregarlo repetidamente,

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

También me encontré con este problema.

Un enlace simbólico en la ruta del directorio parece ser el problema. pruebe el mismo comando en / tmp y debería funcionar.

Pude solucionar el problema agregando una '-x' al comando Falocate. Esto forzó el 'modo posix', y se supone que lleva más tiempo.

Aunque el sistema de archivos era ext4, el enlace simbólico estaba causando el error 'no compatible con este sistema de archivos'. De hecho, si fui directamente al nombre del directorio (sin ningún enlace simbólico), la llamada a Fallocate () funcionó.

A1: no tiene enlaces simbólicos en ninguna parte del nombre completo de la ruta del archivo que está creando.

A2: use '-x', aunque tarde más.

b \ 375

Brett Bolen, alias Wing Ed Lizard
fuente