Comments
Description
Transcript
SCSIサポート機能の改良について
SCSIサポート機能の改良について 蒲田順 <[email protected]> 竹部晶雄 <[email protected]> 松本一志 <[email protected]> 富士通株式会社 All Rights Reserved, Copyright (C) FUJITSU 2007, 2008 背景 サーバ用途において,ゲストドメインでのSCSI機能のサポー トは必須要件 (http://www.xen.org/files/xensummit_fall07/19_Matsumoto.pdf 参照) 9 このような理由により,pvSCSIドライバを開発してきた 9 一方で,直接I/O (VT-d, IOMMU)も,性能やネイティブ環 境との互換性等から,非常に魅力的 両者は棲み分け可能であるため… 9 pvSCSIドライバの改良 (パート1で説明) 9 VT-dを使ったSAN bootサポート (パート2で説明) を平行して実施している. 2 All Rights Reserved, Copyright (C) FUJITSU 2007, 2008 パート1 pvSCSIドライバの改良 3 All Rights Reserved, Copyright (C) FUJITSU 2007, 2008 現在の実装(Xen 3.3.0) 9 LUN(Logical Unit Number)単位のパススルー 9 LUN単位のホットプラグ(動的追加/削除) 機能を提供(Xen 3.3.0) Dom0 物理SCSI host (host=0) Guest Domain 仮想SCSI host (host=2) 仮想SCSI host (host=2) (3) 追加 (1) 追加 物理LUN群 LUN 0:0:0:1 … LUN 仮想LUN群 LUN 1:0:1:3 0:1:2:3 物理SCSIツリー群 仮想LUN群 (2) アタッチ LUN 2:0:0:0 任意 マッピング LUN LUN 2:0:0:1 仮想SCSIツリー 4 2:0:0:0 (4) 直ちに 出現,使用可能に LUN 2:0:0:1 仮想SCSIツリー All Rights Reserved, Copyright (C) FUJITSU 2007, 2008 現在の実装の課題 完全に仮想化された(=物理SCSIツリーとは別の) SCSIツリーをゲストドメインに提供 柔軟性はあるものの… 9 いくつかのSCSIコマンド(REPORT_LUN, EXTENDED_COPY等)は バックエンド側でのエミュレーションが必要 (処理が物理SCSIツリーの構造に依存しているため) 9 必要なすべてのSCSIコマンドのエミュレーションロジックを開 発するには莫大な時間を要するため,現在多くが未実装 このため,SCSI機能をフルに利用できない :-( 5 All Rights Reserved, Copyright (C) FUJITSU 2007, 2008 課題の解決方法 案1. 全てのエミュレーションロジックを作成する ¾ 開発に多大な労力が必要 ¾ さらに,ベンダー固有コマンドにすべて対応することは 困難であり,使用できないコマンドがどうしても残る 案2. HBA単位でゲストに割り当てる新たなモードを“追加” (これにより,SCSIコマンドエミュレーションがバイパス可能に) ¾ 実装が簡単(後述) ¾ すべてのベンダー固有コマンドに対応 ¾ NPIV(N_Port Id Virtualization)との整合性も良い このため,案2の方法での実装を提案したい 6 All Rights Reserved, Copyright (C) FUJITSU 2007, 2008 提案する実装方式 (1/2) 9 Host (HBA: Host Bus Adaptor)単位のパススルー 機能を追加 Dom0 物理SCSI host (host=0) Guest Domain 仮想SCSI host (host=2) (1) 作成 物理LUN群 LUN LUN 0:0:0:1 0:1:2:3 物理SCSIツリー 仮想LUN群 LUN 2:0:0:1 下線部は 同じ値 LUN 2:1:2:3 仮想SCSIツリー 7 仮想SCSI host (host=2) (2) アタッチ 仮想LUN群 LUN 2:0:0:1 LUN 2:1:2:3 仮想SCSIツリー All Rights Reserved, Copyright (C) FUJITSU 2007, 2008 提案する実装方式 (2/2) 必要な改造は以下のみ 9 バックエンドドライバ ¾ LUN単位/Host単位の割り当てを識別するためのフラグの追加 ¾ Host単位割り当て時にエミュレーションをバイパスするための ロジックの追加 (if文ひとつ) 9 フロントエンドドライバ ¾ 改造不要 9 xend ¾ ユーザインタフェース周りの拡張 ¾ (Target配下に接続されている)LUNをスキャンする機能の追加 8 All Rights Reserved, Copyright (C) FUJITSU 2007, 2008 まとめ (パート1) 近日中にパッチを投稿予定 皆様のコメントをお待ちしています ご静聴ありがとうございました 9 All Rights Reserved, Copyright (C) FUJITSU 2007, 2008 パート2 VT-dを使ったSAN bootサポート 10 All Rights Reserved, Copyright (C) FUJITSU 2007, 2008 Introduction なぜSAN bootが必要か? (1/2) VT-dの有用性 - ネイティブ OSのdevice driversやapplicationsが使用できる - 障害などの隔離性が高い - 性能がNativeとほぼ同程度 Dom0 Guest Guest Device driver Device driver Hypervisor VT-d H/W assigned device 11 assigned device All Rights Reserved, Copyright (C) FUJITSU 2007, 2008 Introduction なぜSAN bootが必要か? (2/2) 現状では、VT-dを使用したPCI pass-through deviceは“data disk“としてしか使 用することが出来ない。そのためGuestはbootするためにemulation diskを使用 する必要ある。 “boot disk”を含むすべてのディスクで VT-dのpass-through deviceを使用したい。 “boot disk”としてdeviceを使用するためには, pass-through deviceからブートす る仕組み(SAN bootなど)をサポートする必要がある。 もしguestがSAN bootす ることが出来ればemulation diskを使用する必要が無くなる。 server server SCSI command SCSI command SAN storage (RAID) storage (RAID) 12 OSをbootさせるために, guest BIOS はpassthrough deviceを通し て、diskのMBRを読む 必要がある。 All Rights Reserved, Copyright (C) FUJITSU 2007, 2008 Introduction SAN bootするためには? SAN bootを行う場合、BIOSはMBRを読み込むためにPCI device のExpansion ROMを使用する必要がある。Expansion ROMを使 用するためにGuest BIOSに必要なものは以下 9PCI Firmware SpecとPnP BIOS Boot specのサポート 9 PCI 3.0の呼び出し規約 9 PCI legacy deviceの呼び出し規約 9 PnP BIOS Boot specのBEV styleの呼び出し規約 9 PnP BIOS Boot specのBCV styleの呼び出し規約 9 Expansion ROMが使用するBIOS servicesのサポート 9 interrupt function (例えば、“int 0x10”, “int 0x16” …) 9 I/O portアクセス BCV: Boot Connection Vectorの略。一般的にSCSI controllerなどで使用される BEV: Boot Entry Vectorの略。 一般的にEthernet controllerなどで使用される 13 All Rights Reserved, Copyright (C) FUJITSU 2007, 2008 Current Issues Guest BIOS/qemu-dmはemulation deviceからのブー トしかサポートしていない。 Guest BIOSはBIOS servicesをフル実装していないた め、 サポートされていないBIOS serviceをExpansion ROMが呼び出す場合がある。 Expansion ROMを使用するために数種類の呼び出し 規約があり、それらをサポートする必要がある。(PCI 3.0 spec, legacy spec, PnP Boot BIOS spec, または 各仕様の混在など) BIOS specがあまり明確でない 14 All Rights Reserved, Copyright (C) FUJITSU 2007, 2008 Enhancement plan 1st Step 9 BCV styleをサポートするためのrombiosの拡張 9 Expansion ROM imageの検出 9 checksumやdevice idなどのsanity check 9 Expansion ROM imageを0xd0000にmapする 9 BCV styleのExpansion ROMの呼び出し規約のサポート 9 qemu-dmのSAN boot対応 2nd Step 9 他のboot specのサポート 9 未実装のBIOS serviceをrombiosに実装する 15 All Rights Reserved, Copyright (C) FUJITSU 2007, 2008 Design concept (1/3) 1st Stepとして、BIOS Boot specに定義されているBCV style の Expansion ROMの呼び出し規約のサポートをする。 BCV styleの呼び出し規約を選んだの理由 - 多くのPCI cardがBCV styleをsupportしていると思われる - 呼び出し規約が単純 BCV styleとはどのような方法か? BCV styleはINT 0x13(disk read)のhandlerにdevice固有の handlerをinstallすることで、diskの読み込みを可能にする方法。 BCVとはExpansion ROMの中でdevice固有のINT 0x13 handlerをinstallするcodeをさすpointer。BIOSは初期化時に BCVにjumpしてhandlerをinstallする。 16 All Rights Reserved, Copyright (C) FUJITSU 2007, 2008 Design concept (2/3) 0h signature 0xaa55 2h Image size … 3h Entry point for INIT jmp <address> function 1. hvmloader は Expansion ROM を 0xd0000へmapする 6h reserved 0xd0000 Pointer to 18h PCI data Structure PnP 1Ah Expansion Header ROM header PCI data structure PnP Expansion Header Image 0xe0000 2. hvmloader,rombios は sanity checkする 3. rombiosはax registerに bus:dev:function 番号を設 定した後、INIT functionの Entry point へjumpする。 17 All Rights Reserved, Copyright (C) FUJITSU 2007, 2008 Design concept (3/3) How to initialize Expansion ROM 0h signature 0xaa55 2h Image size … 3h Entry point for INIT jmp <address> function 4. INT 0x13 handler をinstallするために BCVへjumpする 6h reserved 0xd0000 ROM header PCI data structure Pointer to 18h PCI data Structure PnP 1Ah Expansion Header PnP Expansion Header Image 0xe0000 Next PnP Expansion Header 0h … signature … $PnP … 06h … offset of next header … (0000h is none) … 09h … checksum … 16h … BCV … Code to hook INT 0x13h … … 18 All Rights Reserved, Copyright (C) FUJITSU 2007, 2008 sample 19 All Rights Reserved, Copyright (C) FUJITSU 2007, 2008 Current Status 1st Step 9 BCV styleをサポートするためのrombiosの拡張 [prototype完了] 9 SAN boot動作済 9 qemu-dmのSAN boot対応 [作業中] 9 cleanup patch [作業中] 2nd Step 9 他のboot specのサポート 9 未実装のBIOS serviceをrombiosに実装する 20 All Rights Reserved, Copyright (C) FUJITSU 2007, 2008 謝辞 本研究・開発の一部は、経済産業省の委託を受けた 技術研究組合 超先端電子技術開発機構(ASET)の セキュア・プラットフォームプロジェクトの成果です。 21 All Rights Reserved, Copyright (C) FUJITSU 2007, 2008 Q&A ご質問をどうぞ 22 All Rights Reserved, Copyright (C) FUJITSU 2007, 2008