JP2008015918A - ディスク装置及びディスクコントローラ - Google Patents
ディスク装置及びディスクコントローラ Download PDFInfo
- Publication number
- JP2008015918A JP2008015918A JP2006188295A JP2006188295A JP2008015918A JP 2008015918 A JP2008015918 A JP 2008015918A JP 2006188295 A JP2006188295 A JP 2006188295A JP 2006188295 A JP2006188295 A JP 2006188295A JP 2008015918 A JP2008015918 A JP 2008015918A
- Authority
- JP
- Japan
- Prior art keywords
- data
- disk
- host computer
- cache memory
- transfer
- 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
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】有効なライトデータが存在するキャッシュメモリへ更にライトデータを転送する場合に停電が発生しても、ライトデータを正しくディスクに書き込むこと。
【解決手段】本発明は、ホスト計算機17からのデータの、ディスク15への書き込みを制御するディスクコントローラ10であって、ディスクへ書き込まれるホスト計算機からのデータを記憶する不揮発性のキャッシュメモリ12と、ホスト計算機からのデータを記憶する不揮発性の記憶領域11と、データ転送手段31とを備えている。データ転送手段は、ホスト計算機からデータを取得し、取得したデータを記憶領域に書き込み、記憶領域に書き込まれたデータをキャッシュメモリに転送し、ホスト計算機から次のデータを取得し、この取得したデータを記憶領域に書き込む。停電によりデータ転送が中断した場合には、記憶領域に書き込まれているデータを、復電時にキャッシュメモリに再度転送する。
【選択図】 図1
【解決手段】本発明は、ホスト計算機17からのデータの、ディスク15への書き込みを制御するディスクコントローラ10であって、ディスクへ書き込まれるホスト計算機からのデータを記憶する不揮発性のキャッシュメモリ12と、ホスト計算機からのデータを記憶する不揮発性の記憶領域11と、データ転送手段31とを備えている。データ転送手段は、ホスト計算機からデータを取得し、取得したデータを記憶領域に書き込み、記憶領域に書き込まれたデータをキャッシュメモリに転送し、ホスト計算機から次のデータを取得し、この取得したデータを記憶領域に書き込む。停電によりデータ転送が中断した場合には、記憶領域に書き込まれているデータを、復電時にキャッシュメモリに再度転送する。
【選択図】 図1
Description
本発明は、ディスク装置へのデータ転送を制御するディスクコントローラ、及びこのようなディスクコントローラを内蔵したディスク装置に関し、更に詳しくは、ホスト計算機からのデータの転送中に停電が発生した場合であっても、データを保護するディスク装置及びディスクコントーラに関する。
図19は、ホスト計算機200からのデータを、ディスク192に書き込むためのディスク装置190を示す。このディスク装置190は、不揮発性のキャッシュメモリ191を備えており、ディスク192へのライトデータ(図19に示す例では、すべて値は1)をホスト計算機200から取得し、ディスク192に書き込む前にキャッシュメモリ191に一旦保持している状態を示す。
通常は、この後、一定時間経過、あるいは、キャッシュメモリ191の不足等のイベントにより、ライトデータは、ディスク192へ書き込まれる。ディスク192への書き込みが実施されるまでの間に、万が一、停電が発生した場合には、キャッシュメモリ191のデータは、バッテリ等によりバックアップされて保持される。
そして、再び電力が供給されるようになると、ディスク装置190は起動処理を行う際に、キャッシュメモリ191にディスク192へ書き込んでいないデータがあることを認識し、ライトデータをディスク192へ書き込むことで、停電によるデータの消失が防止されている。
一方、図19に示す状態において、ホスト計算機200が、さらに同一のディスク位置60へ別のライトコマンドを実行すると、図20に示すように、ホスト計算機200からの新たなライトデータ(図20に示す例では、すべて値は2)が、DMA(ダイレクトメモリアクセス)により、キャッシュメモリ191へ転送される。図21は、この転送途中の様子を示している。
図21に示すような転送途中の状態において停電が発生すると、ライトデータはDMA転送中であるために、一部が新データ(値は2)で、一部が旧データ(値は1)となってしまう。
この状態で再び電力が供給されると、ディスク装置190はこれらライトデータをディスク192へ書き込むために、値が2である新データと、値が1である旧データとが混合した状態となる。
一般に、遅延書き込み用のキャッシュメモリを持たないディスク装置では、停電に対し、最小単位である1セクタ(通常は512バイト)に対しての書き込みで、以下の(1)から(3)のうちの何れかの状態となる。
(1)旧データ(例えば、値は全て1)が全領域(512バイト)に書き込まれており、読み出すと、値1を読み出すことができる。
(2)新データ(例えば、値は全て2)が全領域(512バイト)に書き込まれており、読み出すと、値2を読み出すことができる。
(3)メディアエラーとなり、全領域(512バイト)が読み出せなくなる。
特開2003−330627号公報
特開2004−342037号公報
しかしながら、このような従来のディスク装置では、以下のような問題がある。
すなわち、図21に示すような場合、従来のディスク装置では、上記(1)乃至(3)のうちの何れの状態とも異なり、例えば値が1である旧データと、例えば値が2である新データとが入り混じったデータを読み出すことになる。これは、遅延書き込み用のディスクと異なる動作を行うこととなり、不具合をもたらす可能性があるという問題がある。
また、DMA転送において、ホスト計算機200からのデータを暗号、あるいは、復号するような仕組みを備えたディスク装置190では、暗号アルゴリズムにブロック暗号を採用した場合、図21の状態からデータを読み出すと、例えば値が1であるような旧データでも、例えば値が2であるような新データでもないデータが読み出され、不具合をもたらす可能性があるという問題がある。
これら問題の解決に関連する技術としては、例えば特許文献1があるが、これは、停電による電圧低下が起こった時点で、DMA中のデータを不揮発性メモリに退避させるものであり、上記課題を解決するものではない。また、特許文献2には、DMA転送を行う前にキャッシュメモリの内容をディスク装置に書き戻す方式が開示されているが、この方式では、DMA転送を即時に行うことができない。
本発明はこのような事情に鑑みてなされたものであり、有効なライトデータが存在するキャッシュメモリへ更にライトデータを転送する場合に停電が発生しても、ライトデータを正しくディスクに書き込むことが可能なディスク装置及びディスコントローラを提供することを目的とする。
上記の目的を達成するために、本発明では、以下のような手段を講じる。
すなわち、請求項1の発明は、ホスト計算機からのデータの、ディスクへの書き込みを制御するディスクコントローラであって、ディスクへ書き込まれるホスト計算機からのデータを記憶する不揮発性キャッシュメモリと、ホスト計算機からの所定量のデータを記憶する不揮発性記憶領域と、データ転送手段とを備えている。
このデータ転送手段は、ホスト計算機から所定量のデータを取得し、取得した所定量のデータを不揮発性記憶領域に書き込み、しかる後に、不揮発性記憶領域に書き込まれた所定量のデータを不揮発性キャッシュメモリに転送し、転送後に、ホスト計算機から所定量の次のデータを取得し、不揮発性記憶領域に、この取得したデータを書き込む。そして、停電によりデータ転送が中断した場合には、不揮発性記憶領域に書き込まれている所定量のデータを、復電時に、不揮発性キャッシュメモリに再度転送する。
また、請求項2の発明は、不揮発性記憶領域を、不揮発性キャッシュメモリ又はデータ転送手段に備えた請求項1に記載のディスクコントローラである。
更に、請求項3の発明は、ホスト計算機からのデータの、ディスクへの書き込みを制御するディスクコントローラであって、ホスト計算機からのデータを、ディスクへ書き込まれるキャッシュデータとして記憶することが可能な2つの記憶領域を備えた不揮発性キャッシュメモリと、ホスト計算機からデータを取得し、取得したデータを不揮発性キャッシュメモリに転送するデータ転送手段とを備えている。
そして、不揮発性キャッシュメモリは、データ転送手段からデータが転送されてきた場合には、2つの記憶領域のうちの何れか一方の記憶領域にキャッシュデータとして記憶し、2つの記憶領域のうちの何れか一方の記憶領域にキャッシュデータを記憶している状態でデータ転送手段からデータが転送されてきた場合には、転送されたデータを2つの記憶領域のうちの他方の記憶領域に記憶し、この転送が完了した後に、他方の記憶領域に記憶されているデータを新たなキャッシュデータとするとともに、一方の記憶領域へデータを記憶できるようにした。
請求項4乃至6の発明は、請求項1乃至3の発明のディスクコントローラをそれぞれ備えたディスク装置である。
本発明によれば、有効なライトデータが存在するキャッシュメモリへ更にライトデータを転送する場合に停電が発生しても、ライトデータを正しくディスクに書き込むことが可能なディスク装置及びディスコントローラを実現することができる。
以下に、本発明を実施するための最良の形態について図面を参照しながら説明する。
(第1の実施の形態)
第1の実施の形態に係るディスクコントローラについて説明する。
第1の実施の形態に係るディスクコントローラについて説明する。
図1は、第1の実施の形態に係るディスクコントローラ10の構成例を示す機能ブロック図である。
すなわち、本実施の形態に係るディスクコントローラ10は、ホスト計算機17に内蔵され、ホスト計算機17のメモリ18からのデータを、ディスク装置16内のディスク15に書き込むためのものであり、DMAコントローラ11、キャッシュメモリ12、ディスク制御部13、及びキャッシュ管理テーブル14を備えている。
なお、図1では、ホスト計算機17に関しては、簡略のために、ディスクコントローラ10の他には、本実施の形態に関連する構成要素であるメモリ18とドライバ19のみを示している。
メモリ18は、ディスク15へ書き出す、あるいは、ディスク15から読み込むデータを格納する。
ドライバ19は、RAIDコントローラ等のディスクコントローラ10へ、リード(読み出し)やライト(書き込み)のコマンドをディスク制御部13へ送信し、ディスク15へのアクセスを仲介する。
RAIDコントローラ等のディスクコントローラ10は、ホスト計算機17に内蔵され、PCI、PCI−X、PCIエクスプレスなどのIOバスを介してホスト計算機17内の各部位と接続している。
ディスク制御部13は、ディスク(あるいはRAID)15の構成管理、ディスク15の制御などを行う。本実施の形態で特に関連するのは、ドライバ19からコマンドを受信し、その処理を行い、結果をドライバ19へ返却する機能である。また、コマンドの処理において、DMAコントローラ11、キャッシュメモリ12、及びキャッシュ管理テーブル14を用いる。
キャッシュメモリ12は、ディスク15へ書き込むべきデータや、ディスク15から読み出したデータを保持する。ディスク15へ書き込むべきデータを一時的に蓄積するため、停電などによる処理の中断でデータを消失しないように、ディスクコントローラ10への電源供給が途絶えても、内容が消えない、不揮発性記憶媒体で構成する。
キャッシュ管理テーブル14は、キャッシュメモリ12と同様、不揮発性の記憶媒体上に配置され、図2にその一例を示すように、キャッシュメモリ12上に保持するデータの管理情報を保持する。この管理情報の項目は、キャッシュブロック番号14a、ディスク番号14b、ディスクアドレス14c、使用・未使用状態14d、ライトデータの有無14e、ロック状態14fからなる。
本明細書では、説明のために、キャッシュメモリ12の管理単位(キャッシュブロック)は、ディスク15のセクタと同一サイズとする。キャッシュブロックのサイズは、性能や、管理の効率化のために、ディスクセクタの倍数であることがあり、その場合にはキャッシュ管理テーブル14の構造が一部図2と異なる場合があるが、本実施の形態での利用とは関係がないため、これ以上の説明は行わない。
キャッシュ管理テーブル14は、キャッシュメモリ12上の全キャッシュブロック分のエントリを、キャッシュブロック番号14aとして持つ。すなわち、1つのエントリは、キャッシュブロックに1対1で対応する。ディスク番号14bと、ディスクアドレス14cとは、キャッシュブロックに格納するデータと対応するディスクの位置を示す情報である。使用・未使用状態14dの項目は、キャッシュブロックを使用しているか、使用していないかを示す。ライトデータの有無14eは、キャッシュブロック上にディスク15が書き出していないデータが存在するかどうかを示す。ロック状態14fは、このエントリがロックされているかどうかを示す。
DMAコントローラ11は、ディスク制御部13から、データ転送のコマンドを受信し、ホスト計算機17とキャッシュメモリ12と間のデータ転送を制御する部位である。このようなDMAコントローラ11の構成例を図3の機能ブロック図に示す。図3に示すように、DMAコントローラ11は、コマンドバッファ30、転送制御部31、第1及び第2の転送エンジン32,33、データバッファ34、送信ポインタ35、及び受信ポインタ36を備えている。
コマンドバッファ30は、DMAコントローラ11が行うデータ転送の具体的な指示コマンド、パラメータを格納する。
転送制御部31は、コマンドバッファ30に格納された具体的な指示を行うコマンドを元に、第1及び第2の転送エンジン32,33を制御してデータ転送を行い、その返答をディスク制御部13に返す。
第1及び第2の転送エンジン32,33は、データバッファ34と、キャッシュメモリ12あるいはホスト計算機17のメモリ18へのデータ転送を司る。
データバッファ34は、不揮発性記憶媒体からなり、転送中のデータを保持する。データバッファの大きさは、ホスト計算機17とディスクコントローラ10のデータ転送の最小単位であるディスク15のセクタサイズ(通常は512バイト)より大きいサイズとする。
送信ポインタ35及び受信ポインタ36も同様に不揮発性記憶媒体上にあり、データバッファ34上のデータの送受信管理に用いる。
コマンドバッファ30に格納するDMAコントローラ11のためのコマンドには、(1)ディスクコントローラ10のキャッシュメモリ12からホスト計算機17への転送、あるいはその逆方向への転送を行うデータ転送(送信又は受信)コマンドがある。このデータ転送コマンドには、パラメータとして、送信元、送信先のアドレスと、転送サイズがある。また、その他のコマンドとして、(2)データバッファ34のデータ再送コマンドがある。このコマンドは、データバッファ34に蓄積しているデータの再転送を行うためのコマンドである。
次に、このようなコマンドを用いて行われる転送制御部31による処理の流れを図4のフローチャートを用いて示す。
コマンドバッファ30が、ディスク制御部13から送られたコマンドを転送制御部31を介して受信する(S41)。そして、このコマンドが、データ転送コマンドである場合(S42:Yes)であって、送信元がホスト計算機17のメモリ18であれば(S43:Yes)、ホスト計算機17からキャッシュメモリ12へのデータ転送処理が行われる(S44)。
一方、データ転送コマンドの送信元が、ホスト計算機17のメモリ18でなければ(S43:No)、キャッシュメモリ12のデータをホスト計算機17のメモリ18へ転送するデータ転送処理が行われる(S45)。
更に、ステップS42において、データ転送コマンドではない場合(S42:No)には、データ再転送処理がなされる(S46)。
ステップS44乃至S46の処理の後、転送制御部31は、コマンド完了をディスク制御部13に返却する(S47)。
データバッファ34では、ホスト計算機17のメモリ18と、キャッシュメモリ12との間でなされるデータ転送処理において、送信ポインタ35と受信ポインタ36とを用いている。すなわち、データ転送処理においては、キャッシュメモリ12への送信を完了したデータの最後を示す送信ポインタ35と、ホスト計算機17からのデータの先頭を示す受信ポインタ36とを用いることによってデータバッファ34をリングバッファとして制御している。このような送信ポインタ35と受信ポインタ36との利用方法を図5を用いて説明する。
図5(a)は、データバッファ34内のデータにおける送信ポインタ35と受信ポインタ36との初期位置を示している。データバッファ34がデータを受信すると、送信ポインタ35と受信ポインタ36との間に受信データが蓄積されることによって、受信ポインタ36が図5(b)に示すように図中右方向に進む。すなわち、受信ポインタ36は、ホスト計算機17から受信したデータの先頭を示し、送信ポインタ35は、キャッシュメモリ12への送信を完了したデータの最後を示している。
ステップS44で行われるホスト計算機17のメモリ18からのキャッシュメモリ12への転送処理(第1の転送エンジン32が行う)と、ステップS45で行われるキャッシュメモリ12からのメモリ18への転送処理(第2の転送エンジン33が行う)とは、転送効率の向上のために、並行して行われる。図6は、ステップS44における処理と、ステップS45における処理とを行う場合に、転送制御部31が第1の転送エンジン32及び第2の転送エンジン33に指示を送る処理の流れを示すフローチャートである。図6では、先ず、ステップS61において、第1の転送エンジン32に処理開始を指示し、ステップS62において、第2の転送エンジン33に処理開始を指示し、ステップS63において、第1の転送エンジン32及び第2の転送エンジン33の処理完了を待つように示しているが、ステップS61とステップS62との処理は同時に行われても、あるいは逆の順序で行われても良い。
図7は、ステップS61で行われる第1の転送エンジン32による処理の流れの詳細を示すフローチャートである。
第1の転送エンジン32は、コマンドバッファ30に格納されているコマンドの転送サイズ分のデータをホスト計算機17のメモリ18からデータバッファ34へ転送する。そして、このデータ転送が完了していれば(S71:Yes)、処理を終了する。
完了していなければ(S71:No)、データバッファ34に空きがあるかどうかを確認する(S72)。データバッファ34は、図8に示すように、受信データで一杯になり、受信ポインタ36が送信ポインタ35と隣り合う状態になるまでデータを受信できるので、図8に示すように受信ポインタ36が送信ポインタ35と隣り合っていれば空きがなく(S72:No)、隣り合っていなければ空きがある(S72:Yes)と判定する。空きがなければ、ステップS72の処理を繰り返し、空きがあればステップS73の処理に進む。実際には、リングバッファのため、この条件判定だけでは十分でない場合があるが(境界の部分にまたがった場合)、その説明は割愛する。
ステップS73では、ホスト計算機17のメモリ18からデータバッファ34へデータを転送する(S73)。この際、転送するデータ量は、データバッファ34の空き容量(送信ポインタ35と受信ポインタ36との差分から計算できる)か、転送すべきデータ量の残りかの小さい量とし、データの転送を実行する。転送を実行したら、受信ポインタ36を転送量の分だけ進める(S74)。
また、図9は、ステップS62で行われる第2の転送エンジン33による処理の流れの詳細を示すフローチャートである。
すなわち、第2の転送エンジン33は、コマンドバッファ30に格納されているコマンドの転送サイズ分のデータをデータバッファ34からキャッシュメモリ12に転送する。そして、このデータ転送が完了していれば(S91:Yes)、処理を終了する。
完了していなければ(S91:No)、データバッファ34に512バイト以上データがあるかどうかを確認し(S92)、なければ、ステップS92の処理を繰り返し、あればステップS93の処理に進む。
ステップS93では、データバッファ34からキャッシュメモリ12へデータを転送する(S93)。転送を実行したら、受信ポインタ36を転送量の分だけ進める(S94)。
このように、第2の転送エンジン33は、データバッファ34に512バイト分のデータが蓄積されたら、512バイト分のデータごとにキャッシュメモリ12へデータを転送する。このように転送することで、データ転送中のキャッシュメモリが512バイト分の領域のみであるように限定できる。また、データバッファ34に512バイトのデータが必ず蓄積されているので、停電等により処理を中断してしまった場合でも、次の実行時にデータバッファ34には転送中だったデータが512バイト分は必ず残されており、図10のフローチャートに示すように、データバッファ34に512バイト以上のデータが残っているか否かを判定する(S101)。これは、上述したように受信ポインタ36及び送信ポインタ35の値から判定する。そして、残っている場合(S101:Yes)には、512バイトの倍数分だけデータバッファ34からキャッシュメモリ12へデータを転送することにより再度転送する(S102)ことで、前回転送中だったデータをキャッシュメモリ12に完全に反映する。
次にディスク制御部13の処理について図11に示すフローチャートを用いて説明する。
ディスク制御部13は、ホスト計算機17のドライバ19からディスク15へのアクセスコマンドを処理する。図11は、ホスト計算機17のドライバ19からの処理の流れを示している。ホスト計算機17のドライバ19は、OSのモジュールとして動作し、ファイルシステムや、アプリケーションからディスク15へのアクセス要求を受信すると、ディスク制御部13に受け渡す(S111)。ディスク制御部13は、このアクセス要求を処理し(S112)、例えばホスト計算機17へ割り込むことによって応答を返す(S113)。その際、データのやりとりのために、ホスト計算機17上のメモリ18をバッファとして使用する。すると、ドライバ19の割り込み処理が動作し、ディスク15への要求処理を完了させる(S114)。
なお、ディスク15からのリード要求の場合には、ディスク15から読み出したデータは、最終的にホスト計算機17のメモリ18に読み込まれる。ディスク15へのライト要求の場合には、ホスト計算機17のメモリ18のデータがディスク15へ書き込まれることになる。
次に、ディスク制御部13が要求を処理する流れを、図12のフローチャートを用いて示す。本発明では、ディスク15へのライト要求時の処理において、その効果があるため、図12は、ライト要求時の処理を示している。
ディスク制御部13が受信するライト要求は、実際は、対象となるディスク15と、そのオフセット、ライトデータのサイズ、ライトすべきデータが格納されているホスト計算機17のメモリアドレスからなる。そして、対象のディスク15とオフセット、そのサイズを元に、キャッシュメモリ12上に対応する領域を確保するための処理を行う。ここで確保したキャッシュメモリ12上に、ホスト計算機17のメモリ18からのデータを格納する。
図12に示すフローチャートでは、ライトデータの全領域に対応するキャッシュメモリ12を確保するために、キャッシュメモリ12の割り当てと、ロックとを繰り返し実施している(S120)。キャッシュメモリ12の割り当ては、すでに該当するディスク15とオフセットに対応するエントリがキャッシュ管理テーブル14にあるかどうかを検索することで判定することができる。
ライトデータの全てに対して、キャッシュメモリ12が割り当てられていない場合(S120:No)であり、キャッシュメモリ12がすでに割り当てられていて(S126:Yes)、ロックされている場合(S127:Yes)には、上書きができないため、ロックが解除されるまで、ロック待ちを行う。ロックされていない場合(S127:No)には、ロックを実施し(S128)、ステップS120に戻る。ロックの状態は、図2に示すキャッシュ管理テーブル14のロック状態14fの値にて管理する。
キャッシュメモリ12が割り当てられていない場合(S126:No)には、キャッシュメモリ12の空きを探し、対応するエントリをキャッシュ管理テーブル14に作成し(S129)、ステップS128に進む。内容として、ディスク番号14b、使用・未使用(使用中)14d、オフセットをセットする。
このようにしてキャッシュメモリ12がすべて確保できたら(S120:Yes)、DMAコントローラ11にデータの転送を指示する(S121)。DMAコントローラ11は、図6に示すホスト計算機17とキャッシュメモリ12との間のデータ転送処理を開始する(S122)。
データ転送が完了したら、キャッシュ管理テーブル14にて、対応するエントリに対し、ライトデータが存在することを記録し(S123)、ドライバ19に対して、要求の完了を返答し(S124)、各エントリのロックを解除し(S125)、処理を完了する。
次に、キャッシュメモリ12からディスク15へのデータの書き出しについて説明する。
図12に示すようなライトコマンドの処理では、ライトすべきデータはキャッシュメモリ12上にコピーされているが、ディスク15には実際に書き込まれていない。そこで、ディスク制御部13は、一定時間ごと、あるいは、キャッシュメモリ12の使用状態などに応じて、図13に示すようにして、キャッシュメモリ12上のデータをディスク15に書き込む処理を行う。
すなわち、キャッシュデータの書き出しを続ける場合(S131:No)、キャッシュメモリ12上に有効なデータが存在すれば(S132:No)、キャッシュデータを選択し(S133)、ロックし(S134)、ディスク15への書き込みを行い(S135)、ライトデータ無しに設定し(S136)、ロックを解除し(S137)、ステップS131の処理に戻る。
このように、キャッシュデータの書き出しの終了は、一定量、あるいは、キャッシュメモリ12上のライトデータの比率などにより、書き出しを終了するかどうか、などにより、決定する。書き出しを行う場合には、キャッシュ管理テーブル14を検索して、ライトデータを保持するエントリを選ぶ。エントリは、LRUなどの方法を用いて選択する。選択したキャッシュメモリ12のデータは、キャッシュ管理テーブル14を用いてロックされ、ディスク15に書き込まれる。
次に、停電などの不意の停止からの再起動において、キャッシュメモリ12のデータをディスク15に書き戻す復旧方法について、図14に示すフローチャートを用いて説明する。
図14のフローチャートに示す処理が、通常のキャッシュデータの書き戻しと異なるのは、ステップS142にてなされるDMAコントローラ11に再転送を指示する処理である。これにより、DMAコントローラ11内に保持している転送中のデータをディスク15のセクタ単位でキャッシュメモリ12に再転送する。この処理により、キャッシュメモリ12上で転送途中でデータが途切れた状態となっているキャッシュデータが、ディスク15のセクタ単位で正しくなり、停電等による不意の停止にともなう、キャッシュデータの内容の不整合を回避する。
上述したように、本実施の形態に係るディスクコントローラ10においては、上記のような作用により、有効なライトデータが存在するキャッシュメモリ12へ更にライトデータを転送する場合に停電が発生しても、キャッシュメモリ12上で転送途中でデータが途切れた状態となっているキャッシュデータが、ディスク15のセクタ単位で正しくなり、キャッシュデータの内容の不整合を回避することが可能となる。
(第2の実施の形態)
図15は、第2の実施の形態に係るディスクコントローラ150の構成例を含む機能ブロック図である。
図15は、第2の実施の形態に係るディスクコントローラ150の構成例を含む機能ブロック図である。
本実施の形態に係るディスクコントローラ150は、第1の実施の形態に係るディスクコントローラ10の変形例である。したがって、同一箇所については同一符番を付すことにより、重複説明を避け、異なる点について説明する。
第1の実施の形態に係るディスクコントローラ10は、ホスト計算機17に内蔵されていたが、本実施の形態に係るディスクコントローラ150は、ディスク装置16に内蔵されている。
ホスト計算機17ではなくディスク装置16に内蔵されていることの他に第1の実施の形態と異なる点は、ホスト計算機17と通信するためのインタフェースとしてSCSI(登録商標)コントローラ151を付加した点である。
同様に、ホスト計算機17にも、ディスクコントローラ10と通信するためのインタフェースであるSCSI(登録商標)コントローラ152を付加している。
そして、SCSIコントローラ151と、SCSIコントローラ152とを接続することによって、ホスト計算機17とディスク装置16との通信を可能としている。
第1の実施の形態では、図1に示すように、DMAコントローラ11とメモリ18とでデータの授受を直接行っていたが、本実施の形態では、DMAコントローラ11とメモリ18との間のデータ授受の際には、SCSIコントローラ151,152を介して行う。この点を除けば、ディスクコントローラ150内のその他の部位であるDMAコントローラ11、キャッシュメモリ12、ディスク制御部13、及びキャッシュ管理テーブル14は、第1の実施の形態で説明したものと同じ機能を有する。
なお、ディスク装置16とホスト計算機17とのインタフェースは、SCSIコントローラに限定される訳ではなく、FC(FiberChannel)や、その他のインタフェースであっても、同様の実装を取ることができる。
また、SCSIコントローラ151とDMAコントローラ11とが一体となった実装を取り、SCSIコントローラ151が、第1の実施の形態におけるDMAコントローラ11の機能をも備えるようにしても良い。
上述したように、本実施の形態に係るディスクコントローラ150においては、上記のような作用により、ホスト計算機17ではなく、ディスク装置16に内蔵されている場合であっても、第1の実施の形態のディスクコントローラ10と同様に、有効なライトデータが存在するキャッシュメモリ12へ更にライトデータを転送する場合に停電が発生しても、ライトデータを正しくディスク15に書き込むことが可能である。
(第3の実施の形態)
図16は、第3の実施の形態に係るディスクコントローラ160の構成例を含む機能ブロック図である。
図16は、第3の実施の形態に係るディスクコントローラ160の構成例を含む機能ブロック図である。
本実施の形態に係るディスクコントローラ160もまた、第1の実施の形態に係るディスクコントローラ10の変形例である。したがって、同一箇所については同一符番を付すことにより、重複説明を避け、異なる点について説明する。
すなわち、本実施の形態に係るディスクコントローラ160は、図1に示す第1の実施の形態に係るディスクコントローラ10におけるDMAコントローラ11の代わりに、データ転送部161を備えた点のみが異なる。
データ転送部161は、データ転送のみを行い、DMAコントローラ11とは異なり、データバッファ34、送信ポインタ35、受信ポインタ36のような不揮発性記憶媒体を備えていない。また、コマンドバッファ30や転送制御部31をも備えていない。
このような構成の本実施の形態に係るディスクコントローラ160は、データ転送時におけるキャッシュメモリ12の管理方式が第1の実施の形態と異なる。
すなわち、本実施の形態に係るディスクコントローラ160では、すでにライトデータを保持するキャッシュメモリ12への再度のライトデータの転送の場合には、キャッシュメモリ12上に仮領域を確保し、データ転送を行う。そして、データ転送が完了したら、仮の領域を本来のキャッシュデータとし、それまでのキャッシュ領域を解放する。こうすることで、キャッシュメモリ12上のライトデータへのデータ転送による上書きの状態を回避することができ、データ転送の中断によるデータの不整合が発生しないようにしている。
このような構成の本実施の形態に係るディスクコントローラ160によるライト要求処理時のキャッシュ管理の方法を図17に示すフローチャートを用いて説明する。
図17に示すフローチャートは、図12に示すフローチャートと同じ処理を行うステップについては、同一のステップ番号を付している。したがって、ここでは、ステップS170乃至ステップS172について説明する。
ステップS170では、すでにキャッシュメモリ12上にライトデータがある場合、上書きを避けるために、キャッシュメモリ12上に仮領域を確保する。
ステップS171では、データ転送部161に対して、ホスト計算機17のメモリ18から、ステップS170で確保した仮領域を、データ転送先として指定する。
ステップS172では、仮領域をキャッシュ領域とし、これまでデータを保持していたキャッシュ領域を解放する。
上述したように、本実施の形態に係るディスクコントローラ160においては、上記のような作用により、データバッファ34、送信ポインタ35、受信ポインタ36のような不揮発性記憶領域を持つDMAコントローラ11を備えていない場合であっても、データ転送機能を備えたデータ転送部161を用いるとともに、キャッシュメモリ12上に仮のキャッシュ領域を確保することによって、有効なライトデータが存在するキャッシュメモリ12へ更にライトデータを転送する場合に停電が発生しても、ライトデータを正しくディスク15に書き込むことが可能となる。
(第4の実施の形態)
図18は、第4の実施の形態に係るディスクコントローラ180の構成例を含む機能ブロック図である。
図18は、第4の実施の形態に係るディスクコントローラ180の構成例を含む機能ブロック図である。
本実施の形態に係るディスクコントローラ180は、第1の実施の形態に係るディスクコントローラ10の変形例である。したがって、同一箇所については同一符番を付すことにより、重複説明を避け、異なる点について説明する。
すなわち、本実施の形態に係るディスクコントローラ180は、第1の実施の形態に係るディスクコントローラ10におけるDMAコントローラ11とキャッシュメモリ12との間に暗号化装置181を付加した構成としている。
暗号化装置181は、ホスト計算機17のメモリ18のデータをDMAコントローラ11から渡され、そのデータを暗号化して、キャッシュメモリ12へ格納する。逆に、キャッシュメモリ12からDMAコントローラ11経由でホスト計算機17のメモリ18へデータを格納する際には、そのデータを復号化してDMAコントローラ11に渡す。なお、暗号化装置181が実施する暗号のアルゴリズムは、AESやDESなどのブロック暗号を想定しているが、これらは一例であって、限定されるものではない。
このような実装では、ホスト計算機17からのデータは、キャッシュメモリ12上ではすべて暗号化されていることになる。従って、ホスト計算機17からのデータは、全て暗号化された後にディスク15に保存される。
この場合、停電等により転送が中断した場合、既に[背景技術]において説明したように、最初にホスト計算機17から転送されたデータと、DMA転送中だったデータの暗号化したデータが、キャッシュメモリ12上に入り混じる状態が発生する。図21では、一例として、キャッシュメモリ191に、値が1又は2のみのデータが記憶された状態を示しているが、それに代わって、値が暗号化されたデータが記憶されていることになる。
仮にこのような状態から、再度動作を開始し、このキャッシュメモリ12の内容をディスク15に書き込んでしまうと、このディスク15の内容をホスト計算機17からリードした場合、旧データと新データの暗号文が入り混じったデータをディスク15からキャッシュメモリ12へ読み出し、そのデータを復号することになる。そして、その後のリードアクセスでは、旧データでも新データでもないデータを読み出す事態が発生する。
このように暗号文が混合してしまった場合には、正しく復号を行うことができず、旧データでも新データでもないデータを復号してしまい、ホスト計算機17に返却する可能性がある。
本実施の形態においては、暗号化の処理以外の部分に対して、第1の実施の形態と同様の処理を行うことで、キャッシュメモリ12上に転送中だったデータの暗号文を完全に転送するので、暗号文が入り混じる状態を回避する。
上述したように、本実施の形態に係るディスクコントローラ180においては、上記のような作用により、データの暗号化を伴う場合であっても、暗号化の処理以外の部分に対して、第1の実施の形態と同様の処理を行うことで、キャッシュメモリ12上に転送中だったデータの暗号文を完全に転送することができる。
その結果、暗号文が入り混じる状態が回避され、有効なライトデータが存在するキャッシュメモリ12へ更にライトデータを転送する場合に停電が発生しても、ライトデータを正しくディスク15に書き込むことが可能となる。
以上、本発明を実施するための最良の形態について、添付図面を参照しながら説明したが、本発明はかかる構成に限定されない。特許請求の範囲の発明された技術的思想の範疇において、当業者であれば、各種の変更例及び修正例に想到し得るものであり、それら変更例及び修正例についても本発明の技術的範囲に属するものと了解される。
10…ディスクコントローラ,11…DMAコントローラ,12…キャッシュメモリ,13…ディスク制御部,14…キャッシュ管理テーブル,15…ディスク,16…ディスク装置,17…ホスト計算機,18…メモリ,19…ドライバ,30…コマンドバッファ,31…転送制御部,32…第1の転送エンジン,33…第2の転送エンジン,34…データバッファ,35…送信ポインタ,36…受信ポインタ,150…ディスクコントローラ,151,152…SCSIコントローラ,160…ディスクコントローラ,161…データ転送部,180…ディスクコントローラ,181…暗号化装置,190…ディスク装置,191…キャッシュメモリ,192…ディスク,200…ホスト計算機
Claims (6)
- ホスト計算機からのデータの、ディスクへの書き込みを制御するディスクコントローラであって、
前記ディスクへ書き込まれる前記ホスト計算機からのデータを記憶する不揮発性キャッシュメモリと、
前記ホスト計算機からの所定量のデータを記憶する不揮発性記憶領域と、
前記ホスト計算機から所定量のデータを取得し、取得した所定量のデータを前記不揮発性記憶領域に書き込み、しかる後に、前記不揮発性記憶領域に書き込まれた所定量のデータを前記不揮発性キャッシュメモリに転送し、転送後に、前記ホスト計算機から所定量の次のデータを取得し、前記不揮発性記憶領域に、この取得したデータを書き込むデータ転送手段とを備え、
前記データ転送手段は、停電によりデータ転送が中断した場合には、前記不揮発性記憶領域に書き込まれている所定量のデータを、復電時に、前記不揮発性キャッシュメモリに再度転送するようにした
ディスクコントローラ。 - 前記不揮発性記憶領域を、前記不揮発性キャッシュメモリ又は前記データ転送手段に備えた請求項1に記載のディスクコントローラ。
- ホスト計算機からのデータの、ディスクへの書き込みを制御するディスクコントローラであって、
前記ホスト計算機からのデータを、前記ディスクへ書き込まれるキャッシュデータとして記憶することが可能な2つの記憶領域を備えた不揮発性キャッシュメモリと、
前記ホスト計算機からデータを取得し、取得したデータを前記不揮発性キャッシュメモリに転送するデータ転送手段とを備え、
前記不揮発性キャッシュメモリは、前記データ転送手段からデータが転送されてきた場合には、前記2つの記憶領域のうちの何れか一方の記憶領域に前記キャッシュデータとして記憶し、前記2つの記憶領域のうちの何れか一方の記憶領域にキャッシュデータを記憶している状態で前記データ転送手段からデータが転送されてきた場合には、前記転送されたデータを前記2つの記憶領域のうちの他方の記憶領域に記憶し、この転送が完了した後に、前記他方の記憶領域に記憶されているデータを新たなキャッシュデータとするとともに、前記一方の記憶領域へデータを記憶できるようにした
ディスクコントローラ。 - ディスクを備え、ホスト計算機からのデータを、前記ディスクへ書き込むディスク装置であって、
前記ディスクへ書き込まれる前記ホスト計算機からのデータを記憶する不揮発性キャッシュメモリと、
前記ホスト計算機からの所定量のデータを記憶する不揮発性記憶領域と、
前記ホスト計算機から所定量のデータを取得し、取得した所定量のデータを前記不揮発性記憶領域に書き込み、しかる後に、前記不揮発性記憶領域に書き込まれた所定量のデータを前記不揮発性キャッシュメモリに転送し、転送後に、前記ホスト計算機から所定量の次のデータを取得し、前記不揮発性記憶領域に、この取得したデータを書き込むデータ転送手段とを備え、
前記データ転送手段は、停電によりデータ転送が中断した場合には、前記不揮発性記憶領域に書き込まれている所定量のデータを、復電時に、前記不揮発性キャッシュメモリに再度転送するようにした
ディスク装置。 - 前記不揮発性記憶領域を、前記不揮発性キャッシュメモリ又は前記データ転送手段に備えた請求項4に記載のディスク装置。
- ディスクを備え、ホスト計算機からのデータを、前記ディスクへ書き込むディスク装置であって、
前記ホスト計算機からのデータを、前記ディスクへ書き込まれるキャッシュデータとして記憶することが可能な2つの記憶領域を備えた不揮発性キャッシュメモリと、
前記ホスト計算機からデータを取得し、取得したデータを前記不揮発性キャッシュメモリに転送するデータ転送手段とを備え、
前記不揮発性キャッシュメモリは、前記データ転送手段からデータが転送されてきた場合には、前記2つの記憶領域のうちの何れか一方の記憶領域に前記キャッシュデータとして記憶し、前記2つの記憶領域のうちの何れか一方の記憶領域にキャッシュデータを記憶している状態で前記データ転送手段からデータが転送されてきた場合には、前記転送されたデータを前記2つの記憶領域のうちの他方の記憶領域に記憶し、この転送が完了した跡に、前記他方の記憶領域に記憶されているデータを新たなキャッシュデータとするとともに、前記一方の記憶領域へデータを記憶できるようにした
ディスク装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006188295A JP2008015918A (ja) | 2006-07-07 | 2006-07-07 | ディスク装置及びディスクコントローラ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006188295A JP2008015918A (ja) | 2006-07-07 | 2006-07-07 | ディスク装置及びディスクコントローラ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008015918A true JP2008015918A (ja) | 2008-01-24 |
Family
ID=39072847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006188295A Pending JP2008015918A (ja) | 2006-07-07 | 2006-07-07 | ディスク装置及びディスクコントローラ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008015918A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009193285A (ja) * | 2008-02-14 | 2009-08-27 | Nec Corp | ディスク制御装置 |
JP2010211420A (ja) * | 2009-03-09 | 2010-09-24 | Fujitsu Ltd | ストレージ管理装置、ストレージ管理方法およびストレージシステム |
JP2013510627A (ja) * | 2009-11-11 | 2013-03-28 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 薬配送装置および方法 |
WO2015173889A1 (ja) * | 2014-05-13 | 2015-11-19 | 株式会社日立製作所 | ストレージ装置 |
JP2016139354A (ja) * | 2015-01-29 | 2016-08-04 | 株式会社メガチップス | 情報処理システム |
-
2006
- 2006-07-07 JP JP2006188295A patent/JP2008015918A/ja active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009193285A (ja) * | 2008-02-14 | 2009-08-27 | Nec Corp | ディスク制御装置 |
JP2010211420A (ja) * | 2009-03-09 | 2010-09-24 | Fujitsu Ltd | ストレージ管理装置、ストレージ管理方法およびストレージシステム |
JP4719802B2 (ja) * | 2009-03-09 | 2011-07-06 | 富士通株式会社 | ストレージ管理装置、ストレージ管理方法およびストレージシステム |
US8266475B2 (en) | 2009-03-09 | 2012-09-11 | Fujitsu Limited | Storage management device, storage management method, and storage system |
JP2013510627A (ja) * | 2009-11-11 | 2013-03-28 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 薬配送装置および方法 |
WO2015173889A1 (ja) * | 2014-05-13 | 2015-11-19 | 株式会社日立製作所 | ストレージ装置 |
JP2016139354A (ja) * | 2015-01-29 | 2016-08-04 | 株式会社メガチップス | 情報処理システム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8140864B2 (en) | Computer system, storage system, and data management method for updating encryption key | |
US8990581B2 (en) | Preserving redundancy in data deduplication systems by encryption | |
JP4877962B2 (ja) | 暗号化機能を備えたストレージサブシステム | |
US8458381B2 (en) | Processing host transfer requests for direct block access storage devices | |
KR101562973B1 (ko) | 메모리 장치 및 메모리 장치의 동작 방법 | |
JP5409159B2 (ja) | 情報処理装置、情報処理装置の制御方法及びプログラム | |
US20110078462A1 (en) | Method for managing external storage devices | |
US20100122017A1 (en) | Memory controller, non-volatile memory system, and host device | |
WO2006107095A1 (ja) | 計算機システム、メモリ管理方法、およびそのプログラム | |
US9223695B2 (en) | Information processing apparatus | |
KR101454146B1 (ko) | 스토리지 장치, 제어 장치 및 기록 매체 | |
US20110188651A1 (en) | Key rotation for encrypted storage media using a mirrored volume revive operation | |
KR20120069516A (ko) | 메모리 백업을 위한 전원 차단 | |
JP2007011522A (ja) | データの消去方法、ストレージ・デバイス及び計算機システム | |
JP2008015918A (ja) | ディスク装置及びディスクコントローラ | |
JP2014010498A5 (ja) | ||
JP2010238009A (ja) | ストレージ制御装置、ストレージシステム及びコピー方法。 | |
KR20120069518A (ko) | 전원 장애의 데이터 조작 | |
KR20120069517A (ko) | 메모리 백업 중의 데이터 조작 | |
US20080080706A1 (en) | Code conversion apparatus, code conversion method, and computer product | |
US20130138851A1 (en) | Method and apparatus for expander-based data duplication | |
JP4848443B2 (ja) | 暗号化/復号化機能を有するストレージシステムを制御する計算機 | |
JP4936088B2 (ja) | ディスクアレイ装置、ディスクアレイシステム、及びキャッシュ制御方法 | |
JP5279626B2 (ja) | 記憶装置制御プログラム | |
JP2018022404A (ja) | ストレージシステム、ストレージ制御装置およびストレージ制御プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090618 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090623 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090824 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090915 |