没有明确原因的错误是最令人恼火的问题。尽管 Linux 的错误消息通常都很具体,但这是它为数不多的失误之一。
收到“设备上没有剩余空间”错误并不能解释什么,特别是当您的驱动器远未满时。为什么会出现这个错误信息?为什么尽管磁盘上有足够的空间却无法创建新文件?最重要的是,你如何解决这个问题?
让我们来看看。
您的硬盘实际上有足够的空间吗?
在急于寻找解决方案之前,首先要确保存在问题。毕竟,如果系统上的磁盘空间实际上已用完,则无需惊慌。您只需删除不必要的数据即可释放更多空间。
有两个 Linux 系统命令可用于获取有关磁盘空间的信息 – du 和 df。 du 命令估计磁盘空间使用情况,而 df 命令分析磁盘上存在的可用空间。将它们与 须藤 结合使用,可以准确报告磁盘上实际可用的空间量。
现在我们将使用 df 来查看有多少可用空间。 df 命令使用起来要简单得多,因为它只显示已安装的文件系统及其使用统计信息。我们将再次使用 -h 标志使输出可读。
sudo df -h .
这个想法是计算 du 和 df 命令的结果。任何差异都表明磁盘空间无法免费使用,尽管没有被任何文件或文件夹使用。
为什么 Linux 显示“设备上没有剩余空间”?
如果尽管磁盘上有足够的可用空间,但仍看到“设备上没有剩余空间”错误消息,则不是硬件出现问题。找出错误的确切原因可能需要进行一些故障排除。
修复 1:使用已删除的文件重新启动进程
“设备上没有剩余空间”错误的最可能原因是进程仍在使用已删除的文件。值得庆幸的是,修复这个错误很容易。您只需重新启动进程 即可释放保留的存储空间。
此后,进程占用的存储空间应该再次可用,允许您写入文件而不会遇到任何错误。
修复 2:检查索引节点
虽然每个驱动器都有大量的索引节点,但它是有限的。如果您的系统中散布着数量惊人的文件,则在耗尽驱动器的存储容量之前有可能达到此限制。这就是为什么拥有大文件比拥有太多小文件更好。
您可以通过在 df 命令中使用 -i 标志来轻松检查 inode 的可用性。像这样:
sudo df -i
这将清楚地告诉文件系统中存在的 inode 总数,以及当前使用的数量。如果您的系统上没有剩余空闲 inode,这就是“设备上没有剩余空间”错误的根源。
由于索引节点仅在首次格式化驱动器时创建,因此无法生成更多索引节点。您所能做的就是删除任何不必要的文件,以释放索引节点以供将来的文件使用。
修复 3:标记坏块
数据损坏是任何硬盘都不可避免的命运。虽然新驱动器不会遇到此问题,但旧硬盘会逐渐开始“损坏”。
这意味着硬盘驱动器的某些部分变得不可用,即使文件系统仍然认为它们有效。这些坏块错误地增加了驱动器上明显的可用空间,而实际上没有文件可以写入其中。这会导致“设备上没有剩余空间”错误,因为操作系统尝试在这些位置存储任何数据但失败。
没有真正的方法来解决这个问题,因为坏扇区是硬盘物理磨损的结果。您唯一能做的就是标记坏扇区,以便文件系统不再引用它们。.
执行此操作需要您从 现场CD 启动,因为您无法在正在运行的驱动器中执行文件系统检查。完成此操作后,只需使用以下命令:
sudo fsck -vcck /dev/sda
这会将 /dev/sda 替换为您要修复的驱动器的路径。这将自动检测驱动器上的所有坏块并将它们标记为不可用。但是,它不会为您提供任何额外的存储容量,因此请准备好清理一些无用的文件以释放驱动器上的空间。
修复“设备上没有空间”错误的最佳方法是什么?
在 Ubuntu 或任何其他 Linux 发行版上看到“设备上没有剩余空间”错误的常见原因是正在运行的进程仍在使用已删除的文件。这会保留文件占用的存储空间,防止其他操作将数据写入该空间。
解决此问题也是最简单的,因为您所需要做的就是重新启动有问题的进程。然而,导致错误的其他原因并不那么容易解决。
无论您的驱动器受到坏数据块的困扰还是索引节点耗尽,都没有直接的方法可以解决这些问题。您必须删除现有文件,以便为要写入的新数据腾出空间。
.