ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11.1 での Image Packaging System を使用したソフトウェアのパッケージ化および配布 Oracle Solaris 11.1 Information Library (日本語) |
ブート環境 (BE) に配布される一部のファイルは、複数の BE を含む環境で正常なシステム操作を保持するために BE 間で共有される必要があります。一般に、IPS では BE 間で共有される内容の配布をサポートしていません。1 つの BE で更新された、そのような共有内容は、ほかの BE の要件を満たさない可能性があります。このセクションでは、BE 間で共有される内容を配布する方法について説明します。
次のディレクトリは、IPS によって BE 間ですでに共有されています。
/var/audit /var/cores /var/crash /var/mail
各 BE 内では、これらのディレクトリは次の共有ディレクトリへのシンボリックリンクです。
/var/share/audit /var/share/cores /var/share/crash /var/share/mail
これらの共有ディレクトリは、/var/share にマウントされた共有データセットである VARSHARE データセット内にあります。
BE 間で共有される必要のあるデータがほかにあり、それが IPS パッケージで非共有として配布される場合、管理者はそのようなデータを別個のデータセットまたはリモートファイルサーバーに配置する可能性があります。ただし、ディレクトリごとのデータセットを作成することは、1 つのゾーンで多数のデータセットを作成することを意味しており、それは望ましくありません。
代わりに、次の手順を使用して共有データセットを配布するパッケージを作成するか、以前に非共有として配布された内容を共有するようにパッケージを変更します。IPS では、内容を共有しなかった古いバージョンのパッケージから、BE 間で内容を共有する同じパッケージの新しいバージョンへの更新をサポートしています。
この手順では、BE 間で共有される内容を配布する必要があるパッケージの設計方法について説明します。
BE 間でデータを共有するには、ブート中に BE にマウントされた共有データセットを、BE の内側の場所からその共有データセット内を指すシンボリックリンクとともに使用します。BE の内側で、基本的なディレクトリ構造をステージングディレクトリに配布します。ブート中に BE の内側に配置された内容を共有データセットに移動する SMF サービスを指定し、リブートを必要とするアクチュエータを指定します。
パッケージ内で、共有内容のためのステージング領域を配布します。たとえば、.migrate というディレクトリを配布できます。
共有データセットで必要なディレクトリ構造を提供するサブディレクトリを .migrate ディレクトリに渡します。
必要に応じて、ステージング領域のディレクトリ構造にファイルを渡します。リンクなどの他のファイルシステムオブジェクトは共有できません。
ステージング領域に配布された内容が以前に非共有として配布されたものである場合は、新しい dir または file アクションで salvage-from 属性を使用します。次の例では、以前に /opt/myapplication/logs に配布された内容が、BE 間で共有されるデータセットに配布されるようになります。この共有データセットのステージング領域は /opt/.migrate です。
次のアクションは以前配布されたものです。
dir path=opt/myapplication/logs owner=daemon group=daemon mode=0755
次のアクションは、共有されるディレクトリのための新しいアクションです。
dir path=opt/.migrate/myapplication/logs owner=daemon group=daemon \ mode=0755 reboot-needed=true salvage-from=/opt/myapplication/logs
salvage-from 属性については、「ディレクトリの削除または名前変更時のパッケージ解除された内容の移動」でも説明されています。
ブート中に、ファイルの内容をステージングディレクトリから共有データセットに移動するためのスクリプトを SMF メソッドのスクリプトの一部として実行できます。このスクリプトでは、次の手順を実行する必要があります。
SMF メソッドスクリプト内の次のコマンドは、/opt/share にマウントされるデータセット rpool/OPTSHARE を作成します。/opt からのほかの共有内容もこのデータセットを使用できます。このスクリプトでは、zfs list を使用してデータセットがすでに存在しているかどうかをテストします。
zfs create -o mountpoint=/opt/share rpool/OPTSHARE
共有データセットでは、BE のステージングディレクトリの下に定義されたディレクトリ構造の、まだ存在していない部分をすべて再作成します。
ファイルの内容を、ステージングディレクトリから共有データセットに移動します。
次のアクションでは、以前にパッケージ化されたディレクトリから、システムがリブートしたときにスクリプトによって作成される /opt/share 内の共有ディレクトリへのシンボリックリンクを作成します。
link path=opt/myapplication/logs target=../../opt/share/myapplication/logs
reboot-needed アクチュエータは、「ソフトウェアの自己アセンブリ」 に説明されている不変ゾーンの更新を適切にサポートするために、これらのディレクトリエントリに必要です。読み取り専用でリブートする前に、自己アセンブリが必要な場合、不変ゾーンは svc:/milestone/self-assembly-complete:default マイルストーンまで読み取り/書き込みモードでブートします。詳細は、zonecfg(1M) マニュアルページの file-mac-profile プロパティーを参照してください。
リブート時に、SMF サービスは新しいディレクトリおよび回収されたディレクトリの内容を共有データセットに移動します。/opt/myapplication からのシンボリックリンクは、共有データセットを指しています。