Вопрос или проблема
Я управляю сервером на Red Hat Enterprise Linux версии 7.8 и только что обновил минорную версию до 7.9, используя официальные установочные ISO-образы RHEL версии 7.9, и перезагрузил после обновления.
(Обратите внимание, что сервер работает на виртуальной машине VMware vSphere 7.)
Теперь проблема следующая.
Вывод команды cat /etc/os-release
показывает:
NAME="Red Hat Enterprise Linux Server"
VERSION="7.9 (Maipo)"
ID="rhel"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="7.9"
PRETTY_NAME="Red Hat Enterprise Linux Server 7.9 (Maipo)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:7.9:GA:server"
HOME_URL="https://www.redhat.com/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 7"
REDHAT_BUGZILLA_PRODUCT_VERSION=7.9
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="7.9"
Однако вывод команды uname -srm
показывает:
Linux 3.10.0-1127.el7.x86_64 x86_64
А команда yum list installed kernel
сообщает, что установлены два ядра, как показано ниже:
Загружены плагины: langpacks, product-id, search-disabled-repos, subscription-
: manager
Установленные пакеты
kernel.x86_64 3.10.0-1127.el7 @anaconda/7.8
kernel.x86_64 3.10.0-1160.el7 @local-iso
Я не понимаю. Почему после обновления и перезагрузки ОС всё ещё загружается версия 7.8, а версия 7.9 даже не отображается в меню загрузки?
Итак, чтобы ускорить диагностику, я собрал некоторую информацию из ОС, указанную ниже, которая может быть полезна:
Вывод команды awk -F\' '==menuentry {print i++ : }' /boot/grub2/grub.cfg
:
0 : Red Hat Enterprise Linux Server (3.10.0-1127.el7.x86_64) 7.8 (Maipo)
1 : Red Hat Enterprise Linux Server (0-rescue-71be072259f245f5b1a7cc30b3746e8f) 7.8 (Maipo)
Вывод команды grub2-editenv list
:
saved_entry=Red Hat Enterprise Linux Server (3.10.0-1127.el7.x86_64) 7.8 (Maipo)
Вывод команды grubby --info ALL
:
index=0
kernel=/boot/vmlinuz-3.10.0-1127.el7.x86_64
args="ro crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet LANG=en_US.UTF-8"
root=/dev/mapper/rhel-root
initrd=/boot/initramfs-3.10.0-1127.el7.x86_64.img
title=Red Hat Enterprise Linux Server (3.10.0-1127.el7.x86_64) 7.8 (Maipo)
index=1
kernel=/boot/vmlinuz-0-rescue-71be072259f245f5b1a7cc30b3746e8f
args="ro crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet"
root=/dev/mapper/rhel-root
initrd=/boot/initramfs-0-rescue-71be072259f245f5b1a7cc30b3746e8f.img
title=Red Hat Enterprise Linux Server (0-rescue-71be072259f245f5b1a7cc30b3746e8f) 7.8 (Maipo)
index=2
non linux entry
Вывод команды grubby --info DEFAULT
:
index=0
kernel=/boot/vmlinuz-3.10.0-1127.el7.x86_64
args="ro crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet LANG=en_US.UTF-8"
root=/dev/mapper/rhel-root
initrd=/boot/initramfs-3.10.0-1127.el7.x86_64.img
title=Red Hat Enterprise Linux Server (3.10.0-1127.el7.x86_64) 7.8 (Maipo)
Вывод команды lsblk
:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 150G 0 диск
├─sda1 8:1 0 2M 0 раздел
├─sda2 8:2 0 200M 0 раздел /boot
└─sda3 8:3 0 149.8G 0 раздел
├─rhel-root 253:0 0 117.8G 0 lvm /
└─rhel-swap 253:1 0 32G 0 lvm [SWAP]
sdb 8:16 0 300G 0 диск
└─dataVG-dataLV 253:3 0 300G 0 lvm /Data
sdc 8:32 0 300G 0 диск
└─bkpVG-bkpLV 253:2 0 300G 0 lvm /Backup
sr0 11:0 1 1024M 0 rom
Вывод команды df -Th
:
Файловая система Тип Размер Использовано Доступно Использовано% Смонтировано в
devtmpfs devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs tmpfs 7.8G 8.0K 7.8G 1% /dev/shm
tmpfs tmpfs 7.8G 13M 7.8G 1% /run
tmpfs tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs 118G 13G 106G 11% /
/dev/sda2 xfs 197M 173M 25M 88% /boot
/dev/mapper/bkpVG-bkpLV xfs 300G 33M 300G 1% /Backup
/dev/mapper/dataVG-dataLV xfs 300G 33M 300G 1% /Data
tmpfs tmpfs 1.6G 12K 1.6G 1% /run/user/42
tmpfs tmpfs 1.6G 0 1.6G 0% /run/user/0
Вывод команды ls /boot
:
config-3.10.0-1127.el7.x86_64 initramfs-0-rescue-71be072259f245f5b1a7cc30b3746e8f.img System.map-3.10.0-1127.el7.x86_64
config-3.10.0-1160.el7.x86_64 initramfs-3.10.0-1127.el7.x86_64.img System.map-3.10.0-1160.el7.x86_64
efi initramfs-3.10.0-1127.el7.x86_64kdump.img vmlinuz-0-rescue-71be072259f245f5b1a7cc30b3746e8f
extlinux symvers-3.10.0-1127.el7.x86_64.gz vmlinuz-3.10.0-1127.el7.x86_64
grub2 symvers-3.10.0-1160.el7.x86_64.gz vmlinuz-3.10.0-1160.el7.x86_64
Вывод команды ls /boot/efi/EFI/redhat/
:
BOOT.CSV BOOTX64.CSV fw fwupia32.efi fwupx64.efi mmx64.efi shim.efi shimx64.efi shimx64-redhat.efi
==============================================================================
Я попробовал два метода,
Первый – выполнение следующих 2 команд и затем перезагрузка системы:
grub2-set-default 0
grub2-mkconfig -o /boot/grub2/grub.cfg
Другой – выполнение следующих 3 команд и затем перезагрузка системы:
dracut -f initramfs-3.10.0-1160.el7.x86_64.img
grub2-set-default 0
grub2-mkconfig -o /boot/grub2/grub.cfg
Обратите внимание, что вывод команды grub2-mkconfig -o /boot/grub2/grub.cfg
таков:
Генерация файла конфигурации grub ...
Файловый дескриптор 6 (/dev/pts/0) утек в команду vgs. Родительский PID 3352: /usr/sbin/grub2-probe
Файловый дескриптор 6 (/dev/pts/0) утек в команду vgs. Родительский PID 3352: /usr/sbin/grub2-probe
Обнаружено linux-образ: /boot/vmlinuz-3.10.0-1160.el7.x86_64
Обнаружено linux-образ: /boot/vmlinuz-3.10.0-1127.el7.x86_64
Обнаружено initrd-образ: /boot/initramfs-3.10.0-1127.el7.x86_64.img
Обнаружено linux-образ: /boot/vmlinuz-0-rescue-71be072259f245f5b1a7cc30b3746e8f
Обнаружено initrd-образ: /boot/initramfs-0-rescue-71be072259f245f5b1a7cc30b3746e8f.img
Файловый дескриптор 6 (/dev/pts/0) утек в команду vgs. Родительский PID 3651: /usr/sbin/grub2-probe
Файловый дескриптор 6 (/dev/pts/0) утек в команду vgs. Родительский PID 3651: /usr/sbin/grub2-probe
готово
Оба решения в итоге не привели к успешной загрузке ОС, и ошибки на экране во время загрузки были аналогичны тому, что корневая файловая система не может быть смонтирована, как показано ниже:
Kernel panic - не синхронизируется: VFS: Unable to mount root fs on unknown-block(0,0)
CPU: 1 PID: 1 Comm: swapper/0 Not tainted 3.10.0-1160.el7.x86_64 #1
Может ли кто-нибудь дать советы по диагностике, почему новое ядро не удаётся загрузить?
Ответ или решение
Добро пожаловать в сложный, но весьма характерный случай, с которым сталкиваются системные администраторы при обновлении операционных систем на базе Linux, таких как Red Hat Enterprise Linux. Давайте разберемся в проблеме и найдем пути ее решения.
Проблема
После обновления с RHEL 7.8 до RHEL 7.9 система продолжает загружаться с ядром старой версии (3.10.0-1127.el7.x86_64). Хотя, как говорит cat /etc/os-release
, у вас уже установлена версия 7.9 (Maipo). Наиболее вероятной причиной этого является то, что загрузочная запись GRUB для нового ядра не обновлена или отсутствует в конфигурации GRUB.
Анализ предоставленных данных
- Вывод
uname -srm
: указывает, что загружено старое ядро – 3.10.0-1127. grubby --info ALL
иawk -F\' '==menuentry {print i++ : }' /boot/grub2/grub.cfg
: показывают, что в конфигурации GRUB нет записи для нового ядра (3.10.0-1160.el7.x86_64).ls /boot
: указывает, что все файлы для нового ядра присутствуют (/boot/vmlinuz-3.10.0-1160.el7.x86_64 и initramfs).df -Th
: указывает на высокий уровень заполненности /boot, что могло препятствовать успешной генерации нового initramfs.
Возможные Решения
-
Освободите Место на /boot:
Убедитесь, что в /boot достаточно места для файлов нового ядра. Удалите старые или ненужные файлы (например, более старые версии ядра). -
Перегенерация initramfs:
Убедитесь, что образ initramfs сгенерирован верно:dracut -f /boot/initramfs-3.10.0-1160.el7.x86_64.img 3.10.0-1160.el7.x86_64
-
Обновление Конфигурации GRUB:
Пересоздайте конфигурацию загрузчика GRUB:grub2-mkconfig -o /boot/grub2/grub.cfg
-
Установите Новое Ядро по Умолчанию:
Убедитесь, что новое ядро установлено по умолчанию:grub2-set-default "Red Hat Enterprise Linux Server (3.10.0-1160.el7.x86_64) 7.9 (Maipo)"
-
Диагностика Ошибок Монтирования:
Если после выполнения всех шагов вы все еще сталкиваетесь с проблемой монтирования, возможно, проблема связана с параметрами загрузки:- Убедитесь, что GUID/UUID в
/etc/fstab
верны. - Проверьте параметры загрузки в конфигурации GRUB и убедитесь, что они соответствуют логическому тому.
- Убедитесь, что GUID/UUID в
Заключение
Ваш случай указывает на классическую проблему несовпадения конфигурации после обновления системы. Убедитесь, что у вас есть резервная копия важных данных перед тем, как вносить изменения. Если проблема сохраняется, обратитесь в официальную службу поддержки RHEL для более глубокого анализа.
Помните, что изображения ядра и initramfs играют ключевую роль в процессе загрузки системы, и их правильная интеграция с конфигурацией GRUB критически важна для успешной загрузки системы.