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
ByteCommanderが説明したように、iノードに問題があります。
この問題を処理する別の方法は、iノードを消費している何百万もの小さなファイルを探すことです。
Sudo du -a -x -d 1 --inodes /media/hdd1 | sort -nr | head -20
/ media/hdd1で最も多くのiノードを消費しているディレクトリが表示されます-その後、ファイルの束がいっぱいになっているディレクトリが見つかるまで、ディレクトリを下に移動できます。
「python 65,000,000を超えるファイルを作成したスクリプトを実行した後」が問題です。
Ubuntuが使用するext4ファイルシステムには、いわゆる「inodes」の数に制限があります。これは、パーティションをフォーマットするときに決定されます。ファイルシステムのファイルまたはディレクトリごとに少なくとも1つのiノードが必要です。
小さなファイルを大量に作成すると、利用可能なストレージ容量よりも早く利用可能なiノードを使い果たしてしまいます。どちらも、ディスクが一杯になっているように見えますが、同じ症状になります。
これらのトンの小さなファイルを取り除く必要があります。それらを別のドライブ、Zipファイルに配置するか、完全に削除します。
残念ながら、私が知る限り、iノードの数を動的に変更することはできません。現在のパーティションでさらに多くが必要な場合は、おそらくデータをバックアップしてすべてを再フォーマットする必要があります。
関連: