HOME / コンピュータTips / Solaris / Live Upgrade

Date: 2024/09/07 |  このエントリーをはてなブックマークに追加  |  Tags: solaris opensolaris Live Upgrade liveupgrade lu アップグレード アップデート

Solaris/Solaris Express(SXCE/SXDE)のアップグレード

参考URL

事前準備

ここではSXCE70からSXCE87へのアップグレードを行います。

事前準備として

  • 新しいバージョンのOSイメージが必要
    • これは当たり前として・・・・
  • ブートパーティションのコピーが必要

SolarisのLiveUpgradeは、アップデート後、再起動に失敗したときのため、起動セットをもう一つ作成します。

これは、Windowsのサービスパックを当てるときを思い出してもらえば良いと思います。これは古いバージョンのサービスパックは、Windowsディレクトリ以下に圧縮して保存されていますよね?その結果、新しいサービスパックでアプリケーションに問題が出ても、古いバージョンに戻すこと(アンインストール)ができるのですが、この方法はお手軽である一方で、もし、サービスパックがアンインストールできなかったどうしよう?という問題もあります。

Solarisのluは、ブートイメージをもう一つ別に持つことによって、ディスクはよけいに使いますが、ダメならすぐに元の環境に再起動し直すことができるというコンセプトで設計されています。

なお、このLUは今後バージョンアップされず、OpenSolaris OS 2008.05では、beadminという概念によって、ZFSのスナップショット、クローニングの機能を使い、さらに利便性高く実現されていますので、今後、そちらに移行していくのでしょう。

LUの起動イメージの準備

format > ディスク名選択(今回はc0d0を選択) > partition > printで、下記のように出ます。

 Part Tag Flag Cylinders Size Blocks

 0       root    wm     526 -  2565       15.63GB    (2040/0/0)   32772600
 1       swap    wu       3 -   525        4.01GB    (523/0/0)     8401995
 2     backup    wm       0 - 22521      172.53GB    (22522/0/0) 361815930
 3 unassigned    wm    2566 -  4605       15.63GB    (2040/0/0)   32772600
 4 unassigned    wm       0                0         (0/0/0)             0
 5 unassigned    wm       0                0         (0/0/0)             0
 6 unassigned    wm       0                0         (0/0/0)             0
 7       home    wm    4606 - 22521      137.24GB    (17916/0/0) 287820540
 8       boot    wu       0 -     0        7.84MB    (1/0/0)         16065
 9 alternates    wu       1 -     2       15.69MB    (2/0/0)         32130

3はアンアサインでブート環境の0と同サイズ、つまりc0d0s3へ、今後LUのイメージを入れようと思っている部分です。

Live Upgradeを最新に。

まずは最新のLUをインストールします。

isoファイルのマウント

# lofiadm -a /jpc/tmp/sol-nv-b87-x86-dvd.iso 
/dev/lofi/1
# mount -F hsfs /dev/lofi/1 /mnt

古いバージョンの消去。依存関係は出ますが、そのまま消去します。

pkgrm SUNWluu SUNWlucfg SUNWlur

次にインストール

cd /mnt/Solaris_11/Product
pkgadd -d . SUNWlucfg SUNWlur SUNWluu

Live Upgrade

新しいブート環境の作成

現在のブート環境をSXCE70とします。これはc0d0s0に格納されています。再起動後はc0d0s3となり、ブート環境をSXCE87と呼ぶことにします。

私のシステムでは、すべてのs0に入っていたので、次のようなコマンドを実行します。

lucreate -c 'SXCE70' -m '/:/dev/dsk/c0d0s3:ufs' -n 'SXCE87'

この例では、1台のディスクの別のところにブートイメージを作ったわけですが、他にもブート環境(/,/var,/etc,/opt,/usrのこと)のスライスをわっていたり、アップデートついでにソフトミラー化したり、別のディスクにしたり、いろいろできます。

そのほかの環境を知りたい場合は、下記のリンクからたぐってください。

  • http://docs.sun.com/app/docs/doc/820-4548/overview-3?a=view

lucreateの実行結果、

Discovering physical storage devices
Discovering logical storage devices
Cross referencing storage devices with boot environment configurations
Determining types of file systems supported
Validating file system requests
Preparing logical storage devices
Preparing physical storage devices
Configuring physical storage devices
Configuring logical storage devices
Analyzing system configuration.
No name for current boot environment.
Current boot environment is named <SXCE70>.
Creating initial configuration for primary boot environment <SXCE70>.
The device </dev/dsk/c0d0s0> is not a root device for any boot environment; cannot get BE ID.
PBE configuration successful: PBE name <SXCE70> PBE Boot Device </dev/dsk/c0d0s0>.
Comparing source boot environment <SXCE70> 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.
Searching /dev for possible boot environment filesystem devices
                             
Updating system configuration files.
The device </dev/dsk/c0d0s3> is not a root device for any boot environment; cannot get BE ID.
Creating configuration for boot environment <SXCE87>.
Source boot environment is <SXCE70>.
Creating boot environment <SXCE87>.
Checking for GRUB menu on boot environment <SXCE87>.
The boot environment <SXCE87> does not contain the GRUB menu.
Creating file systems on boot environment <SXCE87>.
Creating <ufs> file system for </> in zone <global> on </dev/dsk/c0d0s3>.
Mounting file systems for boot environment <SXCE87>.
Calculating required sizes of file systems for boot environment <SXCE87>.
Populating file systems on boot environment <SXCE87>.
Checking selection integrity.
Integrity check OK.
Populating contents of mount point </>.
Copying.

ここでコピーが走るので、猛烈に時間がかかります。

どのぐらいパワーを使ってるかは裏で、iostatを使えば分かります。

Creating shared file system mount points.
Creating compare databases for boot environment <SXCE87>.
Creating compare database for file system </>.
Updating compare databases on boot environment <SXCE87>.
Making boot environment <SXCE87> bootable.
Updating bootenv.rc on ABE <SXCE87>.
Population of boot environment <SXCE87> successful.
Creation of boot environment <SXCE87> successful.

これが成功例、もし失敗した場合は、ludeleteで削除する。手で削除するとはまるのでやってはいけない(汗

コピー先をアップデートする。

/mntはSXCE87のISOをmountした場所。DVD-ROMのメディアならばその箇所にする。

luupgrade -u -n SXCE87 -s /mnt

実行結果

Copying failsafe kernel from media.
Uncompressing miniroot
Uncompressing miniroot archive (Part2)
13364 ブロック
Creating miniroot device
miniroot filesystem is <ufs>
Mounting miniroot at </mnt/Solaris_11/Tools/Boot>
Mounting miniroot Part 2 at </mnt/Solaris_11/Tools/Boot>
Validating the contents of the media </mnt>.
The media is a standard Solaris media.
The media contains an operating system upgrade image.
The media contains <Solaris> version <11>.
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 <SXCE87>.
Checking for GRUB menu on ABE <SXCE87>.
Checking for x86 boot partition on ABE.
Determining packages to install or upgrade for BE <SXCE87>.
Performing the operating system upgrade of the BE <SXCE87>.
CAUTION: Interrupting this process may leave the boot environment unstable 
or unbootable.
Upgrading Solaris: 10% completed

書いてあるとおり、ここでインタラプトしてはいけない。それをすると、ludeleteをして最初からやり直しである。

そして、ここで100%になるまで時間がかかる。

Upgrading Solaris: 100% completed
Installation of the packages from this media is complete.
Deleted empty GRUB menu on ABE <SXCE87>.
Adding operating system patches to the BE <SXCE87>.
The operating system patch installation is complete.
ABE boot partition backing deleted.
Configuring failsafe for system.
Failsafe configuration is complete.
INFORMATION: The file </var/sadm/system/logs/upgrade_log> on boot 
environment <SXCE87> contains a log of the upgrade operation.
INFORMATION: The file </var/sadm/system/data/upgrade_cleanup> on boot 
environment <SXCE87> contains a log of cleanup operations required.
WARNING: <1> packages failed to install properly on boot environment <SXCE87>.
INFORMATION: The file </var/sadm/system/data/upgrade_failed_pkgadds> on 
boot environment <SXCE87> contains a list of packages that failed to 
upgrade or install properly.
INFORMATION: Review the files listed above. Remember that all of the files 
are located on boot environment <SXCE87>. Before you activate boot 
environment <SXCE87>, 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 <SXCE87> is partially complete.
Installing failsafe
Failsafe install is complete.

ブート環境のアクティブ化

まずは状況を確認する

lustatus

結果

Boot Environment           Is       Active Active    Can    Copy      
Name                       Complete Now    On Reboot Delete Status    
-------------------------- -------- ------ --------- ------ ----------
SXCE70                     yes      yes    yes       no     -         
SXCE87                     yes      no     no        yes    -         

ls Completeがyesであることを確認する。

SXCE87の準備ができたのでアクティブにする

luactivate SXCE87

結果

WARNING: <1> packages failed to install properly on boot environment <SXCE87>.
INFORMATION: </var/sadm/system/data/upgrade_failed_pkgadds> on boot 
environment <SXCE87> contains a list of packages that failed to upgrade or 
install properly. Review the file before you reboot the system to 
determine if any additional system maintenance is required.

Saving latest GRUB loader.
Generating partition and slice information for ABE <SXCE87>
Boot menu exists.
Generating direct boot menu entries for ABE.
Generating xVM menu entries for ABE.
Generating direct boot menu entries for PBE.

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

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. Do *not* change *hard* disk order in the BIOS.

2. Boot from the Solaris Install CD or Network and bring the system to 

Single User mode.

3. Mount the Parent boot environment root slice to some directory (like 

/mnt). You can use the following command to mount:

     mount -Fufs /dev/dsk/c0d0s0 /mnt
4. Run <luactivate> utility with out any arguments from the Parent 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
GRUB menu is on device: </dev/dsk/c0d0s0>.
Filesystem type for menu device: <ufs>.
Activation of boot environment <SXCE87> successful.

成功したらしいが、最初に、1のパッケージが失敗しているというのが気になるので、書いてあるとおりにする

CDROMがマウントされてたらアンマウント

umount /mnt
lofiadm -d /dev/lofi/1

新しいブートパーティションをマウント

mount /dev/dsk/c0d0s3 /mnt
cat /mnt/var/sadm/system/data/upgrade_failed_pkgadds

結果

SUNWscmu

なにそれ?

pkginfo SUNWscmu
system      SUNWscmu Sun StorageTek Availability Suite Cache Management (usr)

関係がなさそうなので消そうとおもったら、依存関係がいろいろあるのでそのままリブート

init 6

コンピュータTips/Solaris

Recent Updates