今までXenのイメージファイルはローカルディスクに置いて運用していましたが、大規模なストレージサーバを導入して日が経っていることから、ストレージサーバに置くことにしました。
当面はNFS共有で行きます。将来的にZFS@FreeBSDでzVOL(iSCSI)がサポートされたら、また考えます。
…と思ったんだけど失敗しました。敗因は最後に。
■ストレージサーバ(kfs01)にボリューム作成、イメージ移動
○作成と移動
zfs create zen
zfs set sharenfs="-network 192.168.0.0 -mask 255.255.255.0 -maproot=root" kfs01/xen
mkdir /mnt/kfs01/xen/img
mkdir /mnt/kfs01/xen/conf
mv /mnt/kfs01/kfs/xen/* /mnt/kfs01/xen/img
○設定書き換え
Xenの設定ファイルのファイルパスを書き換えます。
>> disk = [ "tap:aio:/kfs_alpha/xen/ad01.img,xvda,w" ]
<< disk = [ "tap:aio:/kfs_xen/img/ad01.img,xvda,w" ]
○スナップショット作成
ここらでセーブしとくか。
zfs snapshot kfs01/xen@`date +%Y%m%d%H%M%S`
■AlphaとBetaにマウントポイント作成
# mkdir /kfs_xen
# mount -t nfs kfs01.hoge.com:/mnt/kfs01/xen /kfs_xen
# vi /etc/fstab
kfs01.hoge.com:/mnt/kfs01/xen /kfs_xen nfs rw 0 0
○設定ファイルはシンボリックリンク共有にしちゃう
ln -s /kfs_xen/conf/* /etc/xen/
■一気に起動
省略。
■参考:メンテナンス方法
○スナップショット閲覧
zfs list -t all
○スナップショット作成
zfs snapshot kfs01/xen@`date +%Y%m%d%H%M%S`
○スナップショット削除
zfs destroy kfs01/xen@hogehoge
■どうなったか
ストレージサーバのアクセスランプが点灯しっぱなし。パフォーマンスめちゃ悪い(1MB/sとか)。
起動にも時間かかるし、DBなんかまともに動いちゃいない。想定外の事態である。
○原因を考える
ストレージサーバへの転送速度測定では80MB/sくらい出ている。ローカルのRAID1と同じくらいなので、単体アクセス時の速度面は問題なし。複数同時アクセスするとパフォーマンスが激しく落ちるのだろうか。ZFSではキャッシュが盛大に効いているようなので、むしろ速くなるのではないかと期待していたのだが。。
ディスクイメージをNFSで共有しているのが問題なんだろうか。ファイルを部分的に読み書きする場合のNFS+ZFSのパフォーマンスは未確認である。ここかしら。
アクセスランプが点灯しっぱなしであるが、zpool iostatでは10MB/sくらいしか読み書きしていないようである。ってかまず10MB/sも何をしているんだろうか。そんなに盛大にローカルディスクにアクセスする機会、ないんですけど。ファイルの一部分だけを書き換える操作にNFS+ZFSが向いていなくて、広範囲を読み書きしてしまって速度が低下しているんだろうか。
○対策
しかしZFSのsnapshot機能は、サーバのディスクイメージを保管するのにもってこいの機能ではないですか。無停止で取れるし、無駄な容量食わないし。なんとしても活用したい。
というわけでサービス上の最大のボトルネックはDBの読み書きであると判断し、DBサーバだけローカルディスクで稼働するように再変更しました。
これにより、相変わらずアクセスランプは激し目に点滅しているものの、一応サービス提供に問題ないレベルまで速度向上したと思います…。なんか納得いかない。。
気がつけばOpenSolarisの新バージョンが出ているようなので、どこかの段階で、改めてSolaris導入を検討したいと思います。NFS共有がダメなんだとすれば、SolarisでZFSでzVOLでshareiscsi使えば問題なさそうな気がするので。大改造ですけども。
0 件のコメント:
コメントを投稿