失败失败:不支持操作


10

跑步的时候

fallocate -l 10G /path/to/file

我返回了以下错误:

fallocate: file: fallocate failed: Operation not supported

使用dd(if = / dev / zero或if = / dev / urandom)创建文件是可行的,但是如果我要创建大型文件(大小为数十GB),则需要几个小时才能完成。

运行Ubuntu 14.04。使用ext4分区,指定文件类型似乎不会改变结果。

在我的CentOS6机器上可以正常工作,而在Ubuntu上则不能。


您正在使用哪个文件系统?
g_p 2014年

同时更新我们您要创建的文件的类型。
vembutech 2014年

使用ext4,文件类型似乎无关紧要。无论我是创建空白文件,.txt文件还是.img文件,我都会收到相同的错误。
约翰·约翰逊

Answers:


11

如果稀疏文件适合您(例如,您想创建一个图像以便将其填充到文件系统中),则可以立即创建它们

100GB需要3毫秒:

# 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

结果文件:

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

目前其实际大小:0字节

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

关于创建dm-crypt / LUKS容器的假设是,使用/ dev / urandom创建容器比使用/ dev / zero创建容器并逐步填充数据更安全。从那以后,我就知道使用fallocate无论如何都无法解决我的问题,因为缓慢的速度仅仅是/ dev / urandom的pRNG工作速度的限制,但是我仍然不知道为什么fallocate本身不起作用。不过,为回应加油打气,正如我想象的那样,在所有这些时间之后,这是我得到的最好的回应。
John J Johnson

我想知道fallocate是否不能回退做同样的事情吗?这对我来说很有意义。
Unfa

3

如果您不关心内容,而只需要一些数据,

首先

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

它将创建,

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

然后,如果您想创建一个10M文件,请使用上面生成的文件重复添加,

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

2

我也遇到了这个问题。

目录路径中的符号链接似乎是问题所在。在/ tmp上尝试相同的命令,它应该可以工作。

通过在fallocate命令中添加“ -x”,我可以解决此问题。这将强制使用“ posix模式”,并且应该花费更长的时间。

即使文件系统是ext4,符号链接也会导致“此文件系统不支持”错误。实际上,如果我直接转到目录名(不带任何符号链接),则fallocate()调用确实起作用。

解答1:您要创建的文件的完整路径名中的任何位置都没有符号链接。

A2:即使需要更长的时间,也请使用“ -x”。

b \ 375

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.