вторник, 20 апреля 2010 г.

Обновление root pool при помощи Live Upgrade

Ранее я писал о том, как выполнить миграцию на root pool ZFS посредством Live Upgrade. Сейчас мы рассмотрим обновление корневого пула, а точнее, выполнение апгрейда операционной системы.

Как мы это сделаем? "Всегда правой" ;)

Создадим новый boot environment (BE) в рамках существующего пула:

server2# lustatus
Boot Environment           Is       Active Active    Can    Copy    
Name                       Complete Now    On Reboot Delete Status  
-------------------------- -------- ------ --------- ------ ----------
zfsBE                      yes      yes    yes       no     -       
server2# lucreate -o zfsBE -n zfsBE_new
Analyzing system configuration.
Comparing source boot environment [zfsBE] file systems with the file
system(s) you specified for the new boot environment. Determining which
file systems should be in the new boot environment.
Updating boot environment description database on all BEs.
Updating system configuration files.
Creating configuration for boot environment [zfsBE_new].
Source boot environment is [zfsBE].
Creating boot environment [zfsBE_new].
Cloning file systems from boot environment [zfsBE] to create boot environment [zfsBE_new].
Creating snapshot for [rpool/ROOT/zfsBE] on [rpool/ROOT/zfsBE@zfsBE_new].
Creating clone for [rpool/ROOT/zfsBE@zfsBE_new] on [rpool/ROOT/zfsBE_new].
Setting canmount=noauto for [/] in zone [global] on [rpool/ROOT/zfsBE_new].
Population of boot environment [zfsBE_new] successful.
Creation of boot environment [zfsBE_new] successful.

Примонтируем по NFS дистрибутив для обновления:

server2# mount -F nfs 192.168.219.30:/seif/os /mnt


Выполним обновление (система все время находится в онлайне):


server2# luupgrade -u -n zfsBE_new -s /mnt/SunOS5.10_1009_sun4

62652 blocks
miniroot filesystem is [lofs]
Mounting miniroot at [/mnt/SunOS5.10_1009_sun4/Solaris_10/Tools/Boot]
Validating the contents of the media [/mnt/SunOS5.10_1009_sun4].
The media is a standard Solaris media.
The media contains an operating system upgrade image.
The media contains [Solaris] version [10].
Constructing upgrade profile to use.
Locating the operating system upgrade program.
Checking for existence of previously scheduled Live Upgrade requests.
Creating upgrade profile for BE [zfsBE_new].
Determining packages to install or upgrade for BE [zfsBE_new].
Performing the operating system upgrade of the BE [zfsBE_new].
CAUTION: Interrupting this process may leave the boot environment unstable
or unbootable.
Upgrading Solaris: 100% completed
Installation of the packages from this media is complete.
Updating package information on boot environment [zfsBE_new].
Package information successfully updated on boot environment [zfsBE_new].
Adding operating system patches to the BE [zfsBE_new].
The operating system patch installation is complete.
INFORMATION: The file [/var/sadm/system/logs/upgrade_log] on boot
environment [zfsBE_new] contains a log of the upgrade operation.
INFORMATION: The file [/var/sadm/system/data/upgrade_cleanup] on boot
environment [zfsBE_new] contains a log of cleanup operations required.
INFORMATION: Review the files listed above. Remember that all of the files
are located on boot environment [zfsBE_new]. Before you activate boot
environment [zfsBE_new], determine if any additional system maintenance is
required or if additional media of the software distribution must be
installed.
The Solaris upgrade of the boot environment [zfsBE_new] is complete.
Installing failsafe
Failsafe install is complete.

Активируем новый BE и перезапускаемся:

server2# luactivate zfsBE_new


**********************************************************************

The target boot environment has been activated. It will be used when you
reboot. NOTE: You MUST NOT USE the reboot, halt, or uadmin commands. You
MUST USE either the init or the shutdown command when you reboot. If you
do not use either init or shutdown, the system will not boot using the
target BE.

**********************************************************************

In case of a failure while booting to the target BE, the following process
needs to be followed to fallback to the currently working boot environment:

1. Enter the PROM monitor (ok prompt).

2. Boot the machine to Single User mode using a different boot device
(like the Solaris Install CD or Network). Examples:

     At the PROM monitor (ok prompt):
     For boot to Solaris CD:  boot cdrom -s
     For boot to network:     boot net -s

3. Mount the Current boot environment root slice to some directory (like
/mnt). You can use the following command to mount:

     mount -Fzfs /dev/dsk/c0t1d0s0 /mnt

4. Run [luactivate] utility with out any arguments from the current boot
environment root slice, as shown below:

     /mnt/sbin/luactivate

5. luactivate, activates the previous working boot environment and
indicates the result.

6. Exit Single User mode and reboot the machine.

**********************************************************************

Modifying boot archive service
Activation of boot environment [zfsBE_new] successful.


Все. Обновление завершено. Осталось удалить старый BE.

четверг, 8 апреля 2010 г.

Резервирование и восстановление ZFS V

 Восстановление root pool

Процедура  восстановления  root  pool   в  случае, например, полного  отказа  системного диска требует несколько большего внимания администратора и должна выполняться вручную. Данная процедура разработана на основе алгоритма восстановления Solaris Internals.

При  замене  поврежденного  системного диска выполняется ряд обязательных  процедур,  связанных  с заменой дисков. Вместе с  тем, при наличии удаленной резервной копии корневого пула процедура   восстановления   позволяет  сравнительно  быстро привести систему в загружаемое состояние.

Прежде  всего,  для восстановления корневого пула необходима его  резервная копия - в виде архива (компрессированного или нет)  или  сохраненная  в виде файловой системы на резервном сервере.

Последующие действия описаны в виде алгоритма ниже.
1. Необходимо загрузить восстанавливаемую систему с внешнего носителя - DVD, CD, USB или сети:

ok boot cdrom

или

ok boot net

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

backup_server# netservices open
backup_server# vi /.rhosts
backup_server# vi /etc/hosts_equiv

При  наличии  сконфигурированного  IPF  необходимо разрешить доступ на сервер восстановления c восстанавливаемой машины.

3.  При  физическом  отказе  и замене системного диска новый диск  необходимо  пометить  и разбить на слайсы. Метка диска должна иметь тип SMI.

4. На восстанавливаемой машине пересоздается корневой пул на новом диске, например:


# zpool create -f -o failmode=continue -R /a \
  -m legacy rpool c0t0d0s0

5. На новый диск устанавливается загрузчик:

# installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk \
/dev/rdsk/c0t0d0s0
или

# installgrub /boot/grub/stage1 /boot/grub/stage2 \

/dev/rdsk/c0t0d0s0

6.    Далее    выполняется   прием   рекурсивного   снапшота и  восстановление  содержимого пула с удаленного резервного сервера:

# rsh backup_server zfs send backup_data/rpool|zfs receive -Fdv rpool

либо из компрессированного архива, находящегося на удаленном резервном сервере:

# rsh backup_server gzip -c -d pegasus.rpool.0.zfs.gz| zfs receive -Fdv rpool

Можно    также    выполнить    восстановление    root   pool непосредственно  с  локальной  архивной  копии, находящейся, например,  на  USB-устройстве  (неархивированный  стрим, для
компрессированного архива требуется предварительно выполнить декомпрессию  ввиду возможной недоступности gzip  в miniroot загрузочного дистрибутива):

# cd /usbmount
# cat pegasus.rpool.0.zfs|zfs receive -dFv rpool

Операция  восстановления  содержимого пула может потребовать некоторого времени.

7.  Необходимо  убедиться,  что  корневой  пул  был  успешно восстановлен в полном объеме командой zfs list.

8.  Необходимо  установить  свойство  bootfs  корневого пула в правильное (оригинальное) значение:

# zpool set bootfs=rpool/ROOT/s10x_u8wos_08a rpool

Пересоздание   dump  и  swap  разделов  не  требуется,  если резервная   копия  корневого  пула  создавалась  при  помощи zfsbackup.   Рекурсивный  снапшот  корневого  пула  содержит данные разделы и они будут восстановлены автоматически.

9. Перезагрузить систему с восстановленного пула:

# init 6

Замечание:  Вместо  пересоздания  пула  и его восстановления можно   также   использовать   (начиная   с   версии  10/09) функциональность    zflash    и   выполнить   восстановление средствами  JumpStart  flash  install с некомпрессированного стрима (архива), созданного утилитой zfsbackup.