当我的根文件系统已满时,我该怎么办?

我的文件夹显示为满,我无法更新软件或进行任何操作。
不确定我在这里做错了什么。
$ df -h
Results:
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             5.7G  5.4G     0 100% /
udev                  1.9G  4.0K  1.9G   1% /dev
tmpfs                 770M  1.1M  769M   1% /run
none                  5.0M     0  5.0M   0% /run/lock
none                  1.9G  808K  1.9G   1% /run/shm
/dev/sda6             961M   18M  895M   2% /tmp
/dev/sda7             9.9G  2.9G  6.6G  31% /home
/dev/sda3             5.7G  140M  5.3G   3% /usr/local
/dev/sda4             2.9G  1.3G  1.4G  49% /var
/dev/sdb1              94G  1.3G   88G   2% /sites
/home/username/.Private  9.9G  2.9G  6.6G  31% /home/username
/dev/sdb5             282G   88G  180G  33% /mnt/multimedia


$ df -h /
Results:
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       5.7G  5.4G     0 100% /

$ du /mnt /media
Results:
4   /mnt/multimedia
8   /mnt
4   /media

这是一个新安装的Ubuntu 12.04,我不确定为什么根系统如此满。

哎呀,我猜可能是满的了,不知怎么回事。我根据zwets建议的输出调整了问题。 - Jesse
1对我来说,它被过时的内核填满了,我用以下命令清理了它们:dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge这个命令是从Ubuntu社区帮助中获取的。 - RajaRaviVarma
这个应用在ElementaryOS上为我释放了13 GiB的空间 - https://appcenter.elementary.io/com.github.hannesschulze.optimizer - Qumber
7个回答

只是分享一个神奇的命令,可以知道你的磁盘空间都去哪了:
sudo du -hsx /* | sort -rh | head -n 40

你最后得到了一个相当不错的报告,就像这样:
16G     /home
5.3G    /var
2.6G    /usr
840M    /run
277M    /root
171M    /lib
59M     /tmp
25M     /sbin
19M     /boot
16M     /bin
9.6M    /etc
136K    /ngx_pagespeed-latest-stable.zip
24K     /DEBIAN
16K     /lost+found
8.0K    /media
4.0K    /srv
4.0K    /opt
4.0K    /mnt
4.0K    /lib64

然后你可以从另一个文件夹重新开始:
sudo du -hsx /home/* | sort -rh | head -n 35

删除不必要的内容,你就应该没问题了。这是我 Linux 的一部分 备忘单

不错的帖子和有用的工具要拥有... - George Udosen
3那些以点开头的隐藏文件夹呢?它们怎么处理? - John Red
@JohnRed 对于你的主目录,可以使用以下命令:du -hsx $(ls -A ~/) | sort -rh - ritiek
OP只询问根分区"/"。这是完整的分区/dev/sda1。您的回答包括在根目录下挂载的所有分区,比如位于分区/dev/sda7上的"/home"目录,该分区仅使用了31%的空间。我和OP一样,都在寻找一个只查看特定分区(即完整分区)上文件的工具。这就是为什么我找到了这个答案,并且想确保我以及其他寻找相同解决方案的人了解Linux工具的工作原理。 - st2000
...跟进。我在这里找到了一个Stack Exchange的答案,回答了OP的问题链接。结果发现,命令"ncdu -x /"只会分析根分区,而不会进入其他分区。如果你往下滚动,还有几个答案也给出了相同的解决方法。 - st2000

一些可能的溢出根分区的措施(基于情况):

1. 核心转储填满磁盘。

检查方法:

find / -xdev -name core -ls -o  -path "/lib*" -prune

2. 占用空间的不必要软件包。
以下命令将删除所有不再需要的自动安装的软件包。(因为以前强制安装它们的依赖已被移除。)
apt-get autoremove --purge 

3. 过时的内核包

检查已安装的内核包数量,并删除过时的内核版本。您可以通过以下方式了解当前情况:

dpkg -l "linux*{tools}*" |grep ^.i

删除您不再需要的任何内核版本

4. 隐藏存储空间

其他已挂载的分区可能会隐藏已使用的存储空间。为了调查此问题,请将根文件系统临时挂载到第二个位置:

mkdir /tmp/2ndRoot
mount /dev/sda1 /tmp/2ndRoot

现在查看每个目录,通常由另一个挂载隐藏,例如:

  • tmp
  • home
  • run
  • var
  • usr/local

    而且在你的情况下还有:

  • sites

注意事项

最后不要忘记使用以下命令检查安装的一致性:

apt-get install -f

注意事项

保留存储空间

/dev/sda1       5.7G  5.4G     0 100% /

输出显示您仍然有一些空间,但似乎是为根目录保留的。 好消息是您的系统功能目前仍在运行。
但是您应该尽快解决这个问题。
Ubuntu 12.04 的空间消耗
对于一个 Ubuntu 安装来说,只有 5.7 Gb 似乎有点太少了。 您应该删除一些不必要的软件包。
我的当前安装中根目录和二进制(也称为 /usr)分区占用了 10-14 Gb 的空间。

谢谢,最后我只是扩大了根分区,并且如果需要的话,我会留意一下你的技巧来查看所有文件夹(也许是local/bin?)。奇怪的是磁盘空间分析工具让我以为是挂载在/media/上的驱动器,因为它们都是红色的并且已满。 - Jesse
@H.-Dirk Schmitt 通过这个命令"apt-get autoremove --purge",1.3 GB已经被减少。感谢提供详细信息。 - sugunan
你救了我的命。 - gibran alexis moreno zuñiga
还要检查Docker镜像,就像这篇Stack Overflow上的帖子中所提到的那样。 - kingaj

另一个解决方案是使用ncdu,例如:
sudo ncdu -x /

在哪个分区/驱动器上你想要检查。 以我的例子来说,结果是

    4,0GiB [##########] /usr
  579,3MiB [#         ] /root
  487,4MiB [#         ] /opt
   41,7MiB [          ] /lib
   22,7MiB [          ] /sbin
   21,2MiB [          ] /boot
   18,6MiB [          ] /etc
    9,1MiB [          ] /bin
    3,6MiB [          ]  core
  260,0KiB [          ] /build
   88,0KiB [          ] /tmp
e  16,0KiB [          ] /lost+found
    8,0KiB [          ] /media
    4,0KiB [          ] /lib64
e   4,0KiB [          ] /srv
e   4,0KiB [          ] /mnt
>   0,0  B [          ] /var
>   0,0  B [          ] /sys
>   0,0  B [          ] /run
>   0,0  B [          ] /proc
>   0,0  B [          ] /ovhbackup
>   0,0  B [          ] /home
>   0,0  B [          ] /dev

然后您可以使用键盘箭头在文件夹之间导航,只需按下"D"键即可删除文件夹/文件。 ncdu 可以通过 Debian 系统上的 apt 包管理工具进行安装。
sudo apt install ncdu

3这是一个被低估的答案。它是检查文件系统数据并删除不需要的内容的好方法。 - ihojmanb
2我不知道人们是否意识到这是正确的答案。将"-x"开关添加到ncdu命令中,将限制搜索范围为OP的问题所在的100%满分区。而当前最受欢迎的答案是在"/"下搜索所有已挂载的分区,包括只有31%使用率的"/home"分区。 - st2000

你把文件系统做得太小了。
除非你真的知道自己在做什么,并且想要构建一个微型设备,否则要么扩大根文件系统的容量,要么用更合理的值重新构建系统。
当我构建Ubuntu虚拟机时,通常会从至少16GB的磁盘开始。如果你想保持简单,不想麻烦地扩展设备,32GB可能是一个不错的起点...我倾向于对磁盘空间保守一些,因为我知道如果需要的话,可以随后再扩展。
文档建议根分区的绝对最小容量为8GB,但经验告诉我,一个没有经验的用户应该从更大的容量开始。
这里有一些相关的文档: https://help.ubuntu.com/community/DiskSpace#:~:text=Description%3A%20the%20root%20partition%20contains,it%20at%20least%2015%20GB

Lubuntu用户?
/home/XXX/.cache/lxsession/run.log

超过了85G的空间,他们甚至知道这件事!

我的文件是.cache/lxsession/Lubuntu/run.log - Stephane

遇到了同样的问题,也试图删除“/home/yourname/.local/share/Trash”中的所有数据,因为我在Nautilus中删除了一些数据,我意识到“/root/.local/share/Trash”文件夹也是满的,所以我需要删除所有内容。
要进入/root目录,至少在Ubuntu中你需要使用sudo su命令,否则你的访问将受限制。

请使用“du”命令检查“/home/yourname/.local/share/Trash”文件夹(见上文):
我曾经遇到过同样的问题,使用了Mickael上面提供的技巧来简洁地打印磁盘使用情况。我发现,如果你使用窗口管理器删除文件时,你没有足够的权限,那么你认为已经删除的文件(无论是通过命令行使用“rm”和“apt autoremove --purge”,还是通过清空回收站)可能已经被移到了根分区的“.local/share/____”中。
窗口管理器左侧的“文件系统”显示安装Ubuntu/Mint的50GB分区几乎已满。结果,我错误地将讲座复制到了这个分区,当我将它们移动到最初想要复制它们的分区时,它们并没有被删除。现在有36GB可用,这更合理(我的分区很大主要是因为我也在这个分区上保留了高清图形,以便快速预览大量图像集)。
在删除/管理文件之前,请确保您充分了解权限,否则可能会导致您认为已经删除的文件挤占您的SSD。
顺便提一下,我的16GB内存在启动时加载到92%,而我的根分区则存放了被删除的文件,并因此同样的问题保持稳定。内存用于缓存磁盘上的项目,以极大地提高Linux的性能。操作系统会假设您正确使用安装分区(在我这个例子中并非如此),因此它会尽可能地缓存以加快系统响应速度。现在这只是一个注意点,因为磁盘缓存不会在内存中保留该空间;当其他程序请求时,它会将已使用的内存空间释放给需要的程序(这就是磁盘缓存的工作原理),但每次启动时将14.5GB的已删除文件加载到内存中是一种不必要的资源浪费。
希望对您有所帮助!非常感谢以上的回答,非常有帮助!