(57)【特許請求の範囲】
【請求項１】
第１のブロック・サイズよりも大きい第２のブロック・サイズのブロックを格納するように構成され、エミュレーションを介して、前記第２のブロック・サイズの各ブロック内に前記第１のブロック・サイズの複数のエミュレートされたブロックを格納するディスク・ドライブによって、第１のブロック・サイズの少なくとも１つのブロックを書き込む旨の要求を受信すること、
前記ディスク・ドライブによって、前記少なくとも第１のブロック・サイズのブロックが前記エミュレーションを介して書き込まれることになる前記第２のブロック・サイズの選択されたブロックの読み取りに応答して、読み取りエラーを生成すること、
前記ディスク・ドライブによって、前記読み取りエラーを生成させる前記第１のブロック・サイズの選択されたエミュレートされたブロックの破壊的書き込みを実行すること、
前記ディスク・ドライブによって、前記第２のブロック・サイズの前記選択されたブロック内に、前記第１のブロック・サイズの前記少なくとも１つのブロックを書き込むこと、および、
前記ディスク・ドライブによって、前記破壊的書き込みの前記実行を示すための通知を送信すること、
を含み、前記通知がコントローラに対し、前記選択されたエミュレートされたブロック内のデータに対応するミラーリングされたデータからデータをコピーさせる方法。
【請求項２】
前記第１のブロック・サイズは５１２バイトであり、
前記第２のブロック・サイズは４キロバイトである、
請求項１に記載の方法。
【請求項３】
前記通知はコントローラに非同期的に送信され、前記方法は、
たとえ前記読み取りエラーが生成されるのに応答する場合でも、第１のブロック・サイズの前記少なくとも１つのブロックを書き込む旨の前記要求が満たされるように、前記ディスク・ドライブによって、前記破壊的書き込みがその上で実行されるそれらのエミュレートされたブロックを示すインジケータを維持すること、
をさらに含む、請求項１に記載の方法。
【請求項４】
コントローラが、前記ディスク・ドライブによって送信される前記通知を受信すると、前記ミラーリングされたデータを前記コントローラを介して維持し、その上で前記ディスク・ドライブによって前記破壊的書き込みが実行された、前記選択されたエミュレートされたブロック内の前記データを復元すること、
をさらに含む、請求項１に記載の方法。
【請求項５】
メモリと、
前記メモリに結合されたプロセッサであって、前記プロセッサは動作を実行し、前記動作は、
第１のブロック・サイズよりも大きい第２のブロック・サイズのブロックを格納するように構成され、エミュレーションを介して、前記第２のブロック・サイズの各ブロック内に前記第１のブロック・サイズの複数のエミュレートされたブロックを格納するディスク・ドライブによって、第１のブロック・サイズの少なくとも１つのブロックを書き込む旨の要求を受信すること、
前記少なくとも第１のブロック・サイズのブロックが前記エミュレーションを介して書き込まれることになる前記第２のブロック・サイズの選択されたブロックの読み取りに応答して、読み取りエラーを生成すること、
前記読み取りエラーを生成させる前記第１のブロック・サイズの選択されたエミュレートされたブロックの破壊的書き込みを実行すること、
前記第２のブロック・サイズの前記選択されたブロック内に、前記第１のブロック・サイズの前記少なくとも１つのブロックを書き込むこと、および、
前記破壊的書き込みの前記実行を示すための通知を送信すること、
を含み、前記通知がコントローラに対し、前記選択されたエミュレートされたブロック内のデータに対応するミラーリングされたデータからデータをコピーさせるプロセッサと、
を備える、ディスク・ドライブ。
【請求項６】
前記第１のブロック・サイズは５１２バイトであり、
前記第２のブロック・サイズは４キロバイトである、
請求項５に記載のディスク・ドライブ。
【請求項７】
前記通知はコントローラに非同期的に送信され、前記動作は、
たとえ前記読み取りエラーが生成されるのに応答する場合でも、第１のブロック・サイズの前記少なくとも１つのブロックを書き込む旨の前記要求が満たされるように、前記ディスク・ドライブによって、前記破壊的書き込みがその上で実行されるそれらのエミュレートされたブロックを示すインジケータを維持すること、
をさらに含む、請求項５に記載のディスク・ドライブ。
【請求項８】
コントローラが、前記ディスク・ドライブに結合され、前記コントローラが前記ディスク・ドライブによって送信される前記通知を受信すると、前記ミラーリングされたデータを前記コントローラを介して維持し、その上で前記ディスク・ドライブによって前記破壊的書き込みが実行された、前記選択されたエミュレートされたブロック内の前記データを復元する、請求項５に記載のディスク・ドライブ。
【請求項９】
コントローラと、
前記コントローラに結合されたディスク・ドライブと、を備えるシステムであって、前記システムは動作を実行し、前記動作は、
第１のブロック・サイズよりも大きい第２のブロック・サイズのブロックを格納するように構成され、エミュレーションを介して、前記第２のブロック・サイズの各ブロック内に前記第１のブロック・サイズの複数のエミュレートされたブロックを格納するディスク・ドライブによって、第１のブロック・サイズの少なくとも１つのブロックを書き込む旨の要求を受信すること、
前記ディスク・ドライブによって、前記少なくとも第１のブロック・サイズのブロックが前記エミュレーションを介して書き込まれることになる前記第２のブロック・サイズの選択されたブロックの読み取りに応答して、読み取りエラーを生成すること、
前記ディスク・ドライブによって、前記読み取りエラーを生成させる前記第１のブロック・サイズの選択されたエミュレートされたブロックの破壊的書き込みを実行すること、
前記ディスク・ドライブによって、前記第２のブロック・サイズの前記選択されたブロック内に、前記第１のブロック・サイズの前記少なくとも１つのブロックを書き込むこと、および、
前記ディスク・ドライブによって、前記破壊的書き込みの前記実行を示すための通知を送信すること、
を含み、前記通知が前記コントローラに対し、前記選択されたエミュレートされたブロック内のデータに対応するミラーリングされたデータからデータをコピーさせる、システム。
【請求項１０】
前記第１のブロック・サイズは５１２バイトであり、
前記第２のブロック・サイズは４キロバイトである、
請求項９に記載のシステム。
【請求項１１】
前記通知はコントローラに非同期的に送信され、前記動作は、
たとえ前記読み取りエラーが生成されるのに応答する場合でも、第１のブロック・サイズの前記少なくとも１つのブロックを書き込む旨の前記要求が満たされるように、前記ディスク・ドライブによって、前記破壊的書き込みがその上で実行されるそれらのエミュレートされたブロックを示すインジケータを維持すること、
をさらに含む、請求項９に記載のシステム。
【請求項１２】
前記動作は、
コントローラが前記ディスク・ドライブによって送信される前記通知を受信すると、前記ミラーリングされたデータを前記コントローラを介して維持し、その上で前記ディスク・ドライブによって前記破壊的書き込みが実行された、前記選択されたエミュレートされたブロック内の前記データを復元すること、
をさらに含む、請求項９に記載のシステム。
【請求項１３】
コンピュータ・プログラムであって、コンピュータ読み取り可能プログラム・コードを有し、前記コンピュータ読み取り可能プログラム・コードは動作を実行するように構成され、前記動作は、
第１のブロック・サイズよりも大きい第２のブロック・サイズのブロックを格納するように構成され、エミュレーションを介して、前記第２のブロック・サイズの各ブロック内に前記第１のブロック・サイズの複数のエミュレートされたブロックを格納するディスク・ドライブによって、第１のブロック・サイズの少なくとも１つのブロックを書き込む旨の要求を受信すること、
前記ディスク・ドライブによって、前記少なくとも第１のブロック・サイズのブロックが前記エミュレーションを介して書き込まれることになる前記第２のブロック・サイズの選択されたブロックの読み取りに応答して、読み取りエラーを生成すること、
前記ディスク・ドライブによって、前記読み取りエラーを生成させる前記第１のブロック・サイズの選択されたエミュレートされたブロックの破壊的書き込みを実行すること、
前記ディスク・ドライブによって、前記第２のブロック・サイズの前記選択されたブロック内に、前記第１のブロック・サイズの前記少なくとも１つのブロックを書き込むこと、および、
前記ディスク・ドライブによって、前記破壊的書き込みの前記実行を示すための通知を送信すること、
を含み、前記通知がコントローラに対し、前記選択されたエミュレートされたブロック内のデータに対応するミラーリングされたデータからデータをコピーさせる、コンピュータ・プログラム。
【請求項１４】
前記第１のブロック・サイズは５１２バイトであり、
前記第２のブロック・サイズは４キロバイトである、
請求項１３に記載のコンピュータ・プログラム。
【請求項１５】
前記通知はコントローラに非同期的に送信され、前記動作は、
たとえ前記読み取りエラーが生成されるのに応答する場合でも、第１のブロック・サイズの前記少なくとも１つのブロックを書き込む旨の前記要求が満たされるように、前記ディスク・ドライブによって、前記破壊的書き込みがその上で実行されるそれらのエミュレートされたブロックを示すインジケータを維持すること、
をさらに含む、請求項１３に記載のコンピュータ・プログラム。
【請求項１６】
前記動作は、
コントローラが、前記ディスク・ドライブによって送信される前記通知を受信すると、前記ミラーリングされたデータを前記コントローラを介して維持し、その上で前記ディスク・ドライブによって前記破壊的書き込みが実行された、前記選択されたエミュレートされたブロック内の前記データを復元すること、
をさらに含む、請求項１３に記載のコンピュータ・プログラム。
【請求項１７】
コンピュータがディスク・ドライブを動作させることによりコンピューティング・インフラストラクチャを配備するための方法であって、
第１のブロック・サイズよりも大きい第２のブロック・サイズのブロックを格納するように構成され、エミュレーションを介して、前記第２のブロック・サイズの各ブロック内に前記第１のブロック・サイズの複数のエミュレートされたブロックを格納するディスク・ドライブによって、第１のブロック・サイズの少なくとも１つのブロックを書き込む旨の要求を受信すること、
前記ディスク・ドライブによって、前記少なくとも第１のブロック・サイズのブロックが前記エミュレーションを介して書き込まれることになる前記第２のブロック・サイズの選択されたブロックの読み取りに応答して、読み取りエラーを生成すること、
前記ディスク・ドライブによって、前記読み取りエラーを生成させる前記第１のブロック・サイズの選択されたエミュレートされたブロックの破壊的書き込みを実行すること、
前記ディスク・ドライブによって、前記第２のブロック・サイズの前記選択されたブロック内に、前記第１のブロック・サイズの前記少なくとも１つのブロックを書き込むこと、および、
前記ディスク・ドライブによって、前記破壊的書き込みの前記実行を示すための通知を送信すること、
を含み、前記通知がコントローラに対し、前記選択されたエミュレートされたブロック内のデータに対応するミラーリングされたデータからデータをコピーさせる、コンピューティング・インフラストラクチャを配備するための方法。
【請求項１８】
前記第１のブロック・サイズは５１２バイトであり、
前記第２のブロック・サイズは４キロバイトである、
請求項１７に記載のコンピューティング・インフラストラクチャを配備するための方法。
【請求項１９】
前記通知はコントローラに非同期的に送信され、前記動作は、
たとえ前記読み取りエラーが生成されるのに応答する場合でも、第１のブロック・サイズの前記少なくとも１つのブロックを書き込む旨の前記要求が満たされるように、前記ディスク・ドライブによって、前記破壊的書き込みがその上で実行されるそれらのエミュレートされたブロックを示すインジケータを維持すること、
をさらに含む、請求項１７に記載のコンピューティング・インフラストラクチャを配備するための方法。
【請求項２０】
コントローラが、前記ディスク・ドライブによって送信される前記通知を受信すると、前記ミラーリングされたデータを前記コントローラを介して維持し、その上で前記ディスク・ドライブによって前記破壊的書き込みが実行された、前記選択されたエミュレートされたブロック内の前記データを復元する、請求項１７に記載のコンピューティング・インフラストラクチャを配備するための方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、第２のブロック・サイズのブロック内の第１のブロック・サイズのブロックをエミュレート（emulate）するディスク・ドライブからの通知を介した破壊的書き込み（destructive write）のインジケーションのための方法、システム、およびコンピュータ・プログラム製品に関する。
【背景技術】
【０００２】
複数のディスクが、複数のディスクを管理するストレージ・コントローラに結合され得る。たとえば、Just a Bunch of Disks（ＪＢＯＤ）、Redundant Array of Independent Disks（ＲＡＩＤ）などとして構成されたディスクは、ストレージ・コントローラに結合され得る。ストレージ・コントローラに結合された１つまたは複数のホストは、ストレージ・コントローラにコマンドを送信することによって、複数のディスクに関して入力／出力（Ｉ／Ｏ）動作を実行することができる。
【０００３】
セクタとは、ディスクの具体的にサイズ指定された区分である。以前、ディスクの１セクタは一般に５１２バイトの情報を保持するように構成された。しかしながら近年、あるディスクは、ディスク製造業者によって４０９６バイト（すなわち４キロバイト）の情報を保持するように構成されている。
【０００４】
ブロックとは、オペレーティング・システムが対処可能なディスクのセクタ・グループである。カウント・キー・データ（ＣＫＤ）は、あるオペレーティング・システムのディスク・データ編成モデルであり、ここでデータは、それぞれが最大データ容量を有する固定数のトラックからなるものと仮定される。可変長の複数レコードをＣＫＤディスクの各トラック上に書き込むことが可能であり、各トラックの使用可能容量は、トラックに書き込まれるレコード数に依存する。ＣＫＤアーキテクチャの名前は、データのバイト数およびレコード・アドレスを含むフィールド、オプションのキー・フィールド、ならびにデータ自体を含む、そのレコード形式に由来する。ＣＫＤレコードは５１２バイト・ブロックに格納され、ホスト上に常駐するオペレーティング・システムはその５１２バイト・ブロックをアドレス指定することができる。ある他のディスク・データ編成モデルも、５１２バイト・ブロック内でオペレーティング・システムによってアドレス指定することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、従来技術における課題を解決することにある。
【課題を解決するための手段】
【０００６】
ディスク・ドライブが第１のブロック・サイズの少なくとも１つのブロックを書き込む旨の要求を受信する、方法、システム、およびコンピュータ・プログラム製品が提供され、ここでディスク・ドライブは、第１のブロック・サイズよりも大きい第２のブロック・サイズのブロックを格納するように構成され、さらにディスク・ドライブは、エミュレーションを介して、第２のブロック・サイズの各ブロック内に第１のブロック・サイズの複数のエミュレートされたブロックを格納する。ディスク・ドライブは、少なくとも第１のブロック・サイズのブロックがエミュレーションを介して書き込まれることになる第２のブロック・サイズの選択されたブロックの読み取りに応答して、読み取りエラーを生成する。ディスク・ドライブは、読み取りエラーを生成させる第１のブロック・サイズの選択されたエミュレートされたブロックの破壊的書き込みを実行する。ディスク・ドライブは、第２のブロック・サイズの選択されたブロック内に、第１のブロック・サイズの少なくとも１つのブロックを書き込む。ディスク・ドライブは、破壊的書き込みの実行を示すための通知を送信する。
【０００７】
追加の実施形態において、第１のブロック・サイズは５１２バイトであり、第２のブロック・サイズは４キロバイトである。
【０００８】
さらに追加の実施形態において、通知はコントローラに非同期的に送信され、ディスク・ドライブは、破壊的書き込みがその上で実行されるそれらのエミュレートされたブロックを示すインジケータを維持し、ここで、たとえ読み取りエラーが生成されるのに応答する場合でも、第１のブロック・サイズの少なくとも１つのブロックを書き込む旨の要求が満たされる。
【０００９】
他の実施形態において、コントローラは、ディスク・ドライブによって送信される通知を受信する。コントローラは、選択されたエミュレートされたブロック内のデータに対応するミラーリングされたデータからデータをコピーすることにより、その上でディスク・ドライブによって破壊的書き込みが実行された、選択されたエミュレートされたブロック内のデータを復元し、ここで、ミラーリングされたデータはコントローラを介して維持される。
【００１０】
さらに他の実施形態において、ディスク・ドライブは、ディスク・ドライブ内に格納されたデータをミラーリングするコントローラに結合される。要求は、そのオペレーティング・システムが、５１２バイトとして構成された第１のブロック・サイズのブロックにアクセスするように構成されたホストから、コントローラによって受信される。さらに、ディスク・ドライブによって維持されるディスクは、無駄な（wasted）ストレージ・スペースに対してはより低い許容度を有し、読み取りおよび書き込み動作を実行するために増加する処理時間に対してはより高い許容度を有する。
【００１１】
次に、全体を通じて同じ参照番号が同じ対応部分を表す図面を参照する。
【図面の簡単な説明】
【００１２】
【図１】ある実施形態に従った、ホストに結合されたコントローラと、ＪＢＯＤ構成で構成された複数のディスクとを含む、コンピューティング環境を示すブロック図である。
【図２】ある実施形態に従った、４Ｋブロック・サイズで構成されたディスク内の５１２バイト・ブロックのエミュレーションを示すブロック図である。
【図３】ある実施形態に従った、破壊的書き込みおよび非同期通知がディスク・ドライブによってどのように実行されるかを示すブロック図である。
【図４】ある実施形態に従った、ホスト、コントローラ、およびディスク・ドライブによって実行されるある動作を示す流れ図である。
【図５】ある実施形態に従った、ディスク・ドライブによって実行されるある動作を示す流れ図である。
【図６】ある実施形態に従った、コントローラによって実行されるある動作を示す流れ図である。
【図７】ある実施形態に従った、ストレージ・コントローラ外部に実装されるディスク・コントローラを示すブロック図である。
【図８】ある実施形態に従った、ストレージ・コントローラ内部に実装されるディスク・コントローラを示すブロック図である。
【図９】ある実施形態に従った、コントローラまたはディスク・ドライブ内に含まれ得るある要素を示す、計算システムを示すブロック図である。
【発明を実施するための形態】
【００１３】
以下の説明では、本明細書の一部を形成し、いくつかの実施形態を示した、添付の図面が参照される。他の実施形態が使用可能であり、構造上および動作上の変更が可能であることを理解されよう。
【００１４】
５１２バイト・ブロックを４Ｋブロックに格納するためのエミュレーション
以前の物理ディスクは、ディスク製造業者によって５１２バイト・セクタに構成されていた。近年、４キロバイト・セクタに構成される物理ディスクが使用可能になってきた。しかしながら、ＣＫＤなどのあるディスク・データ編成モデルは、たとえ４Ｋブロック上に構成された物理ディスクが使用される場合であっても、５１２バイト・ブロックを介したオペレーティング・システム・アクセスに依拠する。
【００１５】
ある実施形態において、４Ｋブロックにデータを格納するディスク・ドライブは、５１２バイト・ブロックのストレージを４Ｋブロック内でエミュレートする。しかしながら、データが読み取られる場合、４Ｋブロック全体が読み取られなければならない。ストレージ・スペースが無駄にされないある実施形態において、ディスク・ドライブは４Ｋブロック内に格納されることになる複数の５１２バイト・ブロックをエミュレートすることができる。たとえば８つの５１２ブロックが単一の４Ｋブロック内に格納されるようにエミュレートされる場合、単一の４Ｋブロック内ではスペースが無駄にならない。しかしながら、ディスク・ドライブは４Ｋブロックの全体に関連してＩ／Ｏを実行するように構成されているため、性能上のペナルティが存在する。たとえば、たとえ単一のエミュレートされた５１２バイト・ブロックが４Ｋブロック内に書き込まれる場合であっても、４Ｋブロックへのいずれかの修正および書き込みに先立って、４Ｋブロック全体が読み取られなければならない。
【００１６】
ある実施形態において、ある５１２バイト・ブロックに関する書き込み要求を満たすために、ストレージ・ドライブによって４Ｋブロックが読み取られるのに応答して、メディア・エラーが生成され得る。メディア・エラーは訂正不可能なエラーの可能性がある。しかしながら、書き込み要求を不合格にすることは望ましくない。ある実施形態において、４Ｋバイト・ブロック内に読み取りエラーを生成させるエミュレートされた５１２バイト・ブロックは破壊的に書き込まれ、すなわち読み取りエラーを発生させるエミュレートされた５１２バイト・ブロック内に格納されたデータは、破壊されておりもはや有効ではないものと示される。破壊的書き込みの通知はディスク・ドライブによってコントローラに送信され、書き込み要求が満たされる。その後、コントローラは、コントローラによって制御された、以前に格納されたミラーリングされたデータを使用して、破壊的に書き込まれたエミュレートされた５１２ブロック内のデータを復元することができる。ディスク・ドライブが、コントローラによって実行されたデータのミラーリングに気付かないことに留意されたい。
【００１７】
ホストまたはディスク・ドライブのどちらも、本来他方によってサポートされているブロック・サイズを知っている必要はない。ディスク・ドライブは、ディスクの構成によって本来使用されるより大きなブロック・サイズのブロックに対してマッピングを提供するために、ホストのオペレーティング・システムによって本来使用されるより小さなブロック・サイズのブロックのエミュレーションを実行する。
【００１８】
例示の実施形態
図１は、ある実施形態に従った、１つまたは複数のホスト１０４に結合されたコントローラ１０２と、例示のJust a Bunch of Disks（ＪＢＯＤ）構成１０８内のディスクを制御するように構成された複数のディスク・ドライブ１０６ａ・・・１０６ｎとを含む、コンピューティング環境１００のブロック図を示す。Redundant Array of IndependentDisks（ＲＡＩＤ）などの他のディスク構成が、代替実施形態において使用され得る。
【００１９】
コントローラ１０２およびホスト１０４は、パーソナル・コンピュータ、ワークステーション、サーバ、メインフレーム、ハンド・ヘルド・コンピュータ、パーム・トップ・コンピュータ、電話デバイス、ネットワーク機器、ブレード・コンピュータ、サーバなどの、当分野で現在知られているものを含む、任意の好適な計算デバイスを含むことができる。複数のディスク・ドライブ１０６ａ・・・１０６ｎは、当分野で知られている任意の好適な物理ハード・ディスクを制御することができる。代替実施形態において、複数のディスク・ドライブ１０６ａ・・・１０６ｎは、ソリッド・ステート・ディスク、光ディスクなどの他のタイプのディスクを制御することができる。
【００２０】
ホスト１０４は、ブロックにアクセスするために５１２バイトのブロック・サイズを使用するように構成された、オペレーティング・システム１１０を含むことができる。したがって、ディスク・ドライブ１０６ａ・・・１０６ｎによって制御される複数のディスクに関する読み取りは、４キロバイトのブロック・サイズで実行され得る。したがって、図１に示された実施形態において、ＪＢＯＤ構成１０８の複数のディスクは４キロバイト・ブロック・サイズ用に構成されているが、ホスト１０４上のオペレーティング・システム１１０は５１２バイト・ブロック・サイズを使用するように構成されている。
【００２１】
コントローラ１０２は、プロセッサ１１２、メモリ１１４、およびコントローラ・アプリケーション１１６を含む。コントローラ・アプリケーション１１６は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせ内で実装可能であり、ディスク・ドライブ１０６ａ・・・１０６ｎの例示のディスク１０８内に格納されたデータもミラーリング可能である。
【００２２】
ディスク・ドライブ１０６ａ・・・１０６ｎは、図１の例示のディスク・ドライブ１０６ａ、１０６ｎ内に示されたような、プロセッサ１１８、１２０およびメモリ１２２、１２４を含む。各ディスク・ドライブは、各ディスク・ドライブによって本来サポートされる４Ｋバイト・ブロック内の５１２バイト・ブロックをエミュレートする、エミュレータおよび破壊的書き込み通知アプリケーション（参照番号１２６、１２８によって示される）も実行する。エミュレータおよび破壊的書き込み通知アプリケーション１２６、１２８は、本来サポートされる４Ｋブロック内のエミュレートされた５１２バイト・ブロック上で破壊的書き込みが実行された場合、コントローラ１０２への通知も送信する。さらにエミュレータおよび破壊的書き込み通知アプリケーション１２６、１２８は、ディスク・ドライブ１０６ａ・・・１０６ｎ内に格納されたインジケータ１３０、１３２内の破壊的に書き込まれた５１２バイト・ブロックを追跡する。
【００２３】
エミュレータおよび破壊的書き込み通知アプリケーション１２６、１２８は、ホスト１０４からの５１２バイト・ブロックに対する入力／出力（Ｉ／Ｏ）要求を解釈し、こうした要求を、エミュレーションを介してＪＢＯＤ構成１０８内のディスクに関する読み取りおよび書き込みデータにマッピングする。ホスト１０４は、ディスク・ドライブ１０６ａ・・・１０６ｎがホスト１０４のオペレーティング・システム１１０によって使用される５１２バイト・ブロック・サイズをサポートしているか否かに関して、ディスク・ドライブ１０６ａ・・・１０６ｎによって通知される必要はない。
【００２４】
図２は、ある実施形態において、本来４Ｋブロック・サイズをサポートしている５１２バイト・ブロック・ディスクのエミュレーションを示す、ブロック図２００を示す。第１の４Ｋブロック２０２は、いかなるストレージ・スペースも無駄にせずに８つの５１２バイト・ブロック２０４を格納する。同様に、第２の４Ｋブロック２０６は、いかなるストレージ・スペースも無駄にせずに８つの５１２バイト・ブロック２０８を格納する。代替実施形態において、各４Ｋブロック内により少ない数の５１２バイト・ブロックがエミュレートされ得、結果としていくらかのストレージ・スペースが使用されない可能性がある。
【００２５】
図３は、ある実施形態に従った、破壊的書き込みおよび非同期通知がディスク・ドライブによってどのように実行されるかを示すブロック図３００を示す。ホスト１０４が開始した８つの５１２バイト・ブロックの書き込みコマンドは、コントローラ１０２を介してディスク・ドライブ１０６ａによって受信され、５つの５１２バイト・ブロックが第１の４Ｋブロック２０２に書き込まれ、残りの３つの５１２バイト・ブロックが第２の４Ｋブロック２０６に書き込まれる（参照番号３０２によって示される）。４Ｋブロック内の５１２バイト・ブロックのエミュレーション中に、データはアライメントされて格納される必要はない。
【００２６】
ある実施形態において、ディスク・ドライブ１０６ａは、書き込み要求を受信すると、第１の４Ｋブロックの読み取りを試行し、ある５１２バイト・ブロックが読み取れないことから読み取りエラーを生成する（参照番号３０４によって示される）。ディスク・ドライブ１０６ａはブロック３０４の破壊的書き込みを実行し、コントローラ１０２に送信するために破壊的書き込みの非同期通知を生成する（参照番号３０６によって示される）。また、５つの新しい５１２バイト・ブロックが第１の４Ｋブロック２０２内に書き込まれ（参照番号３０８によって示される）、３つの新しい５１２バイト・ブロックが第２の４Ｋブロック２０６内に書き込まれる（参照番号３１０によって示される）。
【００２７】
図４は、ある実施形態に従った、ホスト１０４、コントローラ１０２、および例示のディスク・ドライブ１０６ａによって実行されるある動作を示す流れ図を示す。
【００２８】
制御はブロック２０４で開始され、ホスト１０４は１つまたは複数の５１２バイト・ブロックをコントローラ１０２に書き込む旨の要求を送信する。コントローラ１０２はこの要求を処理した後、（ブロック４０４で）１つまたは複数の５１２バイト・ブロックを書き込む旨の要求をディスク・ドライブ１０６ａに転送する。情報を４Ｋブロック（各４Ｋブロックは８つの５１２バイト・ブロックをエミュレートする）内に格納するディスク・ドライブ１０６ａは、（ブロック４０６で）１つまたは複数の５１２バイト・ブロックを書き込む旨の要求を受信する。
【００２９】
ディスク・ドライブ１０６ａは、（ブロック４０８で）８つの５１２バイト・ブロックをエミュレートする４Ｋブロックの読み取り時に、読み取りエラーを生成する。読み取りエラーは、４Ｋブロック内に記憶されたある５１２バイト・ブロックが読み取れない場合に発生する可能性がある。
【００３０】
読み取りエラーに応答して、ディスク・ドライブ１０６ａは（ブロック４１０で）読み取りエラーを発生させたそれらの５１２バイト・ブロック上で破壊的書き込みを実行し、破壊された５１２バイト・ブロックのインジケーションをインジケータ１３０内に格納する。ディスク・ドライブ１０６ａは、（ブロック４１２で）破壊的書き込みの非同期通知をディスク・ドライブ１０６ａからコントローラ１０２へ送信する。
【００３１】
ある実施形態において、コントローラは破壊的書き込みの通知を受信すると、オプションで（ブロック４１６で）、コントローラ１０２によって維持される以前にミラーリングされたデータからデータをコピーすることにより、破壊された５１２バイト・ブロックを復元することができる。たとえば、コントローラ１０２がデータをミラーリングしている場合、破壊的に書き込まれたデータは依然として使用可能であり、破壊された５１２バイト・ブロックは以前にミラーリングされたデータからデータをコピーすることによって訂正可能である。様々な理由により、ミラーリングされたデータは潜在的に将来使用不可となる可能性があり、こうした環境では、ミラーリングされたデータは破壊されたデータの復元に使用できない可能性があることから、破壊されたデータの復元は遅れないことが望ましい。
【００３２】
図５は、ある実施形態に従った、ディスク・ドライブ１０６ａによって実行されるある動作５００を示す流れ図を示す。図５に示された動作５００は、ディスク・ドライブ１０６ａ内で実行するエミュレータおよび破壊的書き込み通知アプリケーション１２６によって実行可能である。
【００３３】
ディスク・ドライブ１０６ａは、（ブロック５０２で）第１のブロック・サイズの少なくとも１つのブロックを書き込む旨の要求を受信し、ここでディスク・ドライブ１０６ａは、第１のブロック・サイズよりも大きい第２のブロック・サイズのブロックを格納するように構成され、ディスク・ドライブ１０６ａは、エミュレーションを介して、第１のブロック・サイズの複数のエミュレートされたブロックを、第２のブロック・サイズの各ブロック内に格納する。ある実施形態において、第１のブロック・サイズは５１２バイトであり、第２のブロック・サイズは４キロバイトである。
【００３４】
制御はブロック５０４に進み、ここで、少なくとも第１のブロック・サイズのブロックがエミュレーションを介して書き込まれることになる、第２のブロック・サイズの選択されたブロックの読み取り（図３で参照番号２０２によって示される）に応答して、ディスク・ドライブ１０６ａは読み取りエラーを生成する。ディスク・ドライブ１０６ａは、（ブロック５０６で）読み取りエラーを生成させる第１のブロック・サイズの選択されたエミュレートされたブロックの破壊的書き込み（図３で参照番号３０４によって示される）を実行する。
【００３５】
制御はブロック５０８に進み、ここでディスク・ドライブ１０６ａは、第１のブロック・サイズの少なくとも１つのブロックを第２のブロック・サイズの選択されたブロックに書き込む（図３で参照番号３０８によって示される）。ディスク・ドライブ１０６ａは、（ブロック５１０で）破壊的書き込みの実行を示す通知を送信する。
【００３６】
図６は、ある実施形態に従った、コントローラ１０２によって実行されるある動作を示す流れ図６００を示す。図６に示される動作は、コントローラ１０２内で実行するコントローラ・アプリケーション１１６によって実行され得る。
【００３７】
制御はブロック６０２で開始され、ここで、（図５のブロック５１０での）ディスク・ドライブ１０６ａが破壊的書き込みの実行を示す通知を送信することに応答して、コントローラ１０２は、ディスク・ドライブ１０６ａによって送信された通知を受信する。コントローラ１０２は、（ブロック６０４で）、選択されたエミュレートされたブロック内のデータに対応するミラーリングされたデータからデータをコピーすることによって、ディスク・ドライブによって破壊的書き込みが実行された、選択されたエミュレートされたブロック内のデータを復元し、ここでミラーリングされたデータはコントローラを介して維持される。
【００３８】
したがって図１〜図６は、ディスク・ドライブが、破壊的書き込みがディスク・ドライブ内で実行された旨を示す通知をストレージ・コントローラに送信する、ある実施形態を示す。ある実施形態において、破壊されたデータは、ストレージ・コントローラによって維持されるミラーリングされたデータから復元される。ディスク・ドライブの本来のブロック・サイズはオペレーティング・システムによって対処される本来のブロック・サイズよりも大きいこと、および、ディスク・ドライブはオペレーティング・システムによって対処される本来のブロック・サイズをエミュレートすることに留意されたい。
【００３９】
図７は、ある実施形態に従った、ストレージ・コントローラ外部に実装されるディスク・コントローラ・デバイス７０２、７０４を示すブロック図７００を示す。ある実施形態において、ディスク・コントローラ・デバイス７０２、７０４は、ＪＢＯＤ、ＲＡＩＤなどとして構成された例示のディスクを制御することができる。２つのストレージ・コントローラ７０６、７０８は、複数のホスト７１２ａ・・・７１２ｎに結合されたストレージ・サブシステム７１０を形成し、ここでホスト７１２ａ・・・７１２ｎのうちの少なくとも１つまたは複数は、５１２バイトのブロック・サイズのデータにアクセスするように構成される。ストレージ・コントローラ７０６はストレージ・コントローラ７０６の外部にあるディスク・コントローラ・デバイス７０２に結合され、ストレージ・コントローラ７０８はストレージ・コントローラ７０８の外部にあるディスク・コントローラ・デバイス７０４に結合され、ここでディスク・コントローラ・デバイス７０２および７０４は、それぞれ複数のディスク７１４ａ・・・７１４ｎおよび７１６ａ・・・７１６ｎを制御し、複数のディスク７１４ａ・・・７１４ｎおよび７１６ａ・・・７１６ｎは４Ｋブロック・サイズのデータを格納する。ストレージ・コントローラ７０６および７０８は、ホスト７１２ａ・・・７１２ｎのいずれからの要求にも応答するために、互いに代わることができる。
【００４０】
したがって、図７は、ストレージ・サブシステム内のストレージ・コントローラの外部にあるディスク・コントローラが、エミュレーションを介して、５１２バイト・サイズの要求を４キロバイトのブロック・サイズのデータを格納する構成にマッピングする、ある実施形態を示す。
【００４１】
図８は、ある実施形態に従った、ストレージ・コントローラ８０６、８０８内部に実装されるディスク・コントローラ８０２、８０４を示すブロック図８００を示す。２つのストレージ・コントローラ８０６、８０８は、複数のホスト８１２ａ・・・８１２ｎに結合されたストレージ・サブシステム８１０を形成し、ここでホスト８１２ａ・・・８１２ｎのうちの少なくとも１つまたは複数は、５１２バイトのブロック・サイズのデータにアクセスするように構成される。ストレージ・コントローラ８０６はストレージ・コントローラ８０６の内部にあるディスク・コントローラ・デバイス８０２に結合され、ストレージ・コントローラ８０８はストレージ・コントローラ８０８の外部にあるディスク・コントローラ・デバイス８０４に結合され、ここでディスク・コントローラ・デバイス８０２および８０４は、それぞれ複数のディスク８１４ａ・・・８１４ｎおよび８１６ａ・・・８１６ｎを制御し、複数のディスク８１４ａ・・・８１４ｎおよび８１６ａ・・・８１６ｎは４Ｋブロック・サイズのデータを格納する。ストレージ・コントローラ８０６および８０８は、ホスト８１２ａ・・・８１２ｎのいずれからの要求にも応答するために、互いに代わることが可能であり、その後ストレージ・コントローラ８０６、８０８のそれぞれは、ディスク・コントローラに加えて、少なくともプロセッサおよびメモリ（プロセッサを示す参照番号８１８、８２０およびメモリを示す参照番号８２２、８２４によって示される）を含む。
【００４２】
したがって、図８は、ストレージ・サブシステム内のストレージ・コントローラの内部にあるディスク・コントローラが、エミュレーションを介して、５１２バイト・サイズの要求を４キロバイトのブロック・サイズのデータを格納するディスク構成にマッピングする、ある実施形態を示す。
【００４３】
したがって、図１〜図８は、データを本来４Ｋブロックに格納するディスクを制御するディスク・ドライブが、オペレーティング・システムによって対処される５１２バイト・ブロックをエミュレートするために使用される、ある実施形態を示す。複数の５１２ブロックは、ストレージ・スペースの無駄を削減するために４Ｋブロック内に格納される。しかしながら、ある実施形態において、４Ｋブロックの読み取り中に読み取りエラーが発生する可能性があり、読み取りエラーを発生させる５１２バイト・ブロックはディスク・ドライブによって破壊的に書き込まれる。ディスク・ドライブは、ディスク・ドライブ内で破壊的書き込みが実行された旨を示す通知を、ストレージ・コントローラに送信することができる。破壊されたデータは、ストレージ・コントローラによって維持されるミラーリングされたデータから復元される。
【００４４】
ホストは、ホストによって使用されるブロック・サイズをＪＢＯＤまたは他のディスク構成が本来サポートしていない旨を知る必要のないことに留意されたい。加えて、ディスク構成は、情報をディスクに格納するためにディスク構成によって使用されるブロック・サイズをホストが本来サポートしていない旨を知る必要がない。
【００４５】
ある実施形態において、２つのディスク・コントローラが同じディスクを共有できることにも留意されたい。たとえば図７において、ディスク・コントローラ７０２および７０４はどちらもディスク７１４ａ・・・７１４ｎを共有することができる。ある実施形態において、２つのストレージ・コントローラが互いに代わることができるのと同様に、２つのディスク・コントローラも互いに代わることができる。ある代替実施形態において、ディスク・ドライブによって実行される動作は、代わりにディスク・コントローラによって実行され得ることに留意されたい。
【００４６】
追加の実施形態の詳細
説明された動作は、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組み合わせを製造するために標準のプログラミング技法あるいはエンジニアリング技法またはそれらの両方を使用する、方法、装置、またはコンピュータ・プログラム製品として実装可能である。したがって実施形態の態様は、完全にハードウェア実施形態、完全にソフトウェア実施形態（ファームウェア、常駐ソフトウェア、マイクロ・コードなどを含む）、あるいは、本明細書では全体として「回路」、「モジュール」、または「システム」と呼ばれることのあるソフトウェア態様およびハードウェア態様を組み合わせる実施形態の形を取ることができる。さらに、実施形態の態様は、そこで具体化されるコンピュータ読み取り可能プログラム・コードを有する１つまたは複数のコンピュータ読み取り可能媒体内で具体化される、コンピュータ・プログラム製品の形を取ることができる。
【００４７】
１つまたは複数のコンピュータ読み取り可能媒体の任意の組み合わせが使用可能である。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能記憶媒体とすることができる。コンピュータ読み取り可能記憶媒体は、たとえば電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、またはデバイス、あるいはそれらの任意の好適な組み合わせとすることができるが、これらに限定されない。コンピュータ読み取り可能記憶媒体のより特定の例（非網羅的リスト）は、１本または複数本のワイヤを有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、光ストレージ・デバイス、磁気ストレージ・デバイス、あるいは、それらの任意の好適な組み合わせを含む。本書との関連において、コンピュータ読み取り可能記憶媒体は、命令実行のシステム、装置、またはデバイスによって、あるいはそれらに関連して使用するためのプログラムを、含むかまたは格納することが可能な、任意の有形媒体とすることができる。
【００４８】
コンピュータ読み取り可能信号媒体は、たとえばベースバンド内に、または搬送波の一部として、その中に具体化されたコンピュータ読み取り可能プログラム・コードを備える伝搬されるデータ信号を含むことが可能である。こうした伝搬される信号は、電磁、光、またはそれらの任意の好適な組み合わせを含むがこれらに限定されない、様々な形のいずれかを取ることができる。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能記憶媒体ではなく、命令実行のシステム、装置、またはデバイスによって、あるいはそれらに関連して使用するためのプログラムを、通信、伝搬、または移送することが可能な、任意のコンピュータ読み取り可能媒体とすることができる。
【００４９】
コンピュータ読み取り可能媒体上に具体化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦなど、またはそれらの任意の好適な組み合わせを含むが、それらに限定されない、任意の適切な媒体を使用して伝送することができる。
【００５０】
本発明の態様に関する動作を実行するためのコンピュータ・プログラム・コードは、＊Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、あるいは「Ｃ」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、１つまたは複数のプログラミング言語の任意の組み合わせで作成することができる。プログラム・コードは、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン型ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上および部分的にリモート・コンピュータ上で、あるいは、完全にリモート・コンピュータまたはサーバ上で、実行可能である。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介してユーザのコンピュータに接続可能であるか、あるいは、（たとえばインターネット・サービス・プロバイダを使用するインターネットを介して）外部コンピュータに接続することができる。
【００５１】
本発明の態様は、本発明の実施形態に従った方法、装置（システム）、およびコンピュータ・プログラム製品の流れ図あるいはブロック図またはその両方を参照しながら、以下で説明される。流れ図あるいはブロック図またはその両方の各ブロック、ならびに流れ図あるいはブロック図またはその両方におけるブロックの組み合わせが、コンピュータ・プログラム命令によって実装可能であることを理解されよう。コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行する命令が、流れ図あるいはブロック図またはその両方のブロック内に指定された機能／動作を実装するための手段を作成するように、これらのコンピュータ・プログラム命令を、汎用コンピュータ、特定用途向けコンピュータ、またはマシンを製造するための他のプログラマブル・データ処理装置のプロセッサに、提供することができる。
【００５２】
これらのコンピュータ・プログラム命令は、コンピュータ読み取り可能媒体内に格納された命令が、流れ図あるいはブロック図またはその両方のブロック内に指定された機能／動作を実装する命令を含む製品を製造するように、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスのプロセッサに、特定の様式で機能するように指示することが可能な、コンピュータ読み取り可能媒体内に格納することもできる。
【００５３】
コンピュータ・プログラム命令は、コンピュータまたは他のプログラマブル装置上で実行する命令が、流れ図あるいはブロック図またはその両方のブロック内に指定された機能／動作を実装するためのプロセスを提供するように、コンピュータ実装プロセスを生成するための一連の動作ステップをコンピュータ、他のプログラマブル装置、または他のデバイス上で実行させるために、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードすることもできる。
【００５４】
図９は、ある実施形態に従った、ストレージ・コントローラ１０２またはディスク・ドライブ１０６ａ・・・１０６ｎ内に含まれ得るある要素を示すブロック図を示す。システム９００は、ストレージ・コントローラ７０６、７０８、８０６、８０８またはディスク・ドライブ１０６ａ・・・１０６ｎ、またはディスク・コントローラ７０２、７０４、８０２、８０４を備えることが可能であり、ある実施形態において、少なくともプロセッサ９０４を含むことが可能な回路９０２を含むことができる。システム９００は、メモリ９０６（たとえば揮発性メモリ・デバイス）およびストレージ９０８も含むことができる。ストレージ９０８は、不揮発性メモリ・デバイス（たとえばＥＥＰＲＯＭ、ＲＯＭ、ＰＲＯＭ、ＲＡＭ、ＤＲＡＭ、ＳＲＡＭ、フラッシュ、ファームウェア、プログラマブル論理など）、磁気ディスク・ドライブ、光ディスク・ドライブ、テープ・ドライブなどを含むことができる。ストレージ９０８は、内部ストレージ・デバイス、接続ストレージ・デバイス、あるいはネットワーク・アクセス可能ストレージ・デバイス、またはそれらすべてを備えることができる。システム９００は、メモリ９０６にロード可能であり、プロセッサ９０４または回路９０２によって実行可能な、コード９１２を含むプログラム論理９１０を含むことができる。ある実施形態において、コード９１２を含むプログラム論理９１０は、ストレージ９０８に格納可能である。ある他の実施形態において、プログラム論理９１０は回路９０２内に実装可能である。したがって、図９はプログラム論理９１０を他の要素とは分けて示しているが、プログラム論理９１０はメモリ９０６内あるいは回路９０２内またはその両方で実装可能である。
【００５５】
ある実施形態は、人または自動化された処理がコンピュータ読み取り可能コードをコンピューティング・システム内に統合することによって、コンピューティング命令を配備するための方法を対象とすることが可能であり、ここでコードは、コンピューティング・システムとの組み合わせで説明された実施形態の動作を実行することが可能である。
【００５６】
「ある実施形態」、「実施形態」、「その実施形態」、「１つまたは複数の実施形態」、「いくつかの実施形態」、および「一実施形態」という用語は、明示的に指定されていない限り、「本発明の１つまたは複数の（ただしすべてではない）実施形態」を意味する。
【００５７】
「含む」、「備える」、「有する」、およびそれらの変形の用語は、明示的に指定されていない限り、「含むが限定されない」ことを意味する。
【００５８】
アイテムの列挙されたリストは、明示的に指定されていない限り、アイテムのいずれかまたはすべてが相互排他的であることを示唆しない。
【００５９】
「ａ」、「ａｎ」、および「ｔｈｅ」という用語は、明示的に指定されていない限り、「１つまたは複数」を意味する。
【００６０】
互いに通信しているデバイスは、明示的に指定されていない限り、互いに連続して通信している必要はない。加えて、互いに通信しているデバイスは、直接、あるいは１つまたは複数の媒介を介して間接的に、通信可能である。
【００６１】
互いに通信しているいくつかの構成要素を備える実施形態の説明は、こうした構成要素のすべてが必要であることを示唆しない。これに対して、本発明の多種多様な可能な実施形態を示すために様々なオプションの構成要素が説明されている。
【００６２】
さらに、プロセス・ステップ、方法ステップ、アルゴリズムなどは順次説明されているが、こうしたプロセス、方法、およびアルゴリズムは代替の順序で作業するように構成可能である。言い換えれば、説明可能なステップの任意のシーケンスまたは順序は、必ずしもステップがその順序で実行される旨の要件を示すものではない。本明細書で説明されるプロセスのステップは、任意の実用的な順序で実行可能である。さらにいくつかのステップは、同時に実行可能である。
【００６３】
本明細書で単一のデバイスまたは製品が説明される場合、単一のデバイス／製品の代わりに複数のデバイス／製品（それらが協働しているか否かにかかわらず）が使用可能であることが容易に明らかとなろう。同様に、本明細書で複数のデバイスまたは製品（それらが協働しているか否かにかかわらず）が説明されている場合、複数のデバイスまたは製品の代わりに単一のデバイス／製品が使用可能であること、あるいは示された数のデバイスまたはプログラムの代わりに異なる数のデバイス／製品が使用可能であることが容易に明らかとなろう。デバイスの機能あるいは特徴またはその両方は、こうした機能／特徴を有するものとして明示的に説明されていない１つまたは複数の他のデバイスによって別の方法で具体化可能である。したがって本発明の他の実施形態は、デバイス自体を含む必要はない。
【００６４】
図面内に示され得る少なくともある動作は、ある順序で発生するあるイベントを示す。代替の実施形態において、ある動作は異なる順序で実行されるか、修正または除去されることが可能である。さらに、ステップを前述の論理に追加し、説明された実施形態に依然として適合することが可能である。さらに、本明細書で説明される動作が順次発生可能であるか、またはある動作が並行して処理可能である。さらに、動作は単一の処理ユニットによって、または分散処理ユニットによって実行可能である。
【００６５】
本発明の様々な実施形態の前述の説明は、例示および説明の目的で提示されてきた。本発明が網羅的であること、または本発明を開示された精密な形に限定することは意図されていない。上記の教示に鑑み、多くの修正および変形が可能である。本発明の範囲がこの詳細な説明によってではなく、本明細書に添付の特許請求の範囲によって限定されることが意図される。前述の仕様、例示、およびデータは、製造の完全な説明および本発明の構成の使用を提供する。本発明の多くの実施形態は本発明の趣旨および範囲を逸脱することなく実行可能であるため、本発明は以下に添付された特許請求の範囲内にある。
【００６６】
＊ＪａｖａはＯｒａｃｌｅあるいはその関連会社またはその両方の商標または登録商標である。
【図１】
0005648946.tif 000002
【図２】
0005648946.tif 000003
【図３】
0005648946.tif 000004
【図４】
0005648946.tif 000005
【図５】
0005648946.tif 000006
【図６】
0005648946.tif 000007
【図７】
0005648946.tif 000008
【図８】
0005648946.tif 000009
【図９】
0005648946.tif 000010