/tmp 空间不足

我无法运行更新管理器,因为出现错误提示说在/tmp目录中没有足够的可用空间。我已经清理了tmp目录,但错误仍然存在。
这是df-h的输出结果。
/dev/loop0       13G   11G  952M  92% /
udev            2.0G  4.0K  2.0G   1% /dev
tmpfs           785M  920K  784M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            2.0G  584K  2.0G   1% /run/shm
/dev/sda6        20G   14G  6.4G  68% /host

overflow        1.0M   16K 1008K   2% /tmp

你的 / 在哪里?为什么它在 /dev/loop 上? - josinalvo
在这里,一个简单的重启解决了问题。正如@josinalvo所解释的那样,/ 目录已满,并且通过动态增加解决:该磁盘是虚拟磁盘。 - koppor
7个回答

发生了什么事情:
您的/目录已满,然后Ubuntu创建了一个新的分区,用于临时使用,存储在RAM内存中。
现在,这个1MB的分区对于这个任务来说已经不够大了。
我们可以做以下几点:
1)增加这个分区的大小,只是为了进行升级。
2)实际上,在硬盘中删除足够多的文件,以便不再需要这个分区。

要做的事情1:

打开终端并运行

sudo umount /tmp
sudo mount -t tmpfs -o size=1048576,mode=1777 overflow /tmp

这应该给你一个1MB的分区(就像你之前有的那个 =P)。
现在,要增加大小,你需要增加那行中的size,这样,如果size=10485760,你将得到10MB。
你的目标是找到一个足够完成工作的数字,但也要留下足够的内存。
关于1的评论:
如果你遇到“文件系统正忙,无法卸载”的变体,你可以尝试sudo umount -l /tmp
解决“文件系统正忙(...)”的另一个可能方法是执行fuser -m /tmp来查找正在使用/tmp的进程号(PID),然后执行ps -elf <pids>,停止或杀死进程。
你可以尝试使用以下命令:sudo mount -t tmpfs -o size=1MB,mode=1777 overflow /tmp 或者 sudo mount -t tmpfs -o size=1G,mode=1777 overflow /tmp(分别表示1兆字节或1千兆字节)- 这样,单位可用,你就不必输入一个很大的数字了。

要做的事情2:

打开终端并运行sudo umount /tmp,如果失败,则运行sudo umount -l /tmp

然后进行清理!

删除/tmp中的文件(现在/tmp实际上是您硬盘中的内容,而不是虚拟RAM磁盘),卸载未使用的软件包,删除您的主文件夹中的文件等。


5这个答案对我有用,但在卸载 /tmp 之前,我需要杀掉一些进程。如果你收到一个提示说 /tmp 忙碌,那么可以执行 fuser -m /tmp 来查找正在使用 /tmp 的进程号,然后执行 ps -elf <pids> 来停止或者杀掉这些进程。然后再卸载 /tmp。另外,网上还建议执行 sudo umount overflow - gaoithe
2我使用了 sudo lsof | grep tmp 命令来查找进程 ID,然后使用 kill 命令将其杀死。在我的情况下,这个进程是 Xorg。这是 X 窗口系统,我并不使用它。 - DutGRIFF
1要更简单地完成这两个步骤:清理后重新启动即可。这样可以避免因为正在使用而导致umount /tmp出现问题。 - Roland
可以告诉我为什么你撤销了我的编辑吗? - heemayl
非常感谢你对我的回答进行的改进!(但有些我不喜欢,已经删除了) - josinalvo
在一个实时的Web服务器上,有太多的进程需要处理,所以我遵循了@Roland的建议重新启动(sudo shutdown -r now)。作为一个附带的好处,我在40G文件系统中获得了10G的空间——虽然这可能是因为我重建了数据库表(mysql“optimize”),只是为了确保一下。 - kitchin
3实际上,我尝试了上述所有方法都无法卸载这个tmpfs。 我在谷歌上搜索了umount -l /tmp,它起到了作用。 - Leotsarev
在“要做的事情2”下的指示对我有效。使用Ubuntu 14.04 LTS。这个问题是在更新内核映像后出现的。我已经按照https://superuser.com/a/1042344/491642的方法删除了未使用的内核映像。 - XavierStuvw
1使用大小以G或MB为单位,并将其应用在以上的所有情况中,它将有效。 - Elshan

sudo mount -o remount,size=1048576 /tmp

更改`tmpfs`大小而无需卸载分区,从而不会干扰正在运行的应用程序。

我知道在我的Kubuntu 16.04上有这个问题,用户63070给出了最佳答案。像这样在/etc/fstab中更改大小:
tmpfs     /tmp     tmpfs     defaults,size=10G,mode=1777     0     0

重启一下,你的/tmp文件夹就会有10GB的空间。

看起来你的/分区已满。

如果你在磁盘上有其他分区的空间,你可以利用这些空间来增加/分区的大小。有一些工具可以实现这个功能,比如gparted。

sudo apt-get install gparted

http://gparted.sourceforge.net


有没有一个“更安全”的工具?显然,gparted对于新手来说有点tricky难以处理。 - seeker
这很棘手,也不是解决问题的最简单方式。我不会冒险尝试用它来解决这个问题。 - josinalvo

我非常确定@user220420是指的/etc/fstab而不是/etc/mtab。我的根目录有很多可用的GB,但是Firefox不允许我从互联网上下载任何东西。在完成任何下载之前,会弹出一个小窗口,告诉我/tmp剩余的空间不足。在fstab中,有一行可以增加tmp文件夹的大小。它被设置为100M,所以我将其改为1000M。重启后,我右键点击了根目录下的/tmp,并且属性显示有1GB的可用空间(以确保更改已正确应用)。就是这样。

让我告诉你,这在除了Ubuntu以外的其他发行版上也有效。我也可以在Sabayon上实现这个。 - vienswuer

如果您现在使用默认的LVM设置安装Ubuntu,您的LV大小可能太小。运行:
df -h

检查一下/dev/mapper/ubuntu--vg-ubuntu--lv是否已满(大约100%)。如果是,请运行以下命令:
sudo lvdisplay

要获取您的LV的实际大小。如果您还有多余的空间,可以通过以下方式进行分配:

sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv

这将使用所有可用的磁盘空间。之后,扩展文件系统以使用新的磁盘空间。
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

打开您喜欢的文本编辑器并使用root权限打开/etc/mtab文件(例如“sudo vim /etc/mtab”)。然后增加分配给/tmp文件夹的内存。重新启动Ubuntu后,将会增加/tmp的空间,并解决这个问题。

1
  1. 你不需要编辑 /etc/mtab - 那个文件是由 mount 处理的。
  2. etc/fstab 中可能也没有 /tmp 的条目。
- guntbert