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


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

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


どのファイルシステムを使用していますか?
g_p '19

また、作成するファイルのタイプも更新してください。
vembutech 2014

ext4を使用すると、ファイルの種類は重要ではないように見えます。空のファイル、.txt、.imgのいずれを作成しても、同じエラーが発生します。
John J Johnson、

回答:


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を使用してコンテナーを作成し、徐々にデータで満たすよりも安全であるという前提の下で動作しました。遅い速度は単に/ dev / urandomのpRNGが機能する速さの制限であったため、fallocateを使用しても問題が解決しないことを知ってからですが、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()呼び出しは機能しました。

A1:作成するファイルの絶対パス名のどこにもシンボリックリンクを含めないでください。

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

b \ 375

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.