web-dev-qa-db-ja.com

ファイルシステム-スペースが残っていませんエラーですが、スペースがあります

Ubuntu 16.04.05を実行しているサーバーに問題があります。 pythonスクリプトを実行して6500万を超えるファイルを作成した後、スペースが残っていないというエラーメッセージが表示されます。

12 Zip -r 31.Zip 31
Zip I/O error: No space left on device
Zip error: Could not create output file (31.Zip)

オンラインで同様の問題をいくつか見つけました: スペースがあってもデバイスにスペースが残っていません および デバイスにスペースがあっても残りません ですが、別の問題があると思います。これらの2つの回答に掲載されている解決策は、私にはうまくいきません。

ストレージの構造は次のとおりです。

➜  12 df -k
Filesystem      1K-blocks      Used Available Use% Mounted on
udev             32963768         0  32963768   0% /dev
tmpfs             6597356      9244   6588112   1% /run
/dev/sda1        32895856  26382068   4819736  85% /
tmpfs            32935580        96  32935484   1% /dev/shm
tmpfs                5120         0      5120   0% /run/lock
tmpfs            32935580         0  32935580   0% /sys/fs/cgroup
/dev/sdb       1031992064 664288464 322578204  68% /media/hdd1
tmpfs             6587116        20   6587096   1% /run/user/118
tmpfs             6587116         0   6587116   0% /run/user/1001

私は働いており、/media/hdd1十分なスペースが残っているはずです。私がZipしようとしているフォルダの次元は次のとおりです:

➜  12 du -sh 31
49M     31

編集:

➜  12 df -i
Filesystem       Inodes    IUsed   IFree IUse% Mounted on
udev            8240942      478 8240464    1% /dev
tmpfs           8246695      617 8246078    1% /run
/dev/sda1       2097152   500872 1596280   24% /
tmpfs           8233895        5 8233890    1% /dev/shm
tmpfs           8233895        6 8233889    1% /run/lock
tmpfs           8233895       16 8233879    1% /sys/fs/cgroup
/dev/sdb       65536000 65536000       0  100% /media/hdd1
tmpfs           8246695       15 8246680    1% /run/user/118
tmpfs           8246695        4 8246691    1% /run/user/1001
1
Guido Muscioni

ByteCommanderが説明したように、iノードに問題があります。

この問題を処理する別の方法は、iノードを消費している何百万もの小さなファイルを探すことです。

Sudo du -a -x -d 1 --inodes /media/hdd1 | sort -nr | head -20

/ media/hdd1で最も多くのiノードを消費しているディレクトリが表示されます-その後、ファイルの束がいっぱいになっているディレクトリが見つかるまで、ディレクトリを下に移動できます。

0
Charles Green

「python 65,000,000を超えるファイルを作成したスクリプトを実行した後」が問題です。

Ubuntuが使用するext4ファイルシステムには、いわゆる「inodes」の数に制限があります。これは、パーティションをフォーマットするときに決定されます。ファイルシステムのファイルまたはディレクトリごとに少なくとも1つのiノードが必要です。

小さなファイルを大量に作成すると、利用可能なストレージ容量よりも早く利用可能なiノードを使い果たしてしまいます。どちらも、ディスクが一杯になっているように見えますが、同じ症状になります。

これらのトンの小さなファイルを取り除く必要があります。それらを別のドライブ、Zipファイルに配置するか、完全に削除します。

残念ながら、私が知る限り、iノードの数を動的に変更することはできません。現在のパーティションでさらに多くが必要な場合は、おそらくデータをバックアップしてすべてを再フォーマットする必要があります。

関連:

3
Byte Commander