System Admins and Developers
Jeff Victor著
2013年1月公開(Jeff Victorのブログから転載)
Oracle Solaris 11.1には、さまざまな新機能があります。 oracle.comで新機能の詳細なリストを参照できます。
|
重要な新機能の1つであり、またOracle Solarisゾーンに関連するもっとも重要な新機能は、簡単に"Zones on Shared Storage"または短くZOSS("moss"と同じリズムで)と呼ばれています。 ZOSSを使用すると、Oracle Solarisゾーンを共有ストレージに格納でき(これは驚くべきことです)、そのため1つのシステムから別のシステムにゾーンを迅速かつ簡単に移行できるようになり、非常に柔軟性が高くなります。 この記事では、ZOSSの使用法の説明と、そのデモをします。
ZOSSでは、"共有ストレージ"に格納されているOracle Solarisゾーンが完全にサポートされます。 もうこの場合、"共有ストレージ"はファイバ・チャネル(FC)デバイスまたはiSCSIデバイスのことです。これには1つだけ例外があります。これについてはすぐ後でデモします。 おもな目的は、FCまたはiSCSIストレージにゾーンを格納できるようにして、1つのホスト・コンピュータから別のホスト・コンピュータに以前よりもさらに簡単かつ安全にゾーンを移行できるようにすることです。
この記事では、個々のユーザーが自分で移行を簡単に行えるようにしました。 幸いなことに、個々のユーザーに使用できるSANがあることを前提にはできませんでした。私にも使用できるSAN環境がないためです! 代わりに、何を使用できるでしょうか。 (また同じような展開ですね)。この記事の作成で、ラボのすべての問題を解決するのはOracle VM VirtualBoxであるという教訓がさらに強固なものになりました。Oracle VM VirtualBoxは、今回もいくつかの重要な点で役立っています。 Oracle VM VirtualBoxを使用すると、Oracle Solarisの複数のコピーを一般的なシステム(Microsoft Windows、Mac OS、Oracle Solaris、Oracle Linux、その他のバージョンのLinuxなど)にゲストとして簡単にインストールできます。 また、論理ハード・ディスクとしてゲストに表示される、個別の仮想ディスク・ドライブ(VDI)も作成できます。 この仮想ディスクをゲスト間で非常に簡単に移動できます。 つまり、ラップトップでも大規模なx86システムでも、以下の手順を実行できます。
ZOSSを使用してローカル・ディスクにゾーンを格納する機能は、ラボ環境で非常に役立ちますが、本番環境ではそれほど役立ちません。 コンピュータ間で定期的にディスク・ドライブを移動させることを提案しているのではありません。
以下で説明する方法では、仮想ハード・ディスクに(仮想)ホスト間で移行するゾーンを格納します。 本番環境では、代わりにFC LUNやiSCSI LUNを使用します。 これらの3つのタイプの各デバイスの構文については、zonecfg(1M)manページを参照してください。
仮想サーバーの移行は、なぜ重要なのでしょうか。 もっとも一般的な理由として、次のようなものがあります。
ZOSSの新しい重要なコンセプトの名前は、rootzpoolです。 rootzpoolについて、詳しくはzonecfg(1M)manページを参照してください。簡単に説明すると、rootzpoolは、ゾーンを保持するZFS zpoolを作成するために使用するバッキング・ストア(ハード・ディスクまたはLUN)です。 このzpoolは、次のようなものです。
ここでは、共有ストレージにゾーンを作成して移行する手順について、概要を説明します。 次の項で、詳細なコマンドと出力を示します。
zonecfgの入力として使用するよう、もう一方のシステムにzonecfg exportの出力をコピーすることをお勧めします。 この方法で、パイロット・エラーの可能性が少なくなります (ゾーンを作成する前に、両方のシステムでゾーンを構成する必要はありません。 該当するシステムすべてに共有ストレージへのアクセス権がある限りは、このゾーンは必要な複数の場所で構成でき、それらの場所のいずれかにいつでも移行できます)。ゾーンは正常に使用でき、元のシステムに戻したり、別のシステムに移行したりすることもできます。
この記事の残りの部分では、コマンドと出力を示します。 2つのホストの名前は、sysAとsysBです。
注: Oracle Solarisの各ゲストで、共有するVDIに異なるデバイス名が使用されることがあります。 ここでは以下に示すデバイス名を使用しましたが、ユーザーは、各ゲストをブートした後でデバイス名を検出する必要があります。 本番環境でも、まずデバイス名を検出してから、そのデバイス名を使用してゾーンを構成します。 コマンドzpool importまたはformatを使用すれば、ゾーンの"新しい"ホストでデバイスを検出できます。
最初の手順で、Oracle VM VirtualBoxゲストと共有ディスク・ドライブを作成します。 以下に、デモなしの手順を示します。
pkg install solaris-desktopを実行し、これらの重要な内容がインストールされている間、待機します。以下に示す例では、次のことを前提としています。
sysAという名前を指定する。sysBという名前を指定する。sysAの共有ディスクに、/dev/dsk/c7t2d0という名前を指定する。sysBの共有ディスクに/dev/dsk/c7t3d0という名前を指定する。手順1) リスト1に示すように、システム間で移動するディスクの名前を判別します。
root@sysA:~# format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
0. c7t0d0
/pci@0,0/pci8086,2829@d/disk@0,0
1. c7t2d0
/pci@0,0/pci8086,2829@d/disk@2,0
Specify disk (enter its number): ^D
リスト1. ディスクの名前の判別
手順2) リスト2に示すように、まず、ディスクをパーティション化してラベル付けします。EFIラベルを書き込むのに必要な手順は、それほど複雑ではありません。
root@sysA:~# format -e c7t2d0 selecting c7t2d0 [disk formatted] FORMAT MENU: ... format> fdisk No fdisk table exists. The default partition for the disk is: a 100% "SOLARIS System" partition Type "y" to accept the default partition, otherwise type "n" to edit the partition table. n SELECT ONE OF THE FOLLOWING: ... Enter Selection: 1 ... G=EFI_SYS 0=Exit? f SELECT ONE... ... 6 format> label ... Specify Label type[1]: 1 Ready to label disk, continue? y format> quit root@sysA:~# ls /dev/dsk/c7t2d0 /dev/dsk/c7t2d0
リスト2. ディスクのパーティション化とラベル付け
手順3) リスト3に示すように、sysAにzone1を構成します。
root@sysA:~# zonecfg -z zone1
Use 'create' to begin configuring a new zone.
zonecfg:zone1> create
create: Using system default template 'SYSdefault'
zonecfg:zone1> set zonename=zone1
zonecfg:zone1> set zonepath=/zones/zone1
zonecfg:zone1> add rootzpool
zonecfg:zone1:rootzpool> add storage dev:dsk/c7t2d0
zonecfg:zone1:rootzpool> end
zonecfg:zone1> exit
root@sysA:~# zonecfg -z zone1 info
zonename: zone1
zonepath: /zones/zone1
brand: solaris
autoboot: false
bootargs:
file-mac-profile:
pool:
limitpriv:
scheduling-class:
ip-type: exclusive
hostid:
fs-allowed:
anet:
...
rootzpool:
storage: dev:dsk/c7t2d0
リスト3. sysAでのzone1の構成
手順4) リスト4に示すように、ゾーンをインストールします。この手順にもっとも時間がかかるため、その間、軽食をとったり、ジムで2~3周走ったり、この両方 (同時にするのでなければ)をするのも良いでしょう。
root@sysA:~# zoneadm -z zone1 install
Created zone zpool: zone1_rpool
Progress being logged to /var/log/zones/zoneadm.20121022T163634Z.zone1.install
Image: Preparing at /zones/zone1/root.
AI Manifest: /tmp/manifest.xml.RXaycg
SC Profile: /usr/share/auto_install/sc_profiles/enable_sci.xml
Zonename: zone1
Installation: Starting ...
Creating IPS image
Startup linked: 1/1 done
Installing packages from:
solaris
origin: http://pkg.us.oracle.com/support/
DOWNLOAD PKGS FILES XFER (MB) SPEED
Completed 183/183 33556/33556 222.2/222.2 2.8M/s
PHASE ITEMS
Installing new actions 46825/46825
Updating package state database Done
Updating image state Done
Creating fast lookup database Done
Installation: Succeeded
Note: Man pages can be obtained by installing pkg:/system/manual
done.
Done: Installation completed in 1696.847 seconds.
Next Steps: Boot the zone, then log into the zone console (zlogin -C)
to complete the configuration process.
Log saved in non-global zone as /zones/zone1/root/var/log/zones/zoneadm.20121022T163634Z.zone1.install
リスト4. ゾーンのインストール
手順5) ゾーンをブートします。
root@sysA:~# zoneadm -z zone1 boot
手順6) ゾーンのコンソールにログインして、システム情報の指定を完了します。
root@sysA:~# zlogin -C zone1
よくある類の質問に答えて、ログイン・プロンプトの処理を待ちます。 その後、通常よく使う決まり文句"~."を使用してコンソール・セッションを終了できます。
手順7) ゾーンを"移動"できるよう、ゾーンをシャットダウンします。
root@sysA:~# zoneadm -z zone1 shutdown
手順8) 元の大域ゾーンで使用できないように、リスト5に示すように、ゾーンを切り離します。
root@sysA:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared - zone1 installed /zones/zone1 solaris excl root@sysA:~# zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT rpool 17.6G 11.2G 6.47G 63% 1.00x ONLINE - zone1_rpool 1.98G 484M 1.51G 23% 1.00x ONLINE - root@sysA:~# zoneadm -z zone1 detach Exported zone zpool: zone1_rpool
リスト5. ゾーンの切り離し
手順9) 結果を確認し、sysBで共有ディスクを使用できるように、リスト6に示すようにsysAをシャットダウンします。
root@sysA:~# zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT rpool 17.6G 11.2G 6.47G 63% 1.00x ONLINE - root@sysA:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared - zone1 configured /zones/zone1 solaris excl root@sysA:~# init 0
リスト6. sysAのシャットダウン
手順10) sysBをブートし、先に示した手順1のパラメータを使用してゾーンを構成します (前述の「方法の概要」で説明したように、sysAでzonecfg ... exportを使用するのがもっとも安全な方法です)。 1つ異なるのが、前提のリストで示したrootzpoolストレージ・デバイスの名前です。sysBをブートし、formatコマンドまたはzpool importコマンドを使用して、この名前を判別する必要があります。
これを行うと、リスト7に示す出力が表示されます(この例では同じゾーン名zone1を使用していますが、任意の有効なゾーン名を選択できます)。
root@sysB:~# zoneadm list -cv
ID NAME STATUS PATH BRAND IP
0 global running / solaris shared
- zone1 configured /zones/zone1 solaris excl
root@sysB:~# zonecfg -z zone1 info
zonename: zone1
zonepath: /zones/zone1
brand: solaris
autoboot: false
bootargs:
file-mac-profile:
pool:
limitpriv:
scheduling-class:
ip-type: exclusive
hostid:
fs-allowed:
anet:
linkname: net0
...
rootzpool:
storage: dev:dsk/c7t3d0
リスト7. sysBをブートしてゾーンを構成した後の出力
手順11) リスト8に示すように、ゾーンを接続します。これにより、zpoolが自動的にインポートされます。
root@sysB:~# zoneadm -z zone1 attach
Imported zone zpool: zone1_rpool
Progress being logged to /var/log/zones/zoneadm.20121022T184034Z.zone1.attach
Installing: Using existing zone boot environment
Zone BE root dataset: zone1_rpool/rpool/ROOT/solaris
Cache: Using /var/pkg/publisher.
Updating non-global zone: Linking to image /.
Processing linked: 1/1 done
Updating non-global zone: Auditing packages.
No updates necessary for this image.
Updating non-global zone: Zone updated.
Result: Attach Succeeded.
Log saved in non-global zone as /zones/zone1/root/var/log/zones/zoneadm.20121022T184034Z.zone1.attach
root@sysB:~# zoneadm -z zone1 boot
root@sysB:~# zlogin zone1
[Connected to zone 'zone1' pts/2]
Oracle Corporation SunOS 5.11 11.1 September 2012
リスト8. ゾーンの接続
手順12) ゾーンをsysAに戻します。 リスト9に示すように、zone1にファイルを作成します。これにより、ゾーンを戻した後にこのファイルが存在することを確認し、その後でゾーンを戻す操作を開始できます。
root@zone1:~# ls /opt root@zone1:~# touch /opt/fileA root@zone1:~# ls -l /opt/fileA -rw-r--r-- 1 root root 0 Oct 22 14:47 /opt/fileA root@zone1:~# exit logout [Connection to zone 'zone1' pts/2 closed] root@sysB:~# zoneadm -z zone1 shutdown root@sysB:~# zoneadm -z zone1 detach Exported zone zpool: zone1_rpool root@sysB:~# init 0
リスト9. zone1でのファイルの作成
手順13) sysAに戻り、リスト10に示すようにステータスを確認します。
root@sysA:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared - zone1 configured /zones/zone1 solaris excl root@sysA:~# zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT rpool 17.6G 11.2G 6.47G 63% 1.00x ONLINE -
リスト10. sysAのステータスの確認
手順14) リスト11に示すように、ゾーンをsysAに再接続します。
root@sysA:~# zoneadm -z zone1 attach
Imported zone zpool: zone1_rpool
Progress being logged to /var/log/zones/zoneadm.20121022T190441Z.zone1.attach
Installing: Using existing zone boot environment
Zone BE root dataset: zone1_rpool/rpool/ROOT/solaris
Cache: Using /var/pkg/publisher.
Updating non-global zone: Linking to image /.
Processing linked: 1/1 done
Updating non-global zone: Auditing packages.
No updates necessary for this image.
Updating non-global zone: Zone updated.
Result: Attach Succeeded.
Log saved in non-global zone as /zones/zone1/root/var/log/zones/zoneadm.20121022T190441Z.zone1.attach
root@sysA:~# zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
rpool 17.6G 11.2G 6.47G 63% 1.00x ONLINE -
zone1_rpool 1.98G 491M 1.51G 24% 1.00x ONLINE -
root@sysA:~# zoneadm -z zone1 boot
root@sysA:~# zlogin zone1
[Connected to zone 'zone1' pts/2]
Oracle Corporation SunOS 5.11 11.1 September 2012
root@zone1:~# zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
rpool 1.98G 538M 1.46G 26% 1.00x ONLINE -
リスト11. ゾーンの再接続
手順15) 前にsysBで作成したファイルの存在を確認します。
root@zone1:~# ls -l /opt total 1 -rw-r--r-- 1 root root 0 Oct 22 14:47 fileA
次のステップとして試すことができる操作を、以下にいくつか示します。
zoneadmにより、この2つのディスクを使用してミラー化プールを作成します (3つのディスクでは3方向ミラー、などとなります)。Oracle Solarisゾーンをシステム間で移動するのは簡単だと思ってもらえれば幸いです。
Jeff VictorはOracle CorporationのPrincipal Sales Consultantで、書籍『Solaris 10 System Virtualization Essentials』の主要執筆者です。 約30年間に渡るUNIXの経験に基づいた、オペレーティング・システム、仮想化、およびリソース管理におけるJeffの専門知識には、主要企業から常に要請があります。 Oracle SolarisゾーンのFAQや、Oracle Solaris 10用のオープン・ソース・プログラムzonestatも作成しました。
頻繁に著作や寄稿を行ったり、企業イベントや業界イベントで講演を行ったりしています。 Jeffのブログは、http://blogs.oracle.com/jeffvで閲覧できます。 ニューヨーク州トロイのレンセラー工科大学で理学士号を取得しています。
| リビジョン1.0、08.01.13 |