Что такое Live Upgrade?
Если коротко — набор инструментов, которые позоляют создать альтернативную среду загрузки, сделать копию загрузочных устройств текущей системы, или накатить на нее новую ОС, накатить или удалить патчи, пакаджи. Затем активируем ее и перегружаем сервер — вуаля, новая или пропатченная ОС загружена. Если возникли какие-либо сложности — в любой момент можно откатиться обратно. Количество этих альтернативных ОС зависит только от наличия у нас доступных загрузочных дисков (про ZFS будет написано в отдельной статье, там все еще проще отдельная статья про переход на ZFS).
Устанавливаться можно как с инсталлера, так и jumpstart-а. Но самая главная фишка — все манипуляции проводятся на загруженной рабочей системе, и время простоя — это только время необходимое на перезагрузку. Не нужно многочасовых простоев и работы ночами для наката патчей, не нужно длительных согласований времени простоя системы — установите все днем с помощью LiveUpgrade ;)

Инструменты, которые входят в Live Upgrade:

lu — GUI, наглядно, но не все функции доступны
luactivate — Активировать выбраную среду загрузки
lucancel — Отменить запланированную операцию LU
lucompare — Сравнивает две среды загрузки (текущую и альтернативную, использует для этого команду diff)
lucreate — Создать новую среду загрузки (сразу копирует туда текущую среду)
lucurr — Показать имя загруженной сейчас среды
ludelete — Удалить выбранную среду загрузки
lufslist — Выводит список файловых систем для выбранной среда
lumake — Пересоздает среду загрузки (копирует туда текущую среду)
lumount/luumount — Замонтировать/отмонтировать альтернативную среду загрузки (монтирует файловые системы в каталог /.alt.ИМЯ_СРЕДЫ )
lurename — Переименовать среду загрузки (ну т.е. назавли например s10_u8_ufs, не понравилось — переименовали в s10_1)
lustatus — Выводит текщий статус всех сред загрузки, определенных в системе
luupgrade — Инсталлировать, накатить-удалить патчи, пакаджи на альтернативную среду загрузки.

  1. Подготовка к созданию альтернативной среды загрузки
  2. Cоздаем альтернативную среду загрузки
  3. Действия с альтернативной средой загрузки
  4. Активируем новую среду загрузки

Подготовка к созданию альтернативной среды загрузки
Для загрузки ОС, в моем случае, нужны две файловые системы — / и /var. Они расположены, соответственно:

# devnm / /var
/dev/md/dsk/d1 /
/dev/md/dsk/d5 /var
# metastat -p d1 d5
d1 -m d10 1
d10 1 1 c1t0d0s0
d10 1 1 c1t1d0s0
d5 -m d50 1
d50 1 1 c1t0d0s5
d50 1 1 c1t1d0s5

Если есть отдельный свободный диск, то лучше всего расположить альтернативную среду загрузки на нем:

prtvtoc -s /dev/rdsk/c1t0d0s2 | fmthard  -s - /dev/rdsk/c1t3d0s2
metainit d12 1 1 c1t3d0s0
metainit d52 1 1 c1t3d0s5

Теперь маленький трюк — делаем зеркало из одной половинки. Накладных расходов никаких, зато можно будет
потом «на горячую» его зеркалить или разбивать.

metainit  d15 -m d12
metainit  d55 -m d52

Если свободных загрузочных дисков нет, но есть загрузочное зеркало, то можно его
разбить (не забудьте, только сделать бэкап — эта тема не раз здесь поднималась
1,
2 )
и сделать из одной из половинок новую среду загрузки.

metadetach d1 d11
metadetach d5 d51
metainit  d15 -m d11
metainit  d55 -m d51

Cоздаем альтернативную среду загрузки
Создаем альтернативную среду загрузки, пусть наша текущая среда называется s10_1, а новая s10_2:

# lucreate  -c s10_1  -m /:/dev/md/dsk/d15:ufs -m /var:/dev/md/dsk/d55:ufs  -n s10_2

Установка или удаление пакаджей
Устанавливаем (ключик -p) или удаляем (ключик -P) пакаджи:

# luupgrade -n s10_2 -s /tmp/packages  -p `cat /tmp/packages/packages_order`

Установка или удаление патчей
Накатываем (ключик -t) или откатываем (ключик -T) патчи:

# luupgrade -n s10_2 -s /tmp/recomended  -t `cat /tmp/recomended/patch_order`

Установить ОС с помощью инсталлятора
Монтируем по NFS инсталляционный образ:

# mount 10.99.2.6:/import/Solaris10  /tmp/Solaris10

Устанавливаем ОС с помощью инсталлятора (ключик -i). При этом будет пройден стандартный инсталляционный путь,
с ответами на все вопросы, итд:

# luupgrade -i -n s10_2 -s /tmp/Solaris10

Установка с JumpStart
Готовим файл profile для JumpStart

# cat profile
install_type upgrade
cluster         SUNWCXall

Можно также добавить или удалить пакеты использовав ключевое слово package

package SUNWxwice add

Монтируем по NFS каталоги JumpStart и инсталляционный образ:

# mount 10.99.2.6:/import/Solaris10  /tmp/Solaris10
# mount 10.99.2.6:/import/jumpstart  /tmp/jumpstart

Инсталлируем образ ОС заново (ключик -u) с инсталляционного образа:

# echo "auto_reg=disable" > /tmp/sysidcfg
# luupgrade -u -n s10_2 -s /tmp/Solaris10 -j /tmp/jumpstart/v890test/profile -k /tmp/sysidcfg

Установить ОС из flar архива
Монтируем по NFS инсталляционный образ:

# mount 10.99.2.6:/import/Solaris10  /tmp/Solaris10

Устанавливаем ОС из flar-архива (ключик -f):

# luupgrade -f -n s10_2 -s /tmp/Solaris10 -a /flar/s10u8_sun4u.flar

Активируем новую среду загрузки
Активируем:

# luactivate s10_2
A Live Upgrade Sync operation will be performed on startup of boot environment 's10_2'.
...
# lustatus
Boot Environment           Is       Active Active    Can    Copy
Name                       Complete Now    On Reboot Delete Status
-------------------------- -------- ------ --------- ------ ----------
s10_1                      yes      yes    no        no     -
s10_2                      yes      no     yes       no     -

Перегружаем (обязательно через init или shutdown):

# init 6

Ссылки в тему:

UPDATE: 20110414

3 комментария на запись “Solaris Live Upgrade. Часть 1”

  1. Serge пишет:

    «Теперь маленький трюк – делаем зеркало из одной половинки.»
    Это же можно сделать в команде lucreate.

  2. ikorolev пишет:

    Ну да, эта фишка появилась в Solaris 9 Update 4 (08/03) lucreate (Example 9 Using Solaris Volume Manager Volumes). Ну как говорится в манах — » The lucreate command supports a limited subset of Solaris Volume Manager functions.»
    Если обновлять с более ранней версии Solaris, то лучше воспользоваться вышеприведенным методом ;)

  3. dober пишет:

    Вот только после начала применения этого lucreate будет засада, если на rpool создать ещё какие-то файловые системы, а потом удалить, и переключится на другой lu. Я пока всей цепочки зависимостей не выстроил ( не было времени для экспериментов), что при каких-то обстоятельствах вернуться на какое-то из lu может не получиться. luactivate будет писать, что не может примонтировать какую-то фс.