Подготовка к применению обновлений в Red Hat Linux
Поддержание системы в актуальном состоянии является повседневной задачей системного администратора, а также пользователя настольного компьютера. Применив в системе новейшее (стабильное) доступное программное обеспечение, мы сможем воспользоваться новейшими функциями и будем более защищены от проблем безопасности и, будем надеяться, меньше пострадаем от ошибок. Для обновления системы вам понадобятся настроенные yum репозитории, которые выступают в качестве источника обновленного программного обеспечения.
Если вы сидите рядом с машиной, на которой запущена операционная система, подлежащая обновлению, вы можете легко действовать, если во время обновления что-то пойдет не так, например, проверить вывод на терминале, или загрузиться с работающей системы, если обновленная система не возвращается из перезагрузки - но это не всегда так. Представьте себе центр обработки данных с сотнями или тысячами (виртуальных) машин или просто физический ПК, который необходимо обновить удаленно.
Есть простые шаги, которые мы можем выполнить, чтобы подготовить систему к обновлению, и, возможно, устранить любые проблемы, которые могут поставить под угрозу успешное обновление.
Процесс обновления
При выполнении безусловного обновления (что означает «обновить все»), он yum извлечет все метаданные из доступных репозиториев и вычислит все пакеты, которые нужно обновить, по rpm базе данных, которая содержит все метаданные о пакетах, установленных в системе.
Процесс обновления также вычисляет все зависимости обновленных пакетов, может заменить старые пакеты и удалить старые образы ядра в соответствии с его конфигурацией. Количество сохраняемых образов ядра задается в /etc/yum.conf файле конфигурации и по умолчанию равно 3:
installonly_limit=3
После того, как все необходимые модификации рассчитаны, yum предоставляется обширный список всех пакетов, которые необходимо обновить, удалить или установить для зависимостей, так же, как при установке или обновлении определенных пакетов.
В интерактивном сеансе обновления yum будут представлены сводные данные о пакетах, подлежащих модификации, а также расчет размера данных, которые необходимо загрузить для обновления.
Изучив результаты, мы можем решить, запустить ли обновление или отменить его. Поскольку yum будет обновлять все, для чего он может найти обновления, мы можем захотеть удалить ненужные пакеты заранее. Мы также можем заметить пакет, помеченный для обновления, который заблокирован версией, который необходимо исключить из обновления.
После утверждения yum загрузит все новые пакеты и установит / обновит их один за другим. По завершении он проверит целостность установленных / обновленных пакетов, очистит ненужные файлы. Он также обеспечивает обратную связь во время процесса, предоставляя строку текста для каждого шага, а также код выхода, который указывает, было ли обновление успешным или возникла какая-либо проблема. Он также отменит процесс обновления, если возникнет проблема, которая кажется критической с точки зрения согласованной системы, - но бывают случаи, когда уже слишком поздно, поэтому предотвращение проблем с обновлением является лучшим подходом.
Дисковое пространство
yum cache
Исходя из описанного выше процесса, может возникнуть ситуация, что нам нужно место на диске для процесса обновления:
Метаданные всех настроенных репозиториев должны храниться до завершения расчета всех пакетов (и их зависимостей), подлежащих обновлению.
rpm пакеты, которые составляют само обновление, должны храниться локально до правильной установки.
Эти данные, которые вызываются, yum cache нужны только во время обновления, но могут занимать значительное дисковое пространство. Расположение по умолчанию для этого кэша находится в /var/cache/yum каталоге. Само собой разумеется, что если недостаточно места для хранения всех необходимых данных, процесс обновления завершится неудачей. Некоторые незавершенные загрузки будут отброшены, но не все пространство может быть освобождено, что приводит к тому, что система провалила обновление и ее объем /var/cache почти полностью заполнен.
Многие установки хранят свои /var каталоги на томе, выделенном для ведения журналов, поскольку по умолчанию места для файлов журналов находятся /var/log в большинстве дистрибутивов, и большинство приложений с хорошим поведением перестанут работать или даже выйдут из строя, если они не смогут записать свои файлы журналов. Поэтому заполнять том, в который они пишут, плохо .
Чем больше пакетов необходимо обновить, и чем больше у нас репозиториев, тем больше места будет занимать временное обновление. Рассчитать это пространство от обновления к обновлению сложно, но его можно протестировать с помощью пробного решения, описанного ниже, если у нас есть тестовая машина с точным программным содержанием. Для примера реального времени обновление с RHEL 7.1 до 7.5 (установка на рабочем столе с помощью Gnome) может занять 4 ГБ дискового пространства, но установка нескольких исправлений в системе, которая устарела только на один или два месяца, займет только несколько МБ.
Чтобы проверить, сколько у нас места, мы можем использовать df команду:
# df -h /var/
В приведенном выше примере у нас есть 4,4 ГБ свободного места, что будет достаточно, учитывая, что сервер был обновлен всего несколько месяцев назад. Чтобы освободить место, тривиальным шагом будет очистка yum cache уже сохраненного (возможно, при последнем обновлении). Чтобы проверить, сколько места занимает кеш в данный момент, мы можем использовать du:
# du -mcd 1 /var/cache/yum
Вышеуказанные числа указаны в МБ, поэтому yum cache в этом примере занимает около 1 ГБ дискового пространства и занимает большую часть пространства на /var томе.
Очистка кеша
Мы можем очистить весь кеш с помощью следующей команды:
yum clean all
Но, как yum уведомляет нас в выводе вышеприведенной команды в версиях RHEL 7, могут быть потерянные данные из удаленных или отключенных репозиториев, что, скорее всего, произойдет после незначительных выпусков обновлений, и в этом случае мы можем безопасно удалить данные вручную:
rm -rf /var/cache/yum/*
Мы можем получить больше места для обновления, очистив другие данные, хранящиеся на томе, такие как сжатие / удаление старых файлов журналов, перемещение больших файлов на другие тома или увеличение размера тома.
Перемещение кеша
Чтобы поработать с возможностями: yum, если у нас действительно мало места на диске, мы не можем ничего очистить дальше и не можем добавить больше места на том, мы можем переместить местоположение yum cache на другой том с большим количеством свободного места. Мы можем настроить расположение кэша в yum.conf файле конфигурации, упомянутом выше. Рассмотрим настройку по умолчанию:
cachedir=/var/cache/yum/$basearch/$releasever
Изменяя путь до $basearch следующей операции yum, вы будете работать с той же структурой каталогов, но по другому пути - надеюсь, с большим количеством свободного места для обновления. Мы также можем переместить кеш на другой том, переместив весь каталог:
mv /var/cache/yum /extended_data_volume/
И создать символические ссылки в исходном месте, которые указывает на новое место:
ln -s /extended_data_volume/yum /var/cache/yum
Целесообразно знать, что обновление не завершится ошибкой, такой как нехватка места на диске. В большой системе системные администраторы развертывают инструменты мониторинга, такие как Nagios, которые могут сообщать о нехватке дискового пространства на всех машинах, что делает этот шаг намного менее трудоемким и подверженным ошибкам.