...

SCSIサポート機能の改良について

by user

on
Category: Documents
14

views

Report

Comments

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
Fly UP