(57)【要約】【課題】例えば１台以上のＨＤＤを備えてなるディスクシステム等のレスポンス性能を大幅なコストアップを招くことなく向上させることに加え、データの一貫性を保証することを実現したデータ記憶システム装置を提供する。【解決手段】制御部２１は、オペレーティングシステム（ＯＳ）起動前の論理ＨＤＤ２２に対するアクセスをＢＩＯＳ２１１により制御し、ＯＳ起動後の論理ＨＤＤ２２に対するアクセスを当該ＯＳ配下で動作するディスクドライバ２１２により制御する。また、ディスクドライバ２１２は、論理ＨＤＤ２２のキャッシュとしてＮＶＭ２３を用いる。ＢＩＯＳ２１１は、論理ＨＤＤ２２に対する書き込みを行う場合、そのライトコマンドをＮＶＭ２３にトレースする。そして、ＢＩＯＳ２１１から制御を引き継いだディスクドライバ２１２は、このトレース情報を使って、ＮＶＭ２３にキャッシュされたデータの一貫性を保証するための処理を実行する。【選択図】図１
2010257481.tif 000002
【特許請求の範囲】
【請求項１】
１台以上の第１の記憶装置と、
第２の記憶装置と、
起動時における前記第１の記憶装置に対するデータアクセスを第１のデバイス制御手段によって実行し、起動後における前記第１の記憶装置に対するデータアクセスを第２のデバイス制御手段によって実行する制御装置と、
を具備し、
前記１のデバイス制御手段は、
前記第１の記憶装置へのデータの書き込み要求を受けた場合、前記第１の記憶装置へ書き込み対象のデータを書き込んだ際に、このデータの書き込み要求を示すトレース情報を前記第２の記憶装置に記録するトレース手段、
を有し、
前記第２のデバイス制御手段は、
前記第１の記憶装置からのデータの読み出し要求を受けた場合、前記第１の記憶装置から読み出し対象のデータを読み出した際に、この読み出したデータを含むデータブロックを前記第２の記憶装置にキャッシュするキャッシング手段と、
前記第１の記憶装置からのデータの読み出し要求を受けた際、読み出し対象のデータが前記第２の記憶装置にキャッシングされていた場合、前記第２の記憶装置から当該読み出し対象データを読み出す読み出し制御手段と、
前記第１の記憶装置へのデータの書き込み要求を受けた場合、前記第１の記憶装置へ書き込み対象のデータを書き込むと共に、この書き込みによって更新されるべき更新前データが前記第２の記憶装置にキャッシングされていた場合、当該更新前データを含むデータブロックの更新を実行し、または、当該更新前データを含むデータブロックを無効化する書き込み制御手段と、
前記第１の記憶装置へのデータの書き込み要求および前記第１の記憶装置からのデータの読み出し要求の受け付けを前記第１のデバイス制御手段から引き継いだ際、前記トレース手段によって記録されたトレース情報に基づき、前記第１のデバイス制御手段による書き込みによって更新されるべき更新前データが前記第２の記憶装置にキャッシングされていないかを判定し、キャッシングされていた場合、当該更新前データを含むデータブロックを無効化するキャッシュ一貫性保証手段と、
を有する、
ことを特徴とするデータ記憶システム。
【請求項２】
前記トレース手段は、前記トレース情報の有効／無効を示すフラグを含むトレースヘッダを前記第２の記憶装置へ記録し、前記第２の記憶装置上に記録すべき前記トレース情報の量が予め定められた値を越えた場合、前記トレースヘッダに含まれるフラグを無効に設定すると共に、それ以降の前記トレース情報の前記第２の記録装置への記録を停止し、
前記キャッシュ一貫性保証手段は、前記トレースヘッダに含まれるフラグが無効を示していた場合、前記第２の記憶装置にキャッシングされているデータブロックすべてを無効化する、
ことを特徴とする請求項１記載のデータ記憶システム。
【請求項３】
前記第２の記憶装置は、ライトバック型のキャッシュメモリを備え、
前記キャッシュ一貫性保証手段は、前記第２のデバイス制御手段の起動時、前記第２の記憶装置にキャッシングされているデータブロックの無効化を終了した後、前記トレースヘッダに含まれるフラグを無効に設定して、前記キャッシュメモリ内のデータを記憶メディアに反映させるフラッシュ処理を前記第２の記憶装置に実行させ、前記第２のデバイス制御手段の終了時、前記トレースヘッダに含まれるフラグを有効に設定して、前記フラッシュ処理を前記第２の記憶装置に実行させる、
ことを特徴とする請求項１記載のデータ記憶システム。
【請求項４】
前記トレース手段は、前記トレースヘッダに含まれるフラグが無効を示していた場合、前記トレース情報の前記第２の記録装置への記録を行わないことを特徴とする請求項３記載のデータ記憶システム。
【請求項５】
前記第１の記憶装置は、少なくとも１台以上のＨＤＤ（Hard Disk Drive）によって構成され、前記第２の記憶装置は、ＳＳＤ（Solid State Drive）によって構成されることを特徴とする請求項１記載のデータ記憶システム。
【請求項６】
前記書き込み制御手段は、データの更新が前記第１の記憶装置よりも前記第２の記憶装置の方が高速である場合、前記第２の記憶装置にキャッシングされている更新前データを含むデータブロックの更新を実行することを特徴とする請求項１記載のデータ記憶システム。
【請求項７】
前記書き込み制御手段は、データの更新が前記第１の記憶装置よりも前記第２の記憶装置の方が低速である場合、前記第２の記憶装置にキャッシングされている更新前データを含むデータブロックの無効化を実行することを特徴とする請求項１記載のデータ記憶システム。
【請求項８】
第１の記憶装置と、
第２の記憶装置と、
起動時における前記第１の記憶装置に対するデータアクセスを第１のデバイス制御手段によって実行し、起動後における前記第１の記憶装置に対するデータアクセスを第２のデバイス制御手段によって実行する制御装置と、
を具備し、
前記１のデバイス制御手段は、
前記第１の記憶装置へのデータの書き込み要求を受けた場合、前記第１の記憶装置へ書き込み対象のデータを書き込んだ際に、このデータの書き込み要求を示すトレース情報を前記第２の記憶装置に記録するトレース手段、
を有し、
前記第２のデバイス制御手段は、
前記第１の記憶装置へのデータの書き込み要求および前記第１の記憶装置からのデータの読み出し要求の受け付けを前記第１のデバイス制御手段から引き継いだ際、前記トレース手段によって記録されたトレース情報に基づき、前記第１のデバイス制御手段による書き込みによって更新されるべき更新前データが前記第２の記憶装置にキャッシングされていないかを判定し、キャッシングされていた場合、当該更新前データを含むデータブロックを無効化するキャッシュ一貫性保証手段、
を有する、
ことを特徴とするデータ記憶システム。
【請求項９】
１台以上の第１の記憶装置と、第２の記憶装置と、起動時における前記第１の記憶装置に対するデータアクセスを第１のデバイス制御手段によって実行し、起動後における前記第１の記憶装置に対するデータアクセスを第２のデバイス制御手段によって実行する制御装置と、を具備するデータ記憶システムにおけるキャッシュデータの一貫性保証方法であって、
前記１のデバイス制御手段が、
前記第１の記憶装置へのデータの書き込み要求を受けた場合、前記第１の記憶装置へ書き込み対象のデータを書き込んだ際に、このデータの書き込み要求を示すトレース情報を前記第２の記憶装置に記録し、
前記第２のデバイス制御手段が、
前記第１の記憶装置からのデータの読み出し要求を受けた場合、前記第１の記憶装置から読み出し対象のデータを読み出した際に、この読み出したデータを含むデータブロックを前記第２の記憶装置にキャッシュし、
前記第１の記憶装置からのデータの読み出し要求を受けた際、読み出し対象のデータが前記第２の記憶装置にキャッシングされていた場合、前記第２の記憶装置から当該読み出し対象データを読み出し、
前記第１の記憶装置へのデータの書き込み要求を受けた場合、前記第１の記憶装置へ書き込み対象のデータを書き込むと共に、この書き込みによって更新されるべき更新前データが前記第２の記憶装置にキャッシングされていた場合、当該更新前データを含むデータブロックの更新を実行し、または、当該更新前データを含むデータブロックを無効化し、
前記第１の記憶装置へのデータの書き込み要求および前記第１の記憶装置からのデータの読み出し要求の受け付けを前記第１のデバイス制御手段から引き継いだ際、前記トレース手段によって記録されたトレース情報に基づき、前記第１のデバイス制御手段による書き込みによって更新されるべき更新前データが前記第２の記憶装置にキャッシングされていないかを判定し、キャッシングされていた場合、当該更新前データを含むデータブロックを無効化する、
ことを特徴とするキャッシュデータの一貫性保証方法。
【請求項１０】
前記１のデバイス制御手段は、
前記トレース情報の有効／無効を示すフラグを含むトレースヘッダを前記第２の記憶装置へ記録し、前記第２の記憶装置上に記録すべき前記トレース情報の量が予め定められた値を越えた場合、前記トレースヘッダに含まれるフラグを無効に設定すると共に、それ以降の前記トレース情報の前記第２の記録装置への記録を停止し、
前記第２のデバイス制御手段は、
前記トレースヘッダに含まれるフラグが無効を示していた場合、前記第２の記憶装置にキャッシングされているデータブロックすべてを無効化する、
ことを特徴とする請求項９記載のキャッシュデータの一貫性保証方法。
【請求項１１】
前記第２の記憶装置は、ライトバック型のキャッシュメモリを備え、
前記第２のデバイス制御手段は、
前記第２のデバイス制御手段の起動時、前記第２の記憶装置にキャッシングされているデータブロックの無効化を終了した後、前記トレースヘッダに含まれるフラグを無効に設定して、前記キャッシュメモリ内のデータを記憶メディアに反映させるフラッシュ処理を前記第２の記憶装置に実行させ、前記第２のデバイス制御手段の終了時、前記トレースヘッダに含まれるフラグを有効に設定して、前記フラッシュ処理を前記第２の記憶装置に実行させる、
ことを特徴とする請求項１０記載のキャッシュデータの一貫性保証方法。
【請求項１２】
前記第２のデバイス制御手段は、
前記第１の記憶装置へのデータの書き込み要求を受けた際、データの更新が前記第１の記憶装置よりも前記第２の記憶装置の方が高速である場合、前記第２の記憶装置にキャッシングされている更新前データを含むデータブロックの更新を実行することを特徴とする請求項９記載のキャッシュデータの一貫性保証方法。
【請求項１３】
前記第２のデバイス制御手段は、
前記第１の記憶装置へのデータの書き込み要求を受けた際、データの更新が前記第１の記憶装置よりも前記第２の記憶装置の方が低速である場合、前記第２の記憶装置にキャッシングされている更新前データを含むデータブロックの無効化を実行することを特徴とする請求項９記載のキャッシュデータの一貫性保証方法。
【請求項１４】
第１の記憶装置と、第２の記憶装置と、起動時における前記第１の記憶装置に対するデータアクセスを第１のデバイス制御手段によって実行し、起動後における前記第１の記憶装置に対するデータアクセスを第２のデバイス制御手段によって実行する制御装置と、を具備するデータ記憶システムにおけるキャッシュデータの一貫性保証方法であって、
前記１のデバイス制御手段が、
前記第１の記憶装置へのデータの書き込み要求を受けた場合、前記第１の記憶装置へ書き込み対象のデータを書き込んだ際に、このデータの書き込み要求を示すトレース情報を前記第２の記憶装置に記録し、
前記第２のデバイス制御手段が、
前記第１の記憶装置へのデータの書き込み要求および前記第１の記憶装置からのデータの読み出し要求の受け付けを前記第１のデバイス制御手段から引き継いだ際、前記トレース手段によって記録されたトレース情報に基づき、前記第１のデバイス制御手段による書き込みによって更新されるべき更新前データが前記第２の記憶装置にキャッシングされていないかを判定し、キャッシングされていた場合、当該更新前データを含むデータブロックを無効化する、
ことを特徴とするキャッシュデータの一貫性保証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えば１台以上のＨＤＤ（Hard Disk Drive）を備えてなるディスクシステムに好適なキャッシュデータの一貫性保証技術に関する。
【背景技術】
【０００２】
近年、様々な業種で作業の電子化が進められており、オフィス環境等においては、各従業員がそれぞれパーソナルコンピュータを使って業務を行い、また、ＬＡＮ（Local Area network）を介して接続された共用のサーバコンピュータを使って、業務データを一元的に管理するといったことが広く行われている。
【０００３】
このような用途で用いられるサーバコンピュータにおいては、複数の従業員から読み出しや（更新を含む）書き込みが行われるデータの一貫性を保証することが重要であり、このようなことから、データの一貫性を保証するための仕組みに関する提案が、これまで種々なされているに至っている（例えば特許文献１等参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平４−１７０６２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、前述のような用途で使用されるサーバコンピュータは、例えば複数のＨＤＤを備えることによって低コストで大容量化を実現するディスクシステムを外部記憶装置として適用することも多い。
【０００６】
また、最近では、ＨＤＤに代えて、不揮発性の半導体メモリを記録メディアとするＳＳＤ（Solid State Drive）を搭載するパーソナルコンピュータも登場している。このＳＳＤはＨＤＤと比較してデータの読み出し速度が速いので、複数のＳＳＤによってディスクシステムを構成すれば、レスポンス性能を向上させることができる。しかしながら、そうすると、大幅なコストアップが避けられず現実的ではない。
【０００７】
また、コストを考慮した折衷案として、例えば、ＨＤＤとＳＳＤとを混在させ、ＳＳＤをＨＤＤのキャッシュとして利用することによって、レスポンス性能を向上させることも考えられる。しかしながら、この場合には、この２種類の記憶装置が例えば動作モード毎に異なるドライバの制御下に置かれ得る状況下においても、キャッシュデータの一貫性を保証することのできる新たなキャッシュデータの一貫性保証手法が求められる。
【０００８】
この発明はこのような事情を考慮してなされたものであり、例えば１台以上のＨＤＤを備えてなるディスクシステム等のレスポンス性能を大幅なコストアップを招くことなく向上させ、かつ、データの一貫性を保証することを実現したデータ記憶システムおよびキャッシュデータの一貫性保証方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
前述した目的を達成するために、この発明のデータ記憶システムは、１台以上の第１の記憶装置と、第２の記憶装置と、起動時における前記第１の記憶装置に対するデータアクセスを第１のデバイス制御手段によって実行し、起動後における前記第１の記憶装置に対するデータアクセスを第２のデバイス制御手段によって実行する制御装置と、を具備し、前記１のデバイス制御手段は、前記第１の記憶装置へのデータの書き込み要求を受けた場合、前記第１の記憶装置へ書き込み対象のデータを書き込んだ際に、このデータの書き込み要求を示すトレース情報を前記第２の記憶装置に記録するトレース手段、を有し、前記第２のデバイス制御手段は、前記第１の記憶装置からのデータの読み出し要求を受けた場合、前記第１の記憶装置から読み出し対象のデータを読み出した際に、この読み出したデータを含むデータブロックを前記第２の記憶装置にキャッシュするキャッシング手段と、前記第１の記憶装置からのデータの読み出し要求を受けた際、読み出し対象のデータが前記第２の記憶装置にキャッシングされていた場合、前記第２の記憶装置から当該読み出し対象データを読み出す読み出し制御手段と、前記第１の記憶装置へのデータの書き込み要求を受けた場合、前記第１の記憶装置へ書き込み対象のデータを書き込むと共に、この書き込みによって更新されるべき更新前データが前記第２の記憶装置にキャッシングされていた場合、当該更新前データを含むデータブロックの更新を実行し、または、当該更新前データを含むデータブロックを無効化する書き込み制御手段と、前記第１の記憶装置へのデータの書き込み要求および前記第１の記憶装置からのデータの読み出し要求の受け付けを前記第１のデバイス制御手段から引き継いだ際、前記トレース手段によって記録されたトレース情報に基づき、前記第１のデバイス制御手段による書き込みによって更新されるべき更新前データが前記第２の記憶装置にキャッシングされていないかを判定し、キャッシングされていた場合、当該更新前データを含むデータブロックを無効化するキャッシュ一貫性保証手段と、を有する、ことを特徴とする。
【発明の効果】
【００１０】
この発明によれば、例えば１台以上のＨＤＤを備えてなるディスクシステム等のレスポンス性能を大幅なコストアップを招くことなく向上させ、かつ、データの一貫性を保証することが実現される。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態に係るデータ記憶システム（ディスクサブシステム）の構成を示す図。
【図２】同実施形態のディスクサブシステムにおける不揮発性メモリの記憶領域の論理的なアロケーション例を示す図
【図３】同実施形態のディスクサブシステムにおけるＢＩＯＳの論理ＨＤＤに対するデータアクセスに関する動作の流れを示すフローチャート。
【図４】同実施形態のディスクサブシステムにおけるディスクドライバの起動時における論理ＨＤＤに対するデータアクセスに関する動作の流れを示すフローチャート。
【図５】同実施形態のディスクサブシステムにおけるディスクドライバの終了時における論理ＨＤＤに対するデータアクセスに関する動作の流れを示すフローチャート。
【発明を実施するための形態】
【００１２】
以下、図面を参照して、この発明の一実施形態を説明する。
【００１３】
図１は、この発明の実施形態に係るデータ記憶システムの構成を示す図である。本データ記憶システムは、ホストシステム１が利用するデータを大量に記憶するためのディスクサブシステム２として実現されている。本実施形態では、ディスクサブシステム２は、ホストシステム１と共に１つのコンピュータシステムを構成しており、ホストシステム１とはデータバスを介して接続されているものとする。
【００１４】
図１に示すように、ディスクサブシステム２は、制御部２１、複数の論理ＨＤＤ（Hard Disk Drive）２２および不揮発性メモリ（ＮＶＭ：Non-Volatile Memory）２３から構成されている。また、本実施形態では、ＮＶＭ２３として、ＳＳＤ（Solid State Drive）を適用するものとする。
【００１５】
制御部２１は、本ディスクサブシステム２の動作を制御する中枢部であり、ホストシステム１が発行する論理ＨＤＤ２２へのデータの書き込み要求（ライトコマンド）または論理ＨＤＤ２２からのデータの読み出し要求（リードコマンド）を受け付け、この要求された論理ＨＤＤ２２に対するデータアクセスを、（論理ＨＤＤ２２よりもアクセス速度の速い）ＮＶＭ２３をキャッシュとして利用しつつ効率的に処理すべく、論理ＨＤＤ２２およびＮＶＭ２３を駆動制御する。
【００１６】
制御部２１は、ＢＩＯＳ（Basic Input/Output System）２１１とディスクドライバ２１２とを有している。例えば、ホストシステム１において、本コンピュータシステム全体のリソース管理等を行うＯＳ（Operationg System）がロードされて動作を開始するまでの間、ディスクサブシステム２の論理ＨＤＤ２２に対するデータアクセスは、ＢＩＯＳ２１１によって制御され、ＯＳが動作を開始した後は、ディスクサブシステム２の論理ＨＤＤ２２に対するデータアクセスが、それまでのＢＩＯＳ２１１に代わって、当該ＯＳの配下で動作するディスクドライバ２１２によって制御される。
【００１７】
なお、ディスクドライバ２１２は、論理ＨＤＤ２２に対するデータアクセスを実行するにあたって、ＮＶＭ２３をキャッシュとして利用するが、ＢＩＯＳ２１１は、論理ＨＤＤ２２に対するデータアクセスを実行するにあたって、ＮＶＭ２３をキャッシュとして利用しない。もし、ＮＶＭ２３をキャッシュとして利用するための複雑な制御モジュールをＢＩＯＳ２１１にも搭載したならば、ＢＩＯＳ２１１のコード量を大幅に増加させてしまうためである。そのため、何らの対策も講じなければ、（キャッシュされたデータの更新を必要とする書き込みをＢＩＯＳ２１１が実行したような場合）ＮＶＭ２３のキャッシュデータの一貫性は保証されない。
【００１８】
そこで、本ディスクサブシステム２は、安価・低速な論理ＨＤＤ２２で大容量の記憶領域を構成しつつ、高速なＳＳＤ２３を、これら論理ＨＤＤ２２の共用キャッシュとして設置し、かつ、前述の通りにＢＩＯＳ２１１からとディスクドライバ２１２からとの２系統でデータアクセスが発生する状況下においても当該ＳＳＤ上のキャッシュデータの一貫性を保証する仕組み制御部２１が備えること、より具体的には、（少ないコード量の）ＢＩＯＳ２１１とディスクドライバ２１２とが協働する仕組みを備えることにより、大幅なコストアップを招くことなくレスポンス性能を向上させ、かつ、データの一貫性を保証することを実現したものであり、以下、この点について詳述する。
【００１９】
なお、制御部２１は、当該データアクセスの作業領域用として、ＤＲＡＭ等の揮発性メモリ（ＶＭ：Volatil Memory）２１３を有している。また、論理ＨＤＤ２２は、単体のＨＤＤまたは複数のＨＤＤを並列接続して耐障害性を高めたＲＡＩＤ（Redundant Array of Inexpensive Disks）等である。ディスクサブシステム２内の論理ＨＤＤ２２として、単体のＨＤＤとＲＡＩＤとが混在していても構わない。ホストシステム１は、各論理ＨＤＤ２２を個別に認識して、それぞれに対するデータアクセス要求を本ディスクサブシステム２の制御部２１に対して発行する。
【００２０】
図２は、本ディスクサブシステム２におけるＮＶＭ２３の記憶領域の論理的なアロケーション例を示す図である。
【００２１】
図２に示すように、制御部２１は、ＮＶＭ２３の記憶領域を、管理データ領域ａ１とＨＤＤキャッシュ領域ａ２との２通りに使い分ける。
【００２２】
ＨＤＤキャッシュ領域ａ２は、論理ＨＤＤ２２のデータの一部を保持する領域、つまり前述の共用キャッシュとして使用する領域である。なお、当該ＨＤＤキャッシュ領域ａ２上に論理ＨＤＤ２２のデータの一部を保持するためのいわゆるキャッシングの手法については、特定の手法に限定されず、既存のいずれの手法も適用可能である。また、このＨＤＤキャッシュ領域ａ２には、当該ＨＤＤキャッシュ領域ａ２に保持されているデータがどの論理ＨＤＤ２２のどのデータに対応するものなのかを示すキャッシュディレクトリ等も格納される。キャッシュディレクトリは、ＶＭ２１３にロードされて利用され、所定のタイミングで適宜にＨＤＤキャッシュ領域ａ２に書き戻される。
【００２３】
そして、管理データ領域ａ１は、ＢＩＯＳ２１１からとディスクドライバ２１２からとの２系統でアクセスされる論理ＨＤＤ２２に関する（ＮＶＭ２３の）ＨＤＤキャッシュ領域ａ２内のキャッシュデータの一貫性を保証するための各種管理データを保持するための領域である。この管理データ領域ａ１には、後述するトレースヘッダａ１１およびトレースデータａ１２とが格納される。
【００２４】
次に、このＨＤＤキャッシュ領域ａ２内のキャッシュデータの一貫性を保証するためのＢＩＯＳ２１１とデバイスドライバ２１２との協働動作について説明する。
【００２５】
まず、（本コンピュータシステムの起動時またはリブート時等における）ＢＩＯＳ２１１の論理ＨＤＤ２２に対するデータアクセスに関する基本的な動作原理を説明する。
【００２６】
ＢＩＯＳ２１１は、論理ＨＤＤ２２に対するデータアクセスを要求するコマンドをホストシステム１から受け付けた際、そのコマンドが論理ＨＤＤ２２からのデータの読み出しを要求するコマンド（リードコマンド）なのか、または、論理ＨＤＤ２２へのデータの書き込みを要求するコマンド（ライトコマンド）なのかを調べる。もし、リードコマンドであったならば、ＢＩＯＳ２１１は、（その読み出し対象データがＮＶＭ２３にキャッシングされていようがいまいが）要求されたデータを論理ＨＤＤ２２から読み出し、ホストシステム１に転送する。つまり、リードコマンドについては、ＢＩＯＳ２１１は従前通りのコマンド処理を実行する。
【００２７】
一方、ライトコマンドであった場合、ＢＩＯＳ２１１は、要求されたデータを論理ＨＤＤ２２に書き込むと共に、そのライトコマンドをＮＶＭ２３の管理データ領域ａ１にトレースデータａ２として記録する。もし、このデータの書き込みによって更新されるべきデータがＮＶＭ２３のＨＤＤキャッシュ領域ａ２に存在しても、その更新をＢＩＯＳ２１１自身が実行することはない。つまり、ＢＩＯＳ２１１には、ＮＶＭ２３内のキャッシュデータの一貫性を保証するためのモジュールとして、論理ＨＤＤ２２に対するライトコマンドをＮＶＭ２３にトレースするという簡単なコードを持たせれば良い。換言すれば、ＢＩＯＳ２１１は、リードコマンドおよびライトコマンドのいずれについても、キャッシュヒットの有無を判定したり、ヒット率を向上させるためのキャッシュデータの入れ替えを実行するための複雑なコードを一切持たない。
【００２８】
ＢＩＯＳ２１１は、ライトコマンド（トレースデータ）を書き込む度に、次のトレースデータの書き込み位置を示すトレースポインタをインクリメントする。トレースポインタは、トレースヘッダａ１１内に含まれている。そして、インクリメント後のトレースポインタの値が予め定められた値に達した後、さらにライトコマンドをトレースする必要が生じた場合、ＢＩＯＳ２１１は、当該ライトコマンドおよびそれ以降のライトコマンドのトレースを中止する。つまり、ＢＩＯＳ２１１は、予め定められた容量の範囲内で、当該ライトコマンドのトレースを実行する。トレースヘッダａ１１内には、有効フラグも含まれており、前述のオーバーフローが発生してライトコマンドのトレースを中止した場合、この有効フラグを無効に設定する。なお、ＢＩＯＳ２１１は、起動時、つまり、ホストシステム１からのコマンドの受け付前に、このＮＶＭ２３の管理データ領域ａ１内からトレースヘッダａ１１を読み出し、その時点で有効フラグが無効に設定されていた場合には、当初より、ライトコマンドのトレースを行わない。
【００２９】
また、ＢＩＯＳ２１１は、ホストシステム１からライトコマンドを受け付けて、ＮＶＭ２３に対するデータ書き込み（管理データ領域ａ１内のトレースデータａ１２の書き込みおよびトレースヘッダａ１１の更新（トレースポインタのインクリメントまたは有効フラグの更新））を行う毎に、ＮＶＭ２３に対してフラッシュ（ＦｌａｓｈではなくＦｌｕｓｈ）を要求する。これにより、もし、ＮＶＭ２３がライトバックキャッシュを備えていても、その時の書き込み内容を都度記録メディアに反映させることができる。
【００３０】
次に、（ＯＳが動作を開始してＢＩＯＳ２１１から論理ＨＤＤ２２に対するアクセス制御を引き継ぐ際の）ディスクドライバ２１２の起動時における論理ＨＤＤ２２に対するデータアクセスに関する基本的な動作原理を説明する。
【００３１】
ディスクドライバ２１２は、起動時、まず、ＮＶＭ２３の管理データ領域ａ１内からトレースヘッダａ１１を読み出す。そして、有効フラグが有効および無効のいずれに設定されているかを調べる。もし、有効フラグが無効であれば、ディスクドライバ２１２は、ＮＶＭ２３のＨＤＤキャッシュ領域ａ２上のキャッシュデータを無効化すべく、キャッシュディレクトリを初期化してしまう。これにより、当初は、ホストシステム１から発行された例えばリードコマンドはすべて論理ＨＤＤ２２からの読み出しによって処理されることになるが、キャッシュデータの一貫性保証は維持される。
【００３２】
一方、有効フラグが有効であれば、ディスクドライバ２１２は、（ＮＶＭ２３のＨＤＤキャッシュ領域ａ２に格納されている）キャッシュディレクトリをＶＭ２１３にロードした後、（ＮＶＭ２３の管理データ領域ａ１に記録されている）トレースデータａ１２をすべて辿って、該当するデータが存在するか否かを調べ、存在したら、キャッシュディレクトリ上の当該データを含むブロックを無効化する。これにより、ＢＩＯＳ２１１によって論理ＨＤＤ２２に書き込みが行われたデータに対応する更新前データがキャッシュされていたとしても、この更新前データがその後のリードコマンドによって読み出されることをなくし、キャッシュデータの一貫性保証は維持される。
【００３３】
また、ディスクドライバ２１２は、有効フラグが有効であった際、前述のキャッシュディレクトリ上の該当ブロックの無効化を完了した後、有効フラグを無効に設定した上で当該有効フラグを含むトレースヘッダａ１１をＮＶＭ２３に書き込み、かつ、ＮＶＭ２３に対してフラッシュ（ＦｌａｓｈではなくＦｌｕｓｈ）を要求する。フラッシュを要求する理由は、前述したＢＩＯＳ２１１の場合と同様、もし、ＮＶＭ２３がライトバックキャッシュを備えていても、その時の書き込み内容を確実に記録メディアに反映させるためである。これにより、ディスクドライバ２１２の起動後は、トレースヘッダａ１１の有効フラグは無効を示していることになる。
【００３４】
続いて、（本コンピュータシステムが正規の手順を踏んでシャットダウンやリブートする際の）ディスクドライバ２１２の終了時における論理ＨＤＤ２２に対するデータアクセスに関する基本的な動作原理を説明する。
【００３５】
ディスクドライバ２１２は、終了時、まず、ＶＭ２１３内のキャッシュディレクトリをＮＶＭ２３のＨＤＤキャッシュ領域ａ２に格納すべく、ＮＶＭ２３に対する書き込み処理を実行する。次に、ディスクドライバ２１２は、トレースヘッダａ１１の有効フラグを有効に設定すると共に、同トレースヘッダａ１１内のトレースポインタを初期値（０）にリセットした後、当該トレースヘッダａ１１をＮＶＭ２３の管理データ領域ａ１に格納すべく、ＮＶＭ２３に対する書き込み処理を実行する。そして、ディスクドライバ２１２は、これらＮＶＭ２３に対する書き込み処理を実行した後、前述と同様の目的で、ＮＶＭ２３に対してフラッシュ（ＦｌａｓｈではなくＦｌｕｓｈ）を要求する。
【００３６】
つまり、ディスクドライバ２１２が当該終了処理を実行した場合に限り、ＮＶＭ２３の管理データ領域ａ１内に記録されているトレースヘッダａ１１の有効フラグは有効を示すことになる。換言すると、この有効フラグが無効を示している場合、ディスクドライバ２１２による終了処理が行なわれずに本コンピュータシステムがシャットダウンしたか、オーバーフローによってＢＩＯＳ２１１がトレースデータａ１２を完全にトレースできなかったことを意味する。いずれの場合も、ＨＤＤキャッシュ領域ａ２にキャッシュされたデータの一貫性が失われているおそれを否定できないので、前述の通り、ディスクドライバ２１２は、起動時、この有効フラグが無効を示している場合には、ＮＶＭ２３のＨＤＤキャッシュ領域ａ２上のキャッシュデータを無効化すべく、キャッシュディレクトリを初期化する。
【００３７】
このように、本ディスクサブシステム２では、ＮＶＭ２３の管理データ領域ａ１に記録するトレースヘッダａ１１内の有効フラグを介在させ、ＢＩＯＳ２１１とディスクドライバ２１２とが協働することにより、ＢＩＯＳ２１１に少ないコードを持たせるのみで、複数の論理ＨＤＤ２２のキャッシュとしてＮＶＭ２３を利用することでレスポンス性能を大幅なコストアップを招くことなく向上させることに加えて、ＮＶＭ２３のＨＤＤキャッシュ領域ａ２上のキャッシュデータの一貫性を保証することを実現する。
【００３８】
ところで、ディスクトライバ２１２は、起動後、ホストシステム１から論理ＨＤＤ２２に対するライトコマンドおよびリードコマンドを受け付けた際、ＮＶＭ２３をキャッシュとして利用しつつ、当該コマンドを処理することになる訳であるが、ライトコマンドに対するキャッシュデータの取り扱いについては、次の２通りの対応が考えられる。
【００３９】
本実施形態においては、ＮＶＭ２３としてＳＳＤを適用するが、ＳＳＤは、データの更新を、更新前データを含むブロックの無効化を行うと共に、更新後データを含むブロックの書き込みを行うことで実施する。そのため、ＨＤＤキャッシュ領域ａ２が複数のチップで構成されており、更新前データを含むブロックの無効化と、更新後データを含むブロックの書き込みとを並行して実行可能な場合には、データの更新を高速に処理することができるため、ライトコマンドによって書き込みが要求されたデータに対応する更新前データがキャッシュされていた場合、当該更新前データを更新後データに書き換えるための処理を、論理ＨＤＤ２２に対する書き込み処理と共に実行すれば良い。
【００４０】
一方、ＨＤＤキャッシュ領域ａ２が１つのチップで構成されており、更新前データを含むブロックの無効化と、更新後データを含むブロックの書き込みとをシリアルにしか実行できない場合には、却ってレスポンス性能を低下させるおそれがあるので、ライトコマンドによって書き込みが要求されたデータに対応する更新前データがキャッシュされていた場合、当該（キャッシュされた）更新前データを無効化するための処理を、論理ＨＤＤ２２に対する書き込み処理と共に実行することが好ましい。
【００４１】
次に、図３乃至図５を参照して、本ディスクサブシステム２のＮＭＶ２３をキャッシュとして利用しつつ実行する論理ＨＤＤ２２に対するデータアクセスに関する動作の流れを説明する。
【００４２】
図３は、ＢＩＯＳ２１１の論理ＨＤＤ２２に対するデータアクセスに関する動作の流れを示すフローチャートである。
【００４３】
ＢＩＯＳ２１１は、まず、ＮＶＭ２３の管理データ領域ａ１に記録されたトレースヘッダａ１１を読み出す（ステップＡ１）。そして、ＢＩＯＳ２１１は、論理ＨＤＤ２２に対するデータアクセスを要求するコマンドをホストシステム１から受け付けると（ステップＡ２のＹＥＳ）、そのコマンドがライトコマンドか否かを調べる（ステップＡ３）。
【００４４】
もし、ライトコマンドでなければ（ステップＡ３のＮＯ）、ＢＩＯＳ２１１は、（ＮＶＭ２３を用いたキャッシングに拘らず）要求されたコマンド処理を実行する（ステップＡ１０）。
【００４５】
一方、ライトコマンドであった場合（ステップＡ３のＹＥＳ）、ＢＩＯＳ２１１は、トレースヘッダａ１１の有効フラグを調べ（ステップＡ４）、有効フラグが無効を示していたら（ステップＡ４のＮＯ）、当該ライトコマンドのトレース等を行うことなく、要求されたコマンド処理を実行する（ステップＡ１０）。
【００４６】
もし、有効フラグが有効を示していたならば（ステップＡ４のＹＥＳ）、ＢＩＯＳ２１１は、続いて、トレースヘッダａ１１内に保持されるトレースポインタの値を参照し、その値が予め定められた最大値に達していないかを調べる（ステップＡ５）。トレースポインタの値が予め定められた最大値に達した場合（ステップＡ５のＮＯ）、ＢＩＯＳ２１１は、トレースヘッダａ１１の有効フラグを無効に設定する（ステップＡ１１）。
【００４７】
一方、トレースポインタの値が予め定められた最大値に達していない場合には（ステップＡ５のＹＥＳ）、ＢＩＯＳ２１１は、当該トレースポインタで示されるＮＶＭ２３のＨＤＤキャッシュ領域ａ２上に当該ライトコマンドをトレースし（ステップＡ６）、トレースヘッダａ１１のトレースポインタをインクリメントする（ステップＡ７）。
【００４８】
ステップＡ７またはステップＡ１１においてトレースヘッダａ１１の内容を更新したＢＩＯＳ２１１は、当該更新後のトレースヘッダａ１１をＮＶＭ２３に書き出すと共に（ステップＡ８）、ＮＶＭ２３に対してフラッシュ（ＦｌａｓｈではなくＦｌｕｓｈ）を要求する（ステップＡ９）。そして、ＢＩＯＳ２１１は、ホストシステム１から要求されたコマンド処理を実行する（ステップＡ１０）。
【００４９】
図４は、ディスクドライバ２１２の起動時における論理ＨＤＤ２２に対するデータアクセスに関する動作の流れを示すフローチャートである。
【００５０】
ディスクドライバ２１２は、まず、ＮＶＭ２３の管理データ領域ａ１に記録されたトレースヘッダａ１１を読み出す（ステップＢ１）。そして、ディスクドライバ２１２は、トレースヘッダａ１１の有効フラグを調べ（ステップＢ２）、有効フラグが無効を示していたら（ステップＢ２のＮＯ）、ＮＶＭ２３のＨＤＤキャッシュ領域ａ２上のキャッシュデータを無効化すべく、キャッシュディレクトリを初期化する（ステップＢ５）。
【００５１】
一方、有効フラグが有効を示したいたならば（ステップＢ２のＹＥＳ）、ディスクドライバ２１２は、（ＮＶＭ２３のＨＤＤキャッシュ領域ａ２に格納されている）キャッシュディレクトリをＶＭ２１３にロードした後（ステップＢ３）、（ＮＶＭ２３の管理データ領域ａ１に記録されている）トレースデータａ１２をすべて辿って、該当するデータが存在するか否かを調べ、存在したら、キャッシュディレクトリ上の当該データを含むブロックを無効化する（ステップＢ４）。
【００５２】
その後、ディスクドライバ２１２は、有効フラグを無効に設定し（ステップＢ６）、当該無効に設定された有効フラグを含むトレースヘッダａ１１をＮＶＭ２３に書き出し（ステップＢ７）ＮＶＭ２３に対してフラッシュ（ＦｌａｓｈではなくＦｌｕｓｈ）を要求する（ステップＢ８）。
【００５３】
図５は、ディスクドライバ２１２の終了時における論理ＨＤＤ２２に対するデータアクセスに関する動作の流れを示すフローチャートである。
【００５４】
ディスクドライバ２１２は、まず、ＶＭ２１３内のキャッシュディレクトリをＮＶＭ２３のＨＤＤキャッシュ領域ａ２に格納すべく、ＮＶＭ２３に対する書き込み処理を実行する（ステップＣ１）。次に、ディスクドライバ２１２は、トレースヘッダａ１１の有効フラグを有効に設定すると共に（ステップＣ２）、同トレースヘッダａ１１内のトレースポインタを初期値（０）にリセットした後（ステップＣ３）、当該トレースヘッダａ１１をＮＶＭ２３の管理データ領域ａ１に格納すべく、ＮＶＭ２３に対する書き込み処理を実行する（ステップＣ４）。そして、ディスクドライバ２１２は、これらＮＶＭ２３に対する書き込み処理を実行した後、ＮＶＭ２３に対してフラッシュ（ＦｌａｓｈではなくＦｌｕｓｈ）を要求する（ステップＣ５）。
【００５５】
以上のように、本ディスクサブシステム２（データ記憶システム）は、ＢＩＯＳ２１１とディスクドライバ２１２とが協働することにより、例えば１台以上のＨＤＤを備えてなるディスクシステム等のレスポンス性能を大幅なコストアップを招くことなく向上させることに加えて、データの一貫性を保証することを実現する。
【００５６】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に構成要素を適宜組み合わせてもよい。
【符号の説明】
【００５７】
１…ホストシステム、２…ディスクサブシステム、２１…制御部、２２…論理ＨＤＤ（Hard Disk Drive）、２３…不揮発性メモリ（ＮＶＭ：Non-Volatile Memory）。
【図１】
2010257481.tif 000003
【図２】
2010257481.tif 000004
【図３】
2010257481.tif 000005
【図４】
2010257481.tif 000006
【図５】
2010257481.tif 000007