(57)【要約】【課題】データ書込失敗の検出精度を高める。【解決手段】ストレージ制御装置１は、記憶装置５を制御対象とする。記憶装置５は、第１の記憶領域６と、第１の記憶領域６と異なる第２の記憶領域７を含む。誤り検出情報格納部２は、書込対象データについて誤り検出情報として、データブロックごとにＥＣＣを生成する。誤り検出情報格納部２は、生成したＥＣＣ１からＥＣＣ４を第１の記憶領域６に格納する。データ格納部３は、ＤＢ１からＤＢ４を第２の記憶領域７に格納する。検出部４は、第１の記憶領域６から読み出した誤り検出情報と、第２の記憶領域７から読み出した書込対象データとからデータブロックごとの誤り検出をおこなう。【選択図】図１
2015191407.tif 000002
【特許請求の範囲】
【請求項１】
書込対象データについてアクセス単位となるデータブロックごとに誤り検出情報を生成し、記憶装置の第１の記憶領域に前記誤り検出情報を格納する誤り検出情報格納部と、
前記記憶装置の前記第１の記憶領域と異なる第２の記憶領域に前記書込対象データを格納するデータ格納部と、
前記第１の記憶領域から読み出した前記誤り検出情報と、前記第２の記憶領域から読み出した前記書込対象データとから前記データブロックごとの誤り検出をおこなう検出部と、
を備えることを特徴とするストレージ制御装置。
【請求項２】
前記記憶装置は、ディスクドライブ装置であって、
前記第１の記憶領域は、前記ディスクドライブ装置のメタ情報を格納するメタ情報記憶領域であって、
前記第２の記憶領域は、前記ディスクドライブ装置のユーザデータを格納するユーザデータ記憶領域である、
ことを特徴とする請求項１記載のストレージ制御装置。
【請求項３】
前記書込対象データは、キャッシュメモリに記憶されていることを特徴とする請求項２記載のストレージ制御装置。
【請求項４】
前記キャッシュメモリは、前記誤り検出情報を格納するキャッシュメモリ誤り検出情報格納部と、前記キャッシュメモリの前記誤り検出情報を格納する記憶領域と異なる書込対象データ記憶領域に前記書込対象データを格納するキャッシュメモリデータ格納部と、
を備えることを特徴とする請求項３記載のストレージ制御装置。
【請求項５】
前記記憶装置は、ディスクドライブ装置であって、
前記誤り検出情報の格納先である誤り検出情報格納先情報と、前記書込対象データの格納先である書込対象データ格納先情報とを、前記第１の記憶領域および前記第２の記憶領域と異なる第３の記憶領域に格納する格納先情報格納部を備え、
前記誤り検出情報格納部は、前記誤り検出情報格納先情報にもとづいて前記第１の記憶領域に前記誤り検出情報を格納し、
前記データ格納部は、前記書込対象データ格納先情報にもとづいて前記第２の記憶領域に前記書込対象データを格納する、
ことを特徴とする請求項１記載のストレージ制御装置。
【請求項６】
記憶装置の制御プログラムであって、
コンピュータに、
書込対象データについてアクセス単位となるデータブロックごとに誤り検出情報を生成し、前記記憶装置の第１の記憶領域に前記誤り検出情報を格納し、
前記記憶装置の前記第１の記憶領域と異なる第２の記憶領域に前記書込対象データを格納し、
前記第１の記憶領域から読み出した前記誤り検出情報と、前記第２の記憶領域から読み出した前記書込対象データとから前記データブロックごとの誤り検出をおこなう、
処理を実行させることを特徴とする制御プログラム。
【請求項７】
記憶装置の制御方法であって、
コンピュータが、
書込対象データについてアクセス単位となるデータブロックごとに誤り検出情報を生成し、前記記憶装置の第１の記憶領域に前記誤り検出情報を格納し、
前記記憶装置の前記第１の記憶領域と異なる第２の記憶領域に前記書込対象データを格納し、
前記第１の記憶領域から読み出した前記誤り検出情報と、前記第２の記憶領域から読み出した前記書込対象データとから前記データブロックごとの誤り検出をおこなう、
処理を実行することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置、制御プログラム、および制御方法に関する。
【背景技術】
【０００２】
情報処理システムに使用されるストレージ装置として、データアクセスの高速性やデータの障害耐性を高める構成を有するディスクアレイ装置（ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）装置ともいう）が多く用いられている。このディスクアレイ装置は、種類の異なる汎用的なオペレーティングシステムによって稼動するオープン系システムで多く利用されるため、固定長レコードのデータフォーマットを有している。
【０００３】
データをストレージ装置に記憶する際には、記憶したデータにエラーが生じていないかを判定するためのエラーチェックコードがデータに付される。たとえば、固定長データフォーマットでは、論理ブロックごとにエラーチェックコードが付される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−１０７３１１号公報
【特許文献２】特開２００７−１１５３９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ストレージ制御装置は、ホストからライト要求を受け付けたデータをメモリ上に一旦保持してからストレージ装置に記憶させる。このとき、異常が生じてストレージ装置に正常なデータを書き込むことができなくなることがある。
【０００６】
たとえば、データ異常の態様によっては、ストレージ装置に論理ブロック単位でデータが書き込まれず、書き込み前のデータが更新されずに保持される場合がある。このとき、ストレージ装置は、更新前のデータと、更新前のデータに対応するエラーチェックコードを保持している状態である。ストレージ制御装置は、この状態でステージングをおこなうと、キャッシュメモリに読み出したエラーチェックコードと、キャッシュメモリに読み出したデータから算出したエラーチェックコードとが一致するため正常なデータであると判断する。ストレージ制御装置は、ストレージ装置のデータ書込の失敗を検出することができないことから、更新前のデータをホストに応答して、ホストでデータ化けを生じ得る。
【０００７】
１つの側面では、本発明は、データ書込失敗の検出精度を高めたストレージ制御装置、制御プログラム、および制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、以下に示すような、ストレージ制御装置が提供される。ストレージ制御装置は、誤り検出情報格納部と、データ格納部と、検出部とを備える。誤り検出情報格納部は、書込対象データについてアクセス単位となるデータブロックごとに誤り検出情報を生成し、記憶装置の第１の記憶領域に誤り検出情報を格納する。データ格納部は、記憶装置の第１の記憶領域と異なる第２の記憶領域に書込対象データを格納する。検出部は、第１の記憶領域から読み出した誤り検出情報と、第２の記憶領域から読み出した書込対象データとからデータブロックごとの誤り検出をおこなう。
【発明の効果】
【０００９】
１態様によれば、ストレージ制御装置、制御プログラム、および制御方法において、データ書込失敗の検出精度を高める。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態のストレージ制御装置の構成の一例を示す図である。
【図２】第２の実施形態のストレージサーバの構成の一例を示す図である。
【図３】第２の実施形態のキャッシュメモリの構成の一例を示す図である。
【図４】第２の実施形態のディスクモジュールの構成の一例を示す図である。
【図５】第２の実施形態のデータブロックの一例を示す図である。
【図６】第２の実施形態のＣＡのハードウェア構成の一例である。
【図７】第２の実施形態のライト要求受付処理のフローチャートを示す図である。
【図８】第２の実施形態のライトバック処理のフローチャートを示す図である。
【図９】第２の実施形態のブロックライト失敗の一例を示す図である。
【図１０】ブロックライト失敗の比較例を示す図である（その１）。
【図１１】第２の実施形態のリード要求受付処理のフローチャートを示す図である。
【図１２】ブロックライト失敗の比較例を示す図である（その２）。
【図１３】第３の実施形態のストレージ制御装置の構成の一例を示す図である。
【図１４】第３の実施形態のライト要求受付処理のフローチャートを示す図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して実施の形態を詳細に説明する。
［第１の実施形態］
まず、第１の実施形態のストレージ制御装置について図１を用いて説明する。図１は、第１の実施形態のストレージ制御装置の構成の一例を示す図である。
【００１２】
ストレージ制御装置１は、記憶装置５へのデータの書込と、記憶装置５からのデータの読出しを制御する。ストレージ制御装置１は、図示しない外部装置からデータの書込指示を受け付けて記憶装置５にデータを書き込み、また、外部装置からデータの読出指示を受け付けて記憶装置５からデータを読み出して外部装置に応答する。
【００１３】
ストレージ制御装置１は、誤り検出情報格納部２と、データ格納部３と、検出部４とを含む。記憶装置５は、ストレージ制御装置１が制御対象とするストレージ装置であり、第１の記憶領域６と第２の記憶領域７を含む。第１の記憶領域６と第２の記憶領域７は、異なる記憶領域である。なお、記憶装置５は、ストレージ制御装置１にとって外部記憶装置であってもよいし、内部記憶装置であってもよい。また、記憶装置５は、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）などのディスクドライブであってもよいし、データを一時的に格納するキャッシュメモリなどであってもよい。
【００１４】
誤り検出情報格納部２は、書込対象データについて誤り検出情報として、データブロックごとにＥＣＣ（Error Check Code）を生成する。データブロックは、記憶装置５のアクセス単位である。たとえば、記憶装置５がＨＤＤであるときに、アクセス単位は、ＬＢＡ（Logical Block Address：論理ブロックアドレス）である。誤り検出情報格納部２は、書込対象データをデータブロックに分割する。なお、図１は、ＤＢ１，ＤＢ２，ＤＢ３，ＤＢ４の４つのデータブロックを示すが、データブロックの数は書込対象データの大きさにしたがうものであり、図示した４つに限らない。
【００１５】
誤り検出情報格納部２は、ＤＢ１からＥＣＣ１を生成し、データブロックＤＢ２からＥＣＣ２を生成し、データブロックＤＢ３からＥＣＣ３を生成し、データブロックＤＢ４からＥＣＣ４を生成する。誤り検出情報格納部２は、生成したＥＣＣ１からＥＣＣ４を第１の記憶領域６に格納する。
【００１６】
データ格納部３は、ＤＢ１からＤＢ４を第２の記憶領域７に格納する。検出部４は、第１の記憶領域６から読み出した誤り検出情報と、第２の記憶領域７から読み出した書込対象データとからデータブロックごとの誤り検出をおこなう。たとえば、検出部４は、第１の記憶領域６からＥＣＣ１を読み出し、第２の記憶領域７からＤＢ１を読み出す。検出部４は、第２の記憶領域７から読み出したＤＢ１からＥＣＣ１を生成し、第１の記憶領域６から読み出したＥＣＣ１と比較することで、ＤＢ１の誤り検出をおこなうことができる。
【００１７】
これにより、ストレージ制御装置１は、第１の記憶領域６が記憶する誤り検出情報と、第２の記憶領域７が記憶する書込対象データのうち少なくともいずれか一方のデータが、対応する記憶領域に正しく書き込まれていないこと（データ書込失敗）を検出できる。したがって、ストレージ制御装置１は、データ書込失敗の検出精度を向上することができる。
【００１８】
［第２の実施形態］
次に、第２の実施形態のストレージサーバについて図２を用いて説明する。図２は、第２の実施形態のストレージサーバの構成の一例を示す図である。
【００１９】
ストレージサーバ１０は、複数のＨＤＤ２５，２６を備え、ホスト（ホストコンピュータ）１１，１２に高速、大容量、高信頼性のディスクシステムを提供する。ストレージサーバ１０は、ホスト１１，１２からライト要求を受け付けてＨＤＤ２５，２６にデータを書き込み、また、ホスト１１，１２からリード要求を受け付けてＨＤＤ２５，２６からデータを読み出して応答する。ＨＤＤ２５，２６は、ストレージ装置の一形態であり、ストレージサーバ１０は、ストレージ装置を制御するストレージ制御装置の一形態である。
【００２０】
ストレージサーバ１０は、ＣＡ（Channel Adapter）１３，１４、スイッチ１５，１６，２３，２４、ＣＭ（Controller Module）１７，１８、キャッシュメモリ１９，２０、ＤＡ（Device Adapter）２１，２２、ＨＤＤ２５，２６を含む。
【００２１】
ＣＡ１３，１４は、ストレージサーバ１０のＩ／Ｆ（Interface）制御モジュールである。ＣＡ１３，１４は、ＦＣ（Fibre Channel）、ｉＳＣＳＩ（Internet Small Computer System Interface）、ＦＣＬＩＮＫ、ＯＣＬＩＮＫなどの各種インタフェースを制御し、データを内部バスへ転送する、プロトコルチップとして機能する。ＣＡ１３は、２以上あり、ホスト１１とスイッチ１５を冗長構成で接続する。ＣＡ１４は、２以上あり、ホスト１２とスイッチ１６を冗長構成で接続する。
【００２２】
ＣＡ１３，１４は、ホスト１１，１２からのコマンドと、キャッシュメモリ１９，２０へのアクセス処理を担う。ＣＡ１３は、スイッチ１５を介してＣＭ１７を接続する。ＣＡ１４は、スイッチ１６を介してＣＭ１８を接続する。ＣＡ１３，１４は、ホスト１１，１２から転送されるユーザデータにディスクフォーマットに応じたデータ保護のためＢＣＣ（Block Check Code）を付加する。ＢＣＣは、データブロック単位のＥＣＣである。また、ＣＡ１３，１４は、ＨＤＤ２５，２６から読み出されたデータをチェックし、ＢＣＣを外してホスト１１，１２に転送する。
【００２３】
ＣＭ１７，１８は、データの排他制御、キャッシュメモリの管理、ＨＤＤのリード／ライト制御など、ストレージサーバ１０を統括的に制御する制御モジュールである。ＣＭ１７は、キャッシュメモリ１９を内蔵し、キャッシュメモリ１９を管理する。ＣＭ１８は、キャッシュメモリ２０を内蔵し、キャッシュメモリ２０を管理する。ストレージサーバ１０は、ＣＭ１７とＣＭ１８とを備える冗長構成を有し、一方に障害が発生した場合に他方が処理を引き継ぐことができる。また、ユーザデータは、ＣＭ１７とＣＭ１８の２系統でミラーリングされ、ミラーリングされたユーザデータは、ＣＭ１７とＣＭ１８で共有される。
【００２４】
ＤＡ２１，２２は、ＣＭ１７，１８と、複数のＨＤＤ２５，２６をスイッチ２３，２４を介して接続し、ＨＤＤ２５，２６を制御する。ＨＤＤ２５，２６は、ドライブモジュールの一形態であって、たとえば、ＳＳＤなどに置き換えることができる。ＨＤＤ２５，２６は、たとえば、ＤＡ２１，２２、およびスイッチ２３，２４とともにディスクアレイモジュールを構成する。
【００２５】
次に、第２の実施形態のキャッシュメモリについて図３を用いて説明する。図３は、第２の実施形態のキャッシュメモリの構成の一例を示す図である。キャッシュメモリ１９とキャッシュメモリ２０は、同様の構成であるため、キャッシュメモリ１９について説明する。
【００２６】
キャッシュメモリ１９は、ＢＣＣ領域１９１とユーザデータ領域１９２を含む。ユーザデータ領域１９２は、ユーザデータを記憶する記憶領域である。ＢＣＣ領域１９１は、メタデータを記憶する記憶領域の１つであり、ユーザデータ領域１９２と異なる記憶領域である。
【００２７】
ユーザデータ領域１９２は、データブロックごとにユーザデータを記憶する。ここでいうデータブロックは、ＨＤＤ２５，２６のアクセス単位であり、たとえば、ＬＢＡ（Logical Block Address）である。ユーザデータ領域１９２は、たとえば、データブロックごとにデータ１、データ２、…、データ８を記憶する。
【００２８】
ＢＣＣ領域１９１は、各データブロックのＢＣＣを記憶する。ＢＣＣは、誤り検出情報の１つであり、たとえば、６バイトのＢＩＤ（Block ID）と、２バイトのＣＲＣ（Cyclic Redundancy Check）とから構成される。ＢＩＤは、データブロックを一意に識別する識別子である。ＢＣＣ領域１９１は、たとえば、データ１に対応するＢＣＣ１、データ２に対応するＢＣＣ２、…、データ８に対応するＢＣＣ８を記憶する。
【００２９】
このように、キャッシュメモリ１９において、ユーザデータと、ユーザデータのＢＣＣとは、それぞれアクセス単位の異なる記憶領域に記憶される。そのため、ユーザデータと、ユーザデータのＢＣＣとが同一の記憶領域に記憶されることによる、ユーザデータと、ユーザデータのＢＣＣとが同時にデータ書込失敗となる危険を低減する。
【００３０】
次に、第２の実施形態のディスクモジュールについて図４を用いて説明する。図４は、第２の実施形態のディスクモジュールの構成の一例を示す図である。ＨＤＤ２５とＨＤＤ２６は、ディスクモジュールの一形態であり、より詳しくは、ディスクドライブ装置の一形態である。ＨＤＤ２５とＨＤＤ２６は、同様の構成であるため、ＨＤＤ２５について説明する。
【００３１】
ＨＤＤ２５は、メタ領域２５１とユーザデータ領域２５２を含む。ユーザデータ領域２５２は、ユーザデータを記憶する記憶領域である。メタ領域２５１は、メタデータを記憶する記憶領域の１つであり、ユーザデータ領域２５２と異なる記憶領域である。メタデータは、各データブロックのＢＣＣを含む。また、メタデータは、領域管理に関する領域管理情報を含み、領域管理情報は、たとえば、ｉノード、Ｖデータ、ファイルデータなどの割付情報がある。
【００３２】
ユーザデータ領域２５２は、データブロックごとにユーザデータを記憶する。ここでいうデータブロックは、ＨＤＤ２５，２６のアクセス単位であり、たとえば、ＬＢＡに対応する物理アドレスである。ユーザデータ領域２５２は、たとえば、データブロックごとにデータ１、データ２、…、データ８を記憶する。
【００３３】
メタ領域２５１は、各データブロックのＢＣＣを記憶する。メタ領域２５１は、たとえば、データ１に対応するＢＣＣ１、データ２に対応するＢＣＣ２、…、データ８に対応するＢＣＣ８を記憶する。
【００３４】
このように、ＨＤＤ２５において、ユーザデータと、ユーザデータのＢＣＣとは、それぞれアクセス単位の異なる記憶領域に記憶される。そのため、ユーザデータと、ユーザデータのＢＣＣとが同一の記憶領域に記憶されることによる、ユーザデータと、ユーザデータのＢＣＣとが同時にデータ書込失敗となる危険を低減する。
【００３５】
次に、第２の実施形態のデータブロックについて図５を用いて説明する。図５は、第２の実施形態のデータブロックの一例を示す図である。
データブロックは、５１２ｂｙｔｅのサイズであり、この５１２ｂｙｔｅごとに８ｂｙｔｅのＢＣＣが生成される。データブロックは、一意に特定可能なＬＢＡが付される。たとえば、ユーザデータ領域２５２は、ＬＢＡ＃１、ＬＢＡ＃２、ＬＢＡ＃３、ＬＢＡ＃４、…を含み、ユーザデータを記憶する。また、メタ領域２５１は、ＬＢＡ＃ｍを含み、ＢＣＣを記憶する。なお、ＨＤＤ２５，２６は、２５６ｂｙｔｅ、６４ｂｙｔｅなど、アクセス単位（５１２ｂｙｔｅ）より小さな単位で、データブロック内のデータを区分可能にする。
【００３６】
次に、第２の実施形態のＣＡ１３のハードウェア構成について図６を用いて説明する。図６は、第２の実施形態のＣＡのハードウェア構成の一例である。ＣＡ１３とＣＡ１４は、同様の構成であるため、ＣＡ１３について説明する。
【００３７】
ＣＡ１３は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してＲＡＭ（Random Access Memory）１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、たとえばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。またプロセッサ１０１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００３８】
ＲＡＭ１０２は、ＣＡ１３の主記憶装置として使用される。ＲＡＭ１０２には、プロセッサ１０１に実行させるＯＳのプログラムやファームウェア、アプリケーションプログラム（制御プログラムなど）の少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。また、ＲＡＭ１０２は、各種データの格納に用いるメモリと別体にキャッシュメモリを含むものであってもよい。
【００３９】
バス１０９に接続されている周辺機器としては、不揮発性メモリ１０３、入出力インタフェース１０４、機器接続インタフェース１０５、通信インタフェース１０６、およびＤＭＡ（Direct Memory Access）１０７がある。
【００４０】
不揮発性メモリ１０３は、ＣＡ１３の電源遮断時においても記憶内容を保持する。不揮発性メモリ１０３は、たとえば、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）やＳＳＤなどである。また、不揮発性メモリ１０３は、ＣＡ１３の補助記憶装置として使用される。不揮発性メモリ１０３には、オペレーティングシステムのプログラムやファームウェア、アプリケーションプログラム、および各種データが格納される。
【００４１】
入出力インタフェース１０４は、入出力装置１１０と接続して入出力をおこなう。機器接続インタフェース１０５は、光学ドライブ装置１１１やメモリ装置１１２と接続する。通信インタフェース１０６は、ホスト１１と接続する。ＤＭＡ１０７は、キャッシュメモリ１９との間でデータ転送をおこなう。
【００４２】
ＣＡ１３は、たとえばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施形態の処理機能を実現する。ＣＡ１３に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。たとえば、ＣＡ１３に実行させるプログラムを不揮発性メモリ１０３に格納しておくことができる。プロセッサ１０１は、不揮発性メモリ１０３内のプログラムの少なくとも一部をＲＡＭ１０２にロードし、プログラムを実行する。またＣＡ１３に実行させるプログラムを、図示しない光ディスク、光磁気記録媒体、メモリカードなどの可搬型記録媒体に記録しておくこともできる。
【００４３】
光学ドライブ装置１１１は、レーザ光などを利用して、光ディスクに記録されたデータの読み取りをおこなう。光ディスクは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【００４４】
メモリ装置１１２は、機器接続インタフェース１０５との通信機能を搭載した記録媒体である。また、メモリ装置１１２は、メモリカードへのデータの書き込み、またはメモリカードからのデータの読出しをおこなうメモリリーダライタに代えてもよい。メモリカードは、カード型の記録媒体である。
【００４５】
可搬型記録媒体に格納されたプログラムは、たとえばプロセッサ１０１からの制御により、不揮発性メモリ１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００４６】
以上のようなハードウェア構成によって、第２の実施形態のＣＡ１３の処理機能を実現することができる。なお、ＣＡ１４、ＣＭ１７，１８、第１の実施形態に示したストレージ制御装置１も、図示したＣＡ１３と同様のハードウェアにより実現することができる。
【００４７】
次に、第２の実施形態のライト要求受付処理について図７を用いて説明する。図７は、第２の実施形態のライト要求受付処理のフローチャートを示す図である。ライト要求受付処理は、ＣＡ１３，１４がホスト１１からライト要求を受け付けて実行する処理である。以下、ＣＡ１３がライト要求受付処理を実行する場合について説明するが、ＣＡ１４についても同様である。
【００４８】
［ステップＳ１１］ＣＡ１３は、ホスト１１から書込対象データを受信する。
［ステップＳ１２］ＣＡ１３は、書込対象データについてデータブロックごとのＢＣＣを生成する。
【００４９】
［ステップＳ１３］ＣＡ１３は、キャッシュメモリ１９のユーザデータ領域１９２に書込対象データを書き込む。
［ステップＳ１４］ＣＡ１３は、キャッシュメモリ１９のＢＣＣ領域１９１に、生成したＢＣＣを書き込む。
【００５０】
［ステップＳ１５］ＣＡ１３は、ホスト１１に確認応答を送信し、ライト要求受付処理を終了する。
次に、第２の実施形態のライトバック処理について図８を用いて説明する。図８は、第２の実施形態のライトバック処理のフローチャートを示す図である。ライトバック処理は、ＣＡ１３，１４がライト要求受付処理を終了した後に、ＣＭ１７，１８が実行する処理である。以下、ＣＭ１７がライトバック処理を実行する場合について説明するが、ＣＭ１８についても同様である。
【００５１】
［ステップＳ２１］ＣＭ１７は、キャッシュメモリ１９のユーザデータ領域１９２から書込対象データを読み出す。
［ステップＳ２２］ＣＭ１７は、キャッシュメモリ１９のＢＣＣ領域１９１からＢＣＣを読み出す。
【００５２】
［ステップＳ２３］ＣＭ１７は、ＨＤＤ２５のユーザデータ領域２５２に書込対象データを書き込む。
［ステップＳ２４］ＣＭ１７は、ＨＤＤ２５のメタ領域２５１にＢＣＣを書き込む。
【００５３】
［ステップＳ２５］ＣＭ１７は、ＨＤＤ２５のユーザデータ領域２５２からデータブロックごとに書込対象データを読み出してＢＣＣを生成し、ＨＤＤ２５のメタ領域２５１から読み出したＢＣＣと比較する。ＣＭ１７は、生成したＢＣＣと、読み出したＢＣＣとが一致するか否かを判定する。ＣＭ１７は、生成したＢＣＣと、読み出したＢＣＣとが一致しない場合にステップＳ２１にすすみ、リトライ動作をおこなう。一方、ＣＭ１７は、生成したＢＣＣと、読み出したＢＣＣとが一致する場合にライトバック処理を終了する。
【００５４】
このようなストレージサーバ１０は、ステップＳ２３におけるＨＤＤ２５へのデータの書き込みに失敗した場合があっても、書込対象データとＢＣＣとは異なる領域に記憶されていることから、書込対象データの書込の失敗（ブロックライト失敗）を看過することがない。
【００５５】
ここで、第２の実施形態のブロックライト失敗について図９を用いて説明する。図９は、第２の実施形態のブロックライト失敗の一例を示す図である。
ストレージサーバ１０（ＣＡ１３）は、ホスト１１から、ＤＡＴＡ１、ＤＡＴＡ２、ＤＡＴＡ３、およびＤＡＴＡ４を書込対象データとするライト要求を受け付ける。
【００５６】
ストレージサーバ１０（ＣＡ１３）は、ＤＡＴＡ１、ＤＡＴＡ２、ＤＡＴＡ３、およびＤＡＴＡ４をデータブロックサイズに整える。たとえば、ストレージサーバ１０（ＣＡ１３）は、データブロックサイズに満たないＤＡＴＡ４についてパディングをおこなう。ストレージサーバ１０（ＣＡ１３）は、ＤＡＴＡ１からＢＣＣ１を生成し、ＤＡＴＡ２からＢＣＣ２を生成し、ＤＡＴＡ３からＢＣＣ３を生成し、パディングされたＤＡＴＡ４からＢＣＣ４を生成する。ストレージサーバ１０（ＣＡ１３）は、ＤＡＴＡ１、ＤＡＴＡ２、ＤＡＴＡ３、およびＤＡＴＡ４をキャッシュメモリ１９のユーザデータ領域１９２に書き込む。ストレージサーバ１０（ＣＡ１３）は、ＢＣＣ１、ＢＣＣ２、ＢＣＣ３、およびＢＣＣ４をキャッシュメモリ１９のＢＣＣ領域１９１に書き込む。
【００５７】
ストレージサーバ１０（ＣＭ１７）は、キャッシュメモリ１９のユーザデータ領域１９２からＤＡＴＡ１、ＤＡＴＡ２、ＤＡＴＡ３、およびＤＡＴＡ４を読み出す。ストレージサーバ１０（ＣＭ１７）は、キャッシュメモリ１９のＢＣＣ領域１９１からＢＣＣ１、ＢＣＣ２、ＢＣＣ３、およびＢＣＣ４を読み出す。
【００５８】
このとき、ＨＤＤ２５のユーザデータ領域２５２は、ＬＢＡ＃１にＤＡＴＡ０１を記憶し、ＬＢＡ＃２にＤＡＴＡ０２を記憶し、ＬＢＡ＃３にＤＡＴＡ０３を記憶し、ＬＢＡ＃４にＤＡＴＡ０４を記憶する。また、ＨＤＤ２５のメタ領域２５１は、ＤＡＴＡ０１に対応するＢＣＣ０１、ＤＡＴＡ０２に対応するＢＣＣ０２、ＤＡＴＡ０３に対応するＢＣＣ０３、およびＤＡＴＡ０４に対応するＢＣＣ０４を記憶する。
【００５９】
ストレージサーバ１０（ＣＭ１７）は、元のデータを上書きしてＨＤＤ２５のユーザデータ領域２５２を更新する。ここで、ストレージサーバ１０（ＣＭ１７）は、ＬＢＡ＃２でＤＡＴＡ２の書き込みに失敗（ブロックライト失敗）したとする。これにより、ＬＢＡ＃１は、ＤＡＴＡ１を記憶し、ＬＢＡ＃２は、ＤＡＴＡ０２を記憶し、ＬＢＡ＃３は、ＤＡＴＡ３を記憶し、ＬＢＡ＃４は、ＤＡＴＡ４を記憶する。すなわち、ＬＢＡ＃２は、ブロックライト失敗によりＤＡＴＡ０２を記憶したままである。
【００６０】
また、ストレージサーバ１０（ＣＭ１７）は、元のデータを上書きしてＨＤＤのメタ領域２５１を更新する。これにより、ＨＤＤ２５のメタ領域２５１は、ＢＣＣ１、ＢＣＣ２、ＢＣＣ３、およびＢＣＣ４を記憶する。これにより、ＬＢＡ＃２のＢＣＣは、ＨＤＤ２５のメタ領域２５１にＢＣＣ２が記憶され、ＬＢＡ＃２が記憶するＤＡＴＡ０２から生成するＢＣＣ０２と一致しない。
【００６１】
したがって、ストレージサーバ１０（ＣＭ１７）は、ＨＤＤ２５のユーザデータ領域２５２におけるブロックライト失敗を検出できる。したがって、ストレージサーバ１０は、データ書込失敗の検出精度を向上することができる。
【００６２】
ここで、ブロックライト失敗の比較例について図１０を用いて説明する。図１０は、ブロックライト失敗の比較例を示す図である（その１）。
ストレージサーバは、ホストから、ＤＡＴＡ１、ＤＡＴＡ２、ＤＡＴＡ３、およびＤＡＴＡ４を書込対象データとするライト要求を受け付ける。
【００６３】
ストレージサーバは、ＤＡＴＡ１、ＤＡＴＡ２、ＤＡＴＡ３、およびＤＡＴＡ４をデータブロックサイズに整える。ストレージサーバは、ＤＡＴＡ１からＢＣＣ１を生成し、ＤＡＴＡ２からＢＣＣ２を生成し、ＤＡＴＡ３からＢＣＣ３を生成し、パディングされたＤＡＴＡ４からＢＣＣ４を生成する。ストレージサーバは、ＤＡＴＡ１とＢＣＣ１、ＤＡＴＡ２とＢＣＣ２、ＤＡＴＡ３とＢＣＣ３、およびパディングされたＤＡＴＡ４とＢＣＣ４をキャッシュメモリに書き込む。
【００６４】
ストレージサーバは、キャッシュメモリからＤＡＴＡ１とＢＣＣ１、ＤＡＴＡ２とＢＣＣ２、ＤＡＴＡ３とＢＣＣ３、およびパディングされたＤＡＴＡ４とＢＣＣ４を読み出す。
【００６５】
このとき、ＨＤＤは、ＬＢＡ＃１にＤＡＴＡ０１とＢＣＣ０１を記憶し、ＬＢＡ＃２にＤＡＴＡ０２とＢＣＣ０２を記憶し、ＬＢＡ＃３にＤＡＴＡ０３とＢＣＣ０３を記憶し、ＬＢＡ＃４にパディングされたＤＡＴＡ０４とＢＣＣ０４を記憶する。
【００６６】
ストレージサーバは、元のデータを上書きしてＨＤＤを更新する。ここで、ストレージサーバは、ＬＢＡ＃２でＤＡＴＡ２とＢＣＣ２の書き込みに失敗（ブロックライト失敗）したとする。これにより、ＬＢＡ＃１は、ＤＡＴＡ１とＢＣＣ１を記憶し、ＬＢＡ＃２は、ＤＡＴＡ０２とＢＣＣ０２を記憶し、ＬＢＡ＃３は、ＤＡＴＡ３とＢＣＣ３を記憶し、ＬＢＡ＃４は、パディングされたＤＡＴＡ４とＢＣＣ４を記憶する。すなわち、ＬＢＡ＃２は、ブロックライト失敗によりＤＡＴＡ０２とＢＣＣ０２を記憶したままである。
【００６７】
このような、ＬＢＡ＃２のＢＣＣは、ＬＢＡ＃２が記憶するＤＡＴＡ０２から生成するＢＣＣ０２と、ＬＢＡ＃２が記憶するＢＣＣ０２とが一致する。
すなわち、ストレージサーバは、ＨＤＤのブロックライト失敗を検出できない。このような、ストレージサーバは、データ書込失敗の検出精度が不十分である。一方、第２の実施形態のストレージサーバ１０は、図９を用いて説明したように、ＨＤＤ２５のユーザデータ領域２５２におけるブロックライト失敗を検出できることから、データ書込失敗の検出精度が比較例と比較して高い。
【００６８】
次に、第２の実施形態のリード要求受付処理について図１１を用いて説明する。図１１は、第２の実施形態のリード要求受付処理のフローチャートを示す図である。リード要求受付処理は、ＣＡ１３，１４がホスト１１からリード要求を受け付けて実行する処理である。以下、ＣＡ１３がリード要求受付処理を実行する場合について説明するが、ＣＡ１４についても同様である。
【００６９】
［ステップＳ３１］ＣＭ１７は、ＨＤＤ２５のユーザデータ領域２５２から読出対象データを読み出して、キャッシュメモリ１９のユーザデータ領域１９２に書き込む（ステージング）。また、ＣＭ１７は、ＨＤＤ２５のメタ領域２５１から読出対象データのＢＣＣを読み出して、キャッシュメモリ１９のＢＣＣ領域１９１に書き込む。
【００７０】
［ステップＳ３２］ＣＡ１３は、キャッシュメモリ１９のユーザデータ領域１９２から読出対象データを読み出して、データブロックごとのＢＣＣを生成する。
［ステップＳ３３］ＣＡ１３は、キャッシュメモリ１９のＢＣＣ領域１９１からＢＣＣを読み出す。
【００７１】
［ステップＳ３４］ＣＡ１３は、ステップＳ３２で生成したＢＣＣと、ステップＳ３３で読み出したＢＣＣとが一致するか否かを判定する。ＣＡ１３は、生成したＢＣＣと読み出したＢＣＣとが一致する場合にステップＳ３５にすすみ、一致しない場合にステップＳ３６にすすむ。
【００７２】
［ステップＳ３５］ＣＡ１３は、ホストにリード応答を送信して、リード要求受付処理を終了する。
［ステップＳ３６］ＣＡ１３は、ホストにエラー応答を送信して、リード要求受付処理を終了する。
【００７３】
このように、ストレージサーバ１０は、ＨＤＤ２５のユーザデータ領域２５２におけるブロックライト失敗を検出できる。したがって、ストレージサーバ１０は、データ書込失敗の検出精度を向上することができる。
【００７４】
再び、ブロックライト失敗の比較例について図１２を用いて説明する。図１２は、ブロックライト失敗の比較例を示す図である（その２）。
ストレージサーバ１０は、ホストから、ＤＡＴＡ１、ＤＡＴＡ２、ＤＡＴＡ３、およびＤＡＴＡ４を読出対象データとするリード要求を受け付ける。このとき、ＨＤＤは、ＬＢＡ＃２のブロックライト失敗により、ＬＢＡ＃１にＤＡＴＡ１とＢＣＣ１を記憶し、ＬＢＡ＃２にＤＡＴＡ０２とＢＣＣ０２を記憶し、ＬＢＡ＃３にＤＡＴＡ３とＢＣＣ３を記憶し、ＬＢＡ＃４にＤＡＴＡ４とＢＣＣ４を記憶する。
【００７５】
ストレージサーバは、ＨＤＤからＤＡＴＡ１とＢＣＣ１、ＤＡＴＡ０２とＢＣＣ０２、ＤＡＴＡ３とＢＣＣ３、およびパディングされたＤＡＴＡ４とＢＣＣ４をキャッシュメモリに読み出す。
【００７６】
このような、ストレージサーバは、キャッシュメモリが記憶するＤＡＴＡ０２から生成するＢＣＣ０２と、キャッシュメモリが記憶するＢＣＣ０２とが一致する。すなわち、ストレージサーバは、ＨＤＤのブロックライト失敗を検出できない。
【００７７】
そのため、ストレージサーバは、キャッシュメモリから読み出したＤＡＴＡ１、ＤＡＴＡ０２、ＤＡＴＡ３、およびＤＡＴＡ４をホストに応答する。ホストは、ＤＡＴＡ２がＤＡＴＡ０２に置き換わっていることにより、データ化けを検出することとなる。
【００７８】
一方、第２の実施形態のストレージサーバ１０は、図１１を用いて説明したように、ＨＤＤ２５のユーザデータ領域２５２におけるブロックライト失敗を、リード要求応答時においても検出できることから、データ書込失敗の検出精度が比較例と比較して高い。また、ストレージサーバ１０は、データ化けに対応するホストの処理負荷を軽減することができる。
【００７９】
［第３の実施形態］
次に、第３の実施形態のストレージ制御装置について図１３を用いて説明する。図１３は、第３の実施形態のストレージ制御装置の構成の一例を示す図である。
【００８０】
ノード＃１、ノード＃２、・・・、ノード＃８は、それぞれがストレージ制御装置の１形態であり、複数のノードで全体として性能向上を図るスケールアウトストレージを実現する。なお、各ノードは、第２の実施形態のストレージサーバ１０と同様のハードウェア構成である。
【００８１】
各ノードは、それぞれキャッシュメモリと１または２以上のＨＤＤを備える。ノード＃１は、キャッシュメモリ５０とＨＤＤ５４，５５，５６を備える。ノード＃２は、図示しないキャッシュメモリとＨＤＤ６０，６１，６２を備える。ノード＃８は、図示しないキャッシュメモリとＨＤＤ７０，７１，７２を備える。なお、各ノードは、図示しないＣＡがホストインタフェース制御部として機能し、ＣＡを介してホストと接続する。また、各ノードは、図示しないＣＭが接続制御部として機能し、ＣＭを介してノード同士を接続する。
【００８２】
ノード＃１は、キャッシュメモリ５０に、メタ情報領域５１と、ＢＣＣ領域５２と、ユーザデータ領域５３とを備える点で、第２の実施形態のストレージサーバ１０と異なる。
メタ情報領域５１は、ＨＤＤがメタ領域に記憶するメタ情報を記憶する領域である。ユーザデータ領域５３は、ユーザデータをデータブロックごとに記憶する領域である。ＢＣＣ領域５２は、ユーザデータ領域５３が記憶するユーザデータのデータブロックごとのＢＣＣを記憶する領域である。
【００８３】
また、ノード＃１は、ＨＤＤ５４のメタ領域にメタ情報を記憶し、ノード＃１からノード＃８は、データとＢＣＣを分散してＨＤＤに記憶する。メタ情報は、データ位置情報（書込対象データ格納先情報）と、ＢＣＣ位置情報（誤り検出情報格納先情報）を含む。データ位置情報は、データの記憶位置を示し、たとえば、データ１がノード＃１のＨＤＤ５５の所定アドレスに記憶されていることを示す。ＢＣＣ位置情報は、ＢＣＣの記憶位置を示し、たとえば、データ１からデータ８に対応するそれぞれのＢＣＣがノード＃２のＨＤＤ６０の所定アドレスに記憶されていることを示す。
【００８４】
次に、第３の実施形態のライト要求受付処理について図１４を用いて説明する。図１４は、第３の実施形態のライト要求受付処理のフローチャートを示す図である。ライト要求受付処理は、ノードがホストからライト要求を受け付けて実行する処理である。以下、図１３に示すノード＃１がライト要求受付処理を実行する場合について説明するが、ノード＃２からノード＃７についても同様である。
【００８５】
［ステップＳ４１］ノード＃１は、ホストから書込対象データを受信する。
［ステップＳ４２］ノード＃１は、ＨＤＤ５４からメタ情報を読み出して、キャッシュメモリ５０のメタ情報領域５１に書き込む。これにより、ノード＃１は、メタ情報領域５１に、データ位置情報とＢＣＣ位置情報とを記憶する。
【００８６】
［ステップＳ４３］ノード＃１は、キャッシュメモリ５０のユーザデータ領域５３に、ホストから受信した書込対象データを書き込む。これにより、ノード＃１は、ユーザデータ領域５３に書込対象データ（データ１、データ２、・・・、データ８）を記憶する。
【００８７】
［ステップＳ４４］ノード＃１は、書込対象データ（データ１、データ２、・・・、データ８）からデータブロックごとのＢＣＣを生成する。
［ステップＳ４５］ノード＃１は、キャッシュメモリ５０のＢＣＣ領域５２に、生成したＢＣＣを書き込む。
【００８８】
［ステップＳ４６］ノード＃１は、ライト要求に対する確認応答をホストに送信する。
［ステップＳ４７］ノード＃１は、メタ情報のうちのデータアドレス（データ位置情報）を取得する。
【００８９】
［ステップＳ４８］ノード＃１は、データアドレスから特定される担当ノードにデータを送信する。たとえば、ノード＃１は、ノード＃２にデータ２を送信し、ノード＃８にデータ８を送信する。データを受信した担当ノードは、データアドレスから特定されるＨＤＤの所定アドレスにデータを書き込む。なお、ノード＃１は、データ１の担当ノードであるので、ノード＃１がＨＤＤ５５にデータ１を書き込む。
【００９０】
［ステップＳ４９］ノード＃１は、メタ情報のうちのＢＣＣアドレス（ＢＣＣ位置情報）を取得する。
［ステップＳ５０］ノード＃１は、ＢＣＣアドレスから特定される担当ノードにＢＣＣを送信する。たとえば、ノード＃１は、ノード＃２にＢＣＣを送信する。ＢＣＣを受信した担当ノードは、ＢＣＣアドレスから特定されるＨＤＤの所定アドレスにデータを書き込む。ノード＃１は、担当ノードにＢＣＣを送信した後、ライト要求受付処理を終了する。
【００９１】
このように、ノードは、ホストからライト要求を受け付けても、ＨＤＤのメタ領域について書き換えをおこなわない。したがって、ノードは、ＨＤＤからキャッシュメモリに読み出したメタ情報をメタ領域に書き戻すことを要しない。これにより、ノードは、メタ情報をメタ領域に書き戻すディスクアクセスを削減する。このようなノードは、データ書込失敗の検出精度を向上することができる他、ディスクアクセス性能の向上を図ることができる。
【００９２】
なお、プログラムを流通させる場合には、たとえば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００９３】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
【００９４】
また、上記の処理機能の少なくとも一部を、ＤＳＰ、ＡＳＩＣ、ＰＬＤなどの電子回路で実現することもできる。
【符号の説明】
【００９５】
１  ストレージ制御装置
２  誤り検出情報格納部
３  データ格納部
４  検出部
５  記憶装置
６  第１の記憶領域
７  第２の記憶領域
１０  ストレージサーバ
１１，１２  ホスト
１３，１４  ＣＡ
１５，１６，２３，２４  スイッチ
１７，１８  ＣＭ
１９，２０，５０  キャッシュメモリ
２１，２２  ＤＡ
２５，２６，５４，５５，５６，６０，６１，６２，７０，７１，７２  ＨＤＤ
１０１  プロセッサ
１０２  ＲＡＭ
１０３  不揮発性メモリ
１０４  入出力インタフェース
１０５  機器接続インタフェース
１０６  通信インタフェース
１０７  ＤＭＡ
１０９  バス
【図１】
2015191407.tif 000003
【図２】
2015191407.tif 000004
【図３】
2015191407.tif 000005
【図４】
2015191407.tif 000006
【図５】
2015191407.tif 000007
【図６】
2015191407.tif 000008
【図７】
2015191407.tif 000009
【図８】
2015191407.tif 000010
【図９】
2015191407.tif 000011
【図１０】
2015191407.tif 000012
【図１１】
2015191407.tif 000013
【図１２】
2015191407.tif 000014
【図１３】
2015191407.tif 000015
【図１４】
2015191407.tif 000016