设备上没有剩余空间[关闭]
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 -sh
和df -h
的输出之间可能会出现这种差异,如果某个大文件已被删除,但仍被某个进程打开。使用命令lsof | grep deleted
检查哪些进程打开了已删除文件的描述符。您可以重新启动进程,空间将被释放。
【讨论】:
我试图杀死这些进程并且它正在工作。谢谢! 永远不会猜到被删除的文件可能仍然存在。谢谢你。 如何重启进程? @user3584460 @IsraGab 如果它是一个守护进程,只需停止并启动它。如果它不是守护进程,只需用kill
或killall
杀死,然后启动它。
我如何将 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
。以上是关于设备上没有剩余空间[关闭]的主要内容,如果未能解决你的问题,请参考以下文章