Cách giải phóng dung lượng đĩa /boot trong Linux

Tác giả sysadmin, T.M.Hai 30, 2022, 09:39:25 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 2 Khách đang xem chủ đề.

Cách giải phóng dung lượng đĩa /boot trong Linux


Theo mặc định, kích thước của phân vùng /boot trong Linux không quá lớn, 512mb hoặc hơn là một mặc định khá điển hình. Không gian này được sử dụng để lưu trữ các phiên bản khác nhau của nhân Linux mà bạn đã cài đặt đồng thời cùng một lúc.

Nếu không gian này đầy, bạn không thể thực hiện nâng cấp kernel trong tương lai, vì vậy điều quan trọng là không để nó lấp đầy và giải phóng không gian trong /boot.

Nếu máy chủ của bạn không có phân vùng riêng cho /boot thì điều này sẽ ít gây ra vấn đề hơn cho bạn, vì bạn sẽ có toàn bộ không gian của hệ thống tệp theo ý của mình, tuy nhiên nếu không gian này đầy thì bạn sẽ phải đối mặt với cùng một vấn đề.

1. Tại sao nhiều kernel?

Theo mặc định, nhiều phiên bản của nhân Linux được cài đặt cùng một lúc để bạn có thể quay lại phiên bản trước nếu có bất kỳ sự cố nào. Ví dụ: trước đây, một máy chủ thử nghiệm của tôi đã tắt nguồn đột ngột khi đang nâng cấp kernel qua yum, khi cố gắng khởi động lại nó, kernel sẽ bị hoảng loạn và không khởi động được. Tôi đã phải sử dụng đĩa CD trực tiếp, gắn đĩa và sửa đổi cấu hình khởi động để sử dụng một trong các phiên bản kernel trước đó đã cài đặt để khởi động đúng cách, sau đó áp dụng lại bản cập nhật một cách chính xác.

kernel là một trong số ít các gói không ghi đè lên phiên bản hiện có khi áp dụng bản cập nhật, thay vào đó, toàn bộ kernel được cài đặt lại một cách riêng biệt, chủ yếu vì lý do này cho phép chúng tôi thực hiện khôi phục nếu cần.

2. Xóa kernel cũ theo cách thủ công

Để xóa kernel cũ hơn, trước tiên chúng ta cần xem danh sách các phiên bản kernel hiện đang được cài đặt. Điều này có thể được thực hiện bằng lệnh 'danh sách yum đã cài đặt' như hình bên dưới.

Mã nguồn [Chọn]
[root@centos7 ~]# yum list installed | grep kernel
kernel.x86_64                          3.10.0-229.el7                  @anaconda
kernel.x86_64                          3.10.0-229.7.2.el7              @updates
kernel.x86_64                          3.10.0-229.11.1.el7             @updates
kernel.x86_64                          3.10.0-229.14.1.el7             @updates
kernel.x86_64                          3.10.0-229.20.1.el7             @updates
kernel.x86_64                          3.10.0-327.3.1.el7              @updates

Trong ví dụ này, chúng tôi hiện có 6 phiên bản khác nhau của nhân Linux được cài đặt. Mỗi trong số này có các tệp được lưu trữ trong /boot.

Trong trường hợp này, gói 'kernel-3.10.0-229.el7.x86_64' là phiên bản cũ nhất được cài đặt, vì vậy chúng tôi có thể xóa thủ công gói này như minh họa bên dưới.

Mã nguồn [Chọn]
[root@centos7 ~]# yum remove kernel-3.10.0-229.el7.x86_64
Loaded plugins: fastestmirror, langpacks
Resolving Dependencies
--> Running transaction check
---> Package kernel.x86_64 0:3.10.0-229.el7 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================================================================================================================================
 Package                                               Arch                                                  Version                                                          Repository                                                Size
=============================================================================================================================================================================================================================================
Removing:
 kernel                                                x86_64                                                3.10.0-229.el7                                                   @anaconda                                                131 M

Transaction Summary
=============================================================================================================================================================================================================================================
Remove  1 Package

Installed size: 131 M
Is this ok [y/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Erasing    : kernel-3.10.0-229.el7.x86_64                                                                                                                                                                                              1/1
warning: file /lib/modules/3.10.0-229.el7.x86_64/modules.softdep: remove failed: No such file or directory
warning: file /lib/modules/3.10.0-229.el7.x86_64/modules.devname: remove failed: No such file or directory
  Verifying  : kernel-3.10.0-229.el7.x86_64                                                                                                                                                                                              1/1

Removed:
  kernel.x86_64 0:3.10.0-229.el7

Complete!

Xóa kernel cũ nhất trước thường là cách tốt nhất, bạn không muốn thử gỡ cài đặt phiên bản kernel hiện tại mà bạn đang chạy. Bạn có thể xem phiên bản kernel hiện tại của mình bằng lệnh 'uname -r' như hình bên dưới.

Mã nguồn [Chọn]
[root@centos7 ~]# uname -r
3.10.0-229.14.1.el7.x86_64

Chúng tôi vẫn có 5 phiên bản khác nhau của nhân Linux được cài đặt, rất nhiều, nói chung có ít nhất 3 phiên bản được cài đặt là tốt. Sau khi gỡ bỏ phiên bản nhân Linux này, chúng tôi đã giải phóng 10% phân vùng /boot 500mb của chúng tôi.

3. Chỉ định số lượng kernel được cài đặt đồng thời

Chúng tôi có thể chỉ định có bao nhiêu nhân Linux được phép cài đặt cùng một lúc. Theo mặc định, số lượng nhân Linux có thể được cài đặt cùng lúc là 5. Nếu bạn đã cài đặt 5 phiên bản khác nhau của nhân Linux và bạn thực hiện 'cập nhật yum' và cài đặt nhân mới hơn, thì nhân cũ nhất sẽ bị gỡ cài đặt để nhường chỗ cho cái mới nhất.

Điều này được thực hiện trong tệp /etc/yum.conf như hình bên dưới.

Mã nguồn [Chọn]
installonly_limit=6
Trong ví dụ cụ thể này, giá trị này được đặt thành 6, vì chúng tôi đã cài đặt 6 kernel cùng một lúc trước khi kernel cũ nhất được gỡ bỏ thủ công. Bạn có thể chỉnh sửa tệp này thành một tệp khác, chẳng hạn như 3, nó sẽ không tự động xóa các kernel cũ nhất cho đến khi có một kernel mới hơn để cập nhật và được cài đặt. Tại thời điểm này, yum sẽ kiểm tra giới hạn cài đặt cho kernel và xóa cái cũ nhất trước.

Bạn có thể tùy chọn sử dụng 'dọn dẹp gói' và loại bỏ một số kernel cũ hơn đã chỉ định, như minh họa bên dưới.

Mã nguồn [Chọn]
package-cleanup --oldkernels --assumeyes --count=3
Sau khi chạy lệnh này, yum sẽ gỡ cài đặt các kernel cũ nhất trước và chỉ giữ lại 3 kernel được cài đặt gần đây nhất. Nếu tính năng dọn dẹp gói không khả dụng, trước tiên bạn có thể cài đặt gói 'yum-utils' cung cấp gói đó.

Không gian /khởi động thấp trong Linux thường được sử dụng chủ yếu bằng cách cài đặt đồng thời nhiều phiên bản nhân, chúng tôi có thể gỡ cài đặt các phiên bản nhân cũ hơn không còn cần thiết để giải phóng và giảm dung lượng đĩa. Cấu hình yum cũng có thể được sửa đổi để chỉ một số kernel nhất định được cài đặt tại một thời điểm có thể giúp ngăn /boot tự động điền.

Nếu không có đủ dung lượng trống trong /boot, các phiên bản kernel mới hơn sẽ không thể cài đặt chính xác, vì vậy điều quan trọng là không được để nó đầy.