设备上没有剩余空间[关闭]

Posted

技术标签:

【中文标题】设备上没有剩余空间[关闭]【英文标题】:No space left on device [closed] 【发布时间】:2014-08-31 12:54:35 【问题描述】:

当我尝试将一些文件 scp 到 centos 机器时,出现错误“设备上没有剩余空间”,

试图检查:

[root@...]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol01 18G   18G     0 100% /

当我这样做时

du -sh / -> 它只提供 5G

[... ~]$ df -i /
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/mapper/VolGroup00-LogVol01
                     4685824  209516 4476308    5% /

似乎文件系统已满。 我怎样才能找到哪个尺寸这么大?

【问题讨论】:

也许您会在“超级用户”或“Unix 和 Linux”上获得更多/更好的答案。请显示您的 scp 命令和完整的 df 列表。你确定要复制到/dev/mapper/VolGroup00-LogVol01? 我尝试在该服务器中启动一些服务。它也给出了同样的错误 【参考方案1】:

du -shdf -h 的输出之间可能会出现这种差异,如果某个大文件已被删除,但仍被某个进程打开。使用命令lsof | grep deleted 检查哪些进程打开了已删除文件的描述符。您可以重新启动进程,空间将被释放。

【讨论】:

我试图杀死这些进程并且它正在工作。谢谢! 永远不会猜到被删除的文件可能仍然存在。谢谢你。 如何重启进程? @user3584460 @IsraGab 如果它是一个守护进程,只需停止并启动它。如果它不是守护进程,只需用killkillall 杀死,然后启动它。 我如何将 killall 用于与已删除文件关联的进程?【参考方案2】:

也许你的 inode 用完了。试试df -i

                     2591792  136322 2455470    6% /home
/dev/sdb1            1887488 1887488       0  100% /data

磁盘已使用 6%,但 inode 表已满。

【讨论】:

我们可以添加更多的 inode 吗? :)) (部分开玩笑,部分严肃) unix.stackexchange.com/questions/26598/… tl;dr 不,不是真的 - 您只能通过创建具有更多 inode 的新文件系统然后将现有文件系统复制到新文件系统来添加更多 inode。 您使用了 /home 的 6%,但 /dev/sbd1 使用了 100% - 这就是问题所在。很可能你有太多的日志文件。通过运行查找大文件:find / \( -path /proc -prune -a -path /dev -prune \) -o -type f -size +100M -exec ls -s1 \; 2>/dev/null| sort -n -r | head -n 20【参考方案3】:

要列出持有已删除文件的进程,请使用 no lsof 的 linux 系统,这是我的窍门:

    pushd /proc ; for i in [1-9]* ; do ls -l $i/fd | grep "(deleted)" && (echo -n "used by: " ; ps -p $i | grep -v PID ; echo ) ; done ; popd

【讨论】:

【参考方案4】:

可以执行以下命令

lsof / |grep 已删除

杀死进程ID,从而释放磁盘空间。

【讨论】:

不工作..... 在 Ubuntu Linux 上使用 lsof / | grep DEL

以上是关于设备上没有剩余空间[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL |设备上没有剩余空间

500错误:“设备上没有剩余空间”

Java“设备上没有剩余空间”但磁盘上有足够的空间?

pyspark JOB 失败并显示“设备上没有剩余空间”

java.io.IOException:Android 设备上没有剩余空间

Windows 上的 GCC 设备上没有剩余空间