xNBD

ライブ・ストレージマイグレーション
機構の開発とその評価
広渕崇宏 中田秀基 小川宏高
伊藤智 関口智嗣
t.hirofuchi _at_ aist.go.jp
産業技術総合研究所
1
xNBDとは

xNBD - http://bitbucket.org/hirofuchi/xnbd




開発中の高速・高機能版NBDターゲットサーバ
オリジナルNBDサーバの置き換え
VM VM VM
VMクラスタ運用環境を想定した機能
Network Block Deviceプロトコル



ブロックレベルのI/Oプロトコル
iSCSIよりはるかに単純な仕様
必要かつ十分
VM Host Server
LAN
NBD
Protocol
Storage Server
Disk
Disk
2
xNBDの特徴(1)

Linux NBDとの完全な互換性


既存NBDサーバよりも高速



カーネルドライバnbd.koで利用可能
mmap()の利用
多重リクエストキューイング処理
複数クライアントの同時アクセス対応


クラスタファイルシステムに対応
OCFS2、GFS
3
xNBDの特徴(2)

ストレージマイグレーション




VMライブマイグレーションと連動したストレージ再配置
遠隔拠点間VMライブマイグレーションに対応
分散コピーオンライト

ストレージノードをまたいだディスクイメージCoW

分散キャッシュプロキシ

大規模クライアントに対応
オープンソース


GPL(応相談変更可)
まもなく公開予定 http://bitbucket.org/hirofuchi/xnbd
4
ターゲットサーバモード
単一クライアント
複数同時クライアント
(OCFS2等と併用)
クライアントノード
$ modprobe nbd
$ echo deadline >
/sys/block/nbd0/queue/scheduler
$ nbd-client bs=4096 10.1.1.1 8992 /dev/nbd0
$ mkfs /dev/nbd0
ターゲットサーバノード(10.1.1.1)
$ dd if=/dev/zero of=disk.img bs=4096
count=1 seek=1000000
$ xnbd-server --target --lport 8992 disk.img
5
プロキシサーバモード
単一クライアント
複数同時
クライアント
クライアントノード
$ modprobe nbd
$ echo deadline >
/sys/block/nbd0/queue/scheduler
$ nbd-client bs=4096 10.1.1.1 8992 /dev/nbd0
プロキシサーバノード
$ xnbd-server --proxy --lport 8992 10.1.1.1
8992 cache.img cache.bitmap
ターゲットサーバノード(10.1.1.1)
テンプレートディスクイメージを複数ストレージノードで共有
各ストレージノードではデータをキャッシュ
$ dd if=/dev/zero of=disk.img bs=4096
count=1 seek=1000000
$ xnbd-server --target --lport 8992 disk.img
6
ライブVM&ストレージマイグレーション
(概要)
VMのライブマイグレーションと並行して
仮想ディスクも再配置
7
ライブVM&ストレージマイグレーション
(移動元でVMを起動)
クライアントノード(移動元Dom 0)
$ modprobe nbd echo deadline >
/sys/block/nbd0/queue/scheduler
$ nbd-client bs=4096 10.10.1.1 8992 /dev/nbd0
$ virt-install -f /dev/nbd0
$ grep disk /etc/xen/mydomain.cfg
disk = [ "phy:/dev/nbd0,xvda,w" ]
$ xm create /etc/xen/mydomain.cfg
ターゲットサーバノード(10.10.1.1)
$ dd if=/dev/zero of=disk.img bs=4096
count=1 seek=1000000
$ xnbd-server --target --lport 8992 disk.img
8
ライブVM&ストレージマイグレーション
(VMの再配置)
クライアントノード
(移動元Dom 0)
クライアントノード(移動先Dom 0)
$ xm migrate -l 2 10.20.1.2
$ modprobe nbd
$ echo deadline >
/sys/block/nbd0/queue/scheduler
$ nbd-client bs=4096 10.20.1.1 8992 /dev/nbd0
プロキシサーバノード(10.20.1.1)
$ xnbd-server --proxy --lport 8992 10.10.1.1
8992 cache.img cache.bitmap
VM再配置後徐々にディスク
ブロックをキャッシュしていく
I/Oパスの切り替わり
9
ライブVM&ストレージマイグレーション
(残りのブロックを移動)
残りのブロックを再配置後、
ターゲットへの接続を終了
プロキシサーバノード(10.20.1.1)
$ xnbd-bgctl --cache-all-blocks /tmp/xnbdbg.ctl
$ kill -HUP 12345 # PID of xnbd-server
10
プロキシサーバ詳細(基本動作)
書き込み
キャッシュ済みブロックの
読み込み
VM
VM
VM
Host
Host
Host
Host
xNBD
ターゲット
サーバ
xNBD
プロキシ
サーバ
xNBD
プロキシ
サーバ
xNBD
プロキシ
サーバ
移動先ディスクに書き込んで、
キャッシュ済みとマーク。
移動元への書き込みは不要。
移動先ディスクから
読み込み。
まだキャッシュしていないブロックの読み込み
キャッシュ済みブロック
ビットマップ
移動元ディスクから対象ブロックを遠隔読み込みし、
VMにデータを渡すとともに移動先ディスクにも保存。
キャッシュ済みとビットマップにマークする。
11
プロキシサーバ詳細(最適化)
VM移動前
VM移動後
VMのI/Oリクエストを分析して
アクセス頻度が高い領域
(Ext3グループ)を分析。
オンデマンドなキャッシングと並行してバッ
クグラウンドでも、使用中のブロックを優先
度の高いものからコピー。すべての使用中
ブロックをコピーし終えた時点で移動完了。
VM
Host
I/O リクエスト
iotype:
read
iofrom: 0x1234
iosize:
8096
VM
Ext2/3の特徴
Host
グループごとにデータを局所化
グループ グループ グループ
ディスク構造
0
1
2
xNBD
プロキシ
サーバ
xNBD
ターゲット
サーバ
inode
データ
ビットマップの解析により
使用中ブロックを把握可能
グループ1
バックグラウンドコピーも
VM移動後から開始
12
関連NBD実装

オリジナルNBD



ENBD (Enhanced NBD)




http://www.it.uc3m.es/ptb/nbd/
オリジナルNBDの改良版
現在開発停止中?
GNBD (Global NBD)




http://nbd.sourceforge.net/
カーネルドライバがLinuxにマージ済み
http://sourceware.org/cluster/gnbd/
複数クライアント同時アクセスに対応
専用カーネルドライバが必要 (gnbd.ko)
DNBD (Distributed NBD)


http://lab.openslx.org/projects/show/dnbd
読み込みキャッシュプロキシ
13
今後の予定

VM再配置によるデータセンタ省電力化




仮想クラスタ管理システムへの統合
消費電力・温度センサ、負荷モニタによる状態監視
VM再配置による動的なサーバ集約、稼動状態制御
詳細な性能評価


SPECweb等の既存ベンチマーク
I/Oリクエストロギングによる実サーバ分析結果の反映

所内イントラウェブサーバ
14
まとめ

xNBDの開発




既存NBDサーバを置き換えるだけでもOK



仮想クラスタ向け分散ストレージサーバ
分散コピーオンライト
ストレージライブマイグレーション
高速
複数同時クライアント
More Info.


http://bitbucket.org/hirofuchi/xnbd/
論文等 http://grivon.apgrid.org/
15