web-dev-qa-db-ja.com

fallocateが失敗しました:操作はサポートされていません

実行中、

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パーティションを使用して、ファイルタイプを指定しても結果は変わりません。

Ubuntuではなく、CentOS6マシンで正常に動作しています。

9
John J Johnson

スパースファイルが問題ない場合(たとえば、ファイルシステムを取り込むためにイメージを作成する場合)、それらはすぐに作成されます

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
11
murxo

コンテンツを気にせず、データが必要な場合は、

まず、

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;
3
user1234

私もこの問題に遭遇しました。

ディレクトリパスのシンボリックリンクが問題のようです。/tmpで同じコマンドを実行すると、動作するはずです。

Fallocateコマンドに「-x」を追加することで、問題を回避することができました。これにより「posixモード」が強制され、さらに時間がかかるはずです。

ファイルシステムがext4であっても、シンボリックリンクが「このファイルシステムではサポートされていません」というエラーを引き起こしていました。実際、シンボリックリンクなしでディレクトリ名に直接移動した場合、fallocate()呼び出しは機能しました。

A1:作成しているファイルのフルパス名のどこにもシンボリックリンクはありません。

A2:時間がかかりますが、「-x」を使用してください。

b\375