JP2006513469A - 記憶システムのための汎用多重通路ドライバ - Google Patents

記憶システムのための汎用多重通路ドライバ Download PDF

Info

Publication number
JP2006513469A
JP2006513469A JP2004565492A JP2004565492A JP2006513469A JP 2006513469 A JP2006513469 A JP 2006513469A JP 2004565492 A JP2004565492 A JP 2004565492A JP 2004565492 A JP2004565492 A JP 2004565492A JP 2006513469 A JP2006513469 A JP 2006513469A
Authority
JP
Japan
Prior art keywords
irp
machine
causes
program code
small
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004565492A
Other languages
English (en)
Other versions
JP2006513469A5 (ja
Inventor
アトレア,ギリドハー
レッグ,クリス・ビィ
オルティス,ジュアン・カルロス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Unisys Corp
Original Assignee
Unisys Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Unisys Corp filed Critical Unisys Corp
Publication of JP2006513469A publication Critical patent/JP2006513469A/ja
Publication of JP2006513469A5 publication Critical patent/JP2006513469A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F2003/0697Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers device management, e.g. handlers, drivers, I/O schedulers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Hardware Redundancy (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本発明の一実施例は、入出力(I/O)装置のための多重通路を管理するための技術である。上位レベルのドライバからのI/O要求パケット(IRP)が受信される。複数の下位レベルのドライバを用いて、複数のデバイスオブジェクトへの複数の経路がIRPに応じて管理される。デバイスオブジェクトは、Mのデバイスの種類を有するフィジカルデバイスに対応する。下位レベルのドライバはフィジカルデバイスを制御する。

Description

関連出願の相互参照
本出願は以下の特許出願、すなわち「記憶装置のための汎用多重通路ドライバを用いたフェイルオーバーおよびフェイルバック」(“Failover and Failback Using a Universal Multi-path Driver for Storage Devices”)と題された連続番号_(代理人整理番号第02−031/006342P005号)、および「記憶装置のための汎用多重通路ドライバにおけるロードバランシング」(“Load Balancing in a Universal Multi-path Driver for Storage Devices”)と題された連続番号_(代理人整理番号第02−32/006342P006号)に関連するものであり、すべては本出願と同じ日に提出され、本出願と同じ譲受人に譲受され、その各々の内容はここに引用により援用される。
背景
発明の分野
本発明の実施例は、記憶システムの分野に関し、より特定的に記憶システムのためのドライバに関する。
関連技術の説明
記憶技術は、多くのデータ集約型アプリケーションにとって重要になっている。最近、さまざまなアプリケーションに対応するために異なる容量およびストリーミング速度を有する記憶装置がある。これらの記憶装置の例としては、レイド(RAID)、テープドライブ、ディスクドライブおよびテープライブラリが含まれる。これらの装置をインターフェイスするための技術としては、直接接続された記憶装置および記憶領域ネットワーク(SAN)が含まれる。
これらの記憶装置にインターフェイスするための既存の技術には複数の欠点がある。第1に、これは、同じドライバにおける異なる種類の装置を管理しないということである。システムは、典型的に、複数の異なる種類のドライバを各種類の記憶装置につき1つ設置しなければならない。これによって、管理およびシステム管理に複雑さがもたらされ、ソフトウェアの取得および保守の費用が増大し、システムの信頼性および再構成可能性が減じられる。第2に、これは、異なる記憶装置の間でフェイルオーバーを与えず、システムの耐故障性を減じ、サーバのダウンタイムを増す。第3に、これは、異なる記憶装置の間でロードバランシングを行なわず、記憶装置の利用においてスキューがあるときに性能を低下させる。
発明の概要
本発明の一実施例は、入出力(I/O)装置のための多重通路を管理するための技術である。上位レベルのドライバからのI/Oリクエストパケット(IRP)が受信される。複数のデバイスオブジェクトへの複数の経路が、複数の下位レベルのドライバを用いて、IRPに応じて管理される。デバイスオブジェクトは、Mのデバイスの種類を有するフィジカルデバイスに対応する。下位レベルのドライバはフィジカルデバイスを制御する。
本発明は、以下の説明、および本発明の実施例を例示するために用いられる添付の図面を参照することによって、最もよく理解され得る。
説明
本発明の一実施例は、入出力(I/O)装置のための多重通路を管理するための技術である。上位レベルのドライバからのI/Oリクエストパケット(IRP)が受信される。複数の下位レベルのドライバを用いて、複数のデバイスオブジェクトへの複数の経路が、IRPに応じて管理される。このデバイスオブジェクトは、Mのデバイスの種類を有するフィジカルデバイスに対応する。下位レベルのドライバはフィジカルデバイスを制御する。
以下の説明において、複数の特定の詳細が述べられる。しかしながら、本発明の実施例は、これらの特定の詳細なしに実施され得ることを理解すべきである。他の例において、この説明の理解を明確にするために、公知の回路、構造および技術は示されていない。
図1Aは、本発明の一実施例を実施することができるシステム10を示す図である。システム10は、サーバ/クライアント20、ネットワーク30、スイッチ40、テープドライブ501および502、テープライブラリ60、ならびに記憶サブシステム70を含む。なお、システム10は例示のために示されているに過ぎない。システム10は、示されたような構成要素よりも多いまたは少ない構成要素を含み得る。システム10は、直接接続された記憶装置または記憶領域ネットワーク(SAN)において用いられ得る。システム10のトポロジは、アービトレート型ループまたはスイッチ型ファブリックであってもよい。
サーバ/クライアント20は、典型的に、企業環境で用いられるコンピュータシステムである。これは、ウェブサーバ、電子メール(e-mail)サーバ等の専用の機能を果たすサーバ、または他のクライアントもしくはサーバへの接続を有するネットワーク環境におけるクライアントであり得る。サーバ/クライアント20は、通常、その計算のニーズのために大量の記憶容量を必要とする。これは、金融、科学研究、マルチメディア、学術および政府関係の仕事、データベース、娯楽等の幅広い種類のアプリケーションにおいて用いられ得る。
ネットワーク30は、サーバ/クライアント20を他のサーバ/クライアントまたはシステムに接続するネットワークである。ネットワーク30は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、イントラネット、インターネットまたはいかなる他の種類のネットワークであってもよい。ネットワーク30は、非同期転送モード(ATM)または同期光ネットワーク(SONET)等の複数の電気通信網にインターフェイスするためのゲートウェイ、アダプタ、ルータ等の複数のネットワーク装置(図示せず)を含み得る。
スイッチ40は、サーバ/クライアント20をさまざまな記憶装置または他の装置もしくはサブシステムに相互接続する相互接続装置である。スイッチ40は、ハブ、スイッチングハブ、多重ポイントツーポイントスイッチまたはディレクタ等であってもよい。これは、典型的に、数個のポートから何百個のポートに及ぶ多数のポートを有する。複雑さは、単純なアービトレート型ループから可用性の高いポイントツーポイントに及び得る。スイッチ40のスループットは、毎秒200メガバイト(MBps)から毎秒1Gバイト(GBps)に及び得る。
テープドライブ501および502は、バックアップおよびアーカイブのタスクのために高い容量を有する記憶装置である。テープドライブで用いられるテープのための容量は、数十から数百のギガバイト(GB)に及び得る。転送速度は、10から50MBpsに及
び得る。テープライブラリ60は、自動テープ装填を有する多数のテープドライブを含む。テープライブラリ60の容量は、50から300MBpsの総合データ転送速度を有する1から1000テラバイト(TB)に及び得る。テーブルドライブ501および502、ならびにテーブルライブラリ60は順次アクセスを用いる。記憶サブシステム70は、ディスクサブシステム72、安価なレイド(RAID)のサブシステム74、および記憶装置76を含む。ディスクサブシステム72は、単一のドライブまたはディスクのアレイであってもよい。RAIDサブシステム74は、さらなる複雑さおよび特徴を有するディスクのアレイであり、管理可能性、性能、容量、信頼性および可用性が増大される。記憶装置76は、磁気、光学、電気光学等を含むいかなる他の記憶システムであってもよい。
テープドライブ501および502、テープライブラリ60、ディスクサブシステム72、安価なレイド(RAID)サブシステム74、および記憶装置76は、長期保管するためにサーバ/クライアント20に接続されたフィジカルデバイスを形成する。これらの装置は、典型的に異なる種類の装置を含む。サーバ/クライアント20は、多重通路でこれらの装置の種類(たとえばテープドライブ、テープライブラリ、ディスクRAID)のすべてにインターフェイスする能力を有する。
図1Bは、本発明の一実施例を実施することのできるサーバ/クライアントシステム20を示す図である。サーバ/クライアントシステム20は、プロセッサ110、プロセッサバス120、メモリ制御ハブ(MCH)130、サブシステムメモリ140、入出力制御ハブ(ICH)150、周辺バス160、ホストバスアダプタ(HBA)1651から165M、大容量記憶装置170、および入出力装置1801から180Kを含む。なお、サーバ/クライアントシステム20は、これらの要素よりも多いまたは少ない要素を含み得る。
プロセッサ110は、組込型プロセッサ、モバイルプロセッサ、マイクロコントローラ、デジタル信号プロセッサ、スーパースカラコンピュータ、ベクトルプロセッサ、単一命令多重データ(SIMD)コンピュータ、複数命令セットコンピュータ(CISC)、縮小命令セットコンピュータ(RISC)、超長命令語(VLIW)、またはハイブリッドアーキテクチャ等のいかなる種類のアーキテクチャの中央処理装置を表わしている。
プロセッサバス120は、プロセッサ110が他のプロセッサまたはデバイス、たとえばMCH130と通信するのを可能にするインターフェイス信号を提供する。ホストバス120は、ユニプロセッサまたはマルチプロセッサの構成をサポートし得る。ホストバス120は、並列、順次、パイプライン、非同期、同期またはいかなるその組合せであってもよい。
MCH130は、システムメモリ140、ICH150等の、記憶装置および入出力装置を制御および構成する。MCH130は、分離した実行モード、ホストから周辺へのバスインターフェイス、メモリ制御等の多数の機能性を統合するチップセットへと統合され得る。MCH130は、周辺バス160にインターフェイスする。明確にするために、すべての周辺バスが示されるわけではない。サブシステム40は、周辺構成要素相互接続(PCI)、加速式グラフィックポート(AGP)、業界標準アーキテクチャ(ISA)バス、およびユニバーサルシリアルバス(USB)等の周辺バスを含んでもよい。
システムメモリ140は、システムのコードおよびデータを記憶する。システムメモリ140は、典型的に、ダイナミックランダムアクセスメモリ(DRAM)またはスタティックランダムアクセスメモリ(SRAM)で実現される。システムメモリ140は、本発明の一実施例を実現するプログラムコードまたはコードセグメントを含み得る。システムメモリ140は、記憶管理ドライバ145を含む。記憶管理ドライバ145の要素のうち
のいかなる1つも、ハードウェア、ソフトウェア、ファームウェア、マイクロコードまたはいかなるその組合せによって実現され得る。システムメモリ140は、示されていない、オペレーティングシステム等の他のプログラムまたはデータを含んでもよい。記憶管理ドライバ145は、プロセッサ110によって実行されるときに、プロセッサ110に以下に記載されるような動作を行なわせるプログラムコードを含む。
ICH150は、I/O機能をサポートするように設計された複数の機能性を有する。ICH150は、チップセットに共に統合されるか、またはI/O機能を果たすためにMCH130から分離され得る。ICH150は、周辺バス160にインターフェイスするためのPICバスインターフェイス、プロセッサインターフェイス、割込みコントローラ、直接メモリアクセス(DMA)コントローラ、パワーマネジメントロジック、タイマ、システム管理バス(SMBus)、ユニバーサルシリアルバス(USB)インターフェイス、大容量記憶インターフェイス、低いピンカウント(LPC)インターフェイス等の複数のインターフェイスおよびI/O機能を含み得る。
HBA1651から165Mは、スイッチ40(図1A)にインターフェイスするアダプタである。HBA1651から165Mは、典型的に、周辺バス160、またはプロセッサ110にアクセス可能ないかなる他のバスにもインターフェイスするアドオンカードである。HBAは、一時データを記憶するための、ローカルメモリまたはフレームバッファを有する独自のプロセッサを有し得る。サポートされたプロトコルは、小型コンピュータ小型インターフェイス(SCSI)、インターネットプロトコル(IP)およびファイバチャネル(FC)であってもよい。転送速度は、全二重で数百MBpsであり得る。媒体は、銅およびマルチモードの光学を含み得る。
大容量記憶装置170は、コード、プログラム、ファイル、データ、アプリケーションおよびオペレーティングシステム等のアーカイブ情報を記憶する。大容量記憶装置170は、コンパクトディスク(CD)ROM172、デジタルビデオ/汎用ディスク(DVD)173、フロッピー(登録商標)ドライブ174、ハードドライブ176、フラッシュメモリ178およびいかなる他の磁気または光学の記憶装置を含み得る。大容量記憶装置170は、機械でアクセス可能な媒体を読出すという機構を与える。機械がアクセス可能な媒体は、以下に記載されるようなタスクを行なうためのコンピュータが読取り可能なプログラムコードを含み得る。
I/O装置1801から180Kは、I/O機能を実行するためのいかなるI/O装置も含み得る。I/O装置1801から180Kの例として、入力装置のための制御装置(たとえばキーボード、マウス、トラックボール、ポインティングデバイス)、メディアカード(たとえば音声、ビデオ、グラフィックス)、ネットワークカード、およびいかなる他の周辺制御装置も含まれる。
本発明の一実施例の要素は、ハードウェア、ファームウェア、ソフトウェアまたはいかなるその組合せによっても実現され得る。ハードウェアという用語は、一般的に、電子、電磁、光学、電気光学、機械、電気機械の部品等の物理的な構造を有する要素のことをいう。ソフトウェアという用語は、一般的に、論理構造、方法、手順、プログラム、ルーチン、プロセス、アルゴリズム、公式、関数、式等のことをいう。ファームウェアという用語は、一般的に、ハードウェア構造(たとえばフラッシュメモリ、ROM、EROM)で実現または実施される、論理構造、方法、手順、プログラム、ルーチン、プロセス、アルゴリズム、公式、関数、式のことをいう。ファームウェアの例としては、マイクロコード、書き込み可能制御記憶装置、マイクロプログラム構造が含まれ得る。本発明の実施例の要素は、ソフトウェアまたはファームウェアで実現されるときに、本質的に、必要なタスクを実行するコードセグメントである。ソフトウェア/ファームウェアは、本発明の一実
施例に記載される動作を行なうための実際のコード、または動作をエミュレートもしくはシミュレートするコードを含み得る。プログラムもしくはコードセグメントを、プロセッサもしくは機械がアクセス可能な媒体に記憶するか、または送信媒体上で搬送波もしくは搬送波によって変調された信号で実現されるコンピュータデータ信号によって送信することができる。「プロセッサが読取可能な、もしくはアクセス可能な媒体」、または「機械が読取可能な、もしくはアクセス可能な媒体」は、情報を記憶、送信または転送することのできるいかなる媒体も含み得る。プロセッサが読取可能な、または機械がアクセス可能な媒体の例として、電子回路、半導体メモリ素子、読み出し専用メモリ(ROM)、フラッシュメモリ、消去可能なROM(EROM)、フロッピー(登録商標)ディスク、コンパクトディスク(CD)ROM、光学ディスク、ハードディスク、光ファイバ媒体、無線周波(RF)リンク等が含まれる。コンピュータデータ信号は、電子ネットワークチャネル、光ファイバ、エアリンク、電磁リンク、RFリンク等の送信媒体上を伝播することのできるいかなる信号も含み得る。コードセグメントは、インターネット、イントラネット等のコンピュータネットワークを介してダウンロードされ得る。機械がアクセス可能な媒体は、製造品において実現され得る。機械がアクセス可能な媒体は、機械がアクセスしたときに、機械に以下に記載された動作を行なわせるデータを含み得る。機械がアクセス可能な媒体は、それに組み込まれたプログラムコードを含み得る。このプログラムコードは、以下に記載された動作を行なうための機械読取可能コードを含み得る。「データ」という用語は、ここでは機械が読取可能な目的のために符号化されるいかなる種類の情報のことも指す。したがって、これはプログラム、コード、データ、ファイル等を含み得る。
本発明の実施例のすべてまたは一部は、ハードウェア、ソフトウェア、もしくはファームウェア、またはいかなるその組合せによって実現され得る。ハードウェア、ソフトウェアまたはファームウェアの要素は、互いに結合された複数のモジュールを有し得る。ハードウェアモジュールは、機械的、電気的、光学的、電磁的またはいかなる物理的な接続によっても別のモジュールに結合される。ソフトウェアモジュールは、関数、手順、方法、サブプログラム、またはサブルーチンコール、ジャンプ、リンク、パラメータ、変数および引数の受け渡し、ファンクションリターン等によって別のモジュールに結合される。ソフトウェアモジュールは、変数、パラメータ、引数、ポインタ等を受信するために、および/または、結果、更新された変数、ポインタ等を生成もしくは渡すために別のモジュールに結合される。ファームウェアモジュールは、上述のハードウェアおよびソフトウェアの結合方法のいかなる組合せによっても別のモジュールに結合される。ハードウェア、ソフトウェアまたはファームウェアのモジュールは、別のハードウェア、ソフトウェアまたはファームウェアのモジュールのいかなる1つにも結合され得る。モジュールは、プラットフォームで実行されるオペレーティングシステムと相互作用するためのソフトウェアドライバまたはインターフェイスであってもよい。モジュールは、ハードウェア装置へのおよびハードウェア装置からのデータを構成、設定、初期化、送信および受信するためのハードウェアドライバであってもよい。装置は、ハードウェア、ソフトウェアおよびファームウェアのモジュールのいかなる組合せも含み得る。
本発明の一実施例は、フローチャート、フロー図、構造図またはブロック図で通常示されるプロセスとして記載され得る。フローチャートは逐次プロセスとして動作を説明し得るが、動作の多くは並列してまたは同時に実施することができる。さらに、動作の順序は並べ換えてもよい。プロセスは、その動作が完了したときに終了される。プロセスは、方法、プログラム、手順、製造または製作の方法等に対応し得る。
図2は、本発明の一実施例に従った記憶管理ドライバ145を示す図である。記憶管理ドライバ145は、オペレーティングシステムの構成要素210、上位レベルのドライバ218、汎用多重通路ドライバ220および下位レベルのドライバ250を含む。
OSの構成要素210は、I/Oマネージャ212、プラグ・アンド・プレイ(PnP)マネージャ214、電力マネージャ216を含む。I/Oマネージャ212は、すべてのカーネルモードのドライバに一定のインターフェイスを与える。それは、他のドライバがサポートすることのできる標準のルーチンの組を規定する。すべてのI/Oの要求は、I/Oリクエストパケット(IPR)として送信されたI/Oマネージャ212からのものである。PnPマネージャ214は、その対応する装置がシステムに差し込まれるときにドライバの自動的な設置および構成をサポートする。電力マネージャ216は、スリープ、ハイバーネーション、遮断等の電力モードを含むシステムの電力使用を管理する。上位レベルのドライバ218はクラスドライバを含み、OS構成要素210に直接インターフェイスするいかなるドライバも含み得る。一実施例において、I/Oマネージャ212、PnPマネージャ214、電力マネージャ216は、マイクロソフトウインドウ(登録商標)2000、CEおよびNETからのものである。
汎用多重通路ドライバ(UMD)220は、テープドライブ、テープライブラリおよびディスクサブシステム等の図1Bに示された記憶装置への多重通路を管理するドライバである。UMD220は、上位レベルのドライバ218によって送信され、かつ下位レベルのドライバ250にインターフェイスするIRPに応答する。
下位レベルのドライバ250は、システムに接続された装置の制御および管理の責任を直接負うドライバを含む。下位レベルのドライバ250は、テープドライブデバイスドライバ252、テープライブラリデバイスドライバ254、およびHBAドライバ256を含み、これらのドライバは、デバイス165i、ライブラリ165j、およびHBA165kそれぞれのドライバである。HBA165kは次に図1Bに示された対応する記憶装置を直接制御する。
図3は、本発明の一実施例に従ったフィジカルデバイスへの多重通路を示す図である。経路は、HBAおよび対応するデバイスの間の物理的な接続である。典型的に、HBAは、スイッチ40を通した多重通路を介して多数のデバイスにインターフェイスされる。たとえば、HBA165iは、経路311,312および313を通して、テープドライブ501および502ならびにテープライブラリ60に接続され、HBA165kは、経路321,322および323それぞれを通して接続される。
汎用多重通路ドライバ(UMD)220は、多重通路の管理、フェイルオーバーおよびフェイルバックならびにロードバランシングを行なう。これは、システムに接続されたデバイスのリストを維持することによって達成される。装置は、そのデバイス名、デバイス識別子およびデバイスの連続番号によって識別される。この情報は、典型的に、対応する下位レベルのドライバによって照会されたときに周辺装置によって与えられる。
図4は、本発明の一実施例に従った汎用多重通路ドライバ(UMD)220を示す図である。UMD220は、ドライバエントリ410、主要な機能グループ420、システムスレッド480および経路モニタ490を含む。
ドライバエントリ410は、上位レベルのドライバ218によって発行されるIRPに応じて、UMD220にエントリポイントを与える。ドライバエントリ410は、主要な機能グループ420にアドレス参照またはポイントを与えるドライバオブジェクトポインタ415を含む。ドライバエントリ410は、システムスレッド480の生成を引き起こす。システムスレッド480は経路モニタ490を呼び出す。
主要な機能グループ420は、フィジカルデバイスに接続された多重通路を管理する、複数の機能、ルーチン、またはモジュールを含む。一実施例において、これらの機能、モ
ジュールまたはルーチンは、マイクロソフトデベロッパーネットワーク(MSDN)ライブラリと互換性がある。主要な機能グループ420は、ディスパッチ機能430、フィルタSCSI機能440、フィルタ追加装置機能450、フィルタアンロード機能460および電力ディスパッチ機能470を含む。
ディスパッチ機能430、フィルタSCSI機能440およびフィルタ追加装置機能450は、下位レベルのドライバ250にインターフェイスされる。ディスパッチ機能430は、上位レベルのドライバ218からのIRPの受信に応じて動作をディスパッチする。一実施例において、PnPマネージャは、列挙法、リソースリバランシングの間に、およびプラグ・アンド・プレーアクティビティがシステム上で生じる別のときに、主要なPnP IRP要求を送信する。フィルタSCSI機能440は、装置のまたは特定の装置のI/O制御コードを有するIRPを設定し、下位レベルのドライバからのサポートを要求する。フィルタ追加装置機能450は、対応するフィジカルデバイスオブジェクトのために新しいフィルタデバイスオブジェクトを生成および初期化し、次にこれは、デバイスオブジェクトをデバイスのためのドライバのデバイススタックに接続する。フィルタアンロード機能460は、いかなるオブジェクトも解放し、いかなるドライバによって割当てられたリソースも解放する。これはシステムスレッド480を終了する。
経路モニタ490は、システムにおける多重経路を監視し、いかなるフェイルオーバーがあるかどうかを決定する。周辺装置が経路のうちの1つを介して到達できないときに、経路のフェイルオーバーが生じる。これは、切断またはいかなる他の誤動作もしくはエラーの結果であり得る。フェイルオーバーが生じたときに、フェイルした経路は悪い経路のリストに配置される。悪い経路が再び機能するようになったときに、経路のフェイルバックを開始することができる。フェイルバックが完了すると、経路は悪い経路リストから除去される。フェイルオーバーが検出されたときに、代替の装置への代替の経路がフェイルした装置のために確立され得る。代替の装置は、フェイルオーバーの前に、アクティブまたはパッシブであり得る。
図5は、本発明の一実施例に従ってディスパッチするためのプロセス430を示すフロー図である。
「開始」すると、プロセス430は小さなIRPに応答する(ブロック510)。小さなIRPは、始動装置の小さなIRP(ブロック520)、除去装置の小さなIRP(ブロック530)、装置関係の小さなIRP(ブロック540)、照会idの小さなIRP(ブロック550)、停止装置の小さなIRP(ブロック560)、および装置使用通知(ブロック570)であってもよい。プロセス430は、これらの小さなIRPに応じて動作を行なう。
ブロック520における始動装置の小さなIRPの動作の詳細が図6に示されている。除去装置の小さなIRPに応じて、プロセス430は、装置リストからエントリを除去する(ブロック532)。このエントリは、名前、連続番号および装置のID等の装置の属性を含む。次に、プロセス430は、接続された装置を切離す(ブロック534)。これは、コマンドを、接続された装置を制御する責任を負う下位レベルのドライバに送信することによって行なうことができる。それからプロセス430が終了する。
装置関係の小さなIRPに応じて、プロセス430では、ページメモリにおける装置関係の構造が割当てられ(ブロック542)、それから終了する。照会idの小さなIRPに応じて、プロセス430は装置IDを生成し(ブロック552)、装置IDを戻し(ブロック554)、それから終了する。停止装置の小さなIRPに応じて(ブロック560)、プロセス430は装置リストからエントリを除去し(ブロック562)、次に終了す
る。装置使用通知の小さなIRPに応じて(ブロック570)、プロセス430は、IRPをスタックにおける次のドライバに転送し(ブロック572)、次に終了する。
図6は本発明の一実施例に従って始動装置の小さなIRPに応答するためのプロセス520を示すフロー図である。
開始すると、プロセス520は、下位レベルのドライバを用いてデバイスを開始する(ブロック610)。これは、コマンドを、デバイスを直接制御する下位レベルのドライバに送信することによって、または制御パラメータを適切な呼出し機能に書込むことによって行なわれ得る。次に、プロセス520は装置名を得る(ブロック620)。次に、プロセス520は、装置のSCSIアドレスを得るために、制御コマンドを下位レベルのドライバに送信する(ブロック630)。次に、プロセス520はデバイス識別子(ID)を得る(ブロック640)。次に、プロセス520は装置連続番号を得る(ブロック650)。
次に、プロセス520は、装置コードが装置リストにおけるエントリと一致するかどうかを決定する(ブロック660)。装置コードは、装置IDもしくは装置の連続番号のうちのいずれか1つ、またはその双方であってもよい。一致すれば、プロセス520は新しいバスのフィジカルデバイスオブジェクトを生成し(ブロック670)、次に終了する。一致しなければ、プロセス520は終了する。
図7は、本発明の一実施例に従って下位レベルのドライバにインターフェイスするためのプロセス440を示すフロー図である。
開始すると、プロセス440は、デバイス特性が得られたことを表示するデバイス特性フラグが設定されているかどうかを決定する(ブロック710)。設定されていなければ、プロセス440は、接続された装置のサポートされる装置名を得る(ブロック715)。次に、プロセス440は、サポートされる装置名が装置リストにあるかどうかを決定する(ブロック720)。あれば、プロセス440は、装置サポートフラグを表明し、次に終了する。なければ、プロセス440は、装置サポートフラグを否定し(ブロック730)、終了する。
デバイス特性フラグが設定されていなければ、プロセス440はフィルタデバイスオブジェクトが接続されるかどうかを決定する(ブロック735)。接続されていれば、プロセス440は、主張、解放または照会があるかどうかを決定する(ブロック740)。あれば、プロセス440は、デバイス特性フラグが設定されているかどうかを決定する(ブロック745)。なければ、プロセス440はエラーステータスに戻り(ブロック755)、終了する。主張、解放または照会がない場合に、プロセス440はエラーステータスに戻り(ブロック755)、終了する。フラグがブロック745で設定されていなければ、プロセス440は要求を次のドライバに送り(ブロック750)、終了する。
フィルタデバイスオブジェクトが接続されない場合に、プロセス440は、上位レベルのドライバがバスのフィジカルデバイスオブジェクトを主張するかどうかを決定する(ブロック760)。主張しなければ、プロセス440は終了する。プロセス440は成功した状態に戻る(ブロック765)。次にプロセス440は、I/O要求を処理するかまたはロードのバランスをとり(ブロック770)、終了する。ブロック770の詳細は図9に示されている。
図8は、本発明の別の実施例に従って経路を監視するためのプロセス490を示すフロー図である。
「開始」すると、プロセス490は、経路のフェールオーバーが検出されるかどうかを決定する(ブロック810)。これは、経路が悪い経路または切断された状態を有する経路のリストにあるかどうかを決定することによって行なうことができる。検出されなければ、プロセス490は、フェールオーバーのポーリングを継続するためにブロック810に戻る。検出されなければ、フェールオーバーが検出されたときに、プロセス490は経路または対応する装置の接続ステータスを決定する(ブロック820)。これは、下位レベルのドライバまたはOSドライバによって戻される際に装置のステータスをチェックすることによって行なうことができる。フェールオーバーが検出されたときに、代替の装置への代替の経路がフェイルした装置のために確立され得る。代替の装置は、フェールオーバーの前にアクティブまたはパッシブであってもよい。次に、プロセス490は、接続ステータスが接続された状態であるかどうかを決定する(ブロック830)。接続された状態は、デバイスが線に戻ったことを示している。接続された状態でなければ、プロセス490は、ブロック820に戻って、接続ステータスの決定を継続する。
図9は、本発明の一実施例に従ってロードのバランスをとるためのプロセス770を示すフロー図である。
「開始」すると、プロセス770は、経路へのI/O要求のキューリストを維持する(ブロック910)。これは、キューリストにおける各々のI/O要求に関する情報を記憶することによって行なうことができる。情報は、デバイスオブジェクトへのポインタまたはアドレス参照、デバイスの優先順位、経路類似性コード、経路への複数のI/O要求またはチャネル特性を含み得る。チャネル特性は、チャネル速度または転送速度、チャネル容量等を含み得る。次に、プロセス770は、経路にわたってI/O要求を分配して、バランスポリシーに従ってロードのバランスをとる(ブロック920)。これは、バランス基準を用いて、キューリストにおける次の経路を選択することによって行なうことができる(ブロック930)。複数のバランス基準またはポリシーを用いることができる。
ラウンドロビンポリシーにおいて、プロセス770は回転の基準で次の経路を選択する(ブロック940)。これは、キューの先端を端部に戻しかつキューの要求を1つの位置だけ行送りすることによって行なうことができる。経路類似性ポリシーにおいて、プロセス770は、経路類似性コードに従って次の経路を選択する(ブロック950)。経路類似性コードは、現在の経路に対する次の経路の類似性の度合いを示している。要求ポリシーにおいて、プロセス770は、その経路に割当てられたI/O要求の数に従って次の経路を選択する(ブロック960)。典型的に、I/O要求の最小の量を有する経路が選択される。優先ポリシーにおいて、プロセス770は、装置の優先度に従って次の経路を選択する(ブロック970)。装置の優先度は、初期化または構成の際に予め決定され得るか、またはI/Oタスクの性質に基づいて動的に決定され得る。サイズポリシーにおいて、プロセス770は、I/O要求のブロックサイズに従って次の経路を選択する(ブロック980)。典型的に、最大のブロックサイズを有する経路が選択される。チャネルポリシーにおいて、プロセス770はチャネル特性に従って次の経路を選択する(ブロック990)。たとえば、早い転送速度を有するチャネルを有する経路を選択し得る。
本発明は、複数の実施例の観点から記載されてきたが、当業者は、本発明が記載された実施例に限定されず、別掲の特許請求の精神および範囲内における修正および変更を伴って実施することができることを認識するであろう。したがって、この説明は限定するものではなく例示的なものとしてみなされるべきである。
本発明の一実施例を実施することのできるシステムを示す図である。 本発明の一実施例に従ったサーバ/クライアントシステムを示す図である。 本発明の一実施例に従った記憶管理ドライバを示す図である。 本発明の一実施例に従ったフィジカルデバイスへの多重通路を示す図である。 本発明の一実施例に従った汎用多重通路ドライバを示す図である。 本発明の一実施例に従った、ディスパッチするためのプロセスを示すフロー図である。 本発明の一実施例に従った、始動装置の小さなIRPに応答するためのプロセスを示すフロー図である。 本発明の一実施例に従った、下位レベルのドライバにインターフェイスするためのプロセスを示すフロー図である。 本発明の別の実施例に従った、経路を監視するためのプロセスを示すフロー図である。 本発明の一実施例に従った、ロードのバランスをとるためのプロセスを示すフロー図である。

Claims (60)

  1. 入出力(I/O)要求パケット(IRP)を上位レベルのドライバから受信するステップと、
    複数の下位レベルのドライバを用いて、当該IRPに応答して複数のデバイスオブジェクトへの複数の経路を管理するステップとを含み、当該デバイスオブジェクトは、Mの装置の種類を有するフィジカルデバイスに対応し、当該下位レベルのドライバは当該フィジカルデバイスを制御する、方法。
  2. 当該IRPを受信するステップは、
    当該上位レベルのドライバから当該IRPを受信するステップを含み、当該上位レベルのドライバはクラスドライバである、請求項1に記載の方法。
  3. 当該複数の経路を管理するステップは、
    主要な機能のIRPに応答するステップと、
    Nの経路における装置経路を監視するステップとを含む、請求項1に記載の方法。
  4. 当該Nの経路を管理するステップは、
    新しいデバイスオブジェクトを追加するステップと、
    当該デバイスオブジェクトを解放するステップとをさらに含む、請求項3に記載の方法。
  5. 当該主要な機能のIRPに応答するステップは、
    I/Oマネージャ、プラグ・アンド・プレイ(PnP)マネージャ、および電力マネージャからの当該主要な機能に応答するステップを含む、請求項3に記載の方法。
  6. 当該主要な機能のIRPに応答するステップは、
    始動装置の小さなIRP、除去装置の小さなIRP、装置関係の小さなIRP、識別子(ID)照会の小さなIRP、停止装置の小さなIRP、および使用通知の小さなIRPのうちの1つに応答するステップを含む、請求項5に記載の方法。
  7. 当該始動装置の小さなIRPに応答するステップは、
    当該下位レベルのドライバのうちの1つを用いて、接続された装置の周辺アドレスを得るステップと、
    当該周辺アドレスを用いて当該接続された装置の装置コードを得るステップと、
    当該装置コードが装置リストにおけるエントリに一致するかどうかを決定するステップとを含む、請求項6に記載の方法。
  8. 当該装置コードが当該エントリに一致する場合に新しいバスのフィジカルデバイスオブジェクトを生成するステップをさらに含む、請求項7に記載の方法。
  9. 当該除去装置の小さなIRPに応答するステップは、
    装置リストからエントリを除去するステップを含み、当該エントリは接続された装置に対応し、さらに、
    当該接続された装置を切り離すステップを含む、請求項6に記載の方法。
  10. 当該装置関係の小さなIRPに応答するステップは、
    カウントと少なくとも1つのデバイスオブジェクトポインタとを含むページメモリから装置関係構造を割当てるステップを含む、請求項6に記載の方法。
  11. 当該ID照会の小さなIRPに応答するステップは、
    装置IDを生成するステップと、
    当該装置IDを当該上位レベルのドライバに戻すステップとを含む、請求項6に記載の方法。
  12. 当該停止装置の小さなIRPに応答するステップは、
    装置リストからエントリを除去するステップを含み、当該エントリは接続された装置に対応する、請求項6に記載の方法。
  13. 当該使用通知の小さなIRPに応答するステップは、
    当該使用通知の小さなIRPを次のドライバに転送するステップを含む、請求項6に記載の方法。
  14. 当該主要な機能のIRPに応答するステップは、
    接続された装置のサポートされる装置名を得るステップと、
    当該サポートされる装置名が当該装置リストにある場合に、装置サポートフラグを表明するステップと、
    当該サポートされる装置名が当該リストにない場合に、当該装置サポートフラグを否定するステップとを含む、請求項5に記載の方法。
  15. 当該主要な機能のIRPに応答するステップは、
    フィルタデバイスオブジェクトが接続されているかどうかを決定するステップと、
    サポートされる装置の、主張、解放および照会のうちの1つがある場合に、エラーステータスに戻るステップと、
    当該主要な機能のIRPを次のドライバに送信するステップとを含む、請求項5に記載の方法。
  16. 当該主要な機能のIRPに応答するステップは、
    キューリストにおけるI/O要求を処理するステップを含む、請求項5に記載の方法。
  17. 当該経路を監視するステップは、
    経路の経路ステータスをポーリングするステップを含み、当該経路ステータスは、当該経路に対応するフィジカルデバイスの切断状態および接続状態を含み、前記監視するステップはさらに、
    当該切断状態を有する当該経路が、当該接続状態を有するようになるかどうかを決定するステップと、
    当該経路を調整するステップとを含む、請求項3に記載の方法。
  18. 当該経路ステータスをポーリングするステップは、
    切断された装置に対応する少なくとも1つの第1の装置名が、第1のリストに存在するかどうかを決定するステップを含む、請求項17に記載の方法。
  19. 当該経路を調整するステップは、
    当該第1のリストから当該第1の装置名を除去するステップを含む、請求項17に記載の方法。
  20. 当該Nの経路を管理するステップは、
    当該IRPに応じて複数のデバイスオブジェクトへの当該Nの経路を管理するステップを含み、当該デバイスオブジェクトは、Mの装置の種類を有するフィジカルデバイスに対応し、当該Mの装置の種類は、ディスク装置、安価なレイド(RAID)サブシステム、
    テープデバイス、およびテープライブラリのうちの少なくとも2つを含む、請求項1に記載の方法。
  21. 機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含む、機械がアクセス可能な媒体を含み、当該以下のステップは、
    入出力(I/O)要求パケット(IRP)を上位レベルのドライバから受信するステップと、
    複数の下位レベルのドライバを用いて、当該IRPに応じて複数のデバイスオブジェクトへの複数の経路を管理するステップとを含み、当該デバイスオブジェクトはMの装置の種類を有するフィジカルデバイスに対応し、当該下位レベルのドライバは当該フィジカルデバイスを制御する、製造品。
  22. 当該機械に当該IRPを受信させる当該データは、当該機械がアクセスしたときに当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
    当該IRPを当該上位レベルのドライバ、当該上位レベルのドライバのクラスドライバから受信するステップを含む、請求項21に記載の製造品。
  23. 当該機械に当該複数の経路を管理させるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
    主要な機能のIRPに応答するステップと、
    当該Nの経路における装置経路を監視するステップとを含む、請求項21に記載の製造品。
  24. 当該機械に当該Nの経路を管理させるデータは、当該機械がアクセスしたときに当該機械に以下のステップを含む動作を行なわせるデータをさらに含み、当該以下のステップは、
    新しいデバイスオブジェクトを追加するステップと、
    当該デバイスオブジェクトを解放するステップとを含む、請求項23に記載の製造品。
  25. 当該機械を当該主要な機能のIRPに応答させるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
    I/Oマネージャ、プラグ・アンド・プレイ(PnP)マネージャ、および電力マネージャのうちの1つからの当該主要な機能のIRPに応答するステップを含む、請求項23に記載の製造品。
  26. 当該機械を当該主要な機能のIRPに応答させるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
    始動装置の小さなIRP、除去装置の小さなIRP、装置関係の小さなIRP、識別子(ID)照会の小さなIRP、停止装置の小さなIRP、および使用通知の小さなIRPのうちの1つに応答するステップを含む、請求項25に記載の製造品。
  27. 当該機械を当該始動装置の小さなIRPに応答させるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
    当該下位レベルのドライバのうちの1つを用いて、接続された装置の周辺アドレスを得るステップと、
    当該周辺アドレスを用いて当該接続された装置の装置コードを得るステップと、
    当該装置コードが装置リストにおけるエントリに一致するかどうかを決定するステップ
    とを含む、請求項26に記載の製造品。
  28. 当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータをさらに含み、当該以下のステップは、
    当該装置コードが当該エントリに一致する場合に、新しいバスのフィジカルデバイスオブジェクトを生成するステップを含む、請求項27に記載の製造品。
  29. 当該機械を当該除去装置の小さなIRPに応答させる当該データは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
    装置リストからエントリを除去するステップを含み、当該エントリは接続された装置に対応し、さらに、
    当該接続された装置を切り離すステップを含む、請求項26に記載の製造品。
  30. 当該機械を当該装置関係の小さなIRPに応答させるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
    カウントと少なくとも1つのデバイスオブジェクトポインタとを含むページメモリから装置関係構造を割当てるステップを含む、請求項26に記載の製造品。
  31. 当該機械を当該ID照会の小さなIRPに応答させるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
    装置IDを生成するステップと、
    当該装置IDを当該上位レベルのドライバに戻すステップとを含む、請求項26に記載の製造品。
  32. 当該機械を当該停止装置の小さなIRPに応答させるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
    装置リストからエントリを除去するステップを含み、当該エントリは接続された装置に対応する、請求項26に記載の製造品。
  33. 当該機械を当該使用通知の小さなIRPに応答させるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
    当該使用通知の小さなIRPを次のドライバに転送するステップを含む、請求項26に記載の製造品。
  34. 当該機械を当該主要な機能のIRPに応答させるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
    接続された装置のサポートされる装置名を得るステップと、
    当該サポートされる装置名が当該装置リストにある場合に、装置サポートフラグを表明するステップと、
    当該サポートされる装置名が当該リストにない場合に、当該装置サポートフラグを否定するステップとを含む、請求項25に記載の製造品。
  35. 当該機械を当該主要な機能のIRPに応答させるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステ
    ップは、
    フィルタデバイスオブジェクトが接続されているかどうかを決定するステップと、
    サポートされる装置の、主張、解放および照合がある場合に、エラーステータスに戻すステップと、
    当該主要な機能のIRPを次のドライバに送信するステップとを含む、請求項25に記載の製造品。
  36. 当該機械を当該主要な機能のIRPに応答させるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
    キューリストにおけるI/O要求を処理するステップを含む、請求項25に記載の製造品。
  37. 当該機械に当該経路を監視させる当該データは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
    当該経路の経路ステータスをポーリングするステップを含み、当該経路ステータスは、当該経路に応じてフィジカルデバイスの切断状態および接続状態を含み、
    当該切断状態を有する経路が当該接続状態を有するようになるかどうかを決定するステップと、
    当該経路を調整するステップとを含む、請求項23に記載の製造品。
  38. 当該機械に当該経路ステータスをポーリングさせるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
    切断された装置に対応する少なくとも1つの第1の装置名が第1のリストにあるかどうかを決定するステップを含む、請求項37に記載の製造品。
  39. 当該機械に当該経路を調整させるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
    当該第1の装置名を当該第1のリストから除去するステップを含む、請求項37に記載の製造品。
  40. 当該機械に当該Nの経路を管理させるデータは、当該機械がアクセスしたときに、当該機械に以下のステップを含む動作を行なわせるデータを含み、当該以下のステップは、
    当該IRPに応じて複数のデバイスオブジェクトへの当該Nの経路を管理するステップを含み、フィジカルデバイスに対応する当該オブジェクトは、Mの装置の種類を有し、当該Mの装置の種類は、ディスク装置、安価なレイド(RAID)サブシステム、テープデバイスおよびテープライブラリのうちの少なくとも2つを含む、請求項21に記載の製造品。
  41. プロセッサと、
    複数のアダプタを介して当該プロセッサに結合された複数のフィジカルデバイスとを含み、当該フィジカルデバイスは、Mの装置の種類を有し、さらに、
    プロセッサに結合されたメモリを含み、当該メモリは、当該プロセッサによって実行されたときに、当該プロセッサに、
    上位レベルのドライバから入出力(I/O)要求パケット(IRP)を受信させ、かつ
    複数の下位レベルのドライバを用いて、当該IRPに応じて複数のデバイスオブジェクトへの複数の経路を管理させるプログラムコードを含み、当該デバイスオブジェクトは当該フィジカルデバイスに対応し、当該下位レベルのドライバは当該フィジカルデバイスを制御する、システム。
  42. 当該プロセッサに当該IRPを受信させるプログラムコードは、当該プロセッサによって実行されたときに、当該プロセッサに、
    当該上位レベルのドライバから当該IRPを受信させるプログラムコードを含み、当該上位レベルのドライバはクラスドライバの1つである、請求項41に記載のシステム。
  43. 当該プロセッサに当該複数の経路を管理させるプログラムコードは、当該プロセッサによって実行されたときに、当該プロセッサに、
    主要な機能のIRPに応答させ、かつ
    当該Nの経路における装置経路を監視させるプログラムコードを含む、請求項41に記載のシステム。
  44. 当該機械に当該Nの経路を管理させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
    新しいデバイスオブジェクトを追加させ、かつ
    当該デバイスオブジェクトを解放させるプログラムコードをさらに含む、請求項43に記載のシステム。
  45. 当該機械に当該主要な機能のIRPに応答させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
    I/Oマネージャ、プラグ・アンド・プレイ(PnP)マネージャ、および電力マネージャのうちの1つからの当該主要な機能のIRPに応答させるプログラムコードを含む、請求項43に記載のシステム。
  46. 当該機械を当該主要な機能のIRPに応答させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサを、
    始動装置の小さなIRP、除去装置の小さなIRP、装置関係の小さなIRP、識別子(ID)照会の小さなIRP、停止装置の小さなIRP、および使用通知の小さなIRPのうちの1つに応答させるプログラムコードを含む、請求項45に記載のシステム。
  47. 当該機械を当該始動装置の小さなIRPに応答させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
    当該下位レベルのドライバのうちの1つを用いて、接続された装置の周辺アドレスを獲得させ、
    当該周辺アドレスを用いて、接続された装置の装置コードを獲得させ、かつ
    当該装置コードが装置リストにおけるエントリに一致するかどうかを決定させるプログラムコードを含む、請求項46に記載のシステム。
  48. 当該プログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
    当該装置コードが当該エントリに一致する場合に、新しいバスのフィジカルデバイスオブジェクトを生成させるプログラムコードをさらに含む、請求項47に記載のシステム。
  49. 当該機械を当該除去装置の小さなIRPに応答させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
    装置リストからエントリを除去させ、当該エントリは接続された装置に対応し、さらに、
    当該接続された装置を切り離させるプログラムコードを含む、請求項46に記載のシステム。
  50. 当該機械を当該装置関係の小さなIRPに応答させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
    カウントと少なくとも1つのデバイスオブジェクトポインタとを含むページメモリから装置関係構造を割当てさせるプログラムコードを含む、請求項46に記載のシステム。
  51. 当該機械を当該ID照会の小さなIRPに応答させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
    装置IDを生成させ、かつ
    当該装置IDを当該上位レベルのドライバに戻させるプログラムコードを含む、請求項46に記載のシステム。
  52. 当該機械を当該停止装置の小さなIRPに応答させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
    装置リストからエントリを除去させるプログラムコードを含み、当該エントリは、接続された装置に対応する、請求項46に記載のシステム。
  53. 当該機械を当該使用通知の小さなIRPに応答させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
    当該使用通知の小さなIRPを次のドライバに転送させるプログラムコードを含む、請求項46に記載のシステム。
  54. 当該機械を当該主要な機能のIRPに応答させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
    接続された装置のサポートされる装置名を獲得させ、
    当該サポートされる装置名が当該装置リストにある場合に、装置サポートフラグを表明させ、かつ
    当該サポートされる装置名が当該リストにない場合に、当該装置サポートフラグを否定させるプログラムコードを含む、請求項45に記載のシステム。
  55. 当該機械を当該主要な機能のIRPに応答させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
    フィルタデバイスオブジェクトが接続されているかどうかを決定させ、
    サポートされる装置の、主張、解放およびの参照のうちの1つがある場合に、エラーステータスに戻らせ、かつ
    当該主要な機能のIRPを次のドライバに送信させるプログラムコードを含む、請求項45に記載のシステム。
  56. 当該機械を当該主要な機能のIRPに応答させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
    キューリストにおけるI/O要求を処理させるプログラムコードを含む、請求項45に記載のシステム。
  57. 当該機械に当該経路を監視させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
    経路の経路ステータスをポーリングさせ、当該経路ステータスは、当該経路に対応するフィジカルデバイスの切断状態および接続状態を含み、さらに、
    当該切断状態を有する経路が当該接続状態を有するようになるかどうかを決定させ、かつ
    当該経路を調整させるプログラムコードを含む、請求項43に記載のシステム。
  58. 当該機械に当該経路ステータスをポーリングさせるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
    切断された装置に対応する少なくとも1つの第1の装置名が第1のリストにあるかどうかを決定させるプログラムコードを含む、請求項57に記載のシステム。
  59. 当該機械に当該経路を調整させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
    当該第1の装置名を当該第1のリストから除去させるプログラムコードを含む、請求項57に記載のシステム。
  60. 当該機械に当該Nの経路を管理させるプログラムコードは、当該プロセッサによって実行されるときに、当該プロセッサに、
    当該IRPに応じて複数のデバイスオブジェクトへの当該Nの経路を管理させるプログラムコードを含み、フィジカルデバイスに対応する当該デバイスオブジェクトは、Mの装置の種類を有し、当該Mの装置の種類は、ディスク装置、安価なレイド(RAID)サブシステム、テープ装置およびテープライブラリのうちの少なくとも2つを含む、請求項41に記載のシステム。
JP2004565492A 2002-12-16 2003-12-15 記憶システムのための汎用多重通路ドライバ Pending JP2006513469A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/321,029 US7222348B1 (en) 2002-12-16 2002-12-16 Universal multi-path driver for storage systems
PCT/US2003/039869 WO2004061642A2 (en) 2002-12-16 2003-12-15 Universal multi-path driver for storage systems

Publications (2)

Publication Number Publication Date
JP2006513469A true JP2006513469A (ja) 2006-04-20
JP2006513469A5 JP2006513469A5 (ja) 2007-02-08

Family

ID=32710749

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004565492A Pending JP2006513469A (ja) 2002-12-16 2003-12-15 記憶システムのための汎用多重通路ドライバ

Country Status (6)

Country Link
US (1) US7222348B1 (ja)
EP (1) EP1579334B1 (ja)
JP (1) JP2006513469A (ja)
AU (1) AU2003297111A1 (ja)
DE (1) DE60313040T2 (ja)
WO (1) WO2004061642A2 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7610589B2 (en) * 2003-08-22 2009-10-27 Hewlett-Packard Development Company, L.P. Using helper drivers to build a stack of device objects
US7406617B1 (en) * 2004-11-22 2008-07-29 Unisys Corporation Universal multi-path driver for storage systems including an external boot device with failover and failback capabilities
US7484040B2 (en) 2005-05-10 2009-01-27 International Business Machines Corporation Highly available removable media storage network environment
US8918530B2 (en) * 2005-09-09 2014-12-23 Microsoft Corporation Plug and play device redirection for remote systems
US8874806B2 (en) * 2005-10-13 2014-10-28 Hewlett-Packard Development Company, L.P. Methods and apparatus for managing multipathing software
US8402172B2 (en) * 2006-12-22 2013-03-19 Hewlett-Packard Development Company, L.P. Processing an input/output request on a multiprocessor system
US7944572B2 (en) * 2007-01-26 2011-05-17 Xerox Corporation Protocol allowing a document management system to communicate inter-attribute constraints to its clients
JP4994128B2 (ja) * 2007-06-28 2012-08-08 株式会社日立製作所 ストレージシステムとストレージシステムにおける管理方法
US8789070B2 (en) * 2007-12-06 2014-07-22 Wyse Technology L.L.C. Local device virtualization
US8136126B2 (en) * 2008-01-31 2012-03-13 International Business Machines Corporation Overriding potential competing optimization algorithms within layers of device drivers
US20090240844A1 (en) * 2008-03-21 2009-09-24 Inventec Corporation Method for adding hardware
US8321878B2 (en) 2008-10-09 2012-11-27 Microsoft Corporation Virtualized storage assignment method
CN102141897B (zh) * 2010-02-02 2013-01-02 慧荣科技股份有限公司 用来增进存取效能的方法和装置
US9858126B2 (en) 2010-12-16 2018-01-02 Microsoft Technology Licensing, Llc Device redirection for remote systems
JP5422611B2 (ja) * 2011-06-24 2014-02-19 株式会社日立製作所 計算機システム、ホストバスアダプタ制御方法及びそのプログラム
US9483331B1 (en) * 2012-12-27 2016-11-01 EMC IP Holding Company, LLC Notifying a multipathing driver of fabric events and performing multipathing management operations in response to such fabric events
US10824342B2 (en) * 2014-02-28 2020-11-03 Hewlett Packard Enterprise Development Lp Mapping mode shift between mapping modes that provides continuous application access to storage, wherein address range is remapped between said modes during data migration and said address range is also utilized bypass through instructions for direct access
US10824362B2 (en) 2015-03-27 2020-11-03 Hewlett Packard Enterprise Development Lp File migration to persistent memory
US10684954B2 (en) 2015-04-02 2020-06-16 Hewlett Packard Enterprise Development Lp Page cache on persistent memory

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001082091A1 (en) * 2000-04-20 2001-11-01 Microsoft Corporation Programmatic masking of storage units
JP2002027019A (ja) * 2000-07-06 2002-01-25 Toshiba Corp 通信装置及びその制御方法
JP2002328823A (ja) * 2001-04-27 2002-11-15 Toshiba Corp 非共有型パラレルデータベースサーバシステム、このシステムにおけるデータ書き込み方法及び一致化処理方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5339449A (en) * 1989-06-30 1994-08-16 Digital Equipment Corporation System and method for reducing storage channels in disk systems
US6311228B1 (en) 1997-08-06 2001-10-30 Microsoft Corporation Method and architecture for simplified communications with HID devices
US6845508B2 (en) * 1997-12-19 2005-01-18 Microsoft Corporation Stream class driver for computer operating system
US6085156A (en) 1998-03-20 2000-07-04 National Instruments Corporation Instrumentation system and method having instrument interchangeability
US6233625B1 (en) * 1998-11-18 2001-05-15 Compaq Computer Corporation System and method for applying initialization power to SCSI devices
US6904477B2 (en) * 2001-04-13 2005-06-07 Sun Microsystems, Inc. Virtual host controller interface with multipath input/output
US7134040B2 (en) * 2002-04-17 2006-11-07 International Business Machines Corporation Method, system, and program for selecting a path to a device to use when sending data requests to the device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001082091A1 (en) * 2000-04-20 2001-11-01 Microsoft Corporation Programmatic masking of storage units
JP2003532193A (ja) * 2000-04-20 2003-10-28 マイクロソフト コーポレイション 記憶ユニットの計画的なマスキング
JP2002027019A (ja) * 2000-07-06 2002-01-25 Toshiba Corp 通信装置及びその制御方法
JP2002328823A (ja) * 2001-04-27 2002-11-15 Toshiba Corp 非共有型パラレルデータベースサーバシステム、このシステムにおけるデータ書き込み方法及び一致化処理方法

Also Published As

Publication number Publication date
EP1579334A2 (en) 2005-09-28
AU2003297111A8 (en) 2004-07-29
AU2003297111A1 (en) 2004-07-29
WO2004061642A2 (en) 2004-07-22
DE60313040D1 (de) 2007-05-16
US7222348B1 (en) 2007-05-22
EP1579334B1 (en) 2007-04-04
WO2004061642A3 (en) 2005-02-17
DE60313040T2 (de) 2007-12-13

Similar Documents

Publication Publication Date Title
US7222348B1 (en) Universal multi-path driver for storage systems
US7194662B2 (en) Method, apparatus and program storage device for providing data path optimization
EP1636696B1 (en) Os agnostic resource sharing across multiple computing platforms
US8516294B2 (en) Virtual computer system and control method thereof
US8898385B2 (en) Methods and structure for load balancing of background tasks between storage controllers in a clustered storage environment
US7536508B2 (en) System and method for sharing SATA drives in active-active RAID controller system
US7363629B2 (en) Method, system, and program for remote resource management
US7406617B1 (en) Universal multi-path driver for storage systems including an external boot device with failover and failback capabilities
US7353285B2 (en) Apparatus, system, and method for maintaining task prioritization and load balancing
US8122120B1 (en) Failover and failback using a universal multi-path driver for storage devices
AU2021269916B2 (en) Write sort management in data storage system
US7370081B2 (en) Method, system, and program for communication of code changes for transmission of operation requests between processors
US9400605B2 (en) Efficient management of a virtual tape library cluster
US10860078B2 (en) Managing power request during cluster operations
US11580022B2 (en) Write sort management in a multiple storage controller data storage system
US10956046B2 (en) Dynamic I/O load balancing for zHyperLink
US20160294609A1 (en) Storage system upgrade
US11048523B2 (en) Enabling software sensor power operation requests via baseboard management controller (BMC)
US20210181947A1 (en) Path selection modification for non-disruptive upgrade of a host device
US11544013B2 (en) Array-based copy mechanism utilizing logical addresses pointing to same data block

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061214

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091117

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100216

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100223

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100316

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100324

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100413

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100622