Skip to main content

Fujitsu

Japan

まっちーの仮想化講座
第14回:ゾーンもそのままOracle Solaris 11に簡単移行(Oracle Solaris 10 ゾーン)

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)。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

Solaris 10 ゾーンの作成(attach)

移行元での作業が終わりましたので、これからは移行先での作業になります。
まずは、アーカイブと定義ファイルを確認しましょう。

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にて、ハッシュタグ #fjsparcOpen a new window までお願いします。