TenForward

技術ブログ。はてなダイアリーから移転しました

ovmzfs

Xen ベースの OracleVM の共有ストレージとして ZFS を使うための ovmzfs というツールが公開されています.

コレがどのように ZFS を使っているのか,理解 (OracleVM, ZFS 両方のね ^^;) が足りないので,実際に動かしてみて調べてみようということで,動かし中.

セットアップ

手順は ovmzfsセットアップ手順 at nkjmkzk.net の通りで,

  1. opensolaris インストール.とりあえず GUI いらんので OpenSolaris Text-Based Installer を使用しました.
  2. opensolaris自体がちゃんと動くようになった後,
    # pkg install SUNWiscsidm SUNWiscsit SUNWiscsitgt
    # svcadm enable iscsitgt
  3. OracleVM Manager インストール
  4. OracleVM Server インストール
  5. ovmzfs 実行の際,SSL/TLSOracle VM Manager にアクセスする場合,証明書の関係で commonName にあるホスト名でアクセスが必要な場合があるので,一応,設定したホスト群の名前を /etc/hosts に設定しておきます.もちろん DNS で名前引けるちゃんとしたホストの場合は不要です.
  6. OracleVM Manager 上で ovmzfs を実行.実行すると色々聞かれます.以下のような感じ.あとは自動的に色々処理が行われます.
[root@vmmgr ~]# ovmzfs init

>>>                       >>>
>>> Initial Configuration >>>
>>>                       >>>

Please enter Ip Address of ZFS Server: opensolaris.ten-forward.test
 
Please enter Username of ZFS Server (just Enter to accept default 'root'): karma
 
Please enter Root filesystem of Repository (just Enter to accept default 'rpool/ovmzfs'): 
 
Please enter Ip Address of VM Manager: vmmgr.ten-forward.test
 
Please enter Port Number of VM Manager (just Enter to accept default '4443'): 
 
Please enter SSL [on/off] of VM Manager (just Enter to accept default 'on'): 
 
Please enter admin Password of VM Manager: password
 
Please enter Name of Server Pool: 
 
Please enter Name of Server Pool: ServerPool

 

>>>                            >>>
>>> Configuration Confirmation >>>
>>>                            >>>

zfs_ip: opensolaris.ten-forward.test
zfs_username: karma
zfs_root: rpool/ovmzfs
vmmanager_ip: vmmgr.ten-forward.test
vmmanager_port: 4443
vmmanager_ssl: on
vmmanager_password: password
server_pool_name: ServerPool
OK ? [y/n]: y
  : (snip)

>>>                                 >>>
>>> New repository has been created >>>
>>>                                 >>>

Shared Filesystem for /OVS is exported as opensolaris.ten-forward.test:/rpool/ovmzfs/ServerPool/ovs
Please run following command on VM Server.

	[root@vmserver]# /opt/ovs-agent-2.3/utils/repos.py --new opensolaris.ten-forward.test:/rpool/ovmzfs/ServerPool/ovs
	(UUID of this filesystem will be displayed)
	[root@vmserver]# /opt/ovs-agent-2.3/utils/repos.py --root [UUID]

And then, please create Server Pool using VM Manager

次は OracleVM Server 上で,上記に指示が出てるように,OracleVM のリポジトリの設定を行います.

# /opt/ovs-agent-2.3/utils/repos.py --new opensolaris.ten-forward.test:/rpool/ovmzfs/ServerPool/ovs
[ NEW ] 5354612d-1fda-4f16-a642-e2d31b26191f => opensolaris.ten-forward.test:/rpool/ovmzfs/ServerPool/ovs
# /opt/ovs-agent-2.3/utils/repos.py --root 5354612d-1fda-4f16-a642-e2d31b26191f
[ R ] 5354612d-1fda-4f16-a642-e2d31b26191f => opensolaris.ten-forward.test:/rpool/ovmzfs/ServerPool/ovs

この後,OracleVM Manger にアクセスして,Server Pool を作成します.上記の例だと "ServerPool" という名前で作成.

opensolaris

opensolaris ホスト上はどんな感じか.概観はこんな感じです.

$ zpool list
NAME    SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
rpool  39.8G  3.11G  36.6G     7%  1.00x  ONLINE  -
$ zfs list
NAME                                 USED  AVAIL  REFER  MOUNTPOINT
    : (snip)
rpool/ovmzfs                         132K  35.6G    22K  /rpool/ovmzfs
rpool/ovmzfs/ServerPool              110K  35.6G    26K  /rpool/ovmzfs/ServerPool
rpool/ovmzfs/ServerPool/ovs           21K  35.6G    21K  /rpool/ovmzfs/ServerPool/ovs
rpool/ovmzfs/ServerPool/shareddisk    21K  35.6G    21K  /rpool/ovmzfs/ServerPool/shareddisk
rpool/ovmzfs/ServerPool/template      21K  35.6G    21K  /rpool/ovmzfs/ServerPool/template
rpool/ovmzfs/ServerPool/vm            21K  35.6G    21K  /rpool/ovmzfs/ServerPool/vm
rpool/swap                           544M  36.0G   105M  -

OracleVM Server の /OVS 向けに NFS でエクスポートされている領域が一つ.

$ share -F nfs
-@rpool/ovmzfs  /rpool/ovmzfs/ServerPool/ovs   anon=0,sec=sys,rw   ""