JP2015138372A - 書込検査プログラム,情報処理装置,及び書込検査方法 - Google Patents

書込検査プログラム,情報処理装置,及び書込検査方法 Download PDF

Info

Publication number
JP2015138372A
JP2015138372A JP2014009257A JP2014009257A JP2015138372A JP 2015138372 A JP2015138372 A JP 2015138372A JP 2014009257 A JP2014009257 A JP 2014009257A JP 2014009257 A JP2014009257 A JP 2014009257A JP 2015138372 A JP2015138372 A JP 2015138372A
Authority
JP
Japan
Prior art keywords
counter value
area
data
write
read
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2014009257A
Other languages
English (en)
Inventor
泰生 野口
Yasuo Noguchi
泰生 野口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014009257A priority Critical patent/JP2015138372A/ja
Priority to US14/565,478 priority patent/US9658922B2/en
Publication of JP2015138372A publication Critical patent/JP2015138372A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Debugging And Monitoring (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】記憶装置のデータの格納領域を確保しつつ、書込エラーの検査の信頼性を向上させる。【解決手段】複数の領域51を有する記憶装置5の領域51への書込回数を示すカウンタ値6aを前記領域51ごとに保持する保持部6に対して、書込対象の第1領域51に対応するカウンタ値6aを変化させるとともに、前記保持部6から当該カウンタ値6aを取得し、前記第1領域51に書き込むデータ21a,21bに前記取得したカウンタ値21cを付加してブロックデータ211を生成し、生成したブロックデータ211を前記第1領域51に書き込み、前記第1領域51に対応するカウンタ値21cが所定条件を満たしたとき、前記書き込み後に、当該第1領域51内のブロックデータ211を読み出し、前記書き込んだブロックデータ211と前記読み出したブロックデータ211とを比較し、比較結果が不一致の場合にエラーを通知する。【選択図】図1

Description

本発明は、書込検査プログラム,情報処理装置,及び書込検査方法に関する。
HDD(Hard Disk Drive)等の記憶装置では、ホスト装置からのライト要求に係るデータが、低確率で、指示されたライトアドレスとは異なる別のアドレスに誤って書き込まれたり、ライトアドレスに書き込まれない(ライト抜けする)ことがある。HDDのライトアドレス間違いは、例えばHDDがヘッドのシークに失敗した場合等に発生し、ライト抜けは、例えばHDDのヘッドとディスクとの距離が開き磁力が低下した状態でライトが行なわれた場合等に発生し得る。
このように、HDDのライトアドレス間違い及びライト抜け(以下、これらをまとめて書込エラーともいう)は、HDDの状態に起因して発生することが多い。このため、HDDへのアクセスを制御するコントローラは、ライト要求に係るデータの書き込みをHDDに指示した後にHDDで発生した書込エラーを検出することが難しく、書込エラーをホスト装置へ通知することが困難な場合がある。
HDDにおける上記書込エラーを検出する手法としては、例えばBCC(Block Check Code)を用いる技術が知られている。BCCは、CRC(Cyclic Redundancy Check)等によるデータの誤り検出に用いられる情報である。BCCには、コントローラがライト要求に係るデータに対して行なったCRCの結果と、当該ライト要求に係るライトアドレスの情報とが含まれる。
例えば、コントローラは、ホスト装置からのリード要求に応じて、当該リード要求に係るリードアドレスと、HDDから読み出したブロックのBCCに含まれるアドレスの情報とを比較する。これにより、コントローラは、比較結果が異なる場合に、HDDから読み出したブロックに間違ったアドレスのデータが書き込まれていること、つまり読み出したデータが本来は別のアドレスに書き込まれるデータであることを検出できる。
しかし、コントローラは、BCCを用いるだけでは、リード要求に係るデータが誤ってリードアドレスとは異なる別のアドレスに書き込まれていたり、当該データがライト抜けしていることを検出するのが困難な場合がある。これは、リードアドレスに対応するブロック内の情報が、本来は上書きされて消えているはずの古い情報であるものの、当該ブロックのBCC内のアドレスが正しいリードアドレスを示している可能性が高く、比較結果が一致してしまう場合があるためである。
一方、関連技術として、コントローラが、同じ記憶領域への直前のライト要求と今回のライト要求とを識別可能なカウンタ値等の時系列情報を生成する技術が知られている(例えば、特許文献1参照)。この技術では、コントローラが、生成した時系列情報を更新データとパリティデータとに付与してそれぞれ異なるディスクに書き込み、読出時に両者を比較することで、書込エラーの検出を可能とする。
また、他の関連技術として、コントローラが、複数のブロックごとに更新世代数等の更新状態値が記録される履歴ブロックを設け、これらをチェック対象の管理単位とする技術も知られている(例えば、特許文献2参照)。この技術では、コントローラが、同じ管理単位ごとに更新状態値を算出してメモリに記録するとともに、更新データと更新状態値とを含む管理単位全体をディスクにライトする。そして、その後、コントローラがディスクから更新状態値をリードしメモリに記憶した更新状態値と比較することで、ディスクのライト抜けを検出する。
このように、コントローラが、ディスクに記録されたカウンタ値(更新世代数)と、異なるディスク又はメモリに記録された比較用のカウンタ値とを比較し、両者が異なる場合に書込エラーを検出する技術が知られている。この技術によれば、コントローラは、リード要求に係るデータが誤ってリードアドレスとは異なる別のアドレスに書き込まれていたり、当該データがライト抜けしていることも検出することができる。
特開2010−182087号公報 特開2006−252530号公報 特開2007−122476号公報
上述した技術において、時系列情報や更新状態値は、HDDの記憶領域に書き込まれるため、これらのデータ量(サイズ)に応じて、HDDの利用可能なディスク容量、つまり業務データ(ユーザデータ)を格納可能なディスク容量が圧迫されることになる。特に、時系列情報を用いる技術のようにブロックごとに時系列情報が書き込まれる場合には、時系列情報のサイズの増加により利用可能なディスク容量が大きく減少する。
ここで、利用可能なディスク容量を確保するために時系列情報や更新状態値のサイズを最小限に抑えることを考える。なお、時系列情報や更新状態値としてカウンタ値が用いられるものとする。カウンタ値は、例えばnビット(nは1以上の整数)の情報で表し、0〜m(ただし、m=2−1)の範囲とすることができる。この場合、カウンタのサイズを小さくすると、以下に示すように、コントローラがライトアドレスの間違い又はライト抜けを検出することが困難になる場合がある。なお、以下、ライト抜けが発生する場合について説明するが、ライトアドレス間違いが発生する場合も同様である。
図6は、カウンタ値が2ビット(n=2)である場合のコントローラによるライト抜けの検出能力を示す図である。図6では、所定のブロックに“D0”の値が設定され、カウンタ値が0の初期状態において、当該所定のブロックに“D1”,“D2”,“D3”,“D4”の値を書き込むライト要求が連続して発行されるが、全ての書き込みでライト抜けが発生した場合を示す。
図6に示すように、ライト抜けが3回(“D1”〜“D3”)連続して発生した場合でも、コントローラは、リード時に、ディスクに記録された所定のブロックのカウンタ値と比較用のカウンタ値とを比較することで、ライト抜けを検出することができる。
しかし、ライト抜けが4回(“D1”〜“D4”)、つまり2回連続して発生した場合、比較用のカウンタ値が溢れてクリアされる(3から初期値の0に戻る)ため、所定のブロックのカウンタ値と比較用のカウンタ値とが同値になる。このとき、コントローラは、両カウンタ値が一致すると判断するため、ライト抜けが発生したと判断しない。なお、カウンタのサイズが小さいほど、カウンタの最大値が減少するため、ライト抜けが発生したときに2つのカウンタ値が同値になる可能性が高くなる。
このように、記憶装置の利用可能なディスク容量を確保するために、書込エラーの検査(書込検査)に用いるカウンタのサイズを小さくすると、コントローラが書込エラーを検出することが困難になる場合があり、書込検査の信頼性が低下するという課題がある。
1つの側面では、本発明は、記憶装置のデータの格納領域を確保しつつ、書込エラーの検査の信頼性を向上させることを目的とする。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の1つとして位置付けることができる。
本件の書込検査プログラムは、複数の領域を有する記憶装置に対してデータの入出力を行なうコンピュータに、以下の処理を実行させるものである。前記処理には、前記記憶装置の前記領域への書込回数を示すカウンタ値を前記領域ごとに保持する保持部に対して、書込対象の第1領域に対応するカウンタ値を変化させるとともに、前記保持部から当該カウンタ値を取得する処理が含まれる。また、前記処理には、前記第1領域に書き込むデータに前記取得したカウンタ値を付加してブロックデータを生成し、生成したブロックデータを前記第1領域に書き込む処理が含まれる。さらに、前記処理には、前記第1領域に対応するカウンタ値が所定条件を満たしたとき、前記書き込み後に、当該第1領域内のブロックデータを読み出す処理が含まれる。また、前記処理には、前記書き込んだブロックデータと前記読み出したブロックデータとを比較し、比較結果が不一致の場合にエラーを通知する処理が含まれる。
一実施形態によれば、記憶装置のデータの格納領域を確保しつつ、書込エラーの検査の信頼性を向上させることができる。
一実施形態に係る情報処理システムの構成例を示す図である。 図1に示す不揮発性メモリが保持するカウンタ値の一例を説明する図である。 図1に示すストレージ装置によるHDDへのデータの書込処理の動作例を説明するフローチャートである。 図1に示すストレージ装置によるHDDからのデータの読出処理の動作例を説明するフローチャートである。 図1に示すコントローラのハードウェア構成例を示す図である。 コントローラによるライト抜けの検出能力を示す図である。
以下、図面を参照して実施の形態を説明する。
〔1〕一実施形態
〔1−1〕情報処理システムの説明
図1は、一実施形態に係る情報処理システム1の構成例を示す図である。
図1に示すように、情報処理システム1は、ストレージ装置2及びホスト装置3をそなえる。ホスト装置3は、PC(Personal Computer)やサーバ等の情報処理装置であり、ストレージ装置2に対してデータのライト又はリード要求(ライト又はリードコマンド)を発行する上位装置の一例である。ストレージ装置2は、コントローラ4,少なくとも1つのHDD5,及び不揮発性メモリ6をそなえる。
コントローラ4は、ホスト装置3からの要求に応じてHDD5に対してデータの入出力等のアクセスを行なうとともに、後述するメモリ20,不揮発性メモリ6,その他各種資源の管理等の制御を行なう。コントローラ4としては、コントローラモジュール(Controller Module;CM)等の情報処理装置が挙げられる。なお、コントローラ4の説明は後述する。
HDD5は、種々のデータやプログラム等を格納する記憶装置の一例である。本実施形態では、記憶装置としてHDD等の磁気ディスク装置を例に挙げるが、これに限定されるものではない。記憶装置として、データのライトアドレス間違いやライト抜けが生じ得る種々のデバイスが用いられてもよい。なお、図1では、1つのHDD5を図示しているが、複数のHDD5がデバイスアダプタ8bを介してコントローラ4と接続されてもよい。
HDD5は、複数のブロック51を含む記憶領域50を有する。記憶領域50は、種々のデータやプログラムを記憶するディスク領域である。ブロック(領域)51には、データ51a,BCC51b,及びカウンタ値51cが含まれる。なお、コントローラ4は、HDD5に対して、ブロック51のブロックサイズの単位でデータ入出力を行なう。
データ51aは、コントローラ4により書き込まれる、ホスト装置3からのライト要求に係るデータ(ユーザデータ)である。BCC51bは、CRC等によるデータ51aの誤り検出に用いられる情報である。BCC51bには、コントローラ4がライト要求に係るデータ51aに対して行なったCRCの結果と、当該ライト要求に係るライトアドレスの情報とが含まれる。
カウンタ値51cは、同一ブロック51内のデータ51aが更新された(ブロック51にデータ51aが書き込まれた)回数を示す値である。なお、カウンタ値51cは、nビット(nは1以上の整数)の情報で表し、0〜m(ただし、m=2−1)の範囲とすることができる。
なお、BCCには、ベンダが独自に設定可能なベンダ領域があるため、コントローラ4は、BCC51bの当該ベンダ領域にカウンタ値51cを設定してもよい。この場合、1つのブロック51は、例えばデータ51aを512バイト,BCC51b(BCC51b及びカウンタ値51c)を8バイトとすると、520バイトのサイズになる。又は、データ51aの一部の領域をカウンタ値51cの設定領域としてもよいし、カウンタ値51cの設定領域が、データ51a及びBCC51bの領域の他に、新たにブロック51に設けられてもよい。
不揮発性メモリ6は、HDD5のブロック51への書込回数を示すカウンタ値6aをブロック51ごとに保持する保持部の一例である。不揮発性メモリ6が保持する各カウンタ値6aは、HDD5の各ブロック51に対応するnビットの値である。不揮発性メモリ6としては、例えばNAND型フラッシュメモリやMRAM(Magnetoresistive Random Access Memory)等の記憶素子,SSD(Solid State Drive)等の半導体ドライブ装置等が挙げられる。なお、不揮発性メモリ6として、HDD5等の磁気ディスク装置が用いられてもよいが、カウンタ値6aはコントローラ4により書込エラーの比較用として用いられるため、信頼性の観点から上記記憶素子や半導体ドライブ装置等が用いられることが好ましい。
図2は、図1に示す不揮発性メモリ6が保持する複数のカウンタ値6aの一例を説明する図である。図2に示すように、HDD5が記憶領域50としてN(Nは2以上の整数)個のブロック51を有する場合、不揮発性メモリ6は、N個のブロック51のカウンタ値51c(#0〜#N−1)に各々が対応するN個のカウンタ値6a(#0〜#N−1)を保持する。一例として、図2に示すように、不揮発性メモリ6は、#0〜#2,・・・,#N−1の各ブロック51に対応する、0(0b00),2(0b10),3(0b11),・・・,0(0b00)のカウンタ値を、ビットマップとして保持することができる。
〔1−2〕コントローラの説明
次に、図1を参照しながら、コントローラ4の詳細を説明する。図1に示すように、コントローラ4は、CPU(Central Processing Unit)10,メモリ20,チャネルアダプタ7,並びにデバイスアダプタ8a及び8bをそなえる。
チャネルアダプタ7は、ホスト装置3と接続され、ホスト装置3とのインタフェース制御を行なうモジュールであり、ホスト装置3との間で通信やデータ転送を行なう。デバイスアダプタ8a及び8bは、それぞれ、ストレージ装置2に収容される不揮発性メモリ6及びHDD5とのインタフェース制御を行なうモジュールであり、不揮発性メモリ6及びHDD5との間で通信やデータ転送を行なう。
CPU(処理部)10は、コントローラ4内の各ブロック20,7,8a,及び8bとそれぞれ接続され、種々の制御や演算を行なう処理装置(プロセッサ)の一例である。CPU10は、メモリ20又は図示しないROM(Read Only Memory)等の記録媒体に格納されたプログラムを実行することにより、種々の機能を実現することができる。
メモリ20は、種々のデータやプログラムを一時的に格納するキャッシュメモリ等の記憶装置である。CPU10は、プログラムを実行する際に、メモリ20にデータやプログラムを一時的に格納し展開する。例えば、メモリ20は、図1に示すように、バッファ領域21及び変数格納領域22を含むことができる。なお、メモリ20としては、例えばRAM等の揮発性メモリが挙げられる。
バッファ領域21は、ホスト装置3からHDD5へ書き込まれるライトデータ、又は、HDD5からホスト装置3へ読み出されるリードデータを含む、1以上のブロックデータ211を一時的に格納する領域である。ブロックデータ211には、ライト又はリード要求に係るデータ21a,BCC21b,カウンタ値21cが含まれる。
変数格納領域22は、コントローラ4の動作において用いられる種々の変数を格納する領域である。例えば変数格納領域22には、バッファ領域21からHDD5に書き込まれたブロックデータ211内のカウンタ値21cを示す情報が設定されてもよい。
〔1−3〕処理部の説明
次に、CPU10が処理部として実現する各機能について説明する。
CPU10は、図1に示すように、コマンド処理部11,カウンタ管理部12,書込制御部13,及び読出制御部14を含む処理部の機能をそなえることができる。
コマンド処理部11は、チャネルアダプタ7を介してホスト装置3との間で送受信されるリード/ライトコマンド及び当該コマンドへの応答に関する処理を行なう。例えばコマンド処理部11は、ホスト装置3からライトコマンドを受信すると、当該ライトコマンドのうちの少なくともライトデータ(更新データ)及びライトアドレスを書込制御部13に通知する。また、コマンド処理部11は、書込制御部13からライトコマンドに応じた書込処理の結果を通知されると、当該結果に基づきホスト装置3へ正常応答又はエラー応答を返す。さらに、コマンド処理部11は、ホスト装置3からリードコマンドを受信すると、当該リードコマンドのうちの少なくともリードアドレス及びリード範囲を読出制御部14に通知する。また、コマンド処理部11は、読出制御部14からリードコマンドに応じた読出処理の結果を通知されると、当該結果に基づきホスト装置3へリードデータ及び正常応答,又はエラー応答を返す。
カウンタ管理部12は、デバイスアダプタ8aを介して不揮発性メモリ6へのアクセスを行なう。具体的には、カウンタ管理部12は、HDD5の一のブロック51に対するライト又はリードコマンドに応じて、不揮発性メモリ6から当該一のブロック51に対応するカウンタ値6aを取得する。例えばカウンタ管理部12は、書込制御部13又は読出制御部14からの指示に応じて、ホスト装置3からのライトコマンドで指定されたブロック51に対応するカウンタ値6aを不揮発性メモリ6から読み出し、指示元へ通知する。
また、カウンタ管理部12は、HDD5の一のブロック51に対するライトコマンドに応じて、不揮発性メモリ6内の当該カウンタ値6aを変化させる。例えばカウンタ管理部12は、ホスト装置3からのライトコマンドで指定されたブロック51に対応する、不揮発性メモリ6内のカウンタ値6aに1を加算する。なお、カウンタ値6aに1を加算することにより当該カウンタ値6aが所定値(例えば2)に達する場合、つまりカウンタ値6aが溢れる場合、カウンタ管理部12は、当該カウンタ値6aをリセット(初期化)して初期値(例えば0(0b00))に戻す。なお、カウンタ管理部12がカウンタ値6aに1を加算する(変化させる)タイミングは、当該カウンタ値6aの読出前及び読出後のいずれであってもよい。但し、カウンタ管理部12が読出後に不揮発性メモリ6内のカウンタ値6aに1を加算する場合、先に読み出したカウンタ値6aにも1を加算する。
書込制御部13は、ホスト装置3からのライトコマンドに応じてHDD5へのライトデータの書き込みを制御する。書込制御部13は、例えばブロックデータ生成部13a,書込処理部13b,カウンタ判定部13c,及びブロックデータ比較部13dをそなえることができる。
ブロックデータ生成部13aは、ライトコマンドを受信した場合に、ブロックデータ211を生成して、メモリ20のバッファ領域21(ブロックバッファ)に一時的に格納する。具体的には、ブロックデータ生成部13aは、コマンド処理部11から通知されたライトデータを、データ21aとしてバッファ領域21(データバッファ)に格納する。また、ブロックデータ生成部13aは、ライトデータに対してCRCを計算し、CRCの計算結果とコマンド処理部11から通知されたライトアドレスとに基づきBCC21bを生成して、バッファ領域21(BCCバッファ)に格納する。なお、BCC21bの生成は、既知の種々の手法により実現することが可能であるため、詳細な説明を省略する。
さらに、ブロックデータ生成部13aは、ライトアドレスが示すブロック51に対応する、不揮発性メモリ6内のカウンタ値6aの取得をカウンタ管理部12に指示する。そして、ブロックデータ生成部13aは、カウンタ管理部12からカウンタ値6aを通知されると、当該カウンタ値6aをカウンタ値21cとしてバッファ領域21に格納する。このように、ブロックデータ生成部13aは、カウンタ値21cがライトアドレスに対応するカウンタ値6aと同値になるようにブロックデータ211を生成する。
書込処理部13bは、ブロックデータ生成部13aからブロックデータ211の生成完了を通知されると、当該ブロックデータ211を、デバイスアダプタ8bを介してライトアドレスに書き込む。具体的には、書込処理部13bは、ブロックデータ211(データ21a,BCC21b,カウンタ値21c)を、ライトアドレスが示すHDD5の対象ブロック(第1領域)51(データ51a,BCC51b,カウンタ値51c)に書き込む。
カウンタ判定部13cは、書込処理部13bによるHDD5へのブロックデータ211の書き込みが完了すると、当該ブロックデータ211のカウンタ値21cが初期値(例えば0)であるか否か、つまりカウンタ値21cがリセットされたか否かを判定する。カウンタ値21cが初期値ではない場合、カウンタ判定部13cは、コマンド処理部11へライトコマンドに対するHDD5への書込処理が正常に完了したことを通知する。すなわち、カウンタ値21cが初期値でない場合、カウンタ値21cの溢れは発生していない。従って、ブロックデータ211の書込エラーが発生していたとしても、コントローラ4は、該当ブロック51からのリードデータの読み出しの際に、書込エラーを検出することができる(図6の“D1”,“D2”,“D3”参照)。
一方、カウンタ値21cが初期値である場合、カウンタ判定部13cは、ブロックデータ比較部13dへブロックデータ211についての書込エラーの検出を指示する。すなわち、カウンタ値21cが初期値であるということは、カウンタ値21cの溢れが発生したことを意味する。従って、ブロックデータ211の書込エラーが発生していた場合、コントローラ4は、該当ブロック51からのリードデータの読み出しの際に、書込エラーを検出することが困難になる(図6の“D4”参照)。そこで、カウンタ判定部13cは、ブロックデータ211の書き込みを行なった直後に、当該ブロックデータ211が正常に書込対象のブロック(第1領域)51に書き込まれたか否かを、ブロックデータ比較部13dに検査させるのである。
なお、カウンタ判定部13cは、上記判定に用いるカウンタ値21cを、バッファ領域21,変数格納領域22,又は不揮発性メモリ6から取得することができる。
ブロックデータ比較部(第1比較部)13dは、カウンタ判定部13cからの指示に応じて、ライトアドレスが示すHDD5のブロック51内の情報を読み出す。そして、ブロックデータ比較部13dは、読み出した情報をブロックデータ211(リードブロックデータ)としてバッファ領域21(ブロックバッファ)に格納する。なお、ブロックデータ比較部13dは、バッファ領域21において、ブロック51から読み出すリードブロックデータを、書込処理部13bにより書込対象のブロック51に書き込まれたブロックデータ211(ライトブロックデータ)とは異なる領域に格納する。
このときブロックデータ比較部13dが読み出したリードブロックデータは、書込エラーが発生していなければ、書込処理部13bにより書き込まれたブロックデータ211(ライトブロックデータ)と一致するはずである。そこで、ブロックデータ比較部13dは、バッファ領域21に格納されたライトブロックデータとリードブロックデータとを比較し、両者が一致するか否かを判定する。つまり、ブロックデータ比較部13dは、カウンタ判定部13cからの指示に応じて、書込処理部13bによるデータの書き込み後に同一のブロック51からデータを読み出して比較するリードアフターライト(Read After Write)を行なうのである。
なお、ブロックデータ比較部13dによる上記判定は、少なくとも一部のデータの比較により行なわれればよい。例えば、比較する少なくとも一部のデータとして、ライト/リードブロックデータ内の各データ21a,各BCC21b,或いは各カウンタ値21cのいずれか、又はこれらの組み合わせが用いられてもよい。さらに、比較する少なくとも一部のデータとして、データ21a及びBCC21b内のCRCが用いられてもよい。
ライトブロックデータとリードブロックデータとが一致する場合、ブロックデータ比較部13dは、ライトコマンドに対するHDD5への書込処理が正常に完了したことをコマンド処理部11へ通知する。一方、ライトブロックデータとリードブロックデータとが一致しない場合、ブロックデータ比較部13dは、ライトコマンドに対するHDD5への書込処理において書込エラーが発生したことをコマンド処理部11へ通知する。
上述のように、カウンタ値51cは、HDD5の記憶領域50に書き込まれるため、カウンタ値51cのデータ量に応じて、HDD5の利用可能(ユーザデータを格納可能)なディスク容量、つまり全ブロック51におけるデータ51aの格納領域が圧迫される。特に、図1に示すように、ブロック51単位で書込エラーを検出するためにブロック51ごとにカウンタ値51cが書き込まれる場合には、カウンタのサイズの増加により利用可能なディスク容量が大きく減少することになる。
一方、HDD5の利用可能なディスク容量を確保するために、カウンタのサイズを小さくすると、図6を参照して説明したように、コントローラ4が書込エラーを検出することが困難になる場合があり、書込検査の信頼性が低下してしまう。
これに対し、一実施形態に係る書込制御部13は、書込対象のブロック51に対応するカウンタ値21cが所定条件を満たしたとき、具体的には当該カウンタ値21cがリセットされたとき、書込対象のブロック(第1領域)51へ書き込み及び読み出しを行なう。そして、書込制御部13は、書き込みを行なったブロックデータ211と、書き込み後に読み出したブロック51内の情報とを比較し、両者が不一致であればコマンド処理部11を介してホスト装置3へエラー応答(エラー通知)を行なう。
これにより、書込制御部13は、データ量(n)の小さいカウンタを用いた場合でも、連続する書込エラーを検出することができる。このように、書込制御部13によれば、HDD5のユーザデータ(データ51a)の格納領域を確保しつつ、書込エラーの検査の信頼性を向上させることができる。
また、カウンタのサイズを小さくしても書込エラーの検査の信頼性を確保できるため、カウンタのサイズを小さくして、ブロック51の空き領域にカウンタ値51cを設定することができる。例えばコントローラ4は、カウンタ値21cを、例えばBCC21bのベンダ領域、つまり書込対象のブロック51に書き込まれるデータのうちの誤り検出に用いられる情報(BCC21b)に含めることで、ブロックデータ211を生成することができる。これにより、データ51aの格納領域を大きくしたり、記憶領域50により多くのブロック51を設けることができ、利用可能なディスク容量をさらに増加させることができる。
さらに、カウンタのサイズを小さくしても書込エラーの検査の信頼性を確保できるため、複数のカウンタ値6aを格納する不揮発性メモリ6の記憶領域を小さくすることができる。これにより、回路規模を縮小できるとともに製造コストの軽減を図ることができる。
なお、書込対象のブロック51に対応するカウンタ値21cがリセットされたときに限らず、ブロックデータ比較部13dは、HDD5への書き込みの都度、リードアフターライトを行なうことも考えられる。しかしながら、リードアフターライトでは、単純な書き込みの処理時間に加えて、リードのための磁気ヘッドのシーク処理,データの読み込み,ライトデータとリードデータとの比較等の処理時間が余計にかかる。従って、HDD5への書き込みの都度、リードアフターライトが行なわれる場合には、ストレージ装置2の性能低下が著しくなる。この点、一実施形態に係るブロックデータ比較部13dによれば、リードアフターライトを最小限に留めることができるため、ストレージ装置2の性能低下を抑止できる。
次に、読出制御部14について説明する。
読出制御部14は、ホスト装置3からのリードコマンドに応じてHDD5からのリードデータの読み出しを制御するものであり、例えば読出処理部14a,BCC判定部14b,及びカウンタ判定部14cをそなえることができる。
読出処理部14aは、リードコマンドを受信した場合に、HDD5の読出対象のブロック(第2領域)51内の情報を読み出し、バッファ領域21へ一時的に格納する。具体的には、読出処理部14aは、コマンド処理部11から通知されたリードアドレス及びリード範囲に基づいて読出対象のブロック51を特定する。そして、読出処理部14aは、特定した読出対象のブロック51からデータ51a,BCC51b,カウンタ値51cを読み出し、ブロックデータ211(リードブロックデータ)としてバッファ領域21(ブロックバッファ)に格納する。
BCC判定部14bは、読出処理部14aがバッファ領域21に格納したリードブロックデータのBCC検査を行なう。具体的には、BCC判定部14bは、コマンド処理部11から通知されるリードコマンドに係るリードアドレスと、リードブロックデータのBCC21bに含まれるアドレスの情報とを比較する。比較結果が異なる場合、BCC判定部14bは、読出対象のブロック51に、同一ブロック51への直前の書き込みにおいて書込エラーが発生していたことを検出する。これにより、BCC判定部14bは、HDD5から読み出したブロック51に間違ったアドレスのデータ51aが書き込まれていること、つまり読み出したデータ51aが本来は別のアドレスに書き込まれているはずのデータであることを検出する。そして、BCC判定部14bは、リードコマンドに対するHDD5への読出処理において、読出対象のブロック51での書込エラーを検出したことをコマンド処理部11へ通知する。
一方、比較結果が一致する場合、BCC判定部14bは、BCC検査による書込エラーの発生は検出されないと判断し、カウンタ値による書込エラーの検査をカウンタ判定部14cに指示する。上述のように、BCC検査では、リードコマンドで要求されたデータが誤ってリードアドレスとは異なる別のアドレスに書き込まれていたり、当該データがライト抜けしていることを検出するのが困難な場合がある。そこで、BCC判定部14bは、比較結果が一致する場合、リードブロックデータがリードコマンドで要求された正しいデータであるか否かを、カウンタ判定部14cに検査させるのである。
カウンタ判定部(第2比較部)14cは、BCC判定部14bから指示を受けると、リードアドレスが示すブロック(第2領域)51に対応する、不揮発性メモリ6内のカウンタ値6aの取得をカウンタ管理部12に指示する。そして、カウンタ判定部14cは、カウンタ管理部12からカウンタ値6aを通知されると、当該カウンタ値6aと、バッファ領域21に格納されたリードブロックデータ内のカウンタ値21cとを比較する。
比較結果が一致する場合、カウンタ判定部14cは、リードコマンドに対するHDD5への読出処理において、リードコマンドに対するHDD5への読出処理が正常に完了したことをコマンド処理部11へ通知する。
一方、比較結果が異なる場合、カウンタ判定部14cは、読出対象のブロック51に、同一ブロック51への直前の書き込みにおいて書込エラーが発生していたことを検出する。そして、カウンタ判定部14cは、リードコマンドに対するHDD5への読出処理において、読出対象のブロック51での書込エラーを検出したことをコマンド処理部11へ通知する。
なお、読出制御部14は、リードコマンドへの応答をコマンド処理部11へ通知する際に、バッファ領域21に格納したブロックデータ211(リードブロックデータ)の少なくとも一部のデータを併せてコマンド処理部11へ通知する。なお、読出制御部14は、リードコマンドへの応答が書込エラーを検出したことを示す応答(エラー応答)である場合には、リードブロックデータをコマンド処理部11へ通知しなくてもよい。
ここで、ストレージ装置2がHDD5への書き込み及び読み出しを行なう際にアクセスするブロック51の数と、上述した関連技術において同様の処理でコントローラがアクセスするブロックの数とを比較してみる。なお、関連技術として、コントローラが、複数のブロックごとに更新状態値が記録される履歴ブロックを設け、これらをチェック対象の管理単位とする技術を例に挙げる。
関連技術では、更新状態値として、タイムスタンプ,更新世代数,管理単位全体のチェックコード等が用いられる。なお、チェックコードが用いられる場合には、コントローラは、管理単位全体のライト抜けを検出することが困難である。以下、一実施形態に係るストレージ装置2と条件を合わすため、関連技術の更新状態値として更新世代数が用いられるものとする。
ストレージ装置2のコントローラ4及び関連技術のコントローラは、それぞれ、HDD5に対するリード時及びライト時に、ディスク内の以下のブロックへアクセスを行なう。なお、以下の対比において、括弧内の“リード”及び“ライト”は、ブロックへのアクセス形態を表す。
・リード時にアクセスされるディスク内のブロック
関連技術:読出対象のブロック(リード)+更新状態値格納ブロック(リード)
ストレージ装置2:読出対象のブロック51(リード)
・ライト時にアクセスされるディスク内のブロック
関連技術:書込対象のブロック(ライト)+更新状態値格納ブロック(ライト)
ストレージ装置2
(カウンタ値21cが0の場合):書込対象のブロック51(ライト)+書込対象のブロック51(リード)
(カウンタ値21cが0以外の場合):書込対象のブロック51(ライト)
このように、リード時及びライト時のいずれの場合においても、ストレージ装置2によれば、関連技術よりもブロックへのアクセス頻度を低下させることができる。なお、ストレージ装置2は、ライト時(カウンタ値21cが0の場合)に、リードアフターライトにより書込対象のブロック51へのライト及びリードを行なうため、アクセスするブロック数は関連技術と同程度となる。しかし、カウンタ値21cが0になる確率は、カウンタ値21cが2ビット(n=2)の場合で1/4,カウンタ値21cが3ビット(n=3)の場合で1/8,・・・と、常に2つのブロックへライトを行なう関連技術と比べて限定的である。
以上のように、一実施形態に係るストレージ装置2によれば、HDD5へ書き込み及び読み出しを行なう際のブロック51へのアクセス頻度を低下させることができ、上記関連技術よりもスループットを向上させることができる。
〔1−4〕情報処理システムの動作例
次に、上述の如く構成された情報処理システム1の動作例を、図3及び図4を参照して説明する。図3は、図1に示すストレージ装置2によるHDD5へのデータの書込処理の動作例を説明するフローチャートであり、図4は、図1に示すストレージ装置2によるHDD5からのデータの読出処理の動作例を説明するフローチャートである。
〔1−4−1〕書込処理の動作例
はじめに、図3を参照して書込処理の動作を説明する。
図3に示すように、ホスト装置3からライトコマンドが発行され、ストレージ装置2により受信されると(ステップS1)、コマンド処理部11により、ライトコマンドに係るライトデータ及びライトアドレスがブロックデータ生成部13aに通知される。
ブロックデータ生成部13aでは、ライトデータがデータ21aとしてバッファ領域21(データバッファ)に格納される(ステップS2)。また、ブロックデータ生成部13aにより、ライトデータ及びライトアドレスに基づいてライトアドレスを含むBCC21bが生成され(ステップS3)、生成されたBCC21bがバッファ領域21(BCCバッファ)に格納される(ステップS4)。
次いで、ブロックデータ生成部13aにより、ライトアドレスが示す書込対象のブロック51に対応する、不揮発性メモリ6内のカウンタ値6aの取得が、カウンタ管理部12に指示される。そして、カウンタ管理部12により、カウンタ値6aが不揮発性メモリ6からリードされて(ステップS5)、1が加算され(ステップS6)、ブロックデータ生成部13aに出力される。ブロックデータ生成部13aでは、カウンタ管理部12から受け取ったカウンタ値6aがカウンタ値21cとしてバッファ領域21に格納される(ステップS7)。
また、カウンタ管理部12により、書込対象のブロック51に対応する、不揮発性メモリ6内のカウンタ値6aに1が加算されて更新される(ステップS8)。なお、ステップS6及びS8のいずれにおいても、1が加算されることでカウンタ値6aが所定値(2)に達する場合には、カウンタ管理部12により、当該カウンタ値6aがリセットされて、初期値に戻される。
次に、書込処理部13bにより、ブロックデータ生成部13aによって生成されたバッファ領域21(ブロックバッファ)内のブロックデータ211(ライトブロックデータ)が、HDD5のライトアドレスへ書き込まれる(ステップS9)。
HDD5への書き込みが行なわれると、カウンタ判定部13cにより、書込対象のブロック51へ書き込まれたカウンタ値21cが初期値(例えば0)であるか否かが判定される(ステップS10)。カウンタ値21cが初期値ではない場合(ステップS10のNoルート)、カウンタ判定部13cにより、書き込みが正常に行なわれたことがコマンド処理部11へ通知される。そして、コマンド処理部11により、ホスト装置3へ正常応答が返され(ステップS14)、処理が終了する。
一方、カウンタ値21cが初期値である場合(ステップS10のYesルート)、ブロックデータ比較部13dにより、ライトアドレスが示すHDD5のブロック51内の情報が読み出される(ステップS11)。読み出されたブロック51内の情報は、ブロックデータ比較部13dにより、ブロックデータ211(リードブロックデータ)としてバッファ領域21に格納される。
そして、ブロックデータ比較部13dにより、バッファ領域21のライトブロックデータとリードブロックデータとが比較され(ステップS12)、両者が一致するか否かが判定される(ステップS13)。両者が一致する場合(ステップS13のYesルート)、ブロックデータ比較部13dにより、書き込みが正常に行なわれたことがコマンド処理部11へ通知され、コマンド処理部11により、ホスト装置3へ正常応答が返され(ステップS14)、処理が終了する。
一方、両者が一致しない場合(ステップS13のNoルート)、ブロックデータ比較部13dにより、書込エラーが発生したことがコマンド処理部11へ通知される。そして、コマンド処理部11により、ホスト装置3へエラー応答が返され(ステップS15)、処理が終了する。
なお、図3において、ステップS8の処理は、ステップS4及びステップS5の処理の間に実行されてもよい。この場合、ステップS6の処理を省略することができる。
以上のように、一実施形態に係るストレージ装置2によれば、コントローラ4が、カウンタ値21cが所定値になったときに限り、HDD5への書き込み後に、リードアフターライトを行なう。すなわち、コントローラ4は、リードアフターライトにおいて、ライトアドレスと同一のアドレスから読み出したリードブロックデータを、書き込みを行なったライトブロックデータと比較する。比較の結果、データが不一致の場合、コントローラ4は、ライトアドレス間違い又はライト抜けが発生したと判断する。
これにより、コントローラ4は、データ量(n)の小さいカウンタを用いた場合でも、カウンタ値51cのリセットを跨いで連続して発生した書込エラーを検出することができる。このように、コントローラ4によれば、HDD5のユーザデータ(データ51a)の格納領域を確保しつつ、書込エラーの検査の信頼性を向上させることができる。
〔1−4−2〕読出処理の動作例
次に、図4を参照して読出処理の動作を説明する。
図4に示すように、ホスト装置3からリードコマンドが発行され、ストレージ装置2により受信されると(ステップS21)、コマンド処理部11により、リードコマンドに係るリードアドレス及びリード範囲が読出処理部14aに通知される。
読出処理部14aでは、リードアドレス及びリード範囲に基づいてHDD5の読出対象のブロック51が特定され、読出対象のブロック51内の情報が読み出される(ステップS22)。読み出された読出対象のブロック51内の情報は、読出処理部14aにより、ブロックデータ211(リードブロックデータ)としてバッファ領域21(ブロックバッファ)に格納される。
次いで、BCC判定部14bにより、リードアドレスとバッファ領域21に格納されたリードブロックデータ内のBCC21bとに基づいてBCC検査が行なわれる(ステップS23)。BCCエラーが検出されると(ステップS24,及びステップS24のYesルート)、BCC判定部14bにより、読出対象のブロック51への直前の書き込みにおいて書込エラーが発生していたことがコマンド処理部11へ通知される。そして、コマンド処理部11により、ホスト装置3へエラー応答が返され(ステップS29)、処理が終了する。
一方、ステップS24において、BCCエラーが検出されない場合(ステップS24のNoルート)、カウンタ判定部14cにより、読出対象のブロック51に対応する、不揮発性メモリ6内のカウンタ値6aの取得が、カウンタ管理部12に指示される。そして、カウンタ管理部12により、カウンタ値6aが不揮発性メモリ6からリードされ(ステップS25)、カウンタ判定部14cに出力される。カウンタ判定部14cでは、リードブロックデータ内のカウンタ値21cと、カウンタ管理部12から受け取ったカウンタ値6aとが比較され(ステップS26)、両者が一致するか否かが判定される(ステップS27)。
カウンタ値21cとカウンタ値6aとが一致する場合(ステップS27のYesルート)、カウンタ判定部14cにより、リードブロックデータ及び読み出しが正常に行なわれたことがコマンド処理部11へ通知される。そして、コマンド処理部11により、ホスト装置3へリードブロックデータ及び正常応答が返され(ステップS28)、処理が終了する。
一方、カウンタ値21cとカウンタ値6aとが一致しない場合(ステップS27のNoルート)、カウンタ判定部14cにより、読出対象のブロック51への直前の書き込みにおいて書込エラーが発生していたことがコマンド処理部11へ通知される。そして、コマンド処理部11により、ホスト装置3へエラー応答が返され(ステップS29)、処理が終了する。
以上のように、一実施形態の一例としてのストレージ装置2による、HDD5へのデータの書込処理及び読出処理が実行される。
〔2〕ハードウェア構成例
次に、図5を参照して、図1に示すコントローラ4のハードウェア構成について説明する。図5は、図1に示すコントローラ4のハードウェア構成例を示す図である。
図5に示すように、コントローラ4は、図1において既述のCPU10,メモリ20,チャネルアダプタ7,並びにデバイスアダプタ8a及び8bをそなえるとともに、入出力部41,記録媒体42a,及び読取部43をさらにそなえることができる。
入出力部41は、例えばマウスやキーボード等の入力装置、及びディスプレイやプリンタ等の出力装置の少なくとも一方を含んでよい。入出力部41は、入力装置によりコントローラ4のオペレータ(管理者)等の操作による動作命令を受け付ける一方、コントローラ4による動作結果を出力装置に表示(出力)することができる。
記録媒体42aは、例えばフラッシュメモリやROM等の記憶装置であり、種々のデータやプログラムを記録することができる。読取部43は、コンピュータ読取可能な記録媒体42bに記録されたデータやプログラムを読み出す装置である。記録媒体42a及び42bの少なくとも一方には、本実施形態に係るコントローラ4の各種機能の全部もしくは一部を実現する書込検査プログラムが格納されてもよい。例えば、CPU10は、記録媒体42aから読み出したプログラム、又は、読取部43を介して記録媒体42bから読み出したプログラムを、メモリ20等の記憶装置に展開して実行することができる。これにより、コンピュータ(CPU10,情報処理装置,各種端末を含む)は、上述したコントローラ4の機能を実現することができる。
なお、記録媒体42bとしては、例えばフレキシブルディスク,CD(Compact Disc),DVD(Digital Versatile Disc),ブルーレイディスク等の光ディスクや、USB(Universal Serial Bus)メモリやSDカード等のフラッシュメモリが挙げられる。なお、CDとしては、CD−ROM,CD−R(CD-Recordable),CD−RW(CD-Rewritable)等が挙げられる。また、DVDとしては、DVD−ROM,DVD−RAM,DVD−R,DVD−RW,DVD+R,DVD+RW等が挙げられる。
なお、上述した各ブロック10,20,7,8a,8b,41〜43間はバスで相互に通信可能に接続される。また、コントローラ4の上述したハードウェア構成は例示である。従って、コントローラ4内でのハードウェアの増減(例えば任意のブロックの省略)や分割、任意の組み合わせでの統合等は適宜行なわれてもよい。なお、チャネルアダプタ7,デバイスアダプタ8a及び8bは、コントローラ4の外部にそなえられてもよい。
〔3〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
例えば、一実施形態において、コントローラ4は、HDD5へのデータの書込処理において、バッファ領域21に生成するブロックデータ211にBCC21bを含めるものとして説明したが、これに限定されるものではなく、BCC21bを省略してもよい。この場合、HDD5のブロック51には、データ51a及びカウンタ値51cが含まれることになる。また、BCC21bを省略する場合には、コントローラ4(CPU10)は、BCC判定部14bを省略することができる。さらに、BCC21bを省略する場合には、図3に示すステップS3及びS4の処理,並びに図4に示すステップS23及びS24の処理を省略することができる。
また、一実施形態において、ストレージ装置2の動作を1つのHDD5に着目して説明したが、複数のHDD5がストレージ装置2にそなえられる場合も同様である。この場合、不揮発性メモリ6は、HDD5ごとに、複数のブロック51の各々に対応するカウンタ値6aを保持すればよい。
また、一実施形態において、コントローラ4は、ストレージ装置2にそなえられるものとして説明したが、これに限定されるものではない。例えば、コントローラ4は、個々のHDD5内にそなえられてもよいし、ホスト装置3にそなえられてもよい。
さらに、図5を参照して、一実施形態に係るコントローラ4は、入出力部41,記録媒体42b,及び読取部43をそなえるものとして説明したが、これに限定されるものではない。例えば、入出力部41,記録媒体42b,及び読取部43の少なくとも一つは、ホスト装置3又は他の装置にそなえられてもよい。この場合、書込検査プログラムは、ホスト装置3又は他の装置から有線又は無線を介してコントローラ4に転送され、CPU10は、転送された書込検査プログラムをメモリ20に展開して実行してもよい。
また、一実施形態に係るコントローラ4は、複数のHDD5を用いた種々のRAID(Redundant Array of Inexpensive Disks)構成のストレージに対しても同様の制御を行なうことができる。
なお、一実施形態に係るコントローラ4は、カウンタ値6aを変化させる際に1を加算するものとして説明したが、これに限定されるものではなく、例えば1を減算するようにしてもよい。この場合、初期値を2として、カウンタ値6aをリセットする所定値を0とすればよい。
〔4〕付記
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
複数の領域を有する記憶装置に対してデータの入出力を行なうコンピュータに、
前記記憶装置の前記領域への書込回数を示すカウンタ値を前記領域ごとに保持する保持部に対して、書込対象の第1領域に対応するカウンタ値を変化させるとともに、前記保持部から当該カウンタ値を取得し、
前記第1領域に書き込むデータに前記取得したカウンタ値を付加してブロックデータを生成し、
生成したブロックデータを前記第1領域に書き込み、
前記第1領域に対応するカウンタ値が所定条件を満たしたとき、前記書き込み後に、当該第1領域内のブロックデータを読み出し、
前記書き込んだブロックデータと前記読み出したブロックデータとを比較し、比較結果が不一致の場合にエラーを通知する、
処理を実行させることを特徴とする、書込検査プログラム。
(付記2)
前記コンピュータに、
前記保持部に対して、前記第1領域に対応するカウンタ値を変化させる際に、当該カウンタ値を変化させると所定値に達する場合、当該カウンタ値を初期化する、
処理を実行させ、
前記所定条件は、前記カウンタ値が初期化されたことを含む、
ことを特徴とする、付記1記載の書込検査プログラム。
(付記3)
前記コンピュータに、
前記保持部から、読出対象の第2領域に対応するカウンタ値を取得し、
前記第2領域から読み出したブロックデータに含まれるカウンタ値と前記取得したカウンタ値とを比較し、比較結果が不一致の場合にエラーを通知する、
処理を実行させることを特徴とする、付記1又は付記2記載の書込検査プログラム。
(付記4)
前記コンピュータに、
前記取得したカウンタ値を、前記第1領域に書き込むデータのうちの誤り検出に用いられる情報に含めることにより前記ブロックデータを生成する、
処理を実行させることを特徴とする、付記1〜3のいずれか1項記載の書込検査プログラム。
(付記5)
複数の領域を有する記憶装置に対してデータの入出力を行なう情報処理装置であって、
前記記憶装置の前記領域への書込回数を示すカウンタ値を前記領域ごとに保持する保持部に対して、書込対象の第1領域に対応するカウンタ値を変化させるとともに、前記保持部から当該カウンタ値を取得するカウンタ管理部と、
前記第1領域に書き込むデータに前記取得したカウンタ値を付加して生成したブロックデータを、前記第1領域に書き込む書込処理部と、
前記第1領域に対応するカウンタ値が所定条件を満たしたとき、前記書込処理部による書き込み後に、当該第1領域内のブロックデータを読み出して、前記書き込んだブロックデータと比較し、比較結果が不一致の場合にエラーを通知する第1比較部と、
をそなえることを特徴とする、情報処理装置。
(付記6)
前記カウンタ管理部は、前記保持部に対して、前記第1領域に対応するカウンタ値を変化させる際に、当該カウンタ値を変化させると所定値に達する場合、当該カウンタ値を初期化し、
前記所定条件は、前記カウンタ値が初期化されたことを含む、
ことを特徴とする、付記5記載の情報処理装置。
(付記7)
前記カウンタ管理部は、前記保持部から、読出対象の第2領域に対応するカウンタ値を取得し、
前記第2領域から読み出したブロックデータに含まれるカウンタ値と前記取得したカウンタ値とを比較し、比較結果が不一致の場合にエラーを通知する第2比較部、をさらにそなえる、
ことを特徴とする、付記5又は付記6記載の情報処理装置。
(付記8)
前記書込処理部は、前記取得したカウンタ値を、前記第1領域に書き込むデータのうちの誤り検出に用いられる情報に含めることにより前記ブロックデータを生成する、
ことを特徴とする、付記5〜7のいずれか1項記載の情報処理装置。
(付記9)
複数の領域を有する記憶装置に対してデータの入出力を行なう情報処理装置における書込検査方法であって、
前記記憶装置の前記領域への書込回数を示すカウンタ値を前記領域ごとに保持する保持部に対して、書込対象の第1領域に対応するカウンタ値を変化させるとともに、前記保持部から当該カウンタ値を取得し、
前記第1領域に書き込むデータに前記取得したカウンタ値を付加してブロックデータを生成し、
生成したブロックデータを前記第1領域に書き込み、
前記第1領域に対応するカウンタ値が所定条件を満たしたとき、前記書き込み後に、当該第1領域内のブロックデータを読み出し、
前記書き込んだブロックデータと前記読み出したブロックデータとを比較し、比較結果が不一致の場合にエラーを通知する、
ことを特徴とする、書込検査方法。
(付記10)
前記保持部に対して、前記第1領域に対応するカウンタ値を変化させる際に、当該カウンタ値を変化させると所定値に達する場合、当該カウンタ値を初期化し、
前記所定条件は、前記カウンタ値が初期化されたことを含む、
ことを特徴とする、付記9記載の書込検査方法。
(付記11)
前記保持部から、読出対象の第2領域に対応するカウンタ値を取得し、
前記第2領域から読み出したブロックデータに含まれるカウンタ値と前記取得したカウンタ値とを比較し、比較結果が不一致の場合にエラーを通知する、
ことを特徴とする、付記9又は付記10記載の書込検査方法。
(付記12)
前記取得したカウンタ値を、前記第1領域に書き込むデータのうちの誤り検出に用いられる情報に含めることにより前記ブロックデータを生成する、
ことを特徴とする、付記9〜11のいずれか1項記載の書込検査方法。
1 情報処理システム
2 ストレージ装置
3 ホスト装置(上位装置)
4 コントローラ(情報処理装置)
5 HDD(記憶装置)
6 不揮発性メモリ(保持部)
6a カウンタ値
7 チャネルアダプタ
8a,8b デバイスアダプタ
10 CPU(処理部)
11 コマンド処理部
12 カウンタ管理部
13 書込制御部
13a ブロックデータ生成部
13b 書込処理部
13c カウンタ判定部
13d ブロックデータ比較部(第1比較部)
14 読出制御部
14a 読出処理部
14b BCC判定部
14c カウンタ判定部(第2比較部)
20 メモリ
21 バッファ領域
21a,51a データ
21b,51b BCC
21c,51c カウンタ値
22 変数格納領域
41 入出力部
42a,42b 記録媒体
43 読取部
50 記憶領域
51 ブロック(領域)
211 ブロックデータ

Claims (6)

  1. 複数の領域を有する記憶装置に対してデータの入出力を行なうコンピュータに、
    前記記憶装置の前記領域への書込回数を示すカウンタ値を前記領域ごとに保持する保持部に対して、書込対象の第1領域に対応するカウンタ値を変化させるとともに、前記保持部から当該カウンタ値を取得し、
    前記第1領域に書き込むデータに前記取得したカウンタ値を付加してブロックデータを生成し、
    生成したブロックデータを前記第1領域に書き込み、
    前記第1領域に対応するカウンタ値が所定条件を満たしたとき、前記書き込み後に、当該第1領域内のブロックデータを読み出し、
    前記書き込んだブロックデータと前記読み出したブロックデータとを比較し、比較結果が不一致の場合にエラーを通知する、
    処理を実行させることを特徴とする、書込検査プログラム。
  2. 前記コンピュータに、
    前記保持部に対して、前記第1領域に対応するカウンタ値を変化させる際に、当該カウンタ値を変化させると所定値に達する場合、当該カウンタ値を初期化する、
    処理を実行させ、
    前記所定条件は、前記カウンタ値が初期化されたことを含む、
    ことを特徴とする、請求項1記載の書込検査プログラム。
  3. 前記コンピュータに、
    前記保持部から、読出対象の第2領域に対応するカウンタ値を取得し、
    前記第2領域から読み出したブロックデータに含まれるカウンタ値と前記取得したカウンタ値とを比較し、比較結果が不一致の場合にエラーを通知する、
    処理を実行させることを特徴とする、請求項1又は請求項2記載の書込検査プログラム。
  4. 前記コンピュータに、
    前記取得したカウンタ値を、前記第1領域に書き込むデータのうちの誤り検出に用いられる情報に含めることにより前記ブロックデータを生成する、
    処理を実行させることを特徴とする、請求項1〜3のいずれか1項記載の書込検査プログラム。
  5. 複数の領域を有する記憶装置に対してデータの入出力を行なう情報処理装置であって、
    前記記憶装置の前記領域への書込回数を示すカウンタ値を前記領域ごとに保持する保持部に対して、書込対象の第1領域に対応するカウンタ値を変化させるとともに、前記保持部から当該カウンタ値を取得するカウンタ管理部と、
    前記第1領域に書き込むデータに前記取得したカウンタ値を付加して生成したブロックデータを、前記第1領域に書き込む書込処理部と、
    前記第1領域に対応するカウンタ値が所定条件を満たしたとき、前記書込処理部による書き込み後に、当該第1領域内のブロックデータを読み出して、前記書き込んだブロックデータと比較し、比較結果が不一致の場合にエラーを通知する比較部と、
    をそなえることを特徴とする、情報処理装置。
  6. 複数の領域を有する記憶装置に対してデータの入出力を行なう情報処理装置における書込検査方法であって、
    前記記憶装置の前記領域への書込回数を示すカウンタ値を前記領域ごとに保持する保持部に対して、書込対象の第1領域に対応するカウンタ値を変化させるとともに、前記保持部から当該カウンタ値を取得し、
    前記第1領域に書き込むデータに前記取得したカウンタ値を付加してブロックデータを生成し、
    生成したブロックデータを前記第1領域に書き込み、
    前記第1領域に対応するカウンタ値が所定条件を満たしたとき、前記書き込み後に、当該第1領域内のブロックデータを読み出し、
    前記書き込んだブロックデータと前記読み出したブロックデータとを比較し、比較結果が不一致の場合にエラーを通知する、
    ことを特徴とする、書込検査方法。
JP2014009257A 2014-01-22 2014-01-22 書込検査プログラム,情報処理装置,及び書込検査方法 Pending JP2015138372A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014009257A JP2015138372A (ja) 2014-01-22 2014-01-22 書込検査プログラム,情報処理装置,及び書込検査方法
US14/565,478 US9658922B2 (en) 2014-01-22 2014-12-10 Computer-readable recording medium having stored therein program for write inspection, information processing device, and method for write inspection

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014009257A JP2015138372A (ja) 2014-01-22 2014-01-22 書込検査プログラム,情報処理装置,及び書込検査方法

Publications (1)

Publication Number Publication Date
JP2015138372A true JP2015138372A (ja) 2015-07-30

Family

ID=53544901

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014009257A Pending JP2015138372A (ja) 2014-01-22 2014-01-22 書込検査プログラム,情報処理装置,及び書込検査方法

Country Status (2)

Country Link
US (1) US9658922B2 (ja)
JP (1) JP2015138372A (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5850016B2 (ja) * 2013-10-02 2016-02-03 横河電機株式会社 フィールド機器
US9626119B2 (en) * 2014-11-14 2017-04-18 Intel Corporation Using counters and a table to protect data in a storage device
KR102444604B1 (ko) * 2016-02-02 2022-09-21 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US11216221B2 (en) * 2017-04-27 2022-01-04 Hp Indigo B.V. Print termination
US11467736B1 (en) 2020-09-14 2022-10-11 Pavillon Data Systems, Inc. Dropped write detection and correction

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS55122300A (en) * 1979-03-14 1980-09-19 Fujitsu Ltd Memory check system
JP2007122476A (ja) * 2005-10-28 2007-05-17 Fujitsu Ltd データストレージシステム、データストレージ制御装置及びそのディスクのライト抜け診断方法
JP2010182087A (ja) * 2009-02-05 2010-08-19 Fujitsu Ltd ディスクアレイ装置、データ分散管理方法、およびデータ分散管理プログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060179215A1 (en) 2005-02-08 2006-08-10 Fujitsu Limited Apparatus for detecting disk write omissions
JP4805660B2 (ja) 2005-02-08 2011-11-02 富士通株式会社 ディスクライト抜け検出装置
US20110154058A1 (en) * 2008-08-27 2011-06-23 Robert Hyerle Method and apparatus for storing and verifying data
US8665545B2 (en) * 2011-12-12 2014-03-04 HGST Netherlands B.V. Shingled magnetic recording (SMR) disk drive with verification of written data

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS55122300A (en) * 1979-03-14 1980-09-19 Fujitsu Ltd Memory check system
JP2007122476A (ja) * 2005-10-28 2007-05-17 Fujitsu Ltd データストレージシステム、データストレージ制御装置及びそのディスクのライト抜け診断方法
JP2010182087A (ja) * 2009-02-05 2010-08-19 Fujitsu Ltd ディスクアレイ装置、データ分散管理方法、およびデータ分散管理プログラム

Also Published As

Publication number Publication date
US20150205652A1 (en) 2015-07-23
US9658922B2 (en) 2017-05-23

Similar Documents

Publication Publication Date Title
CN102937922B (zh) 查询和修复数据
US10394634B2 (en) Drive-based storage scrubbing
CN107015881B (zh) 数据存储驱动器中的增强的低开销数据保护
CN105122213B (zh) 用于数据存储系统中的错误检测和纠正的方法和装置
US10209896B2 (en) Performance optimization of read functions in a memory system
US8904244B2 (en) Heuristic approach for faster consistency check in a redundant storage system
US11422726B1 (en) Efficient storage device data move operation based on priority of garbage collection command
US9740440B2 (en) Separating a hybrid asymmetric mix of a RAID 1 mirror and a parity-based RAID array
US10372368B2 (en) Operating a RAID array with unequal stripes
JP2011180831A (ja) 半導体記憶装置
US9563524B2 (en) Multi level data recovery in storage disk arrays
JP2015138372A (ja) 書込検査プログラム,情報処理装置,及び書込検査方法
US20120089867A1 (en) Redundant array of independent disk (raid) storage recovery
US9535619B2 (en) Enhanced reconstruction in an array of information storage devices by physical disk reduction without losing data
US9754682B2 (en) Implementing enhanced performance with read before write to phase change memory
US20150019904A1 (en) Data processing system and operating method thereof
US20100293418A1 (en) Memory device, data transfer control device, data transfer method, and computer program product
US20190129646A1 (en) Method, system, and computer program product for managing storage system
US8762773B2 (en) Processing apparatus, data migration method, and computer-readable recording medium having data migration program recorded thereon
US10574270B1 (en) Sector management in drives having multiple modulation coding
KR102004928B1 (ko) 데이터 저장 장치 및 그것의 에러 정정 코드 처리 방법
US20120226957A1 (en) Controller, data storage device and program product
US20160004592A1 (en) Method for detecting error of data, storage device, and recording medium
US11115056B2 (en) Location selection based on erasure code techniques
US11747990B2 (en) Methods and apparatuses for management of raid

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161004

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170621

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170627

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170817

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20171205