/usr/src正在占用所有的inode。

看起来,/usr/src(显然是旧的内核)用尽了所有我的inode:
Filesystem             Inodes  IUsed     IFree IUse% Mounted on
/dev/sda4              489600   489600       0  100% /
devtmpfs               219658      539  219119    1% /dev
none                   219844      474  219370    1% /run
none                   219844        3  219841    1% /run/lock
none                   219844        8  219836    1% /run/shm
/dev/sda6             5963776     8361 5955415    1% /home

我尝试了一切方法来移除/清理旧内核,但没有成功。dpkg不再起作用。我尝试了一些手动命令,但12.04系统没有任何响应。由于硬盘空间不足,无法使用apt-get等命令,这显然不是问题的原因。然而,我无法安装或删除任何东西!我阅读了很多关于同样问题的用户的解决方案,但对我没有效果。
请帮忙,非常感谢!

从Live CD/USB启动并运行一些文件系统检查。使用'df -i'命令可以查看inode的使用情况。您可以手动删除(或将其移动到安全位置)一些位于有问题文件夹中的文件以释放inodes。然后按照我的回答再次尝试清理操作。 - hmayag
尝试以单用户模式启动,这样可能会给你更多的控制权。 - labarna
@klingone - 你似乎有多个账户。请注册其中一个账户。然后点击页面底部的“联系我们”链接,请求合并你的其他账户。完成后,你将能够重新编辑你的问题并提供更多细节。谢谢。 - fossfreedom
5个回答

尝试一下。
打开终端并输入:
~$ cd /usr/src
/usr/src$ ls

你会看到类似这样的东西:
total 16K
drwxr-xr-x 24 root root 4,0K Σεπ  29 22:35 linux-headers-3.2.0-54/
drwxr-xr-x  7 root root 4,0K Σεπ  29 22:35 linux-headers-3.2.0-54-generic/
drwxr-xr-x  3 root root 4,0K Σεπ  29 22:56 nvidia-319-319.32/

输出结果可能会根据您的设置而有所不同。

仔细查看名为linux-headers-*的文件夹。这些是您安装的所有Linux映像的头文件。如果您拥有太多这样的文件夹,它们将占用大量的空间和inode。您只需要保留最新的一个您启动的

假设您有一个旧内核,例如3.2.0-53。要删除它,请键入:

sudo apt-get remove --purge linux-image-3.2.0-53-generic linux-headers-3.2.0-53 linux-headers-3.2.0-53-generic

对于每一个人。
如果上述方法都失败了,那么尝试手动删除旧内核头文件夹。
sudo rm -rf /usr/src/linux-headers-3.2.0-53{,-generic}

你可以尝试使用Ubuntu Tweak清理旧内核。首先使用以下命令安装它。
sudo add-apt-repository ppa:tualatrix/ppa
sudo apt-get update
sudo apt-get install ubuntu-tweak

运行程序,然后:
  1. 选择"清洁工"选项卡
  2. 勾选"旧内核"复选框
  3. 选择要删除的内核版本(至少保留2个 - 以防万一)
  4. 点击"清理"

enter image description here


嗨,谢谢提供的信息。我尝试了上述命令,但安装失败,显示设备上没有剩余空间。此外,软件中心损坏了,并希望进行修复,但也无法完成修复。Apt-get autoclean不起作用,建议使用命令sudo dpkg --configure -a来解决问题,但这又让我回到了起点,因为设备上没有更多的空间了。还有什么其他方法可以尝试?我相当确定是由于安装了近30万个以前内核的文件导致了/usr/src中的inode问题...再次感谢您的帮助。 - klingone

我刚遇到了同样的问题。
在Ubuntu Linux 16.04.1上,似乎使用sudo apt autoremove命令可以清理所有不必要的/usr/src/linux-headers-文件,并释放相应的inode。

另一种方法是搜索占用您inode计数的文件夹。 请参见此处:更新后的损坏包:linux-headers,错误:BrokenCount> 0 这是最重要的部分:
在终端中,cd到根目录开始:
# cd /

然后搜索占用最多inode的文件夹:

# for i in `ls -1A`; do echo "`find $i | sort -u | wc -l` $i"; done | sort -rn | head -20

这样,您将能够找到已删除的文件夹、软件包、内核头文件和需要卸载的映像。


由于该案例涉及到一个100%硬盘使用率的系统,所以安装任何应用程序都不起作用。唯一安全的选择是首先删除不必要的文件。
首先要处理的是临时文件。
sudo rm -rf /tmp/*

首先,删除缓存的应用程序。这些是系统运行期间下载的应用程序和升级的二进制文件。通常,在一个平均使用了一年的Ubuntu系统中,这个缓存大小至少为500MB,清理它可以给您安装其他应用程序提供空间。
sudo rm /var/cache/apt/archives/*deb

然后我建议删除旧的日志文件。
sudo rm /var/log/*gz

通过这样做,您至少会有大约700 MB的可用空间。这将使您能够使用实用工具并安装新的工具。
然后我会安装ncdu,它是一个快速扫描整个硬盘并按大小排序目录的实用工具。它非常快速,并且运行得非常顺畅。
sudo apt-get install ncdu

然后使用命令运行它。
sudo ncdu /

在ncdu后面的斜杠是为了从根目录开始扫描。
以上所有操作在Ubuntu服务器和桌面版都适用。 现在,在完成上述所有操作并且您正在使用桌面环境时,您可以使用图形界面工具如ubuntu-tweak(非常好用)来删除旧内核。我通常保留最新的内核和上一个内核,以防升级失败。
希望这对您有所帮助。

100%使用的inode并不意味着硬盘中装满了文件。 - scrat.squirrel