2012年12月16日日曜日

Solaris11 Zoneマイグレーション

Solaris11からSolaros11.1へZoneを移設する

Solaris11.1がリリースされたついでにゾーンを新しい環境に移設したときの作業メモ、やりたいことは

  • 旧ホストghost1(Solaris11)で稼働中のゾーンzone1を、新ホストghost2(Solaris11.1)へ移設する

と言うことで実際にやってみる

Solaris11上のzone1をdetachする

旧サーバーにあるzone1ゾーンを取り外す、その際に以下の作業を行う
  • zone1(ゾーン)の停止
  • zone1のゾーン設定を保存
  • zone1をdetach
  • zone1のzfs領域のsnapshotをとる
  • snapshotからzfsのイメージを取得する
  • 取得したzfsイメージと、ゾーンの設定ファイルを新サーバーghost2へ転送する

zone1(ゾーン)の停止

ゾーンを確認し、zone1を停止する
ghost1 ~ # zoneadm list -vc
  ID NAME             STATUS     PATH                           BRAND    IP
   0 global           running    /                              solaris  shared
   3 zone1   running    /rpool/zones/zone1    solaris  shared
ghost1 ~ # zoneadm -z zone1 halt
ghost1 ~ #
ghost1 ~ #
ghost1 ~ # zoneadm list -vc
  ID NAME             STATUS     PATH                           BRAND    IP
   0 global           running    /                              solaris  shared
   - zone1   installed  /rpool/zones/zone1    solaris  shared
ghost1 ~ #

zone1のゾーン設定を保存

zonecfgのexportでファイルでzoneの設定を保存し場合によっては新サーバーの設定で修正を加える
ghost1 ~ # zonecfg -z zone1 export > zone1.cfg
ghost1 ~ # cat zone1.cfg
create -b
set zonepath=/rpool/zones/zone1
set brand=solaris
set autoboot=false
set ip-type=shared
add net
set address=192.168.254.123/24
set configure-allowed-address=true
set physical=net0
end
ghost1 ~ #

zone1をdetach

detachする、これでゾーンが切り離される、zone1のSTATUSはconfigureになる
ghost1 ~ # zoneadm -z zone1 detach
ghost1 ~ # zoneadm list -vc
  ID NAME             STATUS     PATH                           BRAND    IP
   0 global           running    /                              solaris  shared
   - zone1   configured /rpool/zones/zone1    solaris  shared
ghost1 ~ #

zone1のzfs領域のsnapshotをとる

これからzone1のディスクデータをイメージとして取得する
ghost1 ~ # zfs list | grep iichiko
rpool/zones/zone1                              38.4M  22.1G  35.5K  /rpool/zones/zone1
rpool/zones/zone1/rpool                        38.4M  22.1G    31K  /rpool
rpool/zones/zone1/rpool/ROOT                   38.3M  22.1G    31K  legacy
rpool/zones/zone1/rpool/ROOT/solaris-0         38.3M  22.1G   430M  /
rpool/zones/zone1/rpool/ROOT/solaris-0/var      420K  22.1G  24.6M  /var
rpool/zones/zone1/rpool/export                 71.5K  22.1G    32K  /export
rpool/zones/zone1/rpool/export/home            53.5K 
22.1G    32K  /export/home
rpool/zones/zone1/rpool/export/home/cuomo      32.5K  22.1G  32.5K  /export/home/cuomo
ghost1 ~ #
ghost1 ~ # zfs snapshot -r rpool/zones/zone1@25do

スナップショットの確認
ghost1 ~ # zfs list -t snapshot | grep 25do
rpool/zones/zone1@25do                                               0      -  35.5K  -
rpool/zones/zone1/rpool@25do                                         0      -    31K  -
rpool/zones/zone1/rpool/ROOT@25do                                    0      -    31K  -
rpool/zones/zone1/rpool/ROOT/solaris-0@25do                          0      -   430M  -
rpool/zones/zone1/rpool/ROOT/solaris-0/var@25do                      0      -  24.6M  -
rpool/zones/zone1/rpool/export@25do                                  0      -    32K  -
rpool/zones/zone1/rpool/export/home@25do                             0      -    32K  -
rpool/zones/zone1/rpool/export/home/cuomo@25do                       0      -  32.5K  -
ghost1 ~ #

snapshotからzfsのイメージを取得する

先ほど取得したスナップショットからzfsイメージを取得する
ghost1 ~ # zfs send -rc rpool/zones/zone1@25do | gzip > zone1.zfs.img.gz

取得したzfsイメージと、ゾーンの設定ファイルを新サーバーghost2へ転送する

以下の2ファイルをghost2サーバー(Solaris11.1)へ転送する、これは適当な方法でやってください
ghost1 ~ # ls -l | grep zone1
-rw-r--r-- 1 root root       203 2012-10-27 16:02 zone1.cfg
-rw-r--r-- 1 root root 235515745 2012-10-27 16:16 zone1.zfs.img.gz
ghost1 ~ #

ghost1サーバーでやることはおしまい、続いてghost2サーバーで作業をする

Solaris11.1上のzone1をattachする

ここからの作業はghost2(新サーバーSolaris11.1)で行う、zone1を起動するまでの作業は以下の順で行う
  • zone1のゾーン設定をファイルから作成する
  • zone1をattachする
  • zone1の起動

zone1のゾーン設定をファイルから作成する

zonecfgで設定ファイルを読み込ませゾーン設定を作成する、設定を修正する必要がある場合はここで修正する

ゾーンの確認、ない
ghost2 ~ # zoneadm list -vc
  ID NAME             STATUS     PATH                           BRAND    IP
   0 global           running    /                              solaris  shared
ghost2 ~ #

zone1の設定の読み込みと、ゾーンパスの作成
ghost2 ~ # zonecfg -z zone1 -f zone1.cfg
ghost2 ~ # zonecfg -z zone1 create -a /rpool/zone1
Zone zone1 already exists; create anyway (y/[n])? y
invalid path to detached zone
ghost2 ~ #

ゾーンの確認、configureになっている
ghost2 ~ # zoneadm list -vc
  ID NAME             STATUS     PATH                           BRAND    IP
   0 global           running    /                              solaris  shared
   - zone1   configured /rpool/zones/zone1    solaris  shared
ghost2 ~ #

zone1をattachする

zone1へアタッチする、同時にzone1をアップデートする
ghost2 ~ # zoneadm -z zone1 attach -u -a /root/zone1.zfs.img.gz
The following ZFS file system(s) have been created:
    rpool/zones
    rpool/zones/zone1
Warning: The -a and -d options to the attach subcommand may be removed in a
future release of Solaris.  Use of the install subcommand is recommended.
Progress being logged to /var/log/zones/zoneadm.20121027T073929Z.zone1.attach
    Installing: This may take several minutes...
      Zone BE root dataset: rpool/zones/zone1/rpool/ROOT/solaris-0
                     Cache: Using /var/pkg/publisher.
Updating image format
イメージ形式はすでに最新です。
  Updating non-global zone: Linking to image /.
処理中 linked: 1/1 done
  Updating non-global zone: Syncing packages (pass 1 of 2).
            削除するパッケージ:   1
インストールするパッケージ:  24
            更新するパッケージ: 165
         変更するメディエータ:   1
               変更するサービス:   5

ダウンロード                 パッケージ  ファイル  転送 (MB)  速度
完了                               190/190   14614/14614  219.2/219.2  1.4M/s

フェーズ                                  項目
古いアクションを削除しています   8129/8129
新しいアクションをインストールしています 10875/10875
変更されたアクションを更新しています   8829/8829
パッケージ状態データベースを更新しています      完了
パッケージキャッシュを更新しています     166/166
イメージ状態を更新しています      完了
スピード検索データベースを作成しています      完了
  Updating non-global zone: Syncing packages (pass 2 of 2).
このイメージは更新の必要はありません。

  Updating non-global zone: Zone updated.
                    Result: Attach Succeeded.
Log saved in non-global zone as /rpool/zones/zone1/root/var/log/zones/zoneadm.20121027T073929Z.zone1.attach
ghost2 ~ #

ゾーンの確認、zone1はinstalledです
ghost2 ~ # zoneadm list -vc
  ID NAME             STATUS     PATH                           BRAND    IP
   0 global           running    /                              solaris  shared
   - zone1   installed  /rpool/zones/zone1    solaris  shared
ghost2 ~ #

zone1の起動

めでたくzone1は起動、これで終了
ghost2 ~ # zoneadm -z zone1 boot
ghost2 ~ # zoneadm list -vc
  ID NAME             STATUS     PATH                           BRAND    IP
   0 global           running    /                              solaris  shared
   1 zone1   running    /rpool/zones/zone1    solaris  shared
ghost2 ~ #

まぁ、こんなに簡単にサーバーが移設出来てしまう
でももうチョットうまい具合に、簡単に移せたらいいかと思うが、Solaris先生にお願いしておこう....

0 件のコメント:

コメントを投稿