実行中、
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マシンで正常に動作しています。
スパースファイルが問題ない場合(たとえば、ファイルシステムを取り込むためにイメージを作成する場合)、それらはすぐに作成されます
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
コンテンツを気にせず、データが必要な場合は、
まず、
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;
私もこの問題に遭遇しました。
ディレクトリパスのシンボリックリンクが問題のようです。/tmpで同じコマンドを実行すると、動作するはずです。
Fallocateコマンドに「-x」を追加することで、問題を回避することができました。これにより「posixモード」が強制され、さらに時間がかかるはずです。
ファイルシステムがext4であっても、シンボリックリンクが「このファイルシステムではサポートされていません」というエラーを引き起こしていました。実際、シンボリックリンクなしでディレクトリ名に直接移動した場合、fallocate()呼び出しは機能しました。
A1:作成しているファイルのフルパス名のどこにもシンボリックリンクはありません。
A2:時間がかかりますが、「-x」を使用してください。
b\375