XenServerから接続したSRのサイズ変更(iSCSI by COMSTAR)

うちの会社ではXenServerを使った仮想化を現在運用しているわけですが、SR(ストレージレポジトリ)として登録したLUのサイズが足りなくなったときにどうするか。
当然容量に余裕があれば増やすわけで、その手順をメモしておく。
ストレージの環境はOpenSolaris 2009.06

COMSTARとはなんぞ?というかたは以下を参照のこと。
COMSTAR Administration - OpenSolaris Information Resources - wikis.sun.com

具体的な使い方は以前のエントリを参照してください。
OpenSolaris 2009.06でCOMSTARを試す - tokuhy’s fraction

手順

概要

まずXenServerのSRのLUのサイズを変更するには、まず一度SRの接続を解除しないとダメです。なので手順としては以下の流れになります。

  1. 対象のSR上で動いているVMを一度全部シャットダウン
  2. XenCenterからもしくはコマンドでSRの接続を解除
  3. ZFSコマンドでボリュームのリサイズ
  4. SBD(SCSI Block Disk)のリサイズ
  5. XenCenterもしくはコマンドでSRに再接続

こんな感じの流れです。

具体的な操作

では順番に具体的な操作をSRの解除後から。

  • 現状100Gのボリューム(zfs create -V 100G iscsi/share)
  • 200Gへ拡張

を行ってみます。

まずZFSでボリュームを確認。

$ zfs get volsize iscsi/share
NAME         PROPERTY  VALUE    SOURCE
iscsi/share  volsize   100G     -

拡張します。

$ pfexec zfs set volsize=200g iscsi/share
$ zfs get volsize iscsi/share
NAME         PROPERTY  VALUE    SOURCE
iscsi/share  volsize   200G     -

これでZFS上では拡張されているのがわかります。ただこのままではSBDに反映されていないので、こちらもサイズ変更を行います。
まずは現状のサイズ確認。

$ pfexec sbdadm list-lu

Found 1 LU(s)

              GUID                    DATA SIZE           SOURCE
 --------------------------------  -------------------  ----------------
600144f0229d010000004bb1e07c0002      107374116864    /dev/zvol/rdsk/iscsi/share

200Gにしたので2倍の値をセットします。
書式はsbdadm modify-lu -s <変更後サイズ>

$ pfexec sbdadm modify-lu -s 214748233728 600144f0229d010000004bb1e07c0002
$ pfexec sbdadm list-lu

Found 1 LU(s)

              GUID                    DATA SIZE           SOURCE
 --------------------------------  -------------------  ----------------
600144f0229d010000004bb1e07c0002      214748233728    /dev/zvol/rdsk/iscsi/share

これでサイズ拡張がされたので、XenServerでSRに再接続すれば容量が増えています。

ちなみに使用量以上のサイズであれば縮小もできることも確認しました。

まとめとか感想とか

ここからはCOMSTARというよりXenServerの運用上の話。
サイズ変更は結構簡単にできるんですが、VMがオンライン状態での拡張ができません。これはXenServerの仕様ですが。
これができないと大量のVMが稼働している場合、変更するためにはすべてダウンさせなければならないので結構な手間かなーと。

  • LUを作るときは用途別もしくはグループ別にある程度のサイズで分ける。グループ1はSR-1、グループ2はSR-2上にそれぞれVMを作成する、みたいな。
  • これによりVMを作成するSRを分けることでメンテナンスの際にダウン対象を限定できる

のようなことをした方がよいのだろうか。このあたりの運用ノウハウがよく分からない。LUでなくストレージ側でストレージプール毎わけるのがいいのかな?誰か教えてください。XenServerの運用で共有ストレージを使う場合、こんな感じでSR作るのがいいんだろうか。
運用しながら環境に見合ったやりかた考えるしか無いか・・・。