CentOS中的启动分区几乎已满


22

我收到了/ boot分区快满(85%)的警告。我该怎么办?我可以删除其中一个备份内核吗?如何安全地做?

我现在的分区

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda2             10321208    719856   9077064   8% /
tmpfs                  4015460         0   4015460   0% /dev/shm
/dev/sda1               101133     80781     15130  85% /boot
/dev/sda8            253782660  47668764 193222404  20% /home
/dev/sda7              1032088    535840    443820  55% /tmp
/dev/sda3             10321208   4823740   4973180  50% /usr
/dev/sda5             10321208   1807284   7989636  19% /var

我拥有的内核

root@server1 [/boot]# rpm -q kernel
kernel-2.6.32-358.el6.x86_64
kernel-2.6.32-358.18.1.el6.x86_64
kernel-2.6.32-358.23.2.el6.x86_64

/ Boot目录

root@server1 [/boot]# ls -la /boot
total 78741
dr-xr-xr-x.  5 root root     2048 Dec  3 05:33 ./
drwxr-xr-x. 23 root root     4096 Dec  4 05:46 ../
-rw-r--r--   1 root root   104112 Aug 28 12:43 config-2.6.32-358.18.1.el6.x86_64
-rw-r--r--   1 root root   104112 Oct 16 14:01 config-2.6.32-358.23.2.el6.x86_64
-rw-r--r--.  1 root root   104081 Feb 21  2013 config-2.6.32-358.el6.x86_64
drwxr-xr-x.  3 root root     1024 Sep 20 20:15 efi/
drwxr-xr-x.  2 root root     1024 Oct 21 15:06 grub/
-rw-r--r--   1 root root 16191847 Sep 20 20:21 initramfs-2.6.32-358.18.1.el6.x86_64.img
-rw-r--r--   1 root root 16261655 Oct 21 15:06 initramfs-2.6.32-358.23.2.el6.x86_64.img
-rw-r--r--.  1 root root 16187335 Sep 20 20:16 initramfs-2.6.32-358.el6.x86_64.img
-rw-------   1 root root  3698835 Sep 20 20:27 initrd-2.6.32-358.18.1.el6.x86_64kdump.img
-rw-------   1 root root  3983771 Dec  3 05:33 initrd-2.6.32-358.23.2.el6.x86_64kdump.img
-rw-------   1 root root  3695290 Sep 20 20:21 initrd-2.6.32-358.el6.x86_64kdump.img
drwx------.  2 root root    12288 Sep 20 20:13 lost+found/
-rw-r--r--   1 root root   185949 Aug 28 12:44 symvers-2.6.32-358.18.1.el6.x86_64.gz
-rw-r--r--   1 root root   185978 Oct 16 14:02 symvers-2.6.32-358.23.2.el6.x86_64.gz
-rw-r--r--.  1 root root   185734 Feb 21  2013 symvers-2.6.32-358.el6.x86_64.gz
-rw-r--r--   1 root root  2408641 Aug 28 12:43 System.map-2.6.32-358.18.1.el6.x86_64
-rw-r--r--   1 root root  2408974 Oct 16 14:01 System.map-2.6.32-358.23.2.el6.x86_64
-rw-r--r--.  1 root root  2407466 Feb 21  2013 System.map-2.6.32-358.el6.x86_64
-rwxr-xr-x   1 root root  4046224 Aug 28 12:43 vmlinuz-2.6.32-358.18.1.el6.x86_64*
-rw-r--r--   1 root root      171 Aug 28 12:43 .vmlinuz-2.6.32-358.18.1.el6.x86_64.hmac
-rwxr-xr-x   1 root root  4047152 Oct 16 14:01 vmlinuz-2.6.32-358.23.2.el6.x86_64*
-rw-r--r--   1 root root      171 Oct 16 14:01 .vmlinuz-2.6.32-358.23.2.el6.x86_64.hmac
-rwxr-xr-x.  1 root root  4043888 Feb 21  2013 vmlinuz-2.6.32-358.el6.x86_64*
-rw-r--r--.  1 root root      166 Feb 21  2013 .vmlinuz-2.6.32-358.el6.x86_64.hmac

我正在使用的内核

root@server1 [/boot]# uname -a
Linux server1 2.6.32-358.23.2.el6.x86_64 #1 SMP Wed Oct 16 18:37:12 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

4
为什么将此标记为重复项?另一个问题甚至没有yum。我毫不怀疑这是重复的,只是不是那个特定问题。
布拉奇利,2015年

Answers:


47

执行以下操作以仅保留系统上的最后2个内核,以保持/ boot清洁

1-编辑/etc/yum.conf并设置以下参数

installonly_limit=2

这将使您的程序包管理器仅在系统上保留最后2个内核(包括正在运行的内核)

2-安装yum-utils

yum install yum-utils

3-进行旧内核清理:

package-cleanup --oldkernels --count=2

做完了 这将以良好的方式擦除旧内核,并仅保留最后两个内核以进行下一次升级。

对于您有特殊情况vmlinuz-0-rescue-*initramfs-0-rescue-*使用过多的磁盘空间的文件,请看看关于U&L这样的问题:


谢谢nwildner!我现在可以做吗?完成该操作后是否需要重新启动系统?我需要备份所有数据吗?
测试人员

是的你可以。为了预防起见,备份/ boot可能是一件好事。您无需重启,因为第3步将删除最旧的内核,除非您现在正在运行它。第一步,将使该配置永久;)

尽管这并不总是足够的。我按照这些步骤操作,发现我已经只有2个内核-对我来说,问题是一个60MB的“ initramfs-0-rescue”文件已有5个月的历史了。删除了,一切都很好。
Codemonkey

1
嘿@Codemonkey。我已经更新了有关救援文件的详细信息的答案……

10

您可以通过执行以下操作安全删除旧内核:

# Install the yum-utils if they aren't installed
yum install yum-utils
# Cleanup old kernels and don't keep more than 2
package-cleanup --oldkernels --count=2

并且,如果您愿意,可以始终通过执行以下操作来限制此操作: /etc/yum.conf

installonly_limit=2

在看到乔尔·戴维斯的回答后,我也同意他的看法。查看所有空间实际使用的是什么。
sparticvs 2013年

如果您查看他ls的文件并添加文件,则每个内核大约25MB,主要是initramfs。
cjm 2013年

是的,我感觉可能是initramfs文件。上面的清理工作也应将其删除。
sparticvs 2013年

@sparticvs,我检查-rw-r--r-- 1 root root 16191847 Sep 20 20:21 initramfs-2.6.32-358.18.1.el6.x86_64.img -rw-r--r-- 1 root root 16261655 Oct 21 15:06 initramfs-2.6.32-358.23.2.el6.x86_64.img -rw-r--r--. 1 root root 16187335 Sep 20 20:16 initramfs-2.6.32-358.el6.x86_64.img了很多空间。
测试仪

@sparticvs,我现在可以这样做吗?完成该操作后是否需要重新启动系统?我需要备份所有数据吗?
测试人员

2

内核映像实际上很小:

[root@ditirlns01 ~]# ls -lh /boot/vmlinuz-2.6.18-3*
-rw-r--r-- 1 root root 2.2M May  4  2012 /boot/vmlinuz-2.6.18-308.8.1.el5xen
-rw-r--r-- 1 root root 2.2M Jul 27 01:43 /boot/vmlinuz-2.6.18-348.16.1.el5xen
-rw-r--r-- 1 root root 2.2M Mar 22  2013 /boot/vmlinuz-2.6.18-348.4.1.el5xen

内核软件包显然还有更多,但这/boot就是您所关心的部分。

因此,对于100MB的/boot分区,删除2-3MB的内核可能不会使您走得太远。

实际上,通常100MB超出了人们的需求。我会做足够的du -sh调用,以便您可以看到占用了所有空间的内容,因为您甚至不应该接近在该挂载点上使用100MB:

[root@ditirlns01 ~]# df -h /boot
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda1             99M   34M   60M  37% /boot

其中安装了三个内核:

[root@ditirlns01 ~]# rpm -qa kernel*
kernel-xen-2.6.18-348.16.1.el5
kernel-xen-2.6.18-348.4.1.el5
kernel-headers-2.6.18-348.16.1.el5
kernel-xen-2.6.18-308.8.1.el5
[root@ditirlns01 ~]#

我愿意打赌有人将文件/boot作为临时移动放置,却忘了稍后将其移开。


3
但是有一些initramfs文件,它们比内核文件大得多。看@Don ls,他们使用14MB。

是的,我现在看到了。哦,好吧,我会留下我的答案,只是
投票

0

我该怎么办?

如果执行此操作uname -a,则会报告您当前正在运行的版本。

根据您的发布,我假设这是2.6.32-358.23.2.el6.x86_64您当前正在运行的版本,因此将所有旧版本移动到其他有足够空间来保存的分区,执行以下操作:

mkdir /root/oldkernels
mv   /boot/initramfs-2.6.32-358.18.1.el6.x86_64.img    /root/oldkernels

/boot/efi/EFI/centos/grub.cfg您要检查的文件,可以很容易地读取其中的菜单代码,最上面的一个是您在引导时看到的默认文件,还可以查找应急文件。;您可能会列出很多。您还可以在此处验证您实际运行的版本。

我通常只将最新的(顶部)和救援(底部)保留在中grub.cfg。知道真实的grub.cfg(在您的情况下,因为我看到efi文件夹)在中/boot/efi/EFI/centos/grub.cfg。您不会直接编辑此文件,但我会查看此文件以验证正在引导的文件,因为引导时使用的是grub.cfg。

救援通常是内核版本回到系统的安装,这可能是之前你可能现在正在运行多个版本。对于救援选项,从长远来看,这可能是个好主意,您只需要将其指向可靠且可以使用的版本即可,这样,系统至少将启动,并且在新内核崩溃时可以编辑磁盘上的文件。安装后无法启动或无法正常工作。基本上,您希望在grub菜单中至少有2个引导选项,最新的引导选项以及一些可靠的版本可用。

您编辑/etc/default/grub.cfg和修改此文件;只需用a注释掉不需要的菜单,就可以使菜单变成您想要的菜单#,然后执行grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

KDUMP是问题

从名称中initrd-2.6.32-358.18.1.el6.x86_64kdump.img带有kdump的文件看来,您已启用kdump。除非使用它,否则可以禁用kdump,这将有助于节省空间。并且,除非您正在调试系统崩溃等问题,否则不需要这些*kdump.img文件,因此可以将其删除。我不使用kdump,从未使用过,但是在安装过程中默认启用了它,并且我怀疑默认情况下将其保存到/ boot文件夹中;如果只有100mb是不好的。 因此,要么修改kdump以将其转储到其他位置,要么您很可能不使用它,因此请禁用kdump。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.