【问题标题】:Dealing with large number of files in a directory on linux在linux上处理目录中的大量文件
【发布时间】:2021-12-13 09:04:57
【问题描述】:

我有一个python代码会在一个目录下生成大约2800万个文件,但是在生成了大约600万个文件之后,python要打开一个新的txt文件时会抛出一个OSError: [Errno 28] No space left on device

我的磁盘空间还有足够的空间来保存文件,文件系统是 ext4。我还检查了 inode,它仍然有 112M 可用于每个文件。

这是我的磁盘信息。

Disk /dev/sdb: 2000GB
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type      File system     Flags
 1      1049kB  1999GB  1999GB  primary   ext4            boot
 2      1999GB  2000GB  1023MB  extended
 5      1999GB  2000GB  1023MB  logical   linux-swap(v1)

还有剩余空间

Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       1.8T  150G  1.6T   9% /

和索引节点

Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/sdb1        117M  4.5M  112M    4% /

有没有在linux上存储大量文件的好方法?

【问题讨论】:

  • 见:stackoverflow.com/questions/6998083/…。它基本上说这个错误并不一定意味着你缺乏可用空间。检查文件名不超过 255 个字符。
  • @MSH 谢谢,我已经阅读了这个主题,每个文件的最大文件名约为 40 个字符。
  • 你能不能做一个测试:生成文件而不写任何东西。写入空文件。或者更好的是您可以分享您的代码以便我们进行测试?

标签: python linux file filesystems


【解决方案1】:

在我尝试了很多方法之后,例如格式化磁盘,使用gc清理内存,解决方法是使用一些文件夹来分散文件,并且可以。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-04
    • 2011-09-11
    • 2014-05-26
    • 2015-10-16
    • 2012-05-14
    • 2012-07-12
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多