Bagaimana cara mengosongkan ruang di RHEL6 / boot dengan aman?

17

Saya coba lakukan yum updatepada kotak RHEL 6 dan saya mendapatkan pesan kesalahan ini

Transaction Check Error:
  installing package kernel-2.6.32-279.9.1.el6.x86_64 needs 10MB on the /boot filesystem
  installing package grub-1:0.97-77.el6.x86_64 needs 10MB on the /boot filesystem

Error Summary
-------------
Disk Requirements:
  At least 10MB more space needed on the /boot filesystem.

Saya / boot memiliki yang berikut ini

# ls -lah /boot
total 74M
dr-xr-xr-x.  5 root root 2.0K Jun 10 08:05 .
drwxr-xr-x. 23 root root 4.0K Aug 27 03:08 ..
-rw-r--r--   1 root root  99K Apr 26 12:53 config-2.6.32-220.17.1.el6.x86_64
-rw-r--r--   1 root root  99K Feb 10  2012 config-2.6.32-220.7.1.el6.x86_64
-rw-r--r--.  1 root root  99K Nov  9  2011 config-2.6.32-220.el6.x86_64
drwxr-xr-x.  3 root root 1.0K Mar 29  2012 efi
drwxr-xr-x.  2 root root 1.0K Jun 10 07:53 grub
-rw-r--r--   1 root root  15M Jun 10 07:53 initramfs-2.6.32-220.17.1.el6.x86_64.img
-rw-r--r--   1 root root  15M Mar 29  2012 initramfs-2.6.32-220.7.1.el6.x86_64.img
-rw-r--r--.  1 root root  15M Mar 29  2012 initramfs-2.6.32-220.el6.x86_64.img
-rw-------   1 root root 3.4M Jun 10 08:06 initrd-2.6.32-220.17.1.el6.x86_64kdump.img
-rw-------   1 root root 3.5M Jun 10 07:53 initrd-2.6.32-220.7.1.el6.x86_64kdump.img
-rw-------   1 root root 3.4M Mar 29  2012 initrd-2.6.32-220.el6.x86_64kdump.img
drwx------.  2 root root  12K Mar 29  2012 lost+found
-rw-r--r--   1 root root 168K Apr 26 12:55 symvers-2.6.32-220.17.1.el6.x86_64.gz
-rw-r--r--   1 root root 168K Feb 10  2012 symvers-2.6.32-220.7.1.el6.x86_64.gz
-rw-r--r--.  1 root root 168K Nov  9  2011 symvers-2.6.32-220.el6.x86_64.gz
-rw-r--r--   1 root root 2.3M Apr 26 12:53 System.map-2.6.32-220.17.1.el6.x86_64
-rw-r--r--   1 root root 2.3M Feb 10  2012 System.map-2.6.32-220.7.1.el6.x86_64
-rw-r--r--.  1 root root 2.3M Nov  9  2011 System.map-2.6.32-220.el6.x86_64
-rwxr-xr-x   1 root root 3.8M Apr 26 12:53 vmlinuz-2.6.32-220.17.1.el6.x86_64
-rw-r--r--   1 root root  171 Apr 26 12:53 .vmlinuz-2.6.32-220.17.1.el6.x86_64.hmac
-rwxr-xr-x   1 root root 3.8M Feb 10  2012 vmlinuz-2.6.32-220.7.1.el6.x86_64
-rw-r--r--   1 root root  170 Feb 10  2012 .vmlinuz-2.6.32-220.7.1.el6.x86_64.hmac
-rwxr-xr-x.  1 root root 3.8M Nov  9  2011 vmlinuz-2.6.32-220.el6.x86_64
-rw-r--r--.  1 root root  166 Nov  9  2011 .vmlinuz-2.6.32-220.el6.x86_64.hmac

di sini adalah penggunaan disk saat boot

# du -h
13K ./lost+found
282K    ./grub
247K    ./efi/EFI/redhat
249K    ./efi/EFI
251K    ./efi
75M .

Masalahnya adalah ketika saya mendapatkan severer ini di ISP saya, saya menggunakan gambar default mereka untuk RHEL 6 yang hanya mengalokasikan 100MB untuk / boot dengan jelas ini tidak cukup. Bagaimana saya bisa mengatasi masalah ini, apakah aman untuk menghapus salah satu file di atas yang tampaknya ada di disk lebih dari sekali? Apakah ada beberapa cara memperluas / boot tanpa pencitraan ulang mesin?

am
sumber

Jawaban:

16

Perintah berikut akan menghapus SEMUA versi kernel, kecuali untuk yang sedang Anda jalankan:

sudo yum remove `rpm -q kernel | grep -v 'uname -r'`

dan untuk maju, per ⁠7.4. Mengkonfigurasi Gudang Yum dan Yum :

⁠Installonly_limit = nilai

... di mana nilainya adalah bilangan bulat yang mewakili jumlah maksimum versi yang dapat diinstal secara bersamaan untuk setiap paket tunggal yang tercantum dalam arahan installonlypkgs. Default untuk direktif installonlypkgs termasuk beberapa paket kernel yang berbeda, jadi berhati-hatilah bahwa mengubah nilai installonly_limit juga akan mempengaruhi jumlah maksimum versi yang diinstal dari setiap paket kernel tunggal. Nilai default yang tercantum di /etc/yum.conf adalah installonly_limit = 3, dan tidak disarankan untuk mengurangi nilai ini, terutama di bawah 2.

alexus
sumber
4
Mungkin meninggalkan satu versi sebelum hanya untuk memiliki cadangan ...
EasyEcho
1
Bisakah Anda juga melakukan ini: rpm -qa | grep -v `uname -r` | grep kernel- untuk mendapatkan daftar kernel yang tidak digunakan?
Pred
Solusi yang lebih baik daripada @Pred yang tercantum adalah menggunakan pembersihan paket. Lihat jawaban ini untuk caranya: serverfault.com/a/562201/98791
a coder
Bukankah perintah itu juga menghapus kernel saat ini (karena uname -r dikelilingi oleh 'bukannya `)?
sampai
29

Sesuai rekomendasi MadHatter di sini . Saya akan memposting jawaban saya di sini sebagai tambahan untuk jawaban di sini sehingga dapat digunakan bersamaan dengan jawaban yang disarankan di sini.

Diambil dari situs web berikut

## Install yum utils ##
yum install yum-utils

## Package-cleanup set count as how many old kernels you want left ##
package-cleanup --oldkernels --count=2

Ini akan menghapus semua kernel lama dan hanya menyimpan dua kernel terbaru pada centos 6.4 yang mungkin Anda inginkan karena kernel baru-baru ini berisi perbaikan bug dan Anda selalu bisa gagal ke kernel yang lebih lama jika yang baru gagal untuk boot. Perintah di atas berarti bahwa Anda tidak harus pergi dan mengatakan rpm -e xyz di mana xyz adalah kernel spesifik Anda karena secara otomatis menyimpan yang terbaru.

Perhatikan bahwa perintah di atas hanya membersihkan paket-paket yang sudah ada sehingga mengedit yum.conf Anda perlu jika Anda tidak ingin mulai mengumpulkan paket-paket kernel lagi.

Jason Zhu
sumber
Setuju, solusi terbaik, dan package-cleanupmeminta Anda tentang apa yang akan dihapus sebelum melakukannya
sMyles
8

Hapus setidaknya satu dari kernel lama, seperti kata alexus.

Kemudian:

Edit /etc/yum.confdan tentukan batas jumlah versi kernel yang akan disimpan. Secara default diatur ke 5, tetapi sistem Anda tampaknya hanya mampu menangani dua:

installonly_limit=2

Akhirnya, mengeluh kepada penyedia VPS tentang template yang aneh. /bootadalah 500MB secara default dalam instalasi CentOS 6.

Michael Hampton
sumber