Обновление SLES, казалось бы, идёт успешно, но затем в терминале, установщике или журнале миграции появляется сообщение «Невозможно выделить память». Само по себе это сообщение не доказывает, что серверу требуется больше физической оперативной памяти. Причиной сбоя может быть нехватка памяти, ограничение виртуальной машины или службы, отсутствие или непригодность файла подкачки, или сама среда обновления. Сначала определите, какой процесс и этап обновления вызвали это сообщение; безопасное решение зависит от этой детали.
Версия имеет значение. По состоянию на октябрь 2026 года, в руководстве SUSE по обновлению до основной версии SLES 16.0 описывается система миграции дистрибутива, которая загружает выделенный образ для обновления в режиме Live, в то время как для миграции с помощью пакетов обновлений SLES 15 используется установленный рабочий процесс миграции YaST или Zypper. Не применяйте исправление, предназначенное для онлайн-миграции с пакетами обновлений, к обновлению до основной версии, не проверив процедуру для вашего релиза. SUSE описывает текущий путь обновления до SLES 16 в своем руководстве по обновлению до SLES 16 .
1. Прежде чем что-либо менять, определите стадию сбоя.
Запишите полное сообщение об ошибке, метку времени, команду или экран, где оно появилось, а также информацию о том, была ли система перезагружена в образ установщика или образ миграции. «Невозможно выделить память» — это распространенная ошибка операционной системы, поэтому окружающие строки часто оказываются более полезными, чем само сообщение.
- Перед началом обработки пакета может произойти сбой в процессе регистрации, работы с репозиторием, подготовки к миграции или установки. Проверьте системную и процессную память, затем просмотрите соответствующий журнал службы или миграции.
- Во время установки или удаления пакетов: Zypper и RPM, возможно, уже внесли изменения в систему. Не завершайте процесс, не перезагружайте систему и не запускайте второй менеджер пакетов только потому, что прогресс кажется медленным. Проверьте консоль и журналы и дождитесь завершения поддерживаемого процесса миграции или до достижения состояния явной ошибки.
- После перезагрузки в образ обновления: процесс может выполняться с другой средой ресурсов, отличной от исходной операционной системы. Наличие области подкачки, видимой до перезагрузки, не является доказательством того, что образ обновления может ее использовать.
Последовательность миграции SUSE SLES 16 включает в себя подготовку среды миграции, монтирование файловых систем, настройку сети, подготовку Zypper, обновление пакетов, обновление загрузчика и перезагрузку. В руководстве указано, что ошибка до начала обновления возвращает систему в исходное состояние; это не означает, что каждая ошибка во время замены пакетов безвредна. Сохраняйте журналы и избегайте шагов ручного восстановления, пока не определите, какой этап завершился с ошибкой.
2. Проверьте сообщения об использовании оперативной памяти, файла подкачки и последних обновлениях ядра.
Если исходная система SLES все еще работает или вы достигли восстановительной оболочки, начните с проверок только для чтения:
free -h
swapon --show
vmstat 1 5
ps -eo pid,comm,rss,%mem --sort=-rss | head -n 15
free -hСводная информация об использовании памяти и файла подкачки. Сосредоточьтесь на доступной используемой памяти и файле подкачки, а не только на столбце «свободно»: Linux использует свободную оперативную память для кэширования. vmstatЭто помогает определить, постоянно ли машина использует подкачку. Список процессов может показать, что база данных, служба Java, резервное копирование или другая рабочая нагрузка потребляют память во время обновления.
Найдите записи об ошибке нехватки памяти ядра (OOM) в период, близкий к моменту возникновения ошибки:
sudo journalctl -k --since "30 minutes ago" |
grep -i -E 'out of memory|oom|killed process'
Если ошибка произошла раньше, измените временной интервал. Сообщение ядра, указывающее на завершенный процесс, свидетельствует о нехватке памяти; отсутствие совпадающей строки не исключает всех сбоев выделения памяти. Если обновление выполняется в отдельной рабочей среде, проверьте журналы этой среды, если они доступны, а не полагайтесь только на журнал старой системы.
Также проверьте, есть ли у виртуальной машины, контейнера или модуля systemd ограничение на использование памяти. Гостевая система может иметь доступную память на хосте, но при этом превысить свой собственный установленный лимит. В SLES 16 SUSE описывает cgroups v2 как иерархию управления ресурсами по умолчанию и объясняет, что systemd может применять ограничения на использование ресурсов. MemoryMaxВместо того чтобы произвольно повышать глобальные ограничения ядра, проверьте соответствующую конфигурацию виртуальной машины или настройку службы. См. руководство SUSE по группам управления ядром SLES 16 .
3. Сократите использование памяти для конкурирующих задач и повторяйте попытку только в безопасной точке.
Если измерения показывают, что рабочая нагрузка использует большую часть доступной памяти, запланируйте окно технического обслуживания и корректно остановите некритичные службы перед повторной попыткой. Примерами являются ресурсоемкие приложения, аналитические задачи, тестовые базы данных и процессы резервного копирования. Не останавливайте службы хранения, кластера или приложений на рабочем хосте вслепую; используйте документированную процедуру завершения работы приложения и убедитесь, что его остановка не помешает пользователям или задаче восстановления.
Для виртуальной машины сравните настроенный объем оперативной памяти гостевой системы с объемом памяти хоста и текущими потребностями других гостевых систем. Если объем памяти гостевой системы недостаточен, увеличьте выделенную ей память, используя поддерживаемый гипервизором метод. Возможность «горячего» добавления памяти зависит от гипервизора, конфигурации гостевой системы и рабочей нагрузки; при необходимости запланируйте перезагрузку. В публичном облаке проверьте размер экземпляра и любые ограничения памяти, установленные провайдером.
Если сообщение об ошибке сохраняется, несмотря на наличие достаточного объема оперативной памяти и отсутствие записи об ошибке нехватки памяти (OOM), следует изучить ограничения процесса. Для все еще работающего процесса проверьте /proc/PID/limitsего фактический идентификатор. Для вспомогательного процесса обновления, управляемого systemd, проверьте параметры ресурсов устройства. Ограничение может ограничивать работу одного процесса, даже если на хосте есть свободная память. Изменяйте ограничение только в том случае, если вы можете определить соответствующий параметр и понять его влияние.
После устранения выявленной проблемы возобновите или повторите попытку обновления только с помощью метода, поддерживаемого для вашей конкретной версии SLES и пути обновления. Для миграции на пакеты обновлений SLES 15 используйте описанный рабочий процесс миграции YaST или Zypper. Для миграции на основные версии SLES 16 следуйте процедуре миграции дистрибутива SLES 16. В руководстве SUSE по SLES 15 SP7 описан рабочий процесс с пакетами обновлений и поддерживаемые предварительные условия для отката в онлайн-документации по обновлению .
4. Тщательно обдумайте вариант обмена; не используйте его в качестве решения вслепую.
Дополнительный файл подкачки может обеспечить системе больший запас виртуальной памяти, когда рабочая нагрузка может выгружать данные в память, но это намного медленнее, чем использование оперативной памяти. Если машина уже активно использует файл подкачки, добавление большего количества файла подкачки может значительно замедлить обновление без решения проблемы недостаточного размера виртуальной машины или ограничения на количество изолированных процессов. Сначала убедитесь, существует ли файл подкачки и используется ли он с параметрами swapon --showи free -h.
Если вам необходимо добавить файл подкачки, используйте процедуру SUSE, соответствующую вашей версии SLES и файловой системе. Будьте особенно осторожны с Btrfs: SUSE документирует ограничения для файлов подкачки в Btrfs и указывает, что снимок не может быть создан, пока файл подкачки в исходном подтоме активен. Поскольку SLES обычно использует снимки Snapper для восстановления системы, не создавайте и не активируйте универсальный файл подкачки в корневом подтоме, для которого создан снимок, во время обновления. Предпочтительнее добавить оперативную память или использовать правильно настроенный раздел подкачки или поддерживаемое местоположение после проверки структуры хранилища и плана восстановления. Подробная информация о файловой системе приведена в руководстве SUSE по хранению данных для SLES 15 SP7 .
В первую очередь не следует изменять параметры vm.overcommit_memory, отключать механизм устранения ошибок нехватки памяти (OOM killer) или запускать произвольные команды очистки. Эти изменения могут скрыть проблему, дестабилизировать рабочие нагрузки или затруднить восстановление. Сначала соберите доказательства и используйте рекомендации SUSE или поставщика вашего приложения, специфичные для ваших настроек, если журналы указывают на особую конфигурацию памяти.
5. Восстановление после остановки обновления после начала внесения изменений в пакет.
Прежде чем принимать решение о повторном запуске обновления, убедитесь, что менеджер пакетов все еще активен и что инструмент миграции не сообщил об окончательной ошибке. Если обновление остановилось после начала внесения изменений в пакеты, сохраните полный вывод журнала и ознакомьтесь с документацией по восстановлению для конкретной версии. Не запускайте команды zypper dup, zypper migration, миграции YaST и RPM одновременно.
В SLES 15 SP7 SUSE описывает откат пакета обновлений, когда корневая файловая система — Btrfs, и включены снимки Snapper. Процедура отката требует идентификации и тестирования снимка, созданного до миграции, а затем обеспечения постоянного отката; это не универсальное решение для всех ошибок обновления. Миграция на другую основную версию SLES 16 осуществляется по другому алгоритму, поэтому используйте текущие инструкции по обновлению и восстановлению, а не предполагайте, что процедура SLES 15 применима. Если система критически важна для бизнеса, не имеет проверенной резервной копии или миграция завершается с ошибкой во время замены пакетов, откройте заявку в службу поддержки SUSE, прежде чем пытаться выполнить ручное восстановление пакетов.
6. Перед возобновлением нормальной работы проверьте систему.
После того, как обновление завершится и сервер загрузится в обычном режиме, проверьте версию и регистрацию операционной системы, затем проверьте согласованность пакетов и рабочую нагрузку, которая первоначально выявила проблему:
cat /etc/os-release
sudo SUSEConnect --status
sudo zypper verify
free -h
swapon --show
Используйте команду package-verification, поддерживаемую вашей версией SLES; если zypper verifyона недоступна или работает иначе в вашей версии, обратитесь к zypper helpруководству администратора вашей версии. Проверьте журналы приложений и ядра на наличие новых ошибок, убедитесь в работоспособности необходимых служб и отслеживайте состояние памяти и файла подкачки при возврате к исходному состоянию. Перед закрытием окна обслуживания убедитесь, что поддерживаемая цель обновления установлена и что регистрация сервера и репозитории находятся в ожидаемом состоянии.
Успешное устранение проблемы означает не только исчезновение сообщения об ошибке: миграция SLES завершается с использованием поддерживаемого пути, машина загружается в ожидаемой версии, пакеты и регистрация извлекаются, и обычные рабочие нагрузки выполняются без повторных событий нехватки памяти. Если сообщение «Невозможно выделить память» возвращается, несмотря на низкий уровень нехватки памяти, достаточный объем файла подкачки и отсутствие ограничения ресурсов, сохраните точные данные журнала и процесса — эти подсказки отличают дефект обновления от проблемы с производительностью.