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

Jes*_*sse 60 filesystem mount disk-usage mountpoint

我的 / 文件夹已满,我无法更新软件或执行任何操作。

不知道我在这里做错了什么。

$ 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
Run Code Online (Sandbox Code Playgroud)

这是 Ubuntu 12.04 的新安装,我不确定根系统如何/为什么如此完整。

小智 53

只是分享一个神奇的命令来了解所有磁盘空间的去向:

sudo du -hsx /* | sort -rh | head -n 40
Run Code Online (Sandbox Code Playgroud)

你最终会得到一个非常简洁的报告,如下所示:

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
Run Code Online (Sandbox Code Playgroud)

然后你可以从另一个文件夹重新开始:

sudo du -hsx /home/* | sort -rh | head -n 35
Run Code Online (Sandbox Code Playgroud)

删除不需要的东西,你应该没问题。这是我的 linux备忘单的一部分

  • 但是隐藏文件夹呢?以点开头的那些。 (3认同)

H.-*_*itt 48

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

1. 核心转储填满磁盘。

检查:

find / -xdev -name core -ls -o  -path "/lib*" -prune
Run Code Online (Sandbox Code Playgroud)

2. 不必要的包裹填满了空间。

以下命令将删除所有不再需要的自动安装的软件包。(因为过去强制安装的依赖已被删除。)

apt-get autoremove --purge 
Run Code Online (Sandbox Code Playgroud)

3. 过时的内核包

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

dpkg -l "linux*{tools}*" |grep ^.i
Run Code Online (Sandbox Code Playgroud)

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

4. 隐藏存储

其他挂载的分区可能会隐藏使用过的存储。要调查此挂载在第二个位置上的临时根文件系统:

mkdir /tmp/2ndRoot
mount /dev/sda1 /tmp/2ndRoot
Run Code Online (Sandbox Code Playgroud)

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

  • 时间
  • 无功
  • 用户/本地

    并且在您的情况下:

  • 网站

警告

不要忘记在最后控制安装的一致性:

apt-get install -f
Run Code Online (Sandbox Code Playgroud)

笔记

预留存储

/dev/sda1       5.7G  5.4G     0 100% /
Run Code Online (Sandbox Code Playgroud)

输出显示您还有一些空间,但它似乎是为 root 保留的。好的一点是,您的系统功能目前仍然存在。

但是你应该尽快解决这个问题。

ubuntu 12.04的空间消耗

ubuntu 安装只有 5.7 Gb 似乎有点太少了。您应该删除一些不重要的软​​件包。

我当前的安装有 10-14 Gb 用于根和二进制(又名/usr)分区。


egd*_*vid 12

另一种解决方案是使用ncdu,例如:

sudo ncdu -x /
Run Code Online (Sandbox Code Playgroud)

/ 是您要检查的分区/驱动器。对于我的例子,结果是

    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
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用键盘箭头浏览文件夹,只需按D键即可删除文件夹/文件。

ncdu可以从apt基于 Debian 的系统上的打包工具安装:

sudo apt install ncdu
Run Code Online (Sandbox Code Playgroud)

  • 我不知道人们是否意识到这是正确的答案。将“-x”开关添加到 ncdu 命令会将搜索限制为 OP 有问题的 100% 完整分区。当前最流行的答案是搜索安装在“/”下的所有分区。包括唯一 31% 已满的“/home”分区。 (3认同)
  • 这是一个被低估的答案。检查文件系统数据并删除不需要的内容的好方法。 (2认同)