Обновление удаленной системы всегда требует большей осторожности, чем на локальных компьютерах. Конечно, лучше если у вас есть к серверу физический доступ, доступ через IP-KVM консоль или, хотя бы, человек, способный выполнить несколько команд и прочитать текст на экране. В случае удаленных серверов чаще всего оказывается, что именно этот сервер и обеспечивает интернетом удаленный офис, а из персонала в офисе есть только бухгалтера, впадающие в панику при виде латинских букв и упоминании слова "сервер".

Здесь я приведу небольшой список работ, которые необходимо провести при обновлении удаленного сервера FreeBSD для минимизации рисков. Работы разделим на два этапа: подготовка и обновление.

Подготовка

  1. Так как вероятность того, что обновление пройдет с ошибками, исключить полностью нельзя, то необходимо известить руководство о запланированном обновлении, возможных рисках и выбрать время, когда ущерб будет минимален. Понятно, что производить обновление сервера накануне сдачи квартального отчета, либо во время аудита будет неверно.
  2. Сделать резервную копию настроек (все, что вам дорого) и сохранить её локально и на другом сервере.
    $ sudo tar zcvf /home/user/backup-config.tgz /etc /usr/local/etc /var/named/etc /var/db/ports
    $ scp /home/user/backup-config.tgz Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.:/home/user/
    
  3. Сделать резервную копию системы. Это может сберечь вам кучу времени при восстановлении системы, кроме этого, имея такую резервную копию, можно отправить к серверу помощника для восстановления сервера, а не ездить лично. Если свободного места под бэкап не очень много, то перед этим можно немного подчистить всевозможные кэши, логи и прочую ерунду.
    $ sudo tar zcvf /home/user/backup-full.tgz /boot /bin /etc /lib /libexec /rescue /sbin /usr /var
    
  4. Проверить версию установленного ядра.
    $ uname -a
    
    Так мы проверим, какая версия системы работает, какое ядро установлено, когда оно последний раз собиралось, текущую архитектуру.
  5. Проверить модель установленного процессора.
    $ grep -i cpu /var/run/dmesg.boot
    
    Так мы сможем понять, какую архитектуру следует использовать, а также выясним необходимость включения SMP.
  6. Проверить пароль root / установить пароль root. В случае проблем он может понадобиться и, возможно, его придется сообщать кому-нибудь на месте.
    $ sudo passwd root
    
  7. Проверить наличие свободного места на дисках, опций монтирования. Например, версии 6-7 требовали исполнения скрипта из /tmp, а этот раздел у меня монтировался с nosuid, noexec опциями, что приводило к ошибкам обновления. Freebsd-update скачивает обновления в /var/db/freebsd-update и может занять до гигабайта места на диске.
    $ df -h
    $ mount
    
  8. В случае если запущено не GENERIC ядро, то зачастую проще установить на время обновления GENERIC. Компилируем, устанавливаем и перезагружаемся
    $ sudo make clean
    $ sudo make buildkernel KERNCONF=GENERIC
    $ sudo make installkernel KERNCONF=GENERIC
    $ sudo reboot now 
  9. Смотрим, какие изменения вносились по сравнению с GENERIC ядром. Естественно в каталоге соответствующей архитектуры - здесь i386, у вас может быть, например, amd64:
    diff /usr/src/sys/i386/conf/GENERIC /usr/src/sys/i386/conf/CUSTOMKERNEL
    

Обновление

  1. Указываем в ключе -r номер релиза, до которого будем обновляться
    $ sudo freebsd-update -r 9.3-RELEASE upgrade
    
  2. Отвечаем на вопросы по поводу внесения изменений в конфигурационные файлы.
  3. Первый этап обновления - установка нового ядра GENERIC и последующая перезагрузка
    $ sudo freebsd-update install
    $ sudo reboot now
    
  4. Убедимся, что ядро установилось и устанавливаем все остальное
    $ uname -a
    $ sudo freebsd-update install
    
  5. Вносим изменения в конфигурацию ядра на основании нового GENERIC, либо используем существующий файл. Для минорных изменений версий, вроде обновления с 7.3 на 7.4 можно использовать существующий файл. В любом случае полезно посмотреть, что нового в GENERIC появилось в новой версии.
    $ sudo make clean
    $ sudo make buildkernel KERNCONF=CUSTOMKERNEL
    $ sudo make installkernel KERNCONF=CUSTOMKERNEL
    $ sudo reboot now 
  6. После перезагрузки убедимся, что работает наше ядро. Желательно пересобрать порты, особенно в случае мажорных обновлений. Для этого воспользуемся портом portupgrade:
    $ uname -a
    $ sudo portupgrade -af
  7. Или portmaster
    $ sudo portmaster -aD
     


 

 

Добавить комментарий
  • Комментарии не найдены