2012年7月17日
前回、Oracle Solaris 11の上にOracle Solaris 10ゾーンを作る方法として、P2V(Physical to Virtual)をご紹介しましたが、Oracle Solaris 10で既にゾーンをお使いの場合は、ゾーンのみをOracle Solaris 11上に移行することができます。
そこで今回は、V2V(Virtual to Virtual)でOracle Solaris11の上にOracle Solaris 10 ゾーンを作成してみたいと思います。
まずは移行元の確認をしましょう。今回はSolaris 10上に構築されている以下の構成のゾーン(zone01)をSolaris 11上に移行したいと思います。
Solaris 10# zoneadm list -vc
ID NAME STATUS PATH BRAND IP
0 global running / native shared
2 zone01 running /export/zone01 native excl
Solaris 10# zonecfg -z zone01 export
create -b
set zonepath=/export/zone01
set autoboot=false
set pool=pool_1
set scheduling-class=FSS
set ip-type=exclusive
add net
set physical=e1000g2
end
add rctl
set name=zone.cpu-shares
add value (priv=privileged,limit=1,action=none)
end
また、移行元はSolaris 10 9/10以降である必要があります。もし、これよりも古いリリースのSolaris 10の場合には、あらかじめカーネルパッチ142909-17を適用する必要があります。
Solaris 10# cat /etc/release
Oracle Solaris 10 9/10 s10s_u9wos_14a SPARC
Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
Assembled 11 August 2010
移行元の確認ができたら、ゾーンを停止して切り離します(detach)。detachすると、ゾーンのSTATUSがconfiguredになります。
Solaris 10# zoneadm -z zone01 halt
Solaris 10# zoneadm -z zone01 detach
Solaris 10# zoneadm list -vc
ID NAME STATUS PATH BRAND IP
0 global running / native shared
- zone01 configured /export/zone01 native excl
次にアーカイブを作成します。ここでは、移行先のファイルシステムをNFSマウントして直接移行先にアーカイブを作成したいと思います。
Solaris 10# mount -F nfs 192.168.10.195:/pool1/sharefs1 /mnt
Solaris 10# mkdir /mnt/v2v
zonepathのファイルシステムを確認して、アーカイブを作成します。今回のゾーンは、ZFS上に作成していますので、zonepathのデータセットを確認します。そして、zfs snapshotコマンドでsnapshotを作成し、zfs sendコマンドで移行先に送信します。UFSの場合には、tarコマンドなどでアーカイブを作成してください。
また、gzipで圧縮していますが、圧縮は必須ではありません。必要に応じて使用してください。
Solaris 10# zfs list -H -o name /export/zone01
rpool/export/zone01
Solaris 10# zfs snapshot -r rpool/export/zone01@v2v
Solaris 10# zfs send rpool/export/zone01@v2v | gzip > /mnt/v2v/zone01.zfs.gz
ゾーンの構成情報も作成しておきます。
Solaris 10# zonecfg -z zone01 export > /mnt/v2v/zone01.conf
移行元での作業が終わりましたので、これからは移行先での作業になります。
まずは、アーカイブと定義ファイルを確認しましょう。
root@s11-0:~# ls -lh /pool1/sharefs1/v2v/
total 3317583
-rw-r--r-- 1 root root 271 5月 15日 19:37 zone01.conf
-rw-r--r-- 1 root root 1.6G 5月 15日 16:59 zone01.zfs.gz
ゾーンを作成する前に、移行先に合わせて定義ファイルを修正する必要があります。
ここでは、以下のように修正をしましたが、みなさんの環境に合わせて修正してください。
特に、Solaris 11上にSolaris 10 ゾーンを作成する場合には、「set brand=solaris10」の追加は必須なので、忘れないようにしてくださいね。
root@s11-0:~# vi /pool1/sharefs1/v2v/zone01.conf
create -b
set zonepath=/pool1/zones/s10zonev2v 修正
set brand=solaris10 追加(必須)
set autoboot=false
set pool=pool_default 修正
set scheduling-class=FSS
set ip-type=exclusive
add net
set physical=net1 修正
end
add rctl
set name=zone.cpu-shares
add value (priv=privileged,limit=1,action=none)
end
では、この定義ファイルを使ってゾーンを作成します。今回は移行先に合わせて、ゾーン名をzone01からs10zonev2vに変えて作成します。
root@s11-0:~# zoneadm list -vc
ID NAME STATUS PATH BRAND IP
0 global running / solaris shared
- s10zone installed /zones/t5120-ldom1 solaris10 excl
root@s11-0:~# zonecfg -z s10zonev2v -f /pool1/sharefs1/v2v/zone01.conf
root@s11-0:~# zoneadm list -vc
ID NAME STATUS PATH BRAND IP
0 global running / solaris shared
- s10zone installed /zones/t5120-ldom1 solaris10 excl
- s10zonev2v configured /pool1/zones/s10zonev2v solaris10 excl
次にアーカイブをゾーンにattachします。
root@s11-0:~# zoneadm -z s10zonev2v attach -a /pool1/sharefs1/v2v/zone01.zfs.gz
Progress being logged to /var/log/zones/zoneadm.20120515T105007Z.s10zonev2v.attach
Log File: /var/log/zones/zoneadm.20120515T105007Z.s10zonev2v.attach
Attaching...
Installing: This may take several minutes...
Attach complete.
Log saved in non-global zone as /pool1/zones/s10zonev2v/root/var/log/zones/zoneadm.20120515T105007Z.s10zonev2v.attach
Log File:
attachが終わったら、確認をしてみましょう。s10zonev2vのSTATUSがinstalled、BRANDがsolaris10になっていることを確認してください。
root@s11-0:~# zoneadm list -vc
ID NAME STATUS PATH BRAND IP
0 global running / solaris shared
- s10zone installed /zones/t5120-ldom1 solaris10 excl
- s10zonev2v installed /pool1/zones/s10zonev2v solaris10 excl
attachできていることが確認できたら、起動してみましょう。なお、attachした場合には、前回必要だったzlogin -C でコンソール接続後の初期設定は不要です。
root@s11-0:~# zoneadm -z s10zonev2v boot
root@s11-0:~# zoneadm list -vc
ID NAME STATUS PATH BRAND IP
0 global running / solaris shared
1 s10zonev2v running /pool1/zones/s10zonev2v solaris10 excl
- s10zone installed /zones/t5120-ldom1 solaris10 excl
root@s11-0:~# zlogin -C s10zonev2v
[Connected to zone 's10zonev2v' console]
zone01 console login: root
Password:
May 15 20:11:54 zone01 login: ROOT LOGIN /dev/console
Last login: Tue May 15 16:04:04 from 192.168.10.195
Oracle Corporation SunOS 5.10 Generic Patch January 2005
zone01# cat /etc/release
Oracle Solaris 10 9/10 s10s_u9wos_14a SPARC
Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
Assembled 11 August 2010
zone01# zonename
s10zonev2v
実は今回、s10zonev2vを作成したデータセット(pool1/zones)には 第11回でご紹介した重複排除と圧縮の設定をしてみました。
これらの効果を確認したいと思います。
root@s11-0:~# zpool list pool1
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
pool1 19.9G 9.51G 10.4G 47% 1.03x ONLINE -
root@s11-0:~# zfs get compressratio pool1/zones
NAME PROPERTY VALUE SOURCE
pool1/zones compressratio 1.63x
重複排除は1.03xということで、ほとんど効果はないですね。圧縮の方は1.63xなので、そこそこ効果がありました。
重複排除は、同じ構成のゾーンを複数作成する場合には効果的ですが、今回のように一つだけのときはあまり効果がありません。
実際の容量を確認してみましょう。
移行先
root@s11-0:~# zfs list pool1/zones
NAME USED AVAIL REFER MOUNTPOINT
pool1/zones 2.54G 7.99G 32K /pool1/zones
移行元
Solaris 10# zfs list rpool/export/zone01
NAME USED AVAIL REFER MOUNTPOINT
rpool/export/zone01 4.13G 25.2G 4.13G /export/zone01
2.54GB × 1.63 = 4.14GB なので、実機で確認した結果(4.13GB)と大体合っていますね。
ちなみに、zfs listコマンドでは、重複排除分は考慮されず、参照サイズの合計が表示されます。重複排除機能を使っている場合は、ディスク消費量の確認には注意が必要です。実際の使用量よりも多く表示されます。
このようにすでにゾーンをお使いの方でも、Solaris 11の上にSolaris 10のままゾーンごと移行することができます。また、圧縮や重複排除と組み合わせることでディスク容量を節約して効率的に集約することもできます。
使用頻度は多くないけど、残しておかなければいかないシステムなどに適用してみてはいかがでしょうか。
応援メッセージはtwitterにて、ハッシュタグ #fjsparc までお願いします。