Что произойдет, если я планирую завершить работу в середине обновления?

Вчера вечером я сделал обновление CentOS 6, которое было довольно большим. К тому моменту, когда я решил оставить его для завершения, процесс был всего лишь несколькими пакетами от завершения загрузки. Итак, я запланировал выключение на +60 минут и ушел.

Когда утром я зарегистрировался в системе, он отключился. У меня возникли проблемы (я чего-то ожидал), только когда я смотрел журналы, я заметил, что конец журнала yum кажется, что обновление заняло больше времени, чем я ожидал.

Когда я это заметил, я обновил yum update. Все в курсе. Другой вопрос:

Это закончилось чисто. Как я могу проверить?

  • RedHat Анаконда и группы
  • Как обеспечивается атомарность yum?
  • RHEL6 Установите MySql-Python без подключения к Интернету?
  • yum install in user home для не-админов
  • Как «yum localinstall» из результата поиска «yum search»?
  • Не удается удалить дубликаты пакетов из-за зависимостей
  • Почему скорость загрузки yum слишком медленная
  • Установка родовых логотипов и универсальных выпусков на Fedora
  • 3 Solutions collect form web for “Что произойдет, если я планирую завершить работу в середине обновления?”

    В CentOS файл /var/log/yum.log должен иметь время, когда последний пакет был обновлен. Например, на моем CentOS (моя в настоящее время работает CentOS 7, но файл находится в одном месте):

     # tail -n 3 /var/log/yum.log Jun 28 17:10:04 Updated: 1:mariadb-libs-5.5.47-1.el7_2.x86_64 Jun 28 17:10:05 Updated: graphite2-1.3.6-1.el7_2.x86_64 Jun 28 17:10:05 Updated: zsh-5.0.2-14.el7_2.2.x86_64 

    (Да, я не запускал yum update течение некоторого времени)

    Затем вы можете сравнить это с messages syslog об отключении. Syslog вращает журналы, поэтому вы можете иметь что-то вроде messages-20160807 вместо messages-20160807 messages , также проверьте это. Например:

     # egrep -i 'stopped|shut' /var/log/messages* /var/log/messages-20160731:Jul 24 23:55:55 orion systemd: Stopped target Multi-User System. /var/log/messages-20160731:Jul 24 23:55:55 orion systemd: Stopped Resets System Activity Logs. /var/log/messages-20160731:Jul 24 23:55:57 orion systemd: Stopped Permit User Sessions. /var/log/messages-20160731:Jul 24 23:55:57 orion systemd: Stopped target Remote File Systems. /var/log/messages-20160731:Jul 24 23:56:33 orion systemd[1]: Listening on Delayed Shutdown Socket. /var/log/messages-20160731:Jul 24 23:56:33 orion systemd[1]: Starting Delayed Shutdown Socket. 

    (CentOS 6 не будет иметь сообщений systemd , но что-то релевантное будет напечатано.)

    В зависимости от конфигурации в /etc/rsyslog.conf / /etc/syslog.conf выключение может не регистрироваться, но что-то наверняка регистрируется, когда система опускается. Поэтому поиск stopped|shut – хорошая эвристика, чтобы проверить, когда все началось.

    Сравнивая метки времени в обоих журналах, вы можете получить хорошее представление о том, закончила ли yum свою работу до того, как система опустилась.

    Иногда он прерывает вашу машину. Это была известная проблема:

    • Ошибка 755335: выключение при автоматическом обновлении системы

    и предполагается, что он был исправлен путем изменения systemd . В соответствии с

    • Как узнать, использует ли система SysV, Upstart или Systemd initsystem

    CentOS 6 не работает systemd . Таким образом, проблема может возникнуть в вашей машине.

    В идеале обновления являются идемпотентными (если вы запускаете одно и то же обновление несколько раз, вы получаете тот же результат, как если бы вы его запускали один раз) и были устойчивы (если обновление прерывается перезагрузкой, вы можете возобновить udpate после перезагрузки) , Но обновления не являются атомарными (есть пол-обновленные состояния системы).

    На практике идемпотентность действительно работает. Если прерывание yum update прервано (по ошибке, нажав Ctrl + C , путем запланированной перезагрузки, сбой питания, …), просто запустите yum update снова после перезагрузки системы и дождитесь ее завершения.

    На практике обычно работает устойчивость. Менеджер пакетов позаботится о том, чтобы сначала распаковать файлы новой версии под временным именем, а затем заменить старые файлы на новый. Если обновление прерывается в течение самой длинной фазы (распаковка, требующая большого количества записей на диске), состояние системы не изменится значимо, поэтому никакого вреда не будет. Если обновление прерывается во время фазы замены, все становится более сложным. Программное обеспечение, которое обновляется, может быть непригодным из-за несоответствия версии между различными файлами.

    Большинство критических пакетов могут обновляться по каждому файлу или иметь шаги настройки, которые выполняются в соответствующем порядке, чтобы гарантировать, что система остается работоспособной. Например, rpm состоит из одного бинарного файла, поэтому вы либо получаете старую, либо новую. То же самое с ядром. Однако, с тысячами пакетов, сотнями тысяч файлов и большим потенциалом для переупорядочения записи на уровне файловой системы, комбинаторика очень и очень высока, и невозможно проверить все. Таким образом, можно получить систему, которая не загружается чисто, если она была прервана в середине обновления. Но вероятность очень мала (конечно, запрет ошибок).

    Interesting Posts

    Удалить файл, если символьная ссылка ушла

    Escape regex sed (1 строчный регистр, 1 верхний регистр, 1 символ, 1 номер) для bash

    Заблокировать запуск / Путь к панели задач в Debian Wheezy / Gnome (возможно в Squeeze)

    Разница между ! vs !! vs * в / etc / shadow

    Как использовать файл casper-rw для сохранения

    Каковы правильные настройки для Ubuntu Touch под qemu?

    Закрытие консоли

    Какая лучшая среда рабочего стола для использования 2 разных мониторов с сильно отличающимся DPI?

    «Du» показывает, что что-то занимает много места, но что именно?

    Как я могу определить лимит пользовательской базы для принтера?

    Используйте rsync для сравнения удаленного каталога с локальным и сохраните различия в другом локальном каталоге

    Как сортировать большие файлы?

    Проблема с получением файла tar.gz для рекомбинации и извлечения. Недействительный архив .gz

    Как сделать экспорт переменных PATH на MacOSX постоянным?

    Как настроить шлюз для wlan0?

    Linux и Unix - лучшая ОС в мире.