Comments
Description
Transcript
1 - CELF `tree`
HTTP-FUSE CLOOP with Software RAID and DNSBalance for Embedded Linux ○金井 遵(1), 須崎有康(2), 八木豊志樹(2), 並木美太郎(1) (1)東京農工大学,(2)産業技術総合研究所 2006/12/08 CELF Jamboree #12 発表の流れ 背景 HTTP-FUSE-KNOPPIXについて 目的 組込みモバイルシンクライアントサーバ “HTTP-FUSE-KNOPPIX-BOX” 高速化の諸方式 耐故障性と負荷分散の諸方式 評価 組込み機器向け広域仮想ブロックデバイス “HTTP-FUSE-cloop for Embedded Systems” 組込み向け最適化の内容 評価 まとめ 2006/12/08 CELF Jamboree #12 2 背景 近年,シンクライアントシステムが増加 シンクライアントとは,システムソフトウェアを含めた全て の情報をネットワークで管理する方式 ソフトウェアやデータを集中管理可能 クライアントマシンにHDDやCDD等の可動部が必要なく信頼性 向上 従来のNFSベースのシンクライアントシステムでは, サーバが大規模化、モバイル化(WAN対応)が難し い どこでもシンクライアントシステムを実現するHTTPFUSE-KNOPPIXが開発 2006/12/08 CELF Jamboree #12 3 HTTP-FUSE-KNOPPIX CD/DVD起動Linux,KNOPPIXをベースとした Linuxディストリビューション ネットワークブロックデバイス“HTTP-FUSE-cloop” ルートファイルシステムをHTTPを介してインターネット上 から取得 どこでもKNOPPIXが利用できる HTTPは基本的にセッションレスなプロトコル(⇔NFS) OS/ソフトウェア管理のコストが小さい HTTPサーバ上の一次データの更新のみでよい シンクライアントシステムが実現可能 2006/12/08 CELF Jamboree #12 4 HTTP-FUSE-cloop 効率的なネットワークブロックデバイス 圧縮分割ブロックファイル オンデマンドでブロックファイル取得 2006/12/08 CELF Jamboree #12 5 従来方式(NFSシンクライアント)との比較 NFSベース HTTP-FUSE-KNOPPIX NFS ・UDP ・WAN拡張難 HTTP ・TCP ・基本セッションレス ・サーバの繋ぎ替え容易 *耐故障性に優れる *柔軟な負荷分散可能 ・WANへの拡張容易 ・軽量なプロトコル トラフィック 圧縮は基本的 に無し ブロック単位圧縮 MD5 通信効率良 ・OS起動に必要な 通信量はNFSの2/3! 拡張性 フルコンテンツ サーバを用意・ 大規模化 汎用キャッシュ サーバを用意・ 小規模化可能 サーバ DHCP/TFTP/ NFS DHCP/TFTP/HTTP プロトコル 2006/12/08 CELF Jamboree #12 必要ハードウェア資源 (CPU/メモリ/二次記憶)小 ・限定的環境で動作可 ・限定的環境で動作可 FireWall越え容易 6 既存の高速化の試み ブロックファイルのキャッシュ ブロックファイルをローカルマシン内にキャッシュ ブロックファイルのダウンロード回数を削減 Ext2Optimizer ファイルシステムレベルでの最適化 ブロックファイルのダウンロード数を削減 DLAHEAD(DownLoad Ahead) OS起動に必要なブロックファイルを先読み 2006/12/08 CELF Jamboree #12 7 本研究の目標 HTTP-FUSE-cloopを用いて, どこでも誰でも安価にシンクライアントシステム モバイル組込みシンクライアントサーバの開発 高速化・耐故障性・負荷分散機構 処理が軽量なサーバとし,スケーラビリティを実現 システム構築を容易に モバイル組込みシンクライアントの開発 広域仮想ブロックデバイスHTTP-FUSE-cloopの組込み向け最適化 Linuxベースのユビキタスノードに適用できる (携帯)情報端末,情報家電,ホームゲートウェイ,センサネットワーク, 学会・会議等での利用,教育利用,家庭内環境etc…. 2006/12/08 CELF Jamboree #12 8 問題分析 従来のHTTP-FUSE-KNOPPIXの手法では, ネットワーク状況(レイテンシ,帯域)が大きく性能を左右 1台のサーバ性能(=ディスク性能)の限界に対処不可 アクセス集中による,パフォーマンスの低下 耐故障性が考慮されていない シンクライアントシステムではネットワークファイルシステムの性能が体 感速度に大きく影響 特に組込みハードウェアによるサーバでは,性能に制限 サーバの負荷分散が考慮されていない モバイル環境では様々なネットワーク環境に対処する必要 クライアント起動中にサーバが故障すると,クライアントも停止 組込み機器のシンクライアント化ではHTTP-FUSE-cloopの性能 などの問題が存在 2006/12/08 CELF Jamboree #12 9 HTTP-FUSE-KNOPPIX-BOX モバイルシンクライアント HTTP-FUSE-KNOPPIX サーバ 各種組込環境で動作可 ARM/SH/PowerPC/x86… Linux 2.6/2.4系 モバイル化可能 ネットワークブート, HTTP/Proxy,負荷分散/ 耐故障性機能(DNS)など を持つ カードケースサイズ,重量 100g程度のものも ワイヤフリーに近いサー バ環境も構築可能 無線LAN/PoEなどの技術 2006/12/08 USL-5P(汎用USBサーバ)による HTTP-FUSE-KNOPPIX-BOX (SH4-266MHz/64MBMem/CF/ 有線LAN/重量150g/文庫本サイズ) CELF Jamboree #12 10 システムの全体図 HTTP-FUSE-KNOPPIX-BOX 有線・無線LAN・接続なし (ネットワーク接続有無に かかわらず起動可能) ・ネットワークブート/ルータ機能 ・高速化機能 ・負荷分散・耐故障性機構 などを持つ キャッシュサーバ ・負荷分散が可能 ・複数導入可能 クライアントマシン – 多様なアーキテクチャ (PC/情報端末/情報家電….) 2006/12/08 CELF Jamboree #12 11 2006/12/08 CELF Jamboree #12 12 本研究で用いた手法 高速化の実現 キャッシュサーバによる高速化 RAIDによる高速化 サーバ能力・負荷状況に応じた, DNSによる動的なサーバ切り替えによ る負荷分散機構 耐故障性の実現 RAIDによる耐故障性 RAIDの冗長性を利用した耐故障性機能 DNSによる耐故障性 ソフトウェアRAIDを利用したリクエスト分散,処理並列化による高速化 DNSによる負荷分散 広域ファイルシステムで問題となるネットワークレイテンシ・帯域を隠蔽 サーバの自動的な異常検出・切り替え機構 管理の自動化 サーバの自動認識(ホットプラグ)機構 2006/12/08 CELF Jamboree #12 13 実装 クライアント側(HTTP-FUSE-cloop for Embedded Systems) Linux 2.6系(x86/ARM/SH4) HTTP-FUSE-cloop ソフトウェアRAIDによる耐故障性・高速化機構を利用するとき FUSE(Filesystem in UserSpacE) 2.6.0+独自パッチ zlib/liblzo/libcurl md サーバ側(HTTP-FUSE-KNOPPIX-BOX) Linux 2.6系/2.4系(x86/ARM/SH4/PowerPC) DHCP Server, TFTP Server ー ネットワークブート用 HTTP Server(Apache,thttpd…) or Cache/Proxy Server(Squid…) ー ブロックファイル取得用 DNSによる耐故障性・負荷分散機構を利用するとき 2006/12/08 Ruby 1.8.x (DNS-Balance改造版) CELF Jamboree #12 14 キャッシュサーバによる高速化 クライアントからネットワーク的に近い場所にキャッシュサー バを設置、ブロックファイル取得 トラフィックに応じて複数のキャッシュサーバによる負荷分散 が可能 DNSとソフトウェアRAID(後述) キャッシュサーバの動的な追加・削除が可能 レイテンシ・帯域状況の改善 システム全体をダウンさせる必要なし 汎用HTTPキャッシュサーバが利用可能 Squidを利用 2006/12/08 CELF Jamboree #12 15 評価結果 – 従来方式との比較 HF-KNOPPIX (w/Cache) Fast HF-KNOPPIX (WO/Cache) CD起動KNOPPIX 従来のHFKNOPPIX NFSマウント 0 50 100 150 200 250 起動時間[s] 従来形式と比べ、起動時間の高速化を実現 (クライアント:ThinkPadX30/サーバ:BeSilent – 小型x86マシン) 2006/12/08 CELF Jamboree #12 16 評価結果 – HF-BOX環境間での比較 USL-5P(最適化FS) Fast L-BOX(最適化FS) L-BOX Be-Silent typeU キャッシュあり 0 50 100 150 200 250 キャッシュなし 300 350 400 起動時間[s] ロースペックノートPCから組込み向け環境まで動作可能 2006/12/08 CELF Jamboree #12 17 RAIDによる高速化と耐故障性 RAIDによる高速化 Linux mdによるソフトRAID 複数のHTTP-FUSE-cloop をmdにより、RAIDアレイ化 複数サーバからのブロック ファイル取得・展開の並列化 RAID0/1が利用可 HTTP-FUSEKNOPPIX-BOX 読込みは0/1ともに高速化 RAIDによる耐故障機能 RAID1の冗長性を利用 主にクライアント側の障害に 有効 2006/12/08 HTTP-FUSE自体の障害 クライアント側のネットワーク 障害 HTTP-FUSE毎にネットワー クインタフェースを変更可能 Client CELF Jamboree #12 18 RAID0が有利 単一プロセスの場合 RAID0が有利 4 1 10 100 ランダムアクセスサイズ[KB] 1000 10000 RAID1が有利 16 RAID0(8プロセス/4サーバ) RAID1(8プロセス/4サーバ) 従来方式 14 RAID0ではトラフィックの 偏りが生じる可能性 性能優先時はRAID0 耐故障性優先時はRAID1 2006/12/08 6 0 複数プロセスの場合での 性能差は小さい 8 2 RAID1が有利 先読みアルゴリズム サーバのディスクキャッ シュ 複数プロセスの場合 RAID0(1プロセス/4サーバ) RAID1(1プロセス/4サーバ) 従来方式 10 12 読込性能[MB/s] 12 読込性能[MB/s] 評価 ー RAID方式による差異 10 差は小さい 8 6 4 2 0 1 CELF Jamboree #12 10 100 1000 10000 ランダムアクセスサイズ[KB] 19 評価 ー サーバ数による差異 従来方式に比べて サーバ4台で約4.14倍 サーバ1台でも従来方式 に比べ高速化 ダウンロード・展開作業 が並列化 サーバ限界に対応可能 USL-5Pのような組込み 環境で特に有効 2006/12/08 16 1台(RAID1) 2台(RAID1) 4台(RAID1) 1台(従来方式) 14 12 読込性能[MB/s] 10 4.1倍 8 6 4 2 0 1 CELF Jamboree #12 10 1000 10000 同じサーバ1台でも, ランダムアクセスサイズ[KB] RAIDあり・なしで性能差 100 20 評価 ー アプリケーション起動時間 メモリ上からの起動 従来のHTTP-FUSE RAID0(1サーバ) Eclipse3.2 OpenOffice1.03(Writer) 同時起動 RAID0(4サーバ) 0 5 10 15 20 25 30 起動時間[s] Eclipse,OpenOfficeともに高速化 同時起動では従来のHTTP-FUSEの1/2以下の起動時間 2006/12/08 ディスクアクセス時間のみでは,3.5倍の高速化 CELF Jamboree #12 21 DNS Balanceによる耐故障機能と負荷分散 HTTP-FUSE-cloopによる DNSの定期的な名前解決 を利用 クライアントの割当てサーバ を起動中に動的に変更 ユーザは利用サーバを意識 する必要はない 実装はDNS Balanceを改変 耐故障性 正常なサーバを割当て 主にサーバ側の障害に有効 DNS Request Knx-Server? 起動!! Knx-Server = 192.168.0.X ↓ Knx-Server = 192.168.0.Z 負荷の低いサーバを割当て 2006/12/08 Knx-Server List = { 192.168.0.X , 192.168.0.Y , 192.168.0.Z (NEW!!) } Knx-Server = 192.168.0.Z Client 負荷分散 HTTP-FUSE-KNOPPIX-Server with DNS-Balance改 障害発生!! or 負荷増大!! 192.168.0.X 192.168.0.Y 192.168.0.Z HTTP-FUSE-Knoppix-Servers Block Files 特定のサーバに負荷を集中 させない CELF Jamboree #12 22 DNS Balanceによる耐故障機能と負荷分散(2) 最適な(=負荷が低く,正常な)サーバの動的割当て方法 DNSはハートビートから定期的に サーバのリストを作成・更新 各サーバの状況(ハートビート) からDNSがサーバ優先度決定, クライアント割り当て サーバの異常検知・回復 サーバの追加・削除を自動認識 管理容易 サーバ切替間隔はTTLなどによる 2006/12/08 サーバ異常発生時,ハート ビート送出停止 HTTP/Cacheサーバの 動作確認,再起動 ネットワーク異常時にはハート ビートは到達不可 サーバのホットプラグ ネットワーク負荷 ネットワーク形態 クライアント割当て台数 etc… 障害発生時の通信停止時間 CELF Jamboree #12 23 RAIDとDNSの組合せによる耐故障/負荷分散 機能 RAIDの各物理ディスクイメージ を複数のサーバに配置 サーバ状況によって各物理ディ スクイメージを読み取るサーバを 変更し, 耐故障性 負荷分散 を実現 RAID0/1ともに利用可 192.168.x.1 Cache/HTTP Server DISK1 Image DISK2 Image DISK2 Image DNS-Balance knx_server*={ 192.168.x.1 , 192.168.x.2 } サーバ切替 Blockfiles RAID0 物理ディスク1 RAID0 物理ディスク2 HTTP-FUSE/DISK1 knx_server1= 192.168.x.1 mdのみではRAID1のみ 耐故障性 必要二次記憶容量はmdを 利用しない場合と同等 DISK1 Image 192.168.x.2 Cache/HTTP Server knx_server2? 192.168.x.1 HTTP-FUSE/DISK2 knx_server2= 192.168.x.2→192.168.x.1 Linux md Client RAID0 論理ディスク /dev/mdX MD5によるファイル名 2006/12/08 CELF Jamboree #12 24 負荷分散(スケーラビリティ)の評価 USL-5P×4台 利用 サーバの台数 効果はほぼ線形 さらにクライアント が増えた場合, サーバを増やせ ば対処可能 800 サーバ1台 サーバ2台 サーバ4台 700 起動時間(最悪値)[秒] 600 500 400 300 200 100 0 0 2006/12/08 10 CELF Jamboree #12 20 30 クライアント数[台] 40 50 25 NFSに比べ性能 低下割合が小さい サーバへの負荷 がNFSに比べ 小さい 組込みサーバに 最適 Fast 起動時間[s] スケーラビリティ評価 ー 他方式との比較 180 160 140 120 100 80 60 40 20 0 1台 2台 4台 8台 クライアント台数 HF-KNOPPIX/サーバ1台 NFS 2006/12/08 CELF Jamboree #12 HF-KNOPPIX/サーバ2台 26 評価 ー 耐故障性(概要) サーバ側のネットワーク異常を想定 HF-KNOPPIXサーバとしてUSL-5P 2台を用意 RAID0+DNS Balanceを利用し,物理ディスク単位でトラ フィック分散 クライアント側で連続的にHTTP-FUSE-cloopを介し てデータを読み出す ネットワークを物理的に切断・接続を繰り返す 各サーバのトラヒックよりサーバ切替えが適切に行 われることを確認 2006/12/08 CELF Jamboree #12 27 通信停止時間=3[s] 評価 ー 耐故障性 正常にサーバ切替え 実行 スループット[Mbps] サーバ1 サーバ サーバ1 復帰 切断 切替 データアクセス エラーは発生せず DNSのTTL HTTP-FUSEの timeout HTTP-Keep-Alive サーバリスト更新 間隔(Heartbeat) による 2006/12/08 サーバ2切断/ 切替/復帰 45 40 サーバ1 サーバ2 35 30 25 20 15 10 5 0 サーバ復帰時にはト ラフィックが再度分散 最大通信停止時間は, サーバ1切断/ 切替/復帰 0 10 20 30 40 50 60 70 80 90 100 経過時間[s] サーバ1切断 サーバ1復帰 サーバ リスト更新 リスト更新 DNS DNS問合せ サーバ切替 DNS問合せ サーバ切替 クライアント 物理ディスク1 物理ディスク2 Serv1 Serv2 Serv2 Serv2 CELF Jamboree #12 Serv1 Serv2 Serv2 Serv2 Serv1 Serv2 Serv1 Serv1 Serv1 Serv2 28 HTTP-FUSE-cloop for Embedded Systems 組込みシステムにもシンクライアントシステム 広域で利用できる軽量なストレージシステムを提供 様々なアーキテクチャ(x86/ARM/SH/MIPS….)への対応 Linuxベース情報家電等での利用 従来のHTTP-FUSE-cloopでは性能上の問題がある CPU性能,メモリ性能,ネットワーク性能… 組込み向けのHTTP-FUSE-cloopの最適化が必要 特に,HTTP-FUSE-KNOPPIX-BOXの評価から, LAN環境ではCPUやメモリ性能がボトルネックになる傾向 CPU:HTTP-FUSE-cloopの展開処理最適化 メモリ性能:メモリ周りの処理の最適化 2006/12/08 CELF Jamboree #12 29 HTTP-FUSE-cloopとHTTP-FUSE-loop(?) UserApp FileSystem FileSystem Cloop driver Fuse driver HTTP-FUSE -cloop Fuse driver Cloop driver UserApp FileSystem FileSystem Loop driver Fuse driver HTTP-FUSE -cloop Fuse driver Loop driver FileSystem 組込み用 HTTPFUSE-cloop UserApp コピー ダウンロード・展開 Read要求 差し替えを容易に Kernel User Kernel 30 CELF Jamboree #12 2006/12/08 FileSystem UserApp 従来の HTTPFUSE-cloop Read要求 展開ルーチンの ダウンロード 展開 HTTP-FUSE-loopの内部構造(ダウンロード部) libcurlにより取得 Callback毎にrealloc() ② or ③ Output 展開処理 ② 出力バッファ 確保・コピー download キャッシュ書込 download Read Request from FUSE ① downloadキャッシュ ●1ファイルのメモリキャッシュ ●二次記憶/Ramdiskキャッシュ Download キャッシュ読出 2006/12/08 ①、②、③・・・はメモリコピー回数 ① CELF Jamboree #12 31 HTTP-FUSE-loopの改善(ダウンロード部) libcurlにより取得 あらかじめ固定サイズで確保 されたメモリ領域に書き込み ReadRequest毎の 出力バッファ確保・コピー廃止 プログラム開始時に確保した バッファを展開時にも利用 Output 展開処理 download Read Request from FUSE ① Downloadキャッシュ廃止 1ファイルキャッシュは展開後にキャッシュ →キャッシュヒット時に再展開の必要が なくなり、高速化 2006/12/08 CELF Jamboree #12 32 HTTP-FUSE-loopの内部構造(展開部) ③ or ④ ④ or ⑤ Output 出力用バッファ コピー 展開処理 展開用バッファ 確保 download Read Request from FUSE Zlibにより展開 組み込み環境には少々重い 2006/12/08 CELF Jamboree #12 33 HTTP-FUSE-loopの改善(展開部) キャッシュヒット 展開ルーチンは、 Zlib、LZO、無圧縮 を選択可能に! ① or ③ ② 無圧縮イメージの場合は、 Download時に直接、キャッ シュに出力するため、コ ピー回数が ① or ② に 2006/12/08 展開処理 (出力バッファ 直接) ブロック全体の ReadRequest CELF Jamboree #12 Output 出力用バッファ コピー 展開処理 (キャッシュ バッファ) download Read Request from FUSE ブロック一部 のReadReq 1ファイル展開後 キャッシュ ② ブロック全体の リード要求では キャッシュしない 34 改良結果 ブロックデータ圧縮ルーチンの変更 Zlibだけでなく,軽量なLZOや,無圧縮方式を利用可能に メモリ周りの処理の最適化 メモリコピーがボトルネックになっていることが判明 無圧縮イメージではコピー回数を4 or 5回→1 or 2回に LZO,Zlib利用時にはコピー回数を4 or 5回→1 or 2 or 3回に メモリ確保(malloc)・再確保(realloc)回数の最適化 1回の読込みリクエストでのメモリ確保回数は3回以上→0回に キャッシュ方式の変更 展開後のデータをキャッシュ キャッシュヒット時のCPU負荷・メモリコピー回数低減 ブロック全体の読込み時にはキャッシュしないように 2006/12/08 CELF Jamboree #12 35 圧縮方式・イメージ別の転送量 3種類のイメージ (各100MB)を用意 ランダムデータ (圧縮率低/Random) 動画データ (圧縮率中/Data) ゼロデータ (圧縮率高/Zero) シーケンシャルに30MB 読み出したときの転送 量を測定 zlibとLZOの転送量で 最大1.4倍の差 2006/12/08 Zero 無圧縮 LZO zlib Data Random 0 5 CELF Jamboree #12 10 15 20 総転送量[MB] 25 30 35 36 機器別性能評価 従来方式に比べ 1.8~2.4倍の 性能向上 ARM搭載機器は メモリ周り最適化 が有効 SH搭載機器では 展開処理軽量化 が有効 メモリ周り最適化 による性能向上 GLANTANK (Xscale 400MHz) 無圧縮+最適化 LZO+最適化 zlib+最適化 従来方式 Armadillo (ARM9 200MHz) USL-5P (SH4 266MHz) 0 2006/12/08 CELF Jamboree #12 展開処理軽量化 2 4 による性能向上 性能[MB/s] 6 8 37 圧縮方式と圧縮率別性能 ダウンロード時間と 展開時間のトレード オフ 組込み機器では 展開時間がボトル ネックになる傾向 ネットワーク環境の 改善もあり,組込み 機器ではLZOが 最適か Zero Data LZO Zlib 無圧縮 Random 0 2 圧縮率中程度の イメージ(Data)で LZOの効果顕著 2006/12/08 CELF Jamboree #12 4 6 性能[MB/s] 8 10 12 38 他方式との比較 他方式と比較すると NFSの1/2倍~同程度 SMBの1.3倍~2.7倍 圧縮率が高くなるデータ では,圧縮のないNFS やSMBに比べ有利 FUSE自体のオーバ ヘッドが比較的大きい HTTP-FUSEcloop(LZO) NFS Zero Data Random SMB 0 2 4 6 8 10 性能[MB/s] 2006/12/08 CELF Jamboree #12 39 まとめ 組込みモバイルシンクライアントサーバ “HTTP-FUSE-KNOPPIX-BOX”を実装 キャッシュサーバ,RAID,DNSによるトラフィック分散・高速化を実現 RAIDではディスク性能で最大4.14倍の性能を実現 アプリケーション起動で最大1/2以下の起動時間を実現 キャッシュサーバにより従来手法と同等以上の起動時間を実現 スケーラビリティの実現を確認 DNS/RAIDによる耐故障性を実現 組込み機器向けにHTTP-FUSE-cloopを最適化 従来方式に比べ最大2.4倍の高速化 広域にサービス提供可能な,組込みシンクライアント実現の可能性 2006/12/08 CELF Jamboree #12 40