説明

ストレージ・デバイスによるデータ保護のための装置、システム、およびコンピュータ・プログラム

【課題】ストレージ・メディア上の機密データの損失を最小限にするために、ストレージ・デバイスによるデータ保護を利用するための装置、システム、および方法を提供すること。
【解決手段】装置は、監視モジュール、検証モジュール、および処理モジュールを含む。監視モジュールは、電子データ・ストレージ・デバイスに接続されたホストからの書き込みタイプのコマンドを認識する。検証モジュールは書き込みタイプのコマンドに関連付けられたパスキーの存在を決定する。処理モジュールは、パスキーの存在の決定に従って書き込みタイプのコマンドを処理する。この装置、システム、および方法は、電子データ・ストレージ・デバイス上の指定された保護領域が不注意によるデータのオーバレイに対して保護されるように、デバイス・レベルでの機密データの保護を提供する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はストレージ・デバイスでのデータの保護に関し、とりわけ、ホストが関与しないストレージ・デバイスでのデータ保護に関する。
【背景技術】
【0002】
データのブロックがストレージ・デバイスに格納されるストレージ環境では、格納されるデータの選択領域、または保護が必要な可能性のあるストレージ・インデックスが存在する場合がある。通常、格納環境は、ハード・ドライブなどの不揮発性ストレージ・デバイスに永続的にデータを格納する、オペレーティング・システムなどのホストからなる。ホストとデバイスとの間の通信は、ストレージ・メディア上にデータを格納し、これにアクセスする方法を決定する、ストレージ・コントローラによって達成される。現在、ストレージ・コントローラは、データ・ストレージおよびアクセスの管理に加えて、サービス品質(QoS)、仮想化、ミラーリング、複製を管理し、多くは、ストレージ・デバイスの読み取りおよび書き込みの性能を拡張するためのバッファとして働くメモリを提供する。
【0003】
進化し続けている情報化時代において、依然として変わらないのは、ミッション・クリティカルな(mission-critical)データの保護の必要性である。これが株式市場、会社の給与、電子商取引、企業データベース、医療記録、インターネット・バンキング、または国家安全保障的理由であるかどうかにかかわらず、データ格納の必要性と共にデータ保護の必要性は依然として大きくなりつつある。
【0004】
所有者の総コストを下げることに対する最も大きな障害の1つが、ストレージ関連問題を管理することに関連する作業である。システム・リソースによる、手動ではなく自動的なストレージ・リソースおよびデータの管理が、この問題を軽減するのに役立つ。しかしながら、ストレージ・メディアのミッション・クリティカルなデータ、およびz/OS(zオペレーティング・システム)のVTOC(ボリューム目録)などのストレージ・インデックスのシステム規模の保護を保証することは、依然として固有管理の難しさを示している。ミッション・クリティカルなビジネス・システムは、通常、組織の成功にとって不可欠な多くのミッション・クリティカルなビジネス・プロセスを管理する、ホストおよび分散コンピューティング環境の橋渡しをする。ビジネス・プロセスからのデータを、環境内の他の戦略的システムおよびアプリケーションと共有するためには、包括的解決策が必要である。さらに、この解決策は、システム性能に過度の負担をかけることなく、管理者の見誤りが最小限に組み込まれるように、十分に簡潔であるものとする。
【0005】
大規模データベースの管理を必要とするこうしたミッション・クリティカルなアプリケーション用の主要サーバは、引き続きメインフレームとなる。メインフレームは、高い信頼性、性能、広範囲にわたる接続性オプション、および包括的企業ストレージ・ソリューションに関して設計される。一般に、メインフレーム上で実行されるオペレーティング・システムは、信頼性が高く、ウェブおよびJavaベースのアプリケーションをサポートし、ミッション・クリティカルなアプリケーションをホストする。しかしながら、企業クラスの保護は、ストレージ・デバイスによるデータ保護に欠ける唯一の分野ではない。しばしば個人データの保護も、依然として重要であると考えられる。
【0006】
大衆消費電化製品の分野では、製品のデジタルコンテンツを格納するために必要な容量が増加するにつれて、個人データを保護する必要性も増加する。これは特に、パーソナル・コンピュータ、ノートブック・コンピュータ、デジタル・カメラ、ビデオ・カメラ、デジタル・ビデオ・レコーダ(DVR)、ポータブル・デジタル・オーディオ・プレーヤ、携帯電話、携帯情報端末、およびパーソナル・マルチメディア・プレーヤなどの製品に見られるが、これらに限定されることはない。
【0007】
ストレージ管理における多くの進歩にもかかわらず、依然として、ミッション・クリティカルなデータの信頼できる保護の領域においては改善の余地がある。問題は、あるボリューム上の機密データが不可解にも破損した場合に存在し、これによって性能の低下が発生し、最悪のシナリオではミッション・クリティカルなデータが失われる。従来のシステムでは、ホストはこうしたストレージ領域の独自の保護を提供することができるが、現在の安全対策では適切な保護が得られない。たとえばストレージ・デバイスは、保護データ・トラックを有するハード・ドライブからなるものとすることができる。あるアプリケーションは、保護されていないトラックの領域への書き込み試行をホストに通知することができる。しかしながら、不注意によるデータのオーバレイ、格納されたデータの意図しない変更の場合、オーバレイされたストレージ・メディアの領域が、保護領域および非保護領域を追跡するストレージ・インデックスである可能性がある。ストレージ・インデックスが突然破壊されるだけでなく、非保護領域への書き込みタイプのコマンドが、保護データ・トラックを上書きしてしまう可能性があり、潜在的に、保護領域全体が不注意によるデータのオーバレイに対して無防備となる。本発明は、不注意によるデータのオーバレイの問題に対処する。
【0008】
従来のメカニズムは、z/OSメインフレーム環境におけるシリアル化などの、これらの領域を適切に保護するものである。しかしながら、このシリアル化は、複数のプラットフォームにまたがって実施されず、不注意によるデータ・オーバレイも依然として生じる可能性がある。他の従来の技術は、実際にホストからストレージ・デバイスへのすべてのコマンドをスキャンし、ソフトウェアでは、所与の書き込みタイプのコマンドが、書き込みタイプのコマンドがアクセスを許可されていないストレージ・デバイスの領域への書き込みを試行しているかどうかを追跡するように試みる、ホスト制御の保護を提供する。残念なことに、ソフトウェアに置かれたこうしたホスト・レベルの解決策は、通常、システム性能に重大な影響を与え、ストレージ・デバイスによるデータ保護の特典をはるかに上回るコストを生じさせるものと見られてきた。
【0009】
加えて、これらの不注意によるオーバレイの多くは診断されないままとなり、それによって、障害の発生源をさかのぼって追跡することが事実上困難となる。保護の方法がホスト・レベルである限り、ミッション・クリティカルであり価格の付けられない個人データを、真に保護することが望まれる可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【0010】
前述の考察により、ストレージ・デバイス・メソッドによる従来のホスト・レベルのデータ保護の限界を克服する、装置、システム、および方法が求められていることは明らかである。とりわけ、こうした装置、システム、および方法は、有益なことに、特定のホストとは無関係であり、そのため、デバイス・レベルの保護が提供される。この装置、システム、および方法は、誰がストレージ・データの更新を試行しているかを特定することによって、有益なことに、しばしば診断されないままとなる追跡不可能なデータのオーバレイを回避することにもなる。
【課題を解決するための手段】
【0011】
本発明のいくつかの実施形態は、現況技術に応答して、とりわけ、ストレージ・デバイス・メソッドによる現在利用可能なデータ保護ではまだ完全に解決されていない当分野における問題および必要性に応答して、開発されてきたものである。したがって本発明は、当分野における前述の欠点の多くまたはすべてを克服する電子データ・ストレージ上のデータを保護するための、装置およびシステムを提供するために開発されてきた。
【0012】
電子データ・ストレージ・デバイス上のデータを保護するための装置には、電子データ・ストレージ・デバイス上のデータを保護するために必要な動作を機能的に実行するように構成された、複数のモジュールを含む論理ユニットが提供される。記載された諸実施形態におけるこれらのモジュールは、監視モジュール、検証モジュール、および処理モジュールを含む。他の諸実施形態は、通知モジュール、活動化モジュール、定義モジュール、比較モジュール、インデックス・モジュール、書き込みモジュール、および失敗(fail)モジュールを含む。
【0013】
一実施形態では、監視モジュールを、ストレージ・メディアにデータを書き込むようにとのホスト・コンピュータからの要求を識別するように構成することができる。一実施形態では、監視モジュールは、書き込みタイプのコマンドとストレージ・デバイスへの他のすべての要求との相違を認識するように、構成される。他の実施形態では、監視モジュールは、保護領域への書き込みタイプのコマンドと、ストレージ・メディア上の非保護領域への書き込みタイプのコマンドとの相違を認識するように、構成される。他の実施形態では、監視モジュールは、パスキーを備えたホスト・コンピュータからの書き込みタイプのコマンドと、パスキーを含まないホスト・コンピュータからの書き込みタイプのコマンドとの相違を認識するように、構成することができる。
【0014】
加えて、検証モジュールは、ホスト・コンピュータからの書き込みタイプのコマンドに関連付けられた正しいパスキーの包含を検出することが可能であり、このパスキーは、ストレージ・デバイス上の保護領域へのアクセス許可を取得するように設計される。検証モジュールは、通知モジュール、活動化モジュール、定義モジュール、比較モジュール、およびインデックス・モジュールからなる。一実施形態では、検証モジュールは、ホスト・コンピュータの書き込みタイプのコマンドが、保護装置によって確立されたプロトコルおよびガイドラインに従って実行されることを検証することができる。他の実施形態では、ストレージ・コントローラに関連して、ストレージ・メディアの保護領域に書き込むための事前に定義された数の不法な試行が処理されてきたことを、システム管理者に通知するように、検証モジュールを構成することが可能であり、それにより、不注意によるオーバレイ再発の潜在的な原因を回避することができる。不法な試行の数は、システム管理者によって定義されるか、または保護装置によって設定されたデフォルト数とすることができる。
【0015】
処理モジュールは、検証モジュール、および、とりわけ比較モジュールを介して、保護装置によって処理されるパスキー検証の結果に従って、ホスト・コンピュータからの書き込みタイプのコマンドを処理するように構成することができる。一実施形態では、検証モジュールが、ホスト・コンピュータからの書き込みタイプのコマンドが、保護装置によって確立された保護プロトコルに従うものと決定した場合、プロセス・モジュールは書き込みタイプのコマンドを処理する。このプロセス・モジュールは、書き込みモジュールおよび失敗モジュール(fail module)からなるものとすることができる。
【0016】
一実施形態では、書き込みモジュールは、書き込みタイプのコマンドと、基本キーに対するパスキーの正常な比較とに応答して、ホスト・コンピュータからのデータを、ストレージ・メディアの保護領域に書き込むように構成することができる。他の実施形態では、書き込みモジュールは、書き込みタイプのコマンドと、データが保護領域を対象としていないことの決定とに応答して、ホスト・コンピュータからストレージ・メディアの非保護領域への書き込みタイプのコマンドを処理するように構成することができる。
【0017】
失敗モジュールは、ホスト・コンピュータからストレージ・デバイスへの書き込みタイプのコマンドに失敗するように構成することができる。一実施形態では、失敗モジュールは、ホスト・コンピュータが正しいパスキーを供給しない場合、ストレージ・メディアの保護領域への書き込みタイプのコマンドを失敗させることができる。他の実施形態では、パスキーは保護領域に関連してのみ使用されることを意図しているため、ホスト・コンピュータがパスキーを供給する場合、失敗モジュールは、非保護領域への書き込みタイプのコマンドを失敗させることができる。
【0018】
通信モジュールは、ストレージ・デバイスとホスト・コンピュータとの間の通信を容易にするように構成することができる。一実施形態では、通信モジュールは、ホスト・コンピュータによって保護された領域への書き込みタイプのコマンドが、処理モジュールを介して首尾よく処理されたことを確認する(acknowledge)ように構成することができる。他の実施形態では、通信モジュールは、ストレージ・メディアの保護領域の状況を通信するように構成することができる。たとえば、通信モジュールは、データ保護機能が活動化されたかどうか、ならびに、保護領域のサイズおよび使用可能スペースを、通信することができる。
【0019】
保護装置に関連して、追跡モジュールは、誰がストレージ・デバイスを更新するように試行しているかを特定するように構成することができる。一実施形態では、追跡モジュールは、ストレージ・デバイスへの書き込みタイプのコマンドおよびアクセスのタイムスタンプを実行させるシステムの、識別が投入された追跡テーブルを格納することからなるものとすることができる。追跡モジュールのI/O追跡可能機能は、ストレージ・メディア上で不注意によるデータのオーバレイが試行された場合、ストレージ・デバイス上での診断されないデータ破損を解決するように設計される。一実施形態では、追跡テーブルをストレージ・デバイスと共にメモリ・デバイス内に格納することができる。他の実施形態では、追跡テーブルを、ストレージ・デバイスのストレージ・メディア上に直接格納することができる。
【0020】
一実施形態では、通知モジュールは、基本キーを備えたストレージ・メディアの領域を保護するための保護装置の機能を、ホスト・コンピュータに通知するために実施することができる。ホスト・コンピュータが保護装置を活動化する許可をストレージ・デバイスに与えた場合、通信モジュールはストレージ・デバイスに承認を送ることができる。
【0021】
一実施形態では、活動化モジュールは、保護装置を構成するコンポーネントのそれぞれを初期化する。活動化されると、活動化モジュールは、保護装置が意図されたように続行することを保証するために実施することができる。たとえば、現在の保護装置のすべての設定を、ストレージ・デバイスと共にメモリ・デバイス内に保持することで、活動化モジュールは、システムの強制リセットまたは予期せぬパワー損失などの予期せぬイベントの発生時に、すべての設定を回復および復元するために実施することができる。
【0022】
保護装置がデータ保護機能を活動化することをホスト・コンピュータが許可すると、定義モジュールによって定義された基本キーの値をホスト・コンピュータに送ることができる。ある実施形態では、定義モジュールは、ランダム基本キーまたは静的基本キーのいずれかを定義することができる。他の実施形態では、定義モジュールは、システム管理者が基本キーを定義できるようにする。他の実施形態では、定義モジュールは、ストレージ・デバイスのハードウェア・シリアル番号または同様のハードウェア識別番号に関して、基本キーを定義することができる。
【0023】
検証モジュールと共に、比較モジュールはパスキーと基本キーとを比較し、比較モジュールは、パスキーの単一ビットまたは一連のビットが実際に定義された基本キーの値と合致することを検証するように作られている。比較モジュールがパスキーと基本キーとの合致を計算するのに応答して、保護装置は、書き込みタイプのコマンドが処理されるために、ホスト・コンピュータがストレージ・メディアの保護領域にアクセスすることを認めることができる。
【0024】
インデックス・モジュールは、ストレージ・メディア上の保護領域にインデックス付けするように構成することができる。インデックス・モジュールは、保護領域の場所、サイズ、および使用可能スペースをインデックス内に格納することができる。ある実施形態では、インデックス・モジュールはメモリ・デバイス、ストレージ・コントローラのバッファ、またはストレージ・メディア上に、インデックスを格納する。
【0025】
電子データ・ストレージ・デバイス上のデータを保護するための、本発明のシステムも提示される。このシステムはストレージ・デバイスとして具体化することも可能であり、ストレージ・デバイスは、データへのアクセスおよびデータの格納を意図してホストと通信するように構成される。
【0026】
とりわけ一実施形態では、システムは、電子データを格納するように構成されたストレージ・メディアを含む。システムは、ストレージ・デバイスがどのようにストレージ・メディア上にデータを格納し、このデータにアクセスするかを指定するように構成された、ストレージ・コントローラと、前述のように構成された、ストレージ・メディアの指定領域を保護するための保護装置と、も含む。他の実施形態では、システムは、ストレージ・メディア上の保護領域のインデックスを格納するように構成されたメモリ・デバイスと、基本キーを使用してストレージ・メディアの領域を保護するために、ホストから電子データ・ストレージ・デバイスへの要求を確認するように構成された通信モジュールと、電子データ・ストレージ・デバイスへのアクセスを追跡するように構成された追跡モジュールと、を含むことができる。
【0027】
電子データ・ストレージ・デバイスの保護領域にデータを格納するための、本発明のシステムも提示される。このシステムは、ストレージ・メディア上のデータにアクセスし、このデータを格納する意図で、ストレージ・デバイスにアクセスするホスト・コンピュータとして具体化することができる。
【0028】
とりわけ一実施形態では、このシステムは、ホストに接続された電子データ・ストレージ・デバイスの存在を検出するように構成された認識モジュールを含む。システムは、基本キーを使用して電子データ・ストレージ・デバイスの領域を保護するための電子データ・ストレージ・デバイスの機能を確認するように構成された、確認モジュールも含む。他の実施形態では、システムは、ホストによって指定された電子データ・ストレージ・デバイスの領域を基本キーで保護するための電子データ・ストレージ・デバイスの保護機能を実行可能にすることを、ストレージ・コントローラに許可するように構成された許可モジュールと、電子データ・ストレージ・デバイスの領域を被保護として指定するように構成された割り振りモジュールと、電子データ・ストレージ・デバイスの保護領域にパスキーと共に書き込みタイプのコマンドを送信するために電子デバイスの保護機能を実施するように構成された実施モジュールと、を含むことができる。
【0029】
実行された場合、電子データ・ストレージ・デバイス上のデータを保護するための動作を実行するプログラムを格納するための、信号担持媒体も提示される。一実施形態では、この動作は、電子データ・ストレージ・デバイスに接続されたホストからの書き込みタイプのコマンドを認識するステップと、書き込みタイプのコマンドに関連付けられたパスキーの存在を決定するステップと、パスキーの存在の決定に従って書き込みタイプのコマンドを処理するステップとを含む。
【0030】
他の実施形態では、この動作は、電子データ・ストレージ・デバイス上の保護領域に関連付けられた基本キーを定義するステップと、ストレージ・メディア上の保護領域へのアクセスを得るためにパスキーと基本キーとを比較するステップと、パスキーと基本キーとの間の互換性に応答して、ホスト・コンピュータからのデータを電子データ・ストレージ・デバイスの保護領域に書き込むステップと、を含むことができる。
【0031】
実行された場合、電子データ・ストレージ・デバイス上のデータを保護するための動作を実行するプログラムを格納するための、信号担持媒体も提示される。一実施形態では、この動作は、電子データ・ストレージ・デバイスの存在を検出するステップと、電子データ・ストレージ・デバイスをホストするステップと、基本キーを使用して電子データ・ストレージ・デバイスの領域を保護するための電子データ・ストレージ・デバイスの保護機能を確認するステップと、を含む。
【0032】
他の実施形態では、この動作は、ホストによって指定された電子データ・ストレージ・デバイスの領域を保護するための電子データ・ストレージ・デバイスのデータ保護機能を実行可能にすることを、保護装置に許可するステップと、電子データ・ストレージ・デバイスの領域を被保護として指定するステップと、書き込みタイプのコマンドおよび関連付けられたパスキーを電子データ・ストレージ・デバイスに送信するステップと、を含むことができる。
【0033】
本明細書全体にわたる機能、利点、または同様の用語の言及は、本発明によって実現可能なすべての機能および利点が、本発明のいかなる単一の実施形態におけるべきもの、またはおけるものであることも、示唆するものではない。むしろ、この機能および利点を言い表す用語は、ある実施形態に関して説明される特定の機能、利点、または特徴が、本発明の少なくとも一実施形態に含まれることを意味するものと理解されよう。したがって、本明細書全体にわたる特徴および利点、ならびに同様の用語の考察は、同じ実施形態を言い表す可能性があるが、必ずしもこの限りではない。
【0034】
さらに、本発明の説明される機能、利点、および特徴は、1つまたは複数の実施形態において、任意の好適な様式で組み合わせることができる。当業者であれば、本発明が、特定の実施形態の特定の機能または利点のうちの1つまたは複数なしに実施可能であることを理解されよう。他のインスタンスでは、本発明のすべての実施形態に存在しない可能性のあるある種の実施形態において、追加の機能および利点が認識される可能性がある。
【0035】
本発明のこれらの機能および利点は、以下の説明および添付の特許請求の範囲から、より完全に明らかとなるか、または、以下で述べるような本発明の実施によって習得することができる。
【0036】
次に、本発明の諸実施形態について、添付の図面を参照しながら単なる例として説明する。
【発明を実施するための最良の形態】
【0037】
本明細書で説明される機能単位の多くは、実装の独立性を特に強調するために、モジュールとしてラベル付けされている。たとえば、モジュールは、カスタムVLSI回路またはゲートウェイ・アレイ、論理チップなどの市販の半導体、トランジスタ、あるいは他の離散コンポーネントを備える、ハードウェア回路として実装することができる。モジュールは、フィールド・プログラム可能ゲート・アレイ、プログラム可能アレイ論理、プログラム可能論理デバイスなどの、プログラム可能ハードウェア・デバイス内で実装することもできる。
【0038】
モジュールは、様々なタイプのプロセッサによる実行用のソフトウェアにも実装することができる。たとえば、実行可能コードの識別されたモジュールは、たとえばオブジェクト、プロシージャ、または関数として編成可能なコンピュータ命令の1つまたは複数の物理または論理ブロックを備えることができる。それにもかかわらず、識別されたモジュールの実行可能コードは、物理的にまとめて配置される必要はないが、論理的に結合された場合、モジュールを備え、そのモジュールの定められた目的を達成する、異なる場所に格納された種々の命令を備えることができる。
【0039】
実際に、実行可能コードのモジュールは単一の命令または多くの命令とすることが可能であり、さらにいくつかの異なるコード・セグメントにわたって、異なるプログラム間で、およびいくつかのメモリ・デバイスにまたがって、分散することさえも可能である。同様に本明細書では、動作データはモジュール内で識別および図示可能であり、任意の好適な形で具体化すること、および、任意の好適なタイプのデータ構造内で編成することが可能である。動作データは、単一のデータ・セットとしてまとめるか、または異なるストレージ・デバイスにわたることを含む、異なる場所にわたって分散させることが可能であり、さらに、少なくとも部分的に、システムまたはネットワーク上で単なる電子信号として存在することが可能である。
【0040】
図1は、ストレージ・システム100の一実施形態を示す概略ブロック図である。例示されたストレージ・システム100は、少なくとも1つのホスト・コンピュータ102を含む。各ホスト・コンピュータ102は、メインフレーム・コンピュータとすることができる。別の方法として、ホスト・コンピュータ102は、様々なオペレーティング・システムのうちの1つを使用する、サーバ、パーソナル・コンピュータ、ノートブック・コンピュータ、デジタル・カメラ、ビデオ・カメラ、デジタル・ビデオ・レコーダ/パーソナル・ビデオ・レコーダ(DVR/PVR)、ポータブル・デジタル・オーディオ・プレーヤ、携帯電話、携帯情報端末、またはパーソナル・マルチメディア・プレーヤとすることができる。ホスト・コンピュータ102は、ストレージ・エリア・ネットワーク(SAN)または同様の通信チャネル106を介してストレージ・デバイス104に接続される。図2を参照すると、ストレージ・デバイス104のより深い説明が含まれる。
【0041】
通信チャネル106は、ストレージ・エリア・ネットワーク(SAN)を介して通信することができる。別の方法として、ホスト・コンピュータ102はストレージ・デバイス104に直接接続することができる。他の実施形態では、ホスト・コンピュータ102は、フラッシュ・メモリ・デバイスまたは同様の不揮発性ソリッドステート・メモリ・デバイスに直接接続することができる。
【0042】
通信チャネル106は、一実施形態では、Small Computer System Interface(SCSI)、Internet Small Computer System Interface(iSCSI)、シリアルAdvanced Technology Attachment(SATA)、Integrated Drive Electronics/Advanced Technology Attachment(IDE/ATA)、米国電気電子学会規格1394(IEEE 1394)、ユニバーサル・シリアル・バス(USB)、Common Internet File System(CIFS)、Common Internet File System(CIFS)、ネットワーク・ファイル・システム(NFS/NetWFS)、ハイパーテキスト転送プロトコル(HTTP)、ファイル転送プロトコル(FTP)、伝送制御プロトコル/インターネット・プロトコル(TCP/IP)、Fiber Connection(FICON)、エンタープライズ・システム接続(ESCON)、ソリッドステート・メモリ・バス、または任意の同様のインターフェースを使用して、実装可能である。
【0043】
ホスト・コンピュータ102は、ホスト通信インターフェース108も含む。一実施形態では、ホスト通信インターフェース108は、認識(recognition)モジュール110、確認(acknowledge)モジュール112、許可(authorization)モジュール114、割り振り(allocation)モジュール116、および実施(implementation)モジュール118を含む。他の実施形態では、認識モジュール110、確認モジュール112、許可モジュール114、割り振りモジュール116、および実施モジュール118を、ホスト・コンピュータ102内に直接実装することができる。
【0044】
動作時に、認識モジュール110は、新しいストレージ・デバイス104が、たとえばシステム・ユーザによってストレージ・システム100に追加された場合を検出する。加えて認識モジュール110は、ストレージ・システム100に接続されたストレージ・デバイス104がない場合を検出することができる。認識モジュール110は、ストレージ・デバイス104がストレージ・システム100から除去された場合を検出することもできる。他の実施形態では、認識モジュール110は、データ保護機能を備えたストレージ・デバイス104がストレージ・システム100に追加された場合と、データ保護機能を備えないストレージ・デバイス104がストレージ・システム100に追加された場合とを、区別することができる。
【0045】
一実施形態では、認識モジュール110は、データ保護機能を備えたストレージ・デバイス104がストレージ・システム100に追加された場合、またはデータ保護機能を備えないストレージ・デバイス104がストレージ・システム100に追加された場合を示すための、電気機械スイッチなどのハードウェア・メカニズムを含むことができる。たとえば、データ保護機能を備えたストレージ・デバイス104は、デバイス104がデータ保護機能を有する旨の信号をホスト102に対して送る、電気機械スイッチを作動させるピンを含むことができる。これに対して、データ保護機能を備えないストレージ・デバイス104は、電気機械スイッチを作動させないように、このピンを除去することができる。
【0046】
ストレージ・デバイス104がデータ保護機能を有すると認識された場合、確認モジュール112は、データ保護機能がホスト・コンピュータ102によって認識されること、およびホスト・コンピュータ102がストレージ・デバイス・スキームによってデータ保護のプロトコルに準拠することを、ストレージ・デバイス104に通知することができる。一実施形態では、データ保護機能は、被保護として指定された領域へのアクセスを得るためにキーを使用することが可能であり、これによって保護/ロックされた領域のロックが解除され、意図された書き込みタイプのコマンド動作に対するアクセスが認められる。書き込みタイプのコマンドは、以前に書き込まれたデータの消去、以前に書き込まれたデータの更新、および、新しくフォーマット化された領域、あるいは以前に書き込まれたことがないかまたは新しく保護された領域への書き込みを含むが、これらに限定されることはない。本明細書での書き込み要求に関する言及は、任意の書き込みタイプのコマンドの例であり、任意の書き込みタイプのコマンドを言い表すものとすることができる。
【0047】
ホスト・コンピュータ102が、ストレージ・デバイス104に対してデータ保護機能との対話機能を認めると、ストレージ・デバイス104は、データ保護機能を活動化するための許可をホスト・コンピュータ102から受け取ることができる。一実施形態では、許可モジュール114は、データ保護機能を活動化するための許可をストレージ・デバイス103に送信することができる。
【0048】
ストレージ・デバイス104がデータ保護を実行できる場合、割り振りモジュール116は、ストレージ・デバイス104上の1つまたは複数の領域を、被保護として指定することができる。一実施形態では、割り振りモジュール116は、ユーザがこの指定を決定できるようにすることができる。他の実施形態では、割り振りモジュール116は、ストレージ・デバイス104がこの指定を制御できるようにすることができる。他の実施形態では、割り振りモジュール116は、保護領域、およびその逆に非保護領域の、割り振り済みサイズをリアルタイムで変更する機能を有することができる。
【0049】
割り振りモジュール116は、ストレージ・デバイス104上の物理または論理のいずれかの領域を指定することができる。物理領域は、たとえば、保護データに関する単一の隣接領域が存在する、データ・ストレージ・スペースの隣接ブロックとすることができる。論理領域は、たとえば、データの保護に関して指定されたここにアクセスされる領域のランダム・セットとすることができる。したがって、保護データおよび非保護データは、ストレージ・デバイス104上のデータの論理ブロック全体に散在させることができる。
【0050】
一実施形態では、実施モジュール118は、被保護として指定されたストレージ・デバイス104の領域への書き込み命令を実施し、この書き込み命令は関連付けられたパスキー120を含む。一実施形態では、パスキー120は、被保護として指定されたストレージ・デバイス104の領域へのアクセスを一時的に可能にするように設計された、1ビットまたは一連のビットとすることができる。実施モジュール118は、被保護として指定された領域にデータを書き込むためのコマンドを受け取り、この書き込み命令を、関連付けられたパスキー120を使用し、ストレージ・デバイス104のデータ保護機能を動作させるために確立可能なガイドラインおよびプロトコルに従って、実行することができる。
【0051】
図2は、図1のホスト・コンピュータ102と共に実装可能なストレージ・デバイス200の一実施形態を示す。このストレージ・デバイス200は、図1のストレージ・デバイス104とほぼ同様である。例示されたストレージ・デバイス200は、ストレージ・コントローラ202、ストレージ・メディア204、およびメモリ・デバイス206を含む。ストレージ・デバイス200は、ストレージ・コントローラ202のI/O動作に従って、ストレージ・メディア204上にデータを格納し、これにアクセスすることができる。ある実施形態では、ストレージ・デバイス200は、単一のストレージ・メディア204または複数のストレージ・メディア204を含むことができる。
【0052】
ストレージ・コントローラ202は、ホスト・コンピュータ102とストレージ・デバイス200のコンポーネントとの間の通信インターフェースとして動作するように構成することができる。ストレージ・コントローラ202は、通信チャネル106を介してホスト・コンピュータ102と通信する。ホスト102がストレージ・メディア204上へのデータの書き込みまたはこのデータへのアクセスのためのコマンドを送信した場合、ストレージ・コントローラ202はこのコマンドを受け取り、ストレージ・メディア204上にデータがどのように書き込まれるか、またはこのデータがどのようにアクセスされるかを決定することができる。一実施形態では、ストレージ・コントローラ202は、集積回路および1つまたは複数のメモリ・デバイス206に投入される小型回路基板である。ストレージ・コントローラ202は、ハード・ドライブなどのストレージ・メディア204に物理的に接続することができる。他の実施形態では、ストレージ・コントローラ202はストレージ・メディア204から分離することができる。
【0053】
ストレージ・コントローラ202は、不揮発性半導体または他のメモリ・デバイス上に格納可能なファームウェア208を含む。ストレージ・コントローラ202の動作の多くは、ファームウェア208の実行によって決定される。例示されたファームウェア208は保護装置210を含む。一般に保護装置210は、ストレージ・メディア204上のストレージ・デバイス・スキームによってデータ保護を実施することができる。保護装置210の一例について、図3を参照しながらより詳細に図示および説明する。
【0054】
例示されたストレージ・メディア204は、非保護領域212および保護領域214を含む。ストレージ・メディア204は、磁気ハード・ディスク・ドライブ、ソリッドステート・フラッシュ・メモリ、磁気テープ・ドライブ、または他の同様のメディアとすることができる。ストレージ・メディア204の非保護領域212は、ホスト・コンピュータ102が、不注意によるデータの上書きからの保護を必要としない可能性のあるデータを送信することが可能な、ストレージ・メディア204上の場所である。これに対して、保護領域214に格納されたデータは、不注意によるデータの上書きから保護される。たとえば、ストレージ・メディア204のコンテンツ・テーブルなどのミッション・クリティカル・データを、ストレージ・メディア204の保護領域214に書き込むことができる。前述のように、ストレージ・メディア204の保護領域214は、ストレージ・デバイス104上の物理領域または論理領域のいずれかとして指定することができる。
【0055】
例示されたメモリ・デバイス206は、インデックス216、ベース・キー218、および追跡テーブル220を含む。メモリ・デバイス206は、ストレージ・デバイス200のI/O性能を向上させるため、ならびにストレージ・デバイス200の動作用に設計されたマイクロコードを格納するための、バッファ(図示せず)として働くことが可能である。バッファまたはキャッシュは、ストレージ・メディア204からの最近の読み取りの結果を保持するため、および、近い将来要求される可能性が高いデータをプリフェッチするために使用される。メモリ・デバイス206は、フラッシュ・メモリ、静的ランダム・アクセス・メモリ(SRAM)、不揮発性ランダム・アクセス・メモリ(NVRAM)、電気的消去可能プログラム可能読み取り専用メモリ(EEPROM)、消去可能プログラム可能読み取り専用メモリ(EPROM)、NAND/AND、NOR、分割ビット・ラインNOR(DINOR)、または任意の他の同様のメモリ・デバイスなどの、1つまたは複数の不揮発性半導体デバイスからなるものとすることができる。
【0056】
ホスト・コンピュータ102が、ストレージ・メディア204上の保護領域214を割り振る場合、ストレージ・コントローラ202は、保護装置210を介して、保護領域214の場所、サイズ、および使用可能スペースをインデックス216に格納することができる。一実施形態では、インデックス216は、ストレージ・コントローラ・バッファと同じメモリ・デバイス206上に格納される。他の実施形態では、インデックス216は、実際のストレージ・メディア205上、または別のメモリ・デバイス上に格納される。
【0057】
保護装置210は、ストレージ・メディア204の保護領域214を未許可の書き込みタイプのコマンドから守るために、基本キー218を使用することができる。一実施形態では、基本キー218は、単一ビットまたは一連のビットとして定義することができる。一実施形態では、ストレージ・メディア204の保護領域へのアクセスを得るためには、ホスト102からのパスキー120が基本キー218と合致しなければならない。別の方法として、合致に関して基本キー218およびパスキー120の一部を比較することができる。一実施形態では、基本キー218は、メモリ・デバイス206上またはストレージ・メディア204上に格納することができる。他の実施形態では、基本キー218はソフトウェア変数とすることができる。
【0058】
基本キー218は、2進値、8進値、16進値、ASCII(情報交換用米国標準コード)値、または任意の他の同様のエンコーディングとして符号化することができる。基本キー218には、ホスト・コンピュータ102によって定義されたように値を与えることができる。一実施形態では、基本キー218はランダム・プロセスによって定義されたようなランダム値として構成することができる。他の実施形態では、基本キー218はシステム管理者によって定義することができる。他の実施形態では、基本キー218は、ストレージ・デバイス104のハードウェア・シリアル番号などの、ハードウェア識別番号によって定義することができる。
【0059】
一実施形態では、基本キー218は、ストレージ・デバイス200に関連するレジスタ内のビットまたは一連のビットにおける論理値として実施することができる。ホスト・コンピュータ102が、ストレージ・メディア204の保護領域214にデータを格納するための書き込み要求を送信する場合、このホスト・コンピュータ102からの書き込み要求は、基本キー218の論理値をレジスタ内ビットまたは一連のビットにラッチするためのコマンドを含むことができる。
【0060】
追跡テーブル220は、ストレージ・メディア204の保護領域214上で不注意によるデータのオーバレイが試行された場合に、ストレージ・デバイス200上での診断されないデータ破損を解決するように設計された、I/O追跡可能性を提供することができる。追跡テーブル220は、ストレージ・デバイス200の保護領域214に書き込みタイプのコマンドを要求するホスト102の識別子、ならびに要求のタイムスタンプを格納することができる。タイムスタンプは、要求が受信された日付または時間、あるいはその両方を含むことができる。
【0061】
図3は、図2のストレージ・デバイス200に関連して実装可能な、保護装置300の一実施形態を示す概略ブロック図である。例示された保護装置300は、図1に関して上記で説明したように、データ保護機能がホスト・コンピュータ102によって認識された旨をホスト・コンピュータ102がストレージ・デバイス200に通知すると、起動することができる。
【0062】
一実施形態では、保護装置300は、ストレージ・コントローラ202内のマイクロコードで実装される。他の実施形態では、保護装置300は、ストレージ・メディア204上に直接格納されたプログラムで実装することができる。例示された保護装置300は、監視モジュール302、検証モジュール304、処理モジュール306、通信モジュール308、および追跡モジュール310を含む。
【0063】
保護装置300は、ストレージ・メディア204上のデータの割り振られた領域を保護し、ストレージ・メディア204の保護領域214への未許可の書き込みタイプのコマンドを防止する。これを実施するために、保護装置300は、ホスト102が保護領域214を指定する方法、ならびに保護領域214内のデータにアクセスするかまたはこのデータを修正する方法を管理するための、保護プロトコルを実施することができる。
【0064】
一実施形態では、保護装置300は、保護領域214へのアクセスを制限するために使用される基本キー218を定義することができる。ホスト・コンピュータ102の保護領域214へのアクセスを得るために、保護装置300の保護プロトコルは、ホスト・コンピュータ102からのパスキー120と基本キー218とを比較することができる。
【0065】
ホスト102によって正しいパスキー120が供給されたことを、保護装置300が検証モジュール304を介して検証した場合、ホスト・コンピュータに対してストレージ・メディア204の保護領域214へのアクセスが認められる。一実施形態では、書き込み要求が処理され、データが保護領域214に格納されると、基本キー218を表すレジスタ上のビットまたは一連のビットをリセットすることが可能であり、保護領域への次の書き込み要求が正しいパスキー120を含むまで、ストレージ・メディア204の保護領域214へのアクセスがロックアウトされる。
【0066】
監視モジュール302は、ストレージ・メディア204にデータを書き込むためのホスト・コンピュータ102からの要求を識別する。一実施形態では、監視モジュール302は、ストレージ・デバイス200への書き込み要求と任意の他の要求とを区別するように構成される。他の実施形態では、監視モジュール302は、保護領域214への書き込み要求と非保護領域212への書き込み要求との相違を認識するように構成される。他の実施形態では、監視モジュール302は、パスキー120を伴うホスト・コンピュータ102からの書き込み要求と、パスキー120を含まないホスト・コンピュータ102からの書き込み要求との相違を認識するように構成することができる。
【0067】
検証モジュール304は、パスキー120がホスト・コンピュータ102からの書き込み要求に関連付けられているか否かを検出する。前述のように、パスキー120は、ストレージ・デバイス200上の保護領域214へのアクセス許可を取得するように設計される。言い換えれば、パスキー120は、書き込みタイプのコマンドに対してストレージ・メディア204の保護領域214をロック解除することができる。一実施形態では、検証モジュール304は、ホスト・コンピュータ102からの書き込み要求が保護プロトコルに従って実行されることを検証するように構成することができる。
【0068】
他の実施形態では、検証モジュール304は、ストレージ・コントローラ202に関連して、ストレージ・メディア204の保護領域214に書き込むための事前に定義された数の不法な試行が受信されたことを、システム管理者に通知するように構成することができる。この場合、不注意によるオーバレイ再発の潜在的な原因を検出することができる。他の実施形態では、検証モジュールは、保護領域214にデータを書き込むためのコマンドを受信すると、保護領域214が割り振られていることを検証することが可能であり、割り振られている場合は、保護されたデータを保護領域214に書き込む。検証モジュール304は、通知モジュール312、活動化モジュール314、定義モジュール316、比較モジュール318、およびインデックス・モジュール320を含む。
【0069】
一実施形態では、通知モジュール312は、ストレージ・メディア204の領域に格納されたデータを保護するためのストレージ・デバイス200の機能を、ホスト・コンピュータ102に通知することができる。一実施形態では、活動化モジュール314は保護装置300を初期化し、保護装置300の連続動作を保証する。たとえば、現在の保護装置300のすべての設定をメモリ・デバイス206内に保持することで、活動化モジュール314は、ストレージ・デバイス200に影響を与える、ストレージ・システム100の強制リセットまたは予期せぬパワー損失などの予期せぬイベントに応答して、保護プロトコルの動作を回復および復元するために実施することができる。
【0070】
一実施形態では、定義モジュール316は、基本キー218を定義することができる。ある実施形態では、定義モジュール316は、ランダムに生成された基本キー218または静的基本キー218のいずれかを定義することができる。他の実施形態では、定義モジュール316は、システム管理者が基本キー218を定義できるようにすることができる。他の実施形態では、定義モジュール316は、ストレージ・デバイス200のハードウェア・シリアル番号または同様のハードウェア識別番号に関して、基本キー218を定義することができる。
【0071】
一実施形態では、比較モジュール318は、検証モジュール304に関連してパスキー120と基本キー218とを比較する。この比較に応答して、保護装置300は、処理されることになる書き込みタイプのコマンドに関する保護された領域214へのアクセスを、ホスト・コンピュータ102に対して認めることができる。比較モジュール318は、ホスト・コンピュータ102からの書き込み要求に関連して、パスキー120を受信することができる。ある実施形態では、パスキー120を書き込み要求のデータ構造内に埋め込むことができる。別の方法として、パスキー120を書き込み要求とは別に送信することもできる。他の実施形態では、比較モジュール318は、基本キー218とパスキー120とを比較するため、および合致があるかどうかを判別するために、ブール演算を実行することができる。
【0072】
インデックス・モジュール320は、ストレージ・メディア204上の保護領域214にインデックス付けすることができる。たとえばインデックス・モジュール320は、前述のように、保護領域214の場所、サイズ、および使用可能スペースをインデックス216に格納することができる。ある実施形態では、インデックス・モジュール320は、インデックス216をメモリ・デバイス206、ストレージ・コントローラ202のバッファ、またはストレージ・メディア204上に格納する。
【0073】
処理モジュール306は、パスキー検証プロセスの結果に従って書き込み要求を処理する。一実施形態では、検証モジュール304が、書き込み要求が保護プロトコルの制約を満たすかどうかを判別し、満たす場合、処理モジュール306がこの書き込み要求を処理する。例示された処理モジュール306は、書き込みモジュール322および失敗モジュール324からなる。
【0074】
一実施形態では、書き込みモジュール322は、書き込み要求およびパスキー120と基本キー218との正常な比較に応答して、ホスト・コンピュータ102からのデータを保護領域214に書き込むように構成することができる。他の実施形態では、書き込みモジュール322は、書き込み要求と、パスキー120が関連する書き込み要求に含まれていなかったことの決定とに応答して、ホスト・コンピュータ102から非保護領域212への書き込み要求を処理するように構成することができる。
【0075】
これに対して、失敗モジュール324は、ホスト・コンピュータ102が正しいパスキー120を供給しない場合、保護領域214への書き込み要求を失敗させることができる。同様に、パスキー120は保護領域214に関連してのみ使用されることを意図しているため、ホスト・コンピュータ102がパスキーを供給する場合、失敗モジュール324は、非保護領域212への書き込み要求を失敗させることができる。
【0076】
通信モジュール308は、ストレージ・デバイス200とホスト・コンピュータ102との間の通信を管理することができる。一実施形態では、通信モジュール308は、ホスト・コンピュータ102からのシステム照会に応答して、ストレージ・メディア204上の保護領域214および非保護領域212の諸領域を搬送する。他の実施形態では、通信モジュール308は、保護領域214への書き込み要求が正常に処理されたか否かを確認するように構成することができる。
【0077】
他の実施形態では、通信モジュール308は、ストレージ・デバイス200のデータ保護機能、およびそれらが活動化されたかどうかに関する、ホスト・コンピュータ102からの照会を受信することができる。他の実施形態では、通信モジュール308は、領域の現在のサイズおよび格納に使用できるスペースなどの、ストレージ・メディア204の保護領域214および非保護領域212の現在の状況を、ホスト・コンピュータ102に中継することができる。
【0078】
一実施形態では、追跡モジュール310はホスト・コンピュータ102を監視することができる。ホスト・コンピュータ102がストレージ・デバイス200の保護領域214への書き込みタイプのコマンドを実行するように要求した場合、追跡モジュール310は、ホスト・コンピュータ102の識別を含むログと、要求のタイムスタンプとを、追跡テーブル220上に格納することができる。一実施形態では、追跡モジュール310は、検証モジュール304が、書き込みタイプのコマンドが書き込み要求に関連付けられた正しいパスキー120を含まなかったと判別した場合にのみ、書き込みタイプのコマンド要求のログを格納することができる。
【0079】
図4は、書き込みタイプのコマンドに関連付けられたデータ構造400の一実施形態を示す。書き込み要求データ構造400は、様々なフィールドと共にストレージ・メディア204に書き込まれることになるデータのブロックを囲む(envelop)フレーム処理タイプ(framedtype)の書き込み要求を含むことが可能であり、各フィールドは1ビットまたは一連のビットからなる。一実施形態では、ホスト・コンピュータ102は、ストレージ・メディア204上にデータを格納するための要求に関連して、データ構造400を採用する。
【0080】
例示されたデータ構造400は多くの部分からなり、長さは固定または可変とすることができる。データ構造400は、開始区切り文字SOFフィールド402(フレームの開始)、opcodeフィールド404、ヘッダ・フィールド406、パスキー・フィールド408、データ・ブロック・フィールド410、CRCフィールド412(巡回冗長検査)、および終了区切り文字EOFフィールド414(フレームの終わり)を含む。
【0081】
開始区切り文字SOFフィールド402は、書き込みタイプのコマンドの新しいフレームの開始をストレージ・デバイス200に示す。opcodeフィールド404は、書き込み、読み取り、消去、フォーマット、検証、または保護などのコマンドを含むことが可能であるが、これらに限定されない、ホスト・コンピュータ102が送信するコマンドのタイプを含む。ヘッダ・フィールド406は、ホスト・コンピュータ102の情報および他の制御情報を識別することなどの、コマンドのソースを格納することができる。パスキー・フィールド408は、保護領域214への書き込み要求がホスト・コンピュータ102によって送信される場合、パスキー120の値を格納する。パスキー・フィールド408は、非保護領域212への書き込み要求がホスト・コンピュータ102によって送信される場合、すべてゼロなどのnull値を含むことができる。データ・ブロック・フィールド410は、ホスト・コンピュータ102がストレージ・メディア204上に格納するように要求するデータのブロックを含む。CRCフィールド412は、データ構造400の保全性を検証するために組み込むことが可能な、計算された巡回冗長検査を格納する。終了区切り文字EOFフィールド414は、フレームの終わりをストレージ・デバイス200に示す。
【0082】
ホスト・コンピュータ102が書き込み要求をフレーム処理し、これをストレージ・デバイス200に送信する場合、保護装置300は、パスキー・フィールド408からパスキー120をストリップ(strip)し、このパスキー120と基本キー218とを比較するように、構成することができる。他の実施形態では、ホスト・コンピュータ102は、関連付けられた書き込み要求とは別にパスキー120を送信することができる。
【0083】
図5および図6は、図3の保護装置300によって実施可能な初期化方法500の一実施形態を示す。便宜上、初期化方法500は、第1の部分500Aおよび第2の部分500Bに示されるが、まとめて初期化方法500と呼ばれる。ここでは、図1および図2のストレージ・システム100を参照しながら、初期化方法500について説明する。
【0084】
初期化方法500は、ストレージ・デバイス200をストレージ・システム100に挿入する動作502、挿入されたストレージ・デバイス200を検出する動作504、および、データ保護機能を、ホスト・コンピュータ102に通知506、ならびに確認508、許可510、および活動化512する動作を含む。初期化方法500は、追加の、基本キー218を定義する動作514、保護領域214を割り振る動作516、正常な割り振りを判別する動作518、正常でない割り振りを失敗させる動作520、正常でない割り振りを再送信するかどうかを判別する動作522、ホスト・コンピュータ102にデータ保護機能が機能していることを通知する動作524、保護領域214のインデックス216を格納する動作526、および、追跡モニタを開始する動作528を含む。
【0085】
初期化方法500は、ストレージ・デバイス200に関連付けられた保護装置300の保護機能を開始する。明瞭にするために、初期化方法500は一定の発生順に示されるが、ストレージ・システム100は、これらの動作を並行して実行すること、あるいは必ずしも示された順序で実行しないこと、またはその両方が可能である。
【0086】
例示された初期化方法500は、ユーザまたはシステム管理者がストレージ・デバイス200をストレージ・システム100に挿入する502と、開始される。ある実施形態では、ユーザは、ストレージ・デバイス200を、電源がオフの間にストレージ・システム100に挿入する502か、またはすでに電源がオンのストレージ・システム100にホットスワップ可能なストレージ・デバイス200を挿入する502ことができる。
【0087】
システム・ユーザがストレージ・システム100にストレージ・デバイス200を挿入した502後、ホスト・コンピュータ102は、接続されたストレージ・デバイス200を検出する504。一実施形態では、システム・ユーザがストレージ・デバイス200をストレージ・システム100に挿入する502と、認識モジュール110が検出する504。
【0088】
ホスト102が新しく追加されたストレージ・デバイス200を検出する504ことに応答して、ストレージ・デバイス200は、基本キー218を使用してストレージ・メディア204の保護領域214を保護するためのその機能を、ホスト・コンピュータ102に通知する506。ホスト・コンピュータ102は、ストレージ・デバイス200に対して、ストレージ・デバイス200に格納された保護装置300のデータ保護機能を確認する508。一実施形態では、確認モジュール112は、ホスト通信インターフェース108を介して、ホスト102が保護プロトコルに準拠することを確認する508ことができる。
【0089】
保護装置300のデータ保護機能を確認した508後、ホスト・コンピュータ102は、ストレージ・デバイス200に対してデータ保護機能を初期化するように許可する510ことができる。一実施形態では、許可モジュール114が、ストレージ・デバイスに対してデータ保護機能を初期化するように許可する510。ストレージ・デバイス200は、通信チャネル106を介してホスト・コンピュータ102から許可を受け取ることができる。
【0090】
ストレージ・デバイス200がデータ保護機能を初期化するための許可を受信すると、ストレージ・デバイス200は保護装置300を活動化する512。一実施形態では、活動化モジュール314が保護装置300を活動化する512ことができる。適用可能であれば、活動化モジュール314は、ストレージ・システム100の強制リセット、予期せぬパワー損失、または他の有害なイベントに応答して、保護装置300の動作を回復および復元することができる。
【0091】
保護装置300を活動化する512ことにより、ストレージ・デバイス200は、データを保護領域214に保存するため、またはストレージ・メディア204上の領域を保護領域214として割り当てるための要求を、ホスト・コンピュータ102から受信することができる。しかしながら、データが保護領域214に保存される前、または保護領域214が割り当てられる前に、ストレージ・デバイス200は、基本キー218を定義する514。一実施形態では、基本キー218は、定義モジュール316によって定義することができる514。定義モジュール316は、その長さ、値、エンコーディング、および格納される場所などの、基本キー218を定義する諸態様を決定することができる。
【0092】
基本キーの値が定義された514後、もはやホスト・コンピュータ102は、ストレージ・メディア204の領域を保護領域214として指定することからの制約を受けず、ストレージ・メディア204の領域を保護領域214として割り振る516ための要求を送信することができる。一実施形態では、割り振りモジュール116は、ストレージ・デバイス104上の1つまたは複数の領域を被保護として割り振る516ことができる。前述のように、割り振りモジュール116は、ユーザまたはストレージ・デバイス200がこの指定を決定できるようにすることが可能であり、ストレージ・デバイス104上の物理領域または論理領域のいずれかで割り振りを指定することができる。
【0093】
ストレージ・メディア204の保護領域214を割り振る516ための要求が受信されると、初期化方法500は、割り振りがいかなる競合もなく実行されたかどうかを判別する518。たとえば、ストレージ・デバイス200が要求された割り振りサイズに対して十分なスペースを持たない、または要求された領域が書き込み保護されている、あるいは、要求をタイムアウトさせる大規模なデータ転送が実行中である、という可能性がある。
【0094】
保護装置300が、ストレージ・メディア204の領域を保護領域214として正常に割り振りできない場合、初期化方法500は割り振り要求を失敗させる520。失敗モジュール306は、障害の原因に基づいて失敗シーケンスを開始することができる。したがってストレージ・デバイス200は、保護領域214を割り振る516ための要求が失敗した520ことをホスト・コンピュータ102に通知することができる。割り振り要求が失敗すると520、初期化方法500は、ホスト・コンピュータ102が保護領域214を割り振る516ための要求を再送するかどうかを判別する522。一実施形態では、システム・ユーザは、割り振り要求が失敗した520場合に、この要求を再送できる試行回数を設定することができる。
【0095】
しかしながら、ホスト・コンピュータ102がストレージ・メディア204の領域を保護領域214として正常に割り振った518場合、ストレージ・デバイス200は、割り振り要求が成功したこと、およびデータ保護機能が活動化されたことを、ホスト・コンピュータ102に通知する524。
【0096】
保護領域214が割り振られる516と、ストレージ・デバイス200はメモリ・デバイス206上にインデックス216を格納する526。一実施形態では、インデックス216は、保護領域214の場所、サイズ、および使用可能スペースを含む。他の実施形態では、インデックス216はストレージ・メディア204上に直接格納される。
【0097】
ホスト・コンピュータ102がストレージ・メディア204上に保護領域214を正常に割り振った518後、ストレージ・デバイス200は、I/O追跡可能性を提供するために追跡モニタを開始する528。一実施形態では、追跡モジュール310はストレージ・メディア204への書き込みタイプのコマンド・アクセスによって、各ホスト・コンピュータ102をアクティブに追跡する。したがってシステム・ユーザは、ストレージ・メディア204の保護領域214上で不注意によるデータのオーバレイが試行された場合、ストレージ・デバイス200上での診断されないデータ破損を解決することができる。前述のように、追跡モジュール310は、保護領域214への書き込みタイプのコマンドを要求する各ホスト・コンピュータ102の識別を含むことが可能なログ、ならびに要求のタイムスタンプを、追跡テーブル220上に格納することができる。ストレージ・デバイス200が追跡モニタを開始する528と、初期化方法500を終結させることができる。
【0098】
図7は、書き込み方法600の一実施形態を示す。書き込み方法600は、図1および図2のストレージ・システム100を使用して実行することができる。書き込み方法600は、ホスト・コンピュータ102とストレージ・デバイス200との間の通信を監視する動作602、ホスト・コンピュータ102からのコマンドが書き込み要求であるかどうかを判別する動作604、および、データ保護機能が実行可能であるかどうかを判別する動作606を含む。例示された書き込み方法600は、追加の、コマンド要求データが保護領域214に格納されるかどうかを判別する動作608、パスキー120が保護領域214への書き込み要求に含まれるかどうかを判別する動作610、パスキー120が正しいかどうかを判別する動作612、書き込み要求を処理する動作614、パスキー120が非保護領域212への書き込み要求に含まれるかどうかを判別する動作616、および、不完全な書き込み要求を失敗させる動作618も含む。
【0099】
書き込み方法600は、ストレージ・メディア204の保護領域214を不注意によるデータのオーバレイからアクティブに保護する、ホスト・コンピュータ102からストレージ・デバイス200への書き込み要求を処理する。明瞭にするために、書き込み方法600の諸動作は一定の発生順に示されるが、実際のシステム内での実行は並行して実施可能であり、必ずしも示された順序で実施されるとは限らない。
【0100】
書き込み方法600が開始され、保護装置300は、ホスト・コンピュータ102とストレージ・デバイス200との間の通信を監視する602。一実施形態では、監視モジュール302が、ホスト・コンピュータ102とストレージ・デバイス200との間の通信を監視する602。たとえば、監視モジュール302は、データ構造400のopcodeフィールド404からのコマンドのタイプをストリップ(strip)することにより、ホスト・コンピュータ102によってストレージ・デバイス200に送信されるコマンドのタイプを監視する602ことができる。
【0101】
監視モジュール302がホスト・コンピュータ102からコマンドを受信すると、監視モジュール302は、ストレージ・デバイス200に送信されるコマンドが書き込み要求(すなわち書き込みタイプのコマンド)であるかどうかを判別する604ために、コマンドを検査する。書き込み方法600が、コマンドが書き込み要求であると判別する604と、書き込み方法600は次へ進み、データ保護機能がストレージ・デバイス200に対して実行可能であるかどうかを判別する606。コマンドが書き込み要求でない場合、書き込み方法600は戻って、ホスト・コンピュータ102とストレージ・デバイス200との間の通信を監視する602。
【0102】
書き込み要求が受信されると、書き込み方法600は、ストレージ・デバイス200に対する保護機能が活動化されるかどうかを判別する606。書き込み方法600が、保護装置300がアクティブであると判別した606場合、書き込み方法600は次へ進み、書き込みタイプのコマンドの宛先が保護領域214であるかどうかを判別する608。書き込み方法600が、保護装置300がアクティブでないと判別した606場合、書き込み方法600は次へ進み、書き込み要求を処理する614。保護装置300のデータ保護機能が実行可能であれば、書き込み方法600は、ホスト・コンピュータ102がデータを書き込むように要求する宛先がストレージ・メディア204の保護領域であるかどうかを判別する608。
【0103】
ストレージ・メディア204の保護領域214にデータを格納するための要求をホスト・コンピュータ102から受信すると、書き込み方法600は書き込み要求がパスキー120を含むかどうかを判別する610ことができる。書き込み方法600が、書き込み要求がパスキー120を含むと判別した610場合、書き込み方法600は次へ進み、含まれるパスキー120が正しいかどうかを判別する612。書き込み方法600が、保護領域214への書き込み要求がパスキー120を含まないと判別した610場合、書き込み方法600は次へ進み、書き込み要求を失敗させる618。パスキー120が含まれ、これが正しい場合、書き込み方法600は書き込み要求を処理する614。
【0104】
しかしながら、書き込み方法600が、ホスト・コンピュータ102がストレージ・メディア204の非保護領域212へ書き込み要求を送信すると判別した608場合、書き込み方法600は、非保護領域212への書き込み要求がパスキー120を含むかどうかを判別する616ことができる。書き込み方法600が、書き込み要求がパスキー120を含むと判別した616場合、書き込み方法600は次へ進み、書き込み要求を失敗させる618。非保護領域212への書き込み要求がパスキー120を含まない場合、書き込み方法600は次へ進み、書き込み要求を処理する614。
【0105】
本発明の諸実施形態によって与えられるデータの保護は、システム性能全体に実際のプラスの影響を与えることができる。ある実施形態では、本発明は、実行可能時間(uptime)、アプリケーション可用性、および実時間ビジネス性能を向上させ、それらすべてが結果として所有者の総コストを引き下げることにつながる。本発明の諸実施形態は、データの保護に加えて、ストレージ・デバイス200への書き込みタイプのコマンドの追跡、および不注意によるデータのオーバレイが試行された場合はその可能性のあるソースの追跡の機能を、システム管理者に提供する。
【0106】
本明細書に含まれる概略流れ図は、全体に論理流れ図として示される。したがって、示された順序およびラベル付けされた動作は、本発明の一実施形態を示す。機能、論理、または効果において、例示された方法の1つまたは複数の動作、あるいはその一部分と同等の、他の動作および方法が考案される可能性がある。加えて、採用されるフォーマットおよび記号は、方法の論理動作を説明するために提供されるものであり、方法の範囲を制限するものとは理解されない。流れ図では様々な矢印タイプおよび線タイプを採用することができるが、それらが対応する方法の範囲を制限するものとは理解されない。実際に、一部の矢印または他のコネクタを使用して、方法の論理流れのみを示すことができる。たとえばある矢印は、示された方法の列挙された動作間での、指定されていない持続時間の待機または監視を示すことができる。加えて、特定の方法が発生する順序は、示された対応する動作の順序に厳密に従う場合、または従わない場合がある。
【0107】
本明細書全体を通じた「一実施形態」、「実施形態」、または同様の用語への言及は、実施形態と共に説明される特定の機能、構造、または特徴が、本発明の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書全体を通じた「一実施形態では」、「実施形態では」、および同様の語句の出現は、すべて同じ実施形態を言い表す可能性があるが、その限りではない。
【0108】
信号担持媒体への言及は、信号を生成する機能、信号を生成させる機能、またはデジタル処理装置上で機械読み取り可能命令のプログラムを実行させる機能の、任意の形を取ることができる。信号担持媒体は、伝送線、コンパクト・ディスク、デジタル・ビデオ・ディスク、磁気テープ、ベルヌーイ・ドライブ、磁気ディスク、パンチ・カード、フラッシュ・メモリ、集積回路、または他のデジタル処理装置のメモリ・デバイスによって、具体化することができる。
【0109】
さらに、記載された本発明の機能、構造、または特徴は、1つまたは複数の実施形態において、任意の好適な様式で組み合わせることができる。本発明の諸実施形態を完全に理解するために、プログラミング、ソフトウェア・モジュール、ユーザ選択、ネットワーク・トランザクション、データベース照会、データベース構造、ハードウェア・モジュール、ハードウェア回路、ハードウェア・チップ、その他の例などの、多数の特定の細部が提供される。しかしながら当業者であれば、本発明が、この特定の細部のうちの1つまたは複数なしに、あるいは他の方法、コンポーネント、材料などを使用して、実施可能であることを理解されよう。他のインスタンスでは、本発明の諸態様を不明瞭にすることを避けるために、良く知られた構造、材料、または動作は詳細に図示または説明されない。
【図面の簡単な説明】
【0110】
【図1】ストレージ・システムの一実施形態を示す概略ブロック図である。
【図2】電子データ・ストレージ・デバイスの一実施形態を示す概略ブロック図である。
【図3】保護装置の一実施形態を示す概略ブロック図である。
【図4】書き込み要求データ構造の一実施形態を示す概略図である。
【図5】初期化方法の一実施形態を示す概略流れ図である。
【図6】初期化方法の一実施形態を示す概略流れ図である。
【図7】書き込み方法の一実施形態を示す概略流れ図である。

【特許請求の範囲】
【請求項1】
電子データ・ストレージ・デバイスに接続されたホストからの書き込みタイプのコマンドを認識するように構成された監視モジュールと、
前記監視モジュールに結合された検証モジュールであって、前記検証モジュールは、前記書き込みタイプのコマンドに関連付けられたパスキーの存在を決定するように構成される、検証モジュールと、
前記検証モジュールに結合された処理モジュールであって、前記処理モジュールは、前記パスキーの存在の決定に従って前記書き込みタイプのコマンドを処理するように構成される、処理モジュールと、
を備える、電子データ・ストレージ・デバイス上のデータを保護するための装置。
【請求項2】
前記検証モジュールに結合された通知モジュールであって、前記通知モジュールは、基本キーを使用して前記電子データ・ストレージ・デバイスの領域を保護するための前記電子データ・ストレージ・デバイスの保護機能を前記ホストに通知するように構成される、通知モジュールをさらに備える、請求項1に記載の装置。
【請求項3】
前記検証モジュールに結合された活動化モジュールであって、前記活動化モジュールは、前記ホストによって指定された前記電子データ・ストレージ・デバイスの領域を、基本キーを使用して保護するように構成される、活動化モジュールをさらに備える、請求項1に記載の装置。
【請求項4】
前記検証モジュールに結合された定義モジュールであって、前記定義モジュールは基本キーを定義するように構成され、前記基本キーは前記電子データ・ストレージ・デバイス上の保護領域に関連付けられる、定義モジュールをさらに備える、請求項1に記載の装置。
【請求項5】
前記検証モジュールに結合された比較モジュールであって、前記比較モジュールは前記パスキーと前記基本キーとを比較するように構成される、比較モジュールをさらに備える、請求項4に記載の装置。
【請求項6】
前記処理モジュールに結合された書き込みモジュールであって、前記書き込みモジュールは、前記書き込みタイプのコマンド、および前記パスキーと前記基本キーとの間の互換性に応答して、前記ホストから前記電子データ・ストレージ・デバイスの前記保護領域にデータを書き込むように構成される、書き込みモジュールをさらに備える、請求項5に記載の装置。
【請求項7】
前記処理モジュールに結合された書き込みモジュールであって、前記書き込みモジュールは、前記書き込みタイプのコマンド、および前記パスキーの欠如に応答して、前記ホストから前記電子データ・ストレージ・デバイスの前記保護領域にデータを書き込むように構成される、書き込みモジュールをさらに備える、請求項1に記載の装置。
【請求項8】
前記処理モジュールに結合された失敗モジュールであって、前記失敗モジュールは、前記ホストによる正しいパスキー供給の障害に応答して、前記ホストから前記電子データ・ストレージ・デバイスの保護領域への前記書き込みタイプのコマンドを失敗させるように構成される、障害モジュールをさらに備える、請求項1に記載の装置。
【請求項9】
前記処理モジュールに結合された失敗モジュールであって、前記失敗モジュールは、前記パスキーの存在に応答して、前記ホストから前記電子データ・ストレージ・デバイスの非保護領域への前記書き込みタイプのコマンドを失敗させるように構成される、障害モジュールをさらに備える、請求項1に記載の装置。
【請求項10】
前記検証モジュールに結合されたインデックス・モジュールであって、前記インデックス・モジュールは、前記電子データ・ストレージ・デバイス上の保護領域に関連付けられたインデックスを格納するように構成される、インデックス・モジュールをさらに備える、請求項1に記載の装置。
【請求項11】
ホストに結合された電子データ・ストレージ・デバイスと、
前記電子データ・ストレージ・デバイスに結合されたストレージ・メディアであって、前記ストレージ・メディアはデータを格納するように構成される、ストレージ・メディアと、
前記ストレージ・デバイスに結合されたストレージ・コントローラであって、前記ストレージ・コントローラは、前記ストレージ・メディア上のデータの格納および前記データへのアクセスを管理するように構成される、ストレージ・コントローラと、
前記ストレージ・コントローラに結合された保護装置であって、前記保護装置は、前記ストレージ・メディアの保護領域を保護するように構成される、保護装置と、
を備える、電子データ・ストレージ・デバイス上のデータを保護するためのシステム。
【請求項12】
前記電子データ・ストレージ・デバイスは前記ストレージ・コントローラに結合された通信モジュールを備え、前記通信モジュールは、前記電子データ・ストレージ・デバイスと前記ホストとの間のデータ通信を容易にするように構成される、請求項11に記載のシステム。
【請求項13】
前記電子データ・ストレージ・デバイスは前記ストレージ・コントローラに結合された追跡モジュールを備え、前記追跡モジュールは、前記ホストによる前記電子データ・ストレージ・デバイスへのアクセスを追跡するように構成される、請求項11に記載のシステム。
【請求項14】
前記ホストに結合された認識モジュールであって、前記認識モジュールは前記電子データ・ストレージ・デバイスを認識するように構成される、認識モジュールと、
基本キーを使用して前記電子データ・ストレージ・デバイスの領域を保護するための前記電子データ・ストレージ・デバイスの保護機能を確認するように構成される、確認モジュールと、
をさらに備える、請求項11に記載のシステム。
【請求項15】
前記ホストに結合された割り振りモジュールであって、前記割り振りモジュールは前記電子データ・ストレージ・デバイスの前記保護領域を指定するように構成される、割り振りモジュールをさらに備える、請求項14に記載のシステム。
【請求項16】
前記ホストに結合された実施モジュールであって、前記実施モジュールは、書き込みタイプのコマンドおよび関連付けられたパスキーを前記電子データ・ストレージ・デバイスに送信するように構成される、実施モジュールをさらに備える、請求項14に記載のシステム。
【請求項17】
コンピュータ上で実行された場合に、請求項1から10に記載された本発明を実施するように実行するためのソフトウェア・コード部分を備える、デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

image rotate

image rotate

image rotate


【公表番号】特表2009−503709(P2009−503709A)
【公表日】平成21年1月29日(2009.1.29)
【国際特許分類】
【出願番号】特願2008−524497(P2008−524497)
【出願日】平成18年7月28日(2006.7.28)
【国際出願番号】PCT/EP2006/064796
【国際公開番号】WO2007/014914
【国際公開日】平成19年2月8日(2007.2.8)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】