瀧@ジャストプレイヤーです。
OpenSolarisのZoneは、Solaris11には「かなりの確率」で、attachに失敗しま す。 僕の手持ちのもので半分以上がfailします。 もともと名前も違うOSなので、仕方がないと言えば仕方がないのですが・・・。 また、Zoneのアップデートはとても大変なのですが、実運用に置いて、Zoneの アップデートに関する話を真面目に書いてる例は、日本語、英語含めてほとんど 無いので、ちょっとおちゃらけてかいてますが、人によっては相当の資料になる かも知れません:) 自称Solaris Container Master(嘘)のプライドで何とかZoneをattach -uする ためのTipsをポストします。 *ちなみに、下記の作業は、zoneの環境を壊滅的に破損させる行為でもあるの で、 やるまえに、かならず利用しているzbeに対してsnapshotをとってください。 zbeはbeadmの数だけ、複数あるので、現在利用している物(一番てっとり速くみ るには、mountしてるもの)を間違えないようにしてください。 ○ zoneのアップデート方法 アップデートしたzoneは基本、そのままではbootできません。 マイナーアップデートぐらいなら起動はできるのですが。 アップデートは、 zoneadm -z ゾーン名 detach && zoneadm -z ゾーン名 attach -u で、行います。 アップデート中は、ログファイル名がでてきます。こんなのです。 /var/tmp/ZONE名.attach_log.1faGlD pfexec tail -f 〜 で見ることをお勧めします。 これで、わずかなZoneがUpdateに成功します。 ○ 変なpublisherの物を削除する。 Primary以外のpublisher以外の物を削除します。 Solaris11exからは、attach -uするときのpublisherは、globalzoneのものをみ ます。 仕様変更ですが、どういう深い考察があったのかはしりません。 ちなみに、OpenSolarisでは、publisherはそれぞれのcontainerのpublisherを利 用します。attach時のpublisherアクセスは、実はglobalzoneから行うため、 ・non-globalzoneとglobalzoneで所属するネットワークが違う時 などは、updateができません。 なお、当然、non-global-zone上のlocalhostに立てたIPSサーバからのattach は、卵が先か鶏が先かで、アクセス出来ません。 多分「バグ」っぽい仕様なんですが、--disableされたpublisherも見るので、 globalzoneのpublisherはこのとき「最大限にシンプル」にしておくことをお勧 めします。 そこで、GloalZoneのpublisherを最大限シンプルにすることをお勧めします。 これで、わずかなZoneがattach可能になります。 ○zone rootを直接触り、non-globalzone上のpublisherを確認する 実はupdate時は、 pkg -R zoneのrootディレクトリ install entire が、走っています。このとき、entireに対するアップデートが新しいレポジトリ に対してしっぱいする場合、zoneはattachできずにfailしています。 そこで、これから先はrootディレクトリにたいして直接の作業をします。 pkg -R zoneのrootディレクトリ publisher で、publisherを見ます。変なpublisherが登録されていたら、先に削除しておき ます。 なお、attach -uするときには、「親のprimary」とおなじ物になるため、 primaryはいい加減でOKです。 トラブルシューティングとして、 pkg -R zoneのrootディレクトリ install -v entire で、エラーメッセージを見ることができます。多分consolidation系のpkgで相当 量のエラーが出てると思いますが、実はこのエラーメッセージは実は真面目に見 ても、ほとんどのことがわかりません(多分、依存の関係で、最後に consolidation系が出てくるんじゃないかとおもいます)。 zone内のpublisherを弄ることで、わずかのzoneのupdateは成功します ○インクリメンタルアップデートする。 111→151などのアップデートは基本「無理」です。 そこで、バージョンアップを試みた方が良いです。 そのためにはpublisherを一度、opensolarisのレポジトリに設定します まずこれで、最終版のOpenSolarisのレポジトリを(134b)をひくことになりま す。 pkg -R zoneのrootディレクトリ set-publisher -O http://pkg.opensolaris.org/release opensolaris.org そして、バージョン番号を指定してinstallします。 pkg -R zoneのrootディレクトリ install -v ent...@バージョン番号 111から112・・・とやっていると、正直しんどいので、 134bあたりに、一気にアップデートができるか確認してみます。 最後にzoneadm -z 〜 attach -uで、attachすると151になります。 これで、わずかなzoneがattachに成功します。 ○image-updateを利用する 次の方法で、zone内をimage-updateすることができます。 image-updateは、beadm+install entireだと思っていたのですが、微妙に違う のです。 pkg -R zoneのrootディレクトリ image-update -v 実は、私はこれで救えたことはありません。 ○おかしな依存をもつ系、あるいはobsoluteな物が含まれている物は、事前に削 除する 僕の経験則上、次の物たちは、事前にuninstallしておくと、上手くいきます ・Apache系 ・PHP系 ・PostgreSQL系(無くなりました) ・Sun Studio系 やり方は、 pkg -R zoneのrootディレクトリ uninstall -v 色々なパッケージ名 ちなみに、uninstall -vrとすると、依存関係を更に手繰っていき、がんがんア ンインストールしてしまいます。一件便利なのですが、Solarisはかなりのもの がcore solaris系に依存してるものがあるため、油断するとroot以下がすっぽり いなくなるので注意です。 これで、そこそこの数のコンテナが救われます! ○pkg: No solution was found to satisfy constraints 失敗すると、このエラーがでてくるわけですが。 実運用のさなかにこれが起きると 「どうしてこうなった!」 と思うことがしばしばなのですが、なぜかをマジレスすると、 「ZONEのアップデートはipsのentireに依存している」 からです。 ZONEとは、chrootの親戚のようなものでもあり、その下にあるファイルはipsに よって管理されています。これらをパッケージャ以外を使ってどうやってアップ デートするの?ということなんですが、IPSがRuled Outして想定外の事象に落ち ると、現在の仕様では「速効、諦める!」からです。 諦められなかったら、どうなるか?という方法がありません。 実は僕は誰もMLで質問しないのが不思議なんですが、IPSっていうのは、--force みたいなオプションがなく、なにはともあれ、インストールする的な構造があり ません。 つまり、これに失敗すると、OSのアップデートも難しくなるし、zoneのアップ デートも難しくなるのです。 そして、かくして、上のTIPSを全部試してみてだめだと、ほとんど策はなく、そ のZONEは見事、役立たずのディレクトリと変わるのですが、最後の手段がありま す。 image-createです。 ただし、image-createをする場合、OSのイメージが「初期化」されます。 つまり、image-createするということは、 「初期化されようが、ZONEが起動されないのは困る! ただのディレクトリよ り、OS情報が初期化され、ファイルが残ってたら、後で復旧できるじゃない か!」 と、いうところまで「追いこまれた」人が使う最後の手段です。 でも、これがあるとないのでは、「かなり」違います。 まず、次のようにしてzoneの中を初期化します(--fullをつけるときもある) pkg image-create -f -z -p solaris=http://pkg.oracle.com/solaris/release/ zoneのルートディレクトリ これだけだと、起動ができないので、system/libraryを、GlobalZoneのものとあ わせます。 pkg -R /zones/kasumiso-web/root install -v --accept system/library かくして、こうやってできたZONEは全くプレーンな子になってしまいます が・・・・。 あとは、publisher等を調整したりして、zoneをattachしてください。 この方法で、「すべてのzoneが救済」されますが、全てが新しい世界になってい ることを忘れること無きよう。 また、pkgのインデックス情報は全て初期化されておりますが、ファイルは残っ ています。 ですから、あとで謎の不具合はでるかもしれません。 この状態まで来たら、ZONEの中で、/.zfs/snapshot/以下の中から、過去のetcの 中を見て、設定などを復元し治すと良いでしょう。 (なお、最後の方法は、 /usr/lib/brand/pkgcreatezone で新しいzoneを作ると きの方法を真似ているので、以下略・・・) zoneadm -z 〜 attach に、--overrideみたいなオプションがあるといいかもし れませんねぇ。これを作るのは簡単ではありますが。 以上です。 -- ------------------- OpenSolarisのVPSレンタルサーバ:Phase2Server http://www.justplayer.ne.jp/ デザイン自由なCMSサービス:WikiPlus http://www.wikiplus.jp/ ------------------- ジャストプレイヤー株式会社 代表取締役社長 瀧 康史 〒422-8077 静岡県静岡市駿河区大和2丁目3-29 ラヴィアンヌ21 201 TEL 054-203-5535 FAX 054-203-5539 mailto:[email protected] http://www.justplayer.co.jp/ ブログ: http://kohju.justplayer.com/ Twitter: http://twitter.com/kohju
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ ug-jposug mailing list [email protected] http://mail.opensolaris.org/mailman/listinfo/ug-jposug
