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