tar 说 Cannot open: No space left on device 但 df -h 和 df -i 都显示可用空间非常大

tar 说 Cannot open: No space left on device 但 df -h 和 df -i 都显示可用空间非常大

我有大约一百个 .tar 文件,其中包括数百万个小文件。我想将它们解压到 Linux 中的一个目录中。

这些 .tar 文件位于已安装的 LVM EXT4 文件系统上。但无论我解压到挂载的 FS 还是根目录,tar 都说设备上没有空间。

但是,我使用 df -h 和 df -i 检查了剩余空间,还剩下很多(我的根目录中有 700G,挂载的 FS 中有 30T)。

那么,这里可能存在什么问题呢?

结果df -hdf -ih df -h 的结果 df -ih 的结果

答案1

根据这个博客条目,作者估计,除非large_dir启用文件系统选项,否则最大正常 ext4 目录大小约为 1000 万个文件:

认为,不完全是假设,有一天你发现你的 (Linux) 内核日志消息如下:

EXT4-fs 警告(设备 md1):ext4_dx_add_entry:2461:目录(ino:102236164)索引已满,达到最大 htree 级别:2 EXT4-fs 警告(设备 md1):ext4_dx_add_entry:2465:此文件系统上未启用大目录功能

某种意义上来说,恭喜你。从逻辑意义上讲,您已经设法在目录中积累了如此多的文件,以至于它已经填满了。不幸的是,进一步尝试创建文件将会失败;事实上,它们已经失败了,因为这就是您收到错误消息的方式。如果幸运的话,您的软件正在记录错误消息并且您会注意到它们。另外,由于您的目录变得如此之大,您可能会遇到不愉快的意外。

(这里的“大”是相对的。根据“ls -lh”的报告,发生这种情况的目录只有大约 575 MB;这对于目录来说非常大,但对于现代文件来说却没有那么大。整个文件系统有大量的可用空间。)

我建议使用查看内核日志dmesg并查看是否收到类似的消息,然后考虑是否需要使用启用它调2fs-O large_dir选项。

答案2

有足够的磁盘空间,但由于磁盘上有大量文件,因此已达到文件系统可以容纳的最大数量。

运行df -ih看看已使用的inode百分比,也许是100%?
来源

相关内容