fallocate 失败:不支持操作

Joh*_*son 11 command-line dd 14.04

跑步时,

fallocate -l 10G /path/to/file
Run Code Online (Sandbox Code Playgroud)

我返回以下错误:

fallocate: file: fallocate failed: Operation not supported
Run Code Online (Sandbox Code Playgroud)

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

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

在我的 CentOS6 机器上工作正常,只是不是 Ubuntu。

小智 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
Run Code Online (Sandbox Code Playgroud)

结果文件:

# ls -lh tmptst.dat
-rw-r--r-- 1 root root 100G 2015-01-22 16:39 tmptst.dat
Run Code Online (Sandbox Code Playgroud)

它目前的实际大小:0 字节

# ls -lsh tmptst.dat
0 -rw-r--r-- 1 root root 100G 2015-01-22 16:39 tmptst.dat
Run Code Online (Sandbox Code Playgroud)


小智 5

我也遇到了这个问题。

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

我通过在 Fallocate 命令中添加“-x”来解决这个问题。这强制了“posix 模式”,并且应该需要更长的时间。

即使文件系统是 ext4,符号链接也会导致“此文件系统不支持”错误。事实上,如果我直接进入目录名称(没有任何符号链接),fallocate() 调用确实有效。

A1:您正在创建的文件的完整路径名中的任何位置都没有符号链接。

A2:使用“-x”,尽管它需要更长的时间。

375 英镑