zone を作ってみます。 まずZFSのpoolは先日このように用意しておきました。mypoolの下にzoneを2つ作ってみます。
(いまのところネットワークがうまく繋がっていないです。IPMPと併用するとうまくいかないのか、他の理由なのか…)
root@solaris:~# zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT mypool 19.9G 124K 19.9G 0% 1.00x ONLINE - rpool 15.6G 4.87G 10.8G 31% 1.00x ONLINE -
zfs create で領域を作ります。
root@solaris:~# zfs create mypool/zone1 root@solaris:~# zfs create mypool/zone2
zonecfg で zone を作ってみます。
root@solaris:~# zonecfg -z zone1 Use 'create' to begin configuring a new zone. zonecfg:zone1> create create: Using system default template 'SYSdefault' zonecfg:zone1> set zonepath=/mypool/zone1 zonecfg:zone1> verify zonecfg:zone1> commit zonecfg:zone1> exit root@solaris:~#
zone2 も同様に作りました。
root@solaris:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared - zone1 configured /mypool/zone1 solaris excl - zone2 configured /mypool/zone2 solaris excl
install してみます。pkg.oracle.com からパッケージを取ってくるので時間がかかります。頻繁にやるならローカルに立てたほうがいいでしょう。立て方は公式ドキュメントの Oracle Solaris 11 パッケージリポジトリのコピーおよび作成 に書いてあります。今回は普通にインターネット経由で取得してきました。
root@solaris:~# zoneadm -z zone1 install The following ZFS file system(s) have been created: mypool/zone1 Progress being logged to /var/log/zones/zoneadm.20150108T050021Z.zone1.install Image: Preparing at /mypool/zone1/root. Install Log: /system/volatile/install.10561/install_log AI Manifest: /tmp/manifest.xml.IeaOMu SC Profile: /usr/share/auto_install/sc_profiles/enable_sci.xml Zonename: zone1 Installation: Starting ... Creating IPS image 開始 リンクされたイメージ: 1/1 完了 Installing packages from: solaris origin: http://pkg.oracle.com/solaris/release/ ダウンロード パッケージ ファイル 転送 (MB) 速度 database/berkeleydb-5 40/282 5682/53275 42.2/351.9 120k/s ... スピード検索データベースを作成しています 完了 パッケージキャッシュを更新しています 1/1 Installation: Succeeded Note: Man pages can be obtained by installing pkg:/system/manual done. Done: Installation completed in 1406.873 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 /mypool/zone1/root/var/log/zones/zoneadm.20150108T050021Z.zone1.install root@solaris:~#
root@solaris:~# zoneadm list -vc ID NAME STATUS PATH BRAND IP 0 global running / solaris shared - zone1 installed /mypool/zone1 solaris excl - zone2 configured /mypool/zone2 solaris excl
もし失敗したらやり直します。(例)
root@solaris:~# zoneadm -z zone1 mark incomplete root@solaris:~# zoneadm -z zone1 uninstall root@solaris:~# zoneadm -z zone1 install
無事installが完了したら、起動することを確認してみます。
root@solaris:~# zoneadm -z zone1 boot root@solaris:~#
起動したらコンソールを取ります。
root@solaris:~# zlogin -C zone1 [Connected to zone 'zone1' console]
通常のSolaris11のインストール画面のような初期設定が終わると、ログインできるようになります。
Hostname: zone1 zone1 console login:
一旦落とします。zlogin から抜けるには ~. です。ssh で global zone に入っているときは、~~. で抜けられます。
sugimura@zone1:~$ su - Password: Jan 8 14:30:38 zone1 su: 'su root' succeeded for sugimura on /dev/console Oracle Corporation SunOS 5.11 11.2 June 2014 root@zone1:~# shutdown -i0 -g0 -y Shutdown started. Thu Jan 8 14:30:44 JST 2015
~. [Connection to zone 'zone1' console closed]
zone1をzone2にコピーしてみます。zone2 は zone1 の clone ですよと指定するんですね。
root@solaris:~# zoneadm -z zone2 clone zone1 /mypool/zone2 must not be group readable. /mypool/zone2 must not be group executable. /mypool/zone2 must not be world readable. /mypool/zone2 must not be world executable. changing zonepath permissions to 0700. Progress being logged to /var/log/zones/zoneadm.20150108T053529Z.zone2.clone Log saved in non-global zone as /mypool/zone2/root/var/log/zones/zoneadm.20150108T053529Z.zone2.clone root@solaris:~#
root@solaris:~# zoneadm list -vc ID NAME STATUS PATH BRAND IP 0 global running / solaris shared - zone1 installed /mypool/zone1 solaris excl - zone2 installed /mypool/zone2 solaris excl root@solaris:~#
これで2つのzoneをそれぞれ使えるようになりました。両方起動すると次のようになります。
root@solaris:~# zoneadm list -vc ID NAME STATUS PATH BRAND IP 0 global running / solaris shared 3 zone1 running /mypool/zone1 solaris excl 4 zone2 running /mypool/zone2 solaris excl
引き続きこの環境でいろいろ実験していきます。
(参考文献)