无法在特定目录中创建具有特定名称的文件。“设备上没有剩余空间”

无法在特定目录中创建具有特定名称的文件。“设备上没有剩余空间”

我遇到了一个问题,该过程按照非常具体的文件名方案(例如:“GC000245325.faa_vs_GC00030243234.faa.diamond”)在子目录中生成了大量文件(甚至可能达到数百万个)。

这些名称都是唯一的,但都遵循特定的命名方案。

现在,当需要创建该方案的非常具体的文件名时,该过程突然失败,返回“设备上没有剩余空间”。此外,当我尝试使用´touch``` or“mv”在该目录中创建该特定名称的文件时,也出现同样的错误。

我检查了文件系统上可用的 inode 数量,发现没有用完。此外,当前文档还指出,除了文件系统上可用的 inode 总数外,单个目录中的文件数量不再有任何限制。此外,最奇怪的是,我可以在该目录中创建任何其他名称的文件。只是不能创建这个非常具体的文件名。

这让我觉得这可能是某种哈希问题,经过一番研究,我发现这篇博文,它建议要么关闭 d​​ir_index,要么将其切换到另一个哈希系统。由于它随后表示切换到另一个哈希系统对他的情况没有帮助,所以我选择将其关闭(我认为缺点可能只是文件搜索时间更长……)

因此现在文件系统通常仍然完好无损,但是现在,在那个特定目录(并且只有那个目录)中,我无法再创建任何文件。现在我收到错误消息Structure needs cleaning

现在用谷歌搜索,我只得到提示文件系统已损坏的结果,但事实并非如此。重新打开 dirindex 也可以解决此问题,但我仍然无法在特定子目录中创建特定文件名。

这是怎么回事?如能提供任何关于如何解决此问题的建议,我们将不胜感激...


编辑: 抱歉,缺少以下信息:操作系统是 ubuntu 18.04.4 LTS;使用的文件系统是 EXT4

df -h 的输出:

Filesystem      Size  Used Avail Use% Mounted on
udev            126G     0  126G   0% /dev
tmpfs            26G  2.9M   26G   1% /run
/dev/sda3       1.8T  218G  1.5T  14% /
tmpfs           126G     0  126G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           126G     0  126G   0% /sys/fs/cgroup
/dev/loop1       98M   98M     0 100% /snap/docker/384
/dev/sda1       696M  6.1M  690M   1% /boot/efi
/dev/sdb1        44T   22T   20T  53% /home
tmpfs            26G   12K   26G   1% /run/user/1000
/dev/loop0      121M  121M     0 100% /snap/docker/423
tmpfs            26G  4.0K   26G   1% /run/user/118
/dev/loop2       94M   94M     0 100% /snap/core/8935
/dev/loop5       94M   94M     0 100% /snap/core/9066

答案1

刚刚遇到了同样的问题。Ubuntu 20.04,ext4,LVM。重启后错误仍然存​​在。

进程无法在特定位置创建特定文件(但可以创建其他文件,即使在同一个目录中,但不能创建那个特定的文件名)。我可以在父目录中创建文件,但尝试将其移动到位会引发相同的错误。

尝试过:

  • 正在搜索保持文件打开的进程(什么也没有,尽管我无法想象有什么东西可以做到这一点)
  • 文件系统检查
  • e2fsck -apfd(修复、强制修复等)

这很可能是文件系统错误。我最终将目录移到一边,创建一个新目录,在其中创建文件,然后将目录重命名为旧名称。

谜团没有解开,只是绕开了。我在这里发帖,希望我的额外线索能对未来的侦探有所帮助。

相关内容