小编Tar*_*ato的帖子

设备上没有剩余空间,但分区仅半满且 inode 可用

我正在运行一个 Python 进程,它在一个目录下创建大量文件(我应该更聪明,将它们放入多个目录中,但那是另一个故事了)。

\n\n

一段时间后,我注意到我无法继续下去,脚本开始给我一个错误:

\n\n
IOError: [Errno 28] No space left on device: /scr1/data/somefile_00023532.txt\n
Run Code Online (Sandbox Code Playgroud)\n\n

经过研究,我发现最常见的原因是(1)分区确实没有剩余空间和(2)所有索引节点都已用完。然而,df显示

\n\n
$ df -h\n...\n/dev/sdb1       2.7T  1.2T  1.4T  46% /scr1\n...\n
Run Code Online (Sandbox Code Playgroud)\n\n

/dev/sdb1是有问题的分区)并且

\n\n
$ df -i \n...\n/dev/sdb1      183148544 17725595 165422949   10% /scr1\n...\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以空间和索引节点确实仍然可用。

\n\n

可能文件太多:

\n\n
$ ls /scr1/data | wc\n6468500 6468500 349747747\n
Run Code Online (Sandbox Code Playgroud)\n\n

但 ext4 应该能够处理这个问题。

\n\n

是什么导致 Linux 认为空间已用完?

\n\n

更新1

\n\n

似乎特定文件名出现问题。例如,

\n\n
$ touch /scr1/data/somefilewithproblem.txt\ntouch: cannot touch \xe2\x80\x98/scr1/data/somefilewithproblem.txt\xe2\x80\x98: No space left on device\n
Run Code Online (Sandbox Code Playgroud)\n\n

但具有相同文件名模式的其他文件(我使用的是良性的东西,例如十六进制哈希值、数字 …

linux python filesystems

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

filesystems ×1

linux ×1

python ×1