Cách chuyển đổi CentOS 7 sang Rocky hoặc AlmaLinux bằng ELevate

Linux tutorial - IT technology blog
Linux tutorial - IT technology blog

Lỗ hổng hỗ trợ của CentOS 7

CentOS 7 đã chính thức ngừng hỗ trợ vào ngày 30 tháng 6 năm 2024. Nếu bạn vẫn đang quản lý các máy chủ cũ, ngày này không chỉ là một cột mốc thông thường; đó là ngày mà hạ tầng của bạn trở thành một rủi ro bảo mật. Việc chạy một bản phân phối đã hết vòng đời (EOL) đồng nghĩa với việc bạn không còn nhận được các bản vá lỗi nhân (kernel) quan trọng hoặc các bản cập nhật bảo mật. Mặc dù cách khắc phục truyền thống là “xóa và cài đặt lại”, nhưng quy trình đó thường là một cơn ác mộng đối với các môi trường sản xuất phức tạp với các nhu cầu cấu hình cụ thể.

Các đợt nâng cấp hệ điều hành lớn thường là những sự kiện gây căng thẳng, làm hỏng các phụ thuộc (dependencies) tùy chỉnh và tốn hàng giờ để khắc phục sự cố. Đội ngũ AlmaLinux đã đơn giản hóa việc này bằng cách phát hành ELevate, một dự án mã nguồn mở được thiết kế để di trú trực tiếp (in-place migration). Nó cho phép bạn chuyển từ CentOS 7 sang các bản phân phối dựa trên RHEL 8 như Rocky Linux hoặc AlmaLinux mà không cần định dạng lại ổ đĩa. Sau khi thử nghiệm trên hơn 50 máy chủ, tôi thấy đây là con đường đáng tin cậy nhất cho các máy cũ.

Cơ chế hoạt động của Framework ELevate

Hãy coi ELevate như một bộ não tinh vi cho tiện ích Leapp, vốn được Red Hat xây dựng ban đầu cho việc nâng cấp RHEL. Nó không chỉ đơn thuần là hoán đổi các URL kho lưu trữ một cách mù quáng. Thay vào đó, quy trình diễn ra theo hai giai đoạn riêng biệt: phân tích chuyên sâu trước khi nâng cấp và thực hiện giao dịch gói phần mềm thực tế.

Giai đoạn trước nâng cấp này là lưới an toàn của bạn. Nó quét các trình điều khiển phần cứng (drivers), các module nhân và phần mềm đã cài đặt để tìm các vấn đề tiềm ẩn có thể gây lỗi. Nếu thiếu một driver cụ thể trong phiên bản đích, ELevate sẽ dừng quá trình và cảnh báo bạn trước khi bất kỳ tệp hệ thống nào bị thay đổi. Mức độ bảo vệ này giúp nó an toàn hơn nhiều so với các kịch bản di trú thủ công.

Bước 1: Chuẩn bị và Sao lưu

Đừng bao giờ chạm vào nhân hệ điều hành mà không có bản sao lưu đã được xác minh. Cho dù bạn sử dụng snapshot VM, sao lưu Veeam hay đơn giản là rsync sang ổ đĩa ngoài, hãy đảm bảo bạn có kế hoạch khôi phục. Tôi đã từng bỏ qua bước này trên một máy chủ thử nghiệm nhỏ và phải mất cả đêm để xây dựng lại cơ sở dữ liệu vì hệ thống tệp bị hỏng giữa chừng khi di trú. Đừng mạo hiểm như vậy.

Bắt đầu bằng cách đảm bảo hệ thống CentOS 7 của bạn đã được cập nhật đầy đủ lên phiên bản 7.9:

sudo yum update -y
sudo reboot

Sau khi hệ thống khởi động lại, hãy xác nhận bạn đang ở phiên bản mới nhất:

cat /etc/redhat-release
# Kết quả sẽ là: CentOS Linux release 7.9.2009 (Core)

Bước 2: Cài đặt ELevate và Leapp

Đầu tiên, hãy cài đặt kho lưu trữ ELevate. Kho này chứa các công cụ Leapp đã được sửa đổi và siêu dữ liệu (metadata) cần thiết để thu hẹp khoảng cách giữa CentOS và các phiên bản kế nhiệm hiện đại của nó.

sudo yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el7.noarch.rpm

Bước tiếp theo là cài đặt gói dữ liệu cụ thể cho hệ điều hành đích của bạn. Mặc dù bạn có thể chọn Oracle Linux hoặc EuroLinux, nhưng hầu hết các đội ngũ đều chọn Rocky hoặc AlmaLinux.

Dành cho AlmaLinux:

sudo yum install -y leapp-upgrade leapp-data-almalinux

Dành cho Rocky Linux:

sudo yum install -y leapp-upgrade leapp-data-rocky

Bước 3: Chạy kiểm tra trước khi nâng cấp

Bây giờ là phần quan trọng nhất của quy trình. Lệnh này thực hiện chạy thử và xác định các xung đột mà không thay đổi dữ liệu của bạn. Trên một VPS tiêu chuẩn với 4GB RAM và 40GB SSD, quá trình quét này thường hoàn tất trong chưa đầy ba phút.

sudo leapp preupgrade

Đọc báo cáo được tạo tại /var/log/leapp/leapp-report.txt. Lần chạy đầu tiên của bạn gần như chắc chắn sẽ thất bại với thông báo “Inhibitors found” (Tìm thấy các yếu tố ngăn cản). Điều này là bình thường. Công cụ này chỉ đơn giản là bảo vệ bạn khỏi một hệ thống bị lỗi.

Hầu hết các lỗi là do một vài vấn đề phổ biến:

  • Trình điều khiển lỗi thời: Hỗ trợ cho các phần cứng cũ như ổ đĩa mềm hoặc một số bộ điều khiển PATA bị loại bỏ trong RHEL 8.
  • Cấu hình SSH: RHEL 8 cấm đăng nhập root qua SSH theo mặc định.
  • Tệp trả lời (Answer Files): Công cụ yêu cầu bạn xác nhận rõ ràng một số rủi ro nhất định.

Để xóa các rào cản này, bạn thường chạy các lệnh như sau:

# Gỡ bỏ driver ổ đĩa mềm cũ nếu không sử dụng
sudo rmmod floppy

# Xác nhận bạn muốn gỡ bỏ module pam_pkcs11
sudo leapp answer --section remove_pam_pkcs11_module_check.confirm=True

Bước 4: Thực hiện chuyển đổi

Khi lệnh preupgrade cuối cùng hiển thị đèn xanh, bạn đã sẵn sàng để di trú. Bước này sẽ tải xuống khoảng 500MB đến 1GB các gói phần mềm mới và xây dựng một môi trường khởi động tạm thời.

sudo leapp upgrade

Dự kiến quá trình này sẽ mất từ 10 đến 20 phút tùy thuộc vào tốc độ đĩa của bạn. Sau khi lệnh kết thúc thành công, hệ thống sẽ nhắc bạn khởi động lại. Đây là thời điểm chính thức không thể quay đầu.

sudo reboot

Hãy theo dõi menu khởi động GRUB trong quá trình khởi động lại. Bạn sẽ thấy một mục mới: “ELevate-Upgrade-Initramfs”. Máy chủ sẽ khởi động vào môi trường này và bắt đầu thay thế hàng nghìn gói CentOS 7 bằng các phiên bản Rocky hoặc AlmaLinux 8. Nó có thể trông giống như bị kẹt ở mức 90% trong vài phút. Hãy kiên nhẫn và để nó hoàn thành.

Bước 5: Dọn dẹp sau chuyển đổi

Đăng nhập sau khi hệ thống khởi động lại lần cuối. Bạn sẽ thấy biểu ngữ đăng nhập của hệ điều hành mới. Hãy kiểm tra phiên bản để chắc chắn:

cat /etc/redhat-release
# Ví dụ kết quả: Rocky Linux release 8.10 (Green Obsidian)

Kiểm tra các dịch vụ thiết yếu của bạn ngay lập tức. Vì RHEL 8 sử dụng nftables thay vì iptables, hãy xác nhận các quy tắc tường lửa của bạn vẫn hoạt động như mong đợi hoặc sử dụng Journalctl để kiểm tra log hệ thống:

systemctl status httpd
systemctl status mariadb
sudo nft list ruleset

Kết thúc bằng cách dọn dẹp bộ nhớ đệm gói cũ và gỡ bỏ công cụ di trú để giữ cho hệ thống gọn nhẹ:

sudo dnf clean all
sudo yum remove leapp-upgrade leapp-data-rocky

Tổng kết

Việc rời bỏ CentOS 7 không còn là tùy chọn nữa, nhưng nó không nhất thiết phải là một thảm họa thủ công. ELevate cung cấp một cách có cấu trúc, có thể lặp lại để hiện đại hóa dàn máy chủ của bạn mà không làm mất các cấu hình tùy chỉnh. Bằng cách dành 15 phút để khắc phục các yếu tố ngăn cản trong giai đoạn kiểm tra trước, bạn sẽ đảm bảo một quá trình chuyển đổi có thể dự đoán được. Nếu bạn vẫn đang chạy CentOS 7, hãy bắt đầu di trú ngay hôm nay—ELevate là công cụ hiệu quả nhất cho công việc này.

Share: