Tar*_*ato 5 linux python filesystems
我正在运行一个 Python 进程,它在一个目录下创建大量文件(我应该更聪明,将它们放入多个目录中,但那是另一个故事了)。
\n\n一段时间后,我注意到我无法继续下去,脚本开始给我一个错误:
\n\nIOError: [Errno 28] No space left on device: /scr1/data/somefile_00023532.txt\nRun Code Online (Sandbox Code Playgroud)\n\n经过研究,我发现最常见的原因是(1)分区确实没有剩余空间和(2)所有索引节点都已用完。然而,df显示
$ df -h\n...\n/dev/sdb1 2.7T 1.2T 1.4T 46% /scr1\n...\nRun Code Online (Sandbox Code Playgroud)\n\n(/dev/sdb1是有问题的分区)并且
\n\n$ df -i \n...\n/dev/sdb1 183148544 17725595 165422949 10% /scr1\n...\nRun Code Online (Sandbox Code Playgroud)\n\n所以空间和索引节点确实仍然可用。
\n\n可能文件太多:
\n\n$ ls /scr1/data | wc\n6468500 6468500 349747747\nRun 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\nRun Code Online (Sandbox Code Playgroud)\n\n但具有相同文件名模式的其他文件(我使用的是良性的东西,例如十六进制哈希值、数字 ID 号等)没有相同的问题。
\n\n更新2
\n\n呃!!看起来文件系统以某种方式损坏了,在fsck.ext4有问题的分区上运行后,问题就消失了。
非常感谢那些给我提供帮助的人!
\n“设备上没有剩余空间”可能是一个非常具有误导性的错误。除了没有可用磁盘空间之外,它还可能在各种写入条件下弹出。
该文件是否已经存在并且由其他人拥有?
您是否在此文件系统上启用了配额?
如果您尝试在该文件系统中手动创建另一个文件(即touch /src1/data/testfile),您会得到相同的错误,还是会创建该文件?
您可以尝试以 root 身份创建文件吗?
| 归档时间: |
|
| 查看次数: |
12326 次 |
| 最近记录: |