JP2014137749A - ストレージ装置、書込制御方法、および書込制御プログラム - Google Patents

ストレージ装置、書込制御方法、および書込制御プログラム Download PDF

Info

Publication number
JP2014137749A
JP2014137749A JP2013006688A JP2013006688A JP2014137749A JP 2014137749 A JP2014137749 A JP 2014137749A JP 2013006688 A JP2013006688 A JP 2013006688A JP 2013006688 A JP2013006688 A JP 2013006688A JP 2014137749 A JP2014137749 A JP 2014137749A
Authority
JP
Japan
Prior art keywords
data
storage
unit
write
storage area
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
JP2013006688A
Other languages
English (en)
Inventor
Noriyuki Tanaka
教之 田中
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 JP2013006688A priority Critical patent/JP2014137749A/ja
Priority to US14/075,202 priority patent/US9021160B2/en
Publication of JP2014137749A publication Critical patent/JP2014137749A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/12Formatting, e.g. arrangement of data block or words on the record carriers
    • G11B20/1217Formatting, e.g. arrangement of data block or words on the record carriers on discs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】データの書き込みを高速化すること。
【解決手段】ストレージ装置100は、過去に第1の記憶部110に対してRMWによりデータを書き込んだ場合に、書き込んだデータを第1の記憶部110より応答性能がよい第2の記憶部120に格納しておく。ストレージ装置100は、過去にRMWによりデータを書き込んだ記憶領域と同一の記憶領域に対して、RMWが必要なデータを書き込む場合は、第2の記憶部120に記憶されているデータと、RMWが必要なデータと、から、RMWが不要なデータを作成する。ストレージ装置100は、作成したRMWが不要なデータを第1の記憶部110に書き込む。
【選択図】図1

Description

本発明は、ストレージ装置、書込制御方法、および書込制御プログラムに関する。
従来、セクタ単位でデータが読み書きされるディスクに書き込まれるライトデータを、セクタ単位で書き込むために加工してからディスクに書き込むリードモディファイライト(RMW:Read−Modify−Write)の技術がある。リードモディファイライトとは、ライトデータの書込先の記憶領域を含む整数個のセクタのデータをディスクから読み出し、読み出したデータのうちの書込先の記憶領域に対応するデータをライトデータに書き換え、書き換えたデータをディスクに書き込む技術である。
関連する技術としては、例えば、RMWが必要なデータを受信するとRMWをディスクが1回転する時間以内でRMWが間に合う時間まで待機させ、連続するライト要求と共に残りデータを受信するとRMWの代わりに複数回受信したデータを書き込むものがある。また、サブキャッシュの考えられる全ての最大サイズおよび最小サイズの集合として、参照されたオブジェクトでなるLRUリストおよびオブジェクトのトレースから区画の割振りデータでなるマルチプレナアレイを作成し、動的プログラミングヒューリスティック法を適用する技術がある。
特開2010−267345号公報 特開平06−161898号公報
しかしながら、上述した従来技術によれば、ディスクに対してセクタ単位でライトデータを書き込む場合、ライトデータを加工するためのデータをディスクから読み出すことになり、ライトデータの書込処理にかかる処理時間が増大してしまう。
1つの側面では、本発明は、データの書き込みを高速化することを目的とする。
本発明の一側面によれば、所定長単位で区切られた記憶領域に対して所定長のデータの読み書きが行われる第1の記憶部と、第1の記憶部のいずれかの記憶領域に対応付けていずれかの記憶領域に記憶されている所定長のデータと同一内容のデータが記憶される第2の記憶部と、を有し、第1の記憶部に書き込むライトデータの書込先となる記憶領域の先頭または末尾がいずれかの記憶領域に含まれる場合に、書込先となる記憶領域の先頭または末尾が、いずれかの記憶領域の先頭または末尾に一致するか否かを判定し、いずれかの記憶領域の先頭または末尾に一致しないと判定した場合に、いずれかの記憶領域のうちの書込先となる記憶領域と重複していない記憶領域に記憶されているデータと同一内容のデータを第2の記憶部から抽出し、抽出したデータと、ライトデータと、を用いて、第1の記憶部に書き込むデータを作成し、作成したデータの第1の記憶部への書き込みを制御するストレージ装置、書込制御方法、および書込制御プログラムが提案される。
本発明の一態様によれば、データの書き込みを高速化することができるという効果を奏する。
図1は、実施の形態にかかるストレージ装置100の書込制御処理の内容を示す説明図である。 図2は、ストレージ装置100のハードウェア構成例を示すブロック図である。 図3は、MRUテーブル300の記憶内容の一例を示す説明図である。 図4は、MFUテーブル400の記憶内容の一例を示す説明図である。 図5は、ストレージ装置100の機能的構成を示すブロック図である。 図6は、第1の動作例を示す説明図(その1)である。 図7は、第1の動作例を示す説明図(その2)である。 図8は、第1の動作例を示す説明図(その3)である。 図9は、第2の動作例を示す説明図(その1)である。 図10は、第2の動作例を示す説明図(その2)である。 図11は、第2の動作例を示す説明図(その3)である。 図12は、書込制御処理手順の一例を示すフローチャートである。 図13は、データ更新処理手順の一例を示すフローチャートである。
以下に添付図面を参照して、本発明にかかるストレージ装置、書込制御方法、および書込制御プログラムの実施の形態を詳細に説明する。
(ストレージ装置100の書込制御処理の内容)
図1は、実施の形態にかかるストレージ装置100の書込制御処理の内容を示す説明図である。図1において、ストレージ装置100は、第1の記憶部110と第2の記憶部120とを有するコンピュータである。
第1の記憶部110は、所定長単位で区切られた記憶領域を有し、区切られた記憶領域ごとに所定長単位のデータが読み書きされる記憶媒体である。第1の記憶部110は、例えば、512B(Byte)の論理セクタの8個分の集合を4kB(kilo−Byte)の物理セクタとして扱うディスクである。第1の記憶部110は、フラッシュロムであってもよい。図1の例では、第1の記憶部110は、物理アドレス「0」により識別される記憶領域と物理アドレス「1」により識別される記憶領域とを有する。以下の説明では、物理アドレスを、PBA(Physical Block Address)と表記する場合がある。また、以下の説明では、PBAにより識別される記憶領域を「記憶領域P#(#はPBAの値)」と表記する場合がある。例えば、PBA「0」により識別される記憶領域を「記憶領域P0」と表記する場合がある。
PBA「0」により識別される記憶領域P0は、論理アドレス「0」〜「7」が割り当てられ、論理アドレス「0」〜「7」により識別される記憶領域の集合として扱われる。同様に、PBA「1」により識別される記憶領域P1は、論理アドレス「8」〜「F」が割り当てられ、論理アドレス「8」〜「F」により識別される記憶領域の集合として扱われる。以下の説明では、論理アドレスを、LBA(Logical Block Address)と表記する場合がある。また、以下の説明では、LBAにより識別される記憶領域を「記憶領域L#(#はLBAの値)」と表記する場合がある。例えば、LBA「0」により識別される記憶領域を「記憶領域L0」と表記する場合がある。
第2の記憶部120は、第1の記憶部110より応答性能がよく、所定長未満の単位でデータが読み書きされる記憶媒体である。第2の記憶部120は、過去にストレージ装置100がRMWにより第1の記憶部110に書き込んだデータと同一内容のデータが記憶される。第2の記憶部120は、例えば、512B単位のデータが読み書きされるキャッシュメモリである。図1の例では、第2の記憶部120の各部分に付された数字は、当該部分に記憶されているデータが、第1の記憶部110のどの記憶領域に記憶されているデータと同一内容のデータであるかを示す。例えば、第2の記憶部120において、「0」が付された部分に記憶されているデータは、第1の記憶部110においてLBA「0」により識別される記憶領域L0に記憶されているデータと同一内容のデータである。
以下では、ストレージ装置100が、ライトデータ130を受け付けた場合を例に挙げて、ライトデータ130の第1の記憶部110への書き込みを制御する処理の一例について示す。図1の例では、ライトデータ130の各部分に付された数字は、ライトデータ130の各部分の書込先となる記憶領域を識別するLBAを示す。例えば、ライトデータ130の「0」が付された部分は、第1の記憶部110において論理アドレス「0」により識別される記憶領域L0に書き込むデータである。
ここで、ストレージ装置100は、LBA「0」〜「9」により識別される記憶領域L0〜L9が書込先となる記憶領域であるライトデータ130を受け付ける。ストレージ装置100は、ライトデータ130を受け付けると、ライトデータ130の書込先となる記憶領域の先頭または末尾が、第1の記憶部110の所定長単位で区切られた記憶領域の先頭または末尾に一致しているか否かを判定する。図1の例では、書込先となる記憶領域L0〜L9の先頭は記憶領域P0の先頭に一致しているが、書込先となる記憶領域L0〜L9の末尾は記憶領域P0,P1のいずれの末尾にも一致していない。
以下の説明では、書込先となる記憶領域の先頭が第1の記憶部110の所定長単位で区切られたいずれかの記憶領域の先頭に一致することを「先頭がアラインである」と表記する場合がある。同様に、末尾が一致することを「末尾がアラインである」と表記する場合がある。また、書込先となる記憶領域の先頭が第1の記憶部110の所定長単位で区切られたいずれの記憶領域の先頭にも一致しないことを「先頭がアンアラインである」と表記する場合がある。同様に、末尾が一致しないことを「末尾がアンアラインである」と表記する場合がある。
ストレージ装置100は、末尾がアンアラインであるため、ライトデータ130の末尾側を補完して、末尾がアラインであるデータに変換してから、第1の記憶部110への書き込みを行う。ストレージ装置100は、例えば、第2の記憶部120から、ライトデータ130の末尾側に付加すべきLBA「A」〜「F」により識別される記憶領域LA〜LFに記憶されているデータを探索し、探索されたデータをライトデータ130の末尾に付加する。これにより、ストレージ装置100は、末尾がアンアラインであるライトデータ130を、末尾がアラインであるデータに変換することができる。
そして、ストレージ装置100は、先頭および末尾がアラインである変換後のデータのディスクへの書き込みを制御する。ストレージ装置100は、例えば、変換後のデータのうちのLBA「0」〜「7」により識別される領域に書き込まれるデータを、LBA「0」〜「7」が割り当てられたPBA「0」により識別される記憶領域P0に書き込む。また、ストレージ装置100は、変換後のデータのうちのLBA「8」〜「F」により識別される領域に書き込まれるデータを、LBA「8」〜「F」が割り当てられたPBA「1」により識別される記憶領域P1に書き込む。これにより、ストレージ装置100は、ライトデータ130の第1の記憶部110への書き込みにおける第1の記憶部110へのアクセス回数を減らし、第1の記憶部110へのデータの書き込みを高速化することができる。
(ストレージ装置100のハードウェア構成例)
図2は、ストレージ装置100のハードウェア構成例を示すブロック図である。図2において、ストレージ装置100は、CPU(Central Processing Unit)201と、メモリ202と、磁気ディスクドライブ(Hard Disk Drive)203と、磁気ディスク204と、インターフェース(Interface)205と、を有する。また、各構成部はバス200によってそれぞれ接続されている。
ここで、CPU201は、ストレージ装置100の全体の制御を司る。メモリ202は、ブートプログラムなどのプログラムを記憶している。メモリ202は、CPU201のワークエリアとして使用される。メモリ202は、第2の記憶部120を実現する記憶媒体である。メモリ202は、図3に示すMRUテーブル300や図4に示すMFUテーブル400を記憶する。メモリ202は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)などである。
磁気ディスクドライブ203は、CPU201の制御にしたがって磁気ディスク204に対するデータのリード/ライトを制御する。磁気ディスク204は、磁気ディスクドライブ203の制御で書き込まれたデータを記憶する。磁気ディスク204は、第1の記憶部110を実現する記憶媒体である。
インターフェース(以下、「I/F」と略する。)205は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク210に接続され、このネットワーク210を介して他の装置に接続される。そして、I/F205は、ネットワーク210と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F205には、例えばモデムやLANアダプタなどを採用することができる。
また、ストレージ装置100は、フラッシュメモリに対するリード/ライトを制御するSSD(Solid State Drive)と、フラッシュメモリと、を有してもよい。ストレージ装置が、フラッシュメモリに対するリード/ライトを制御するSSDと、フラッシュメモリと、を有する場合は、上述した磁気ディスクドライブ203と、磁気ディスク204と、はなくてもよい。
(MRU(Most Recent Used)テーブル300の記憶内容)
図3は、MRUテーブル300の記憶内容の一例を示す説明図である。MRUテーブル300は、上述したように、メモリ202によって記憶される。MRUテーブル300は、第2の記憶部120に記憶されているデータを管理するテーブルであって、最近のRMWによって利用された第2の記憶部120に記憶されているデータを管理するテーブルである。
MRUテーブル300は、アドレス項目と、有効フラグ項目と、を有し、アドレスごとに各項目の値がレコードとして記憶される。アドレス項目には、第1の記憶部110におけるLBAの範囲が記憶される。アドレス項目における「h」は、LBAが16進数表記されていることを示す接尾語である。
有効フラグ項目には、アドレス項目のLBAの範囲により識別される記憶領域に記憶されているデータと同一内容の複製データが、第2の記憶部120に記憶されているか否かを示す有効フラグが記憶される。図3の例では、有効フラグ「1」は、第2の記憶部120に記憶されていることを示す。一方で、有効フラグ「0」は、第2の記憶部120に記憶されていないことを示す。
MRUテーブル300は、さらに、アドレス項目のLBAの範囲により識別される記憶領域に記憶されているデータと同一内容の複製データが記憶されている第2の記憶部120の記憶領域を識別するLBAの範囲が記憶される項目を有してもよい。
また、MRUテーブル300は、レコード数に上限があってもよい。ストレージ装置100は、MRUテーブル300のレコード数が上限に達した時に、新たにレコードを追加する場合は、MRUテーブル300に最古に追加されたレコードを削除する。ここで、ストレージ装置100は、MRUテーブル300からレコードを削除する場合、当該レコードに対応する第2の記憶部120に記憶されているデータも削除する。
(MFU(Most Frequent Used)テーブル400の記憶内容)
図4は、MFUテーブル400の記憶内容の一例を示す説明図である。MFUテーブル400は、上述したように、メモリ202によって記憶される。MFUテーブル400は、第2の記憶部120に記憶されているデータを管理するテーブルであって、高頻度にRMWによって利用される第2の記憶部120に記憶されているデータを管理するテーブルである。
MFUテーブル400は、アドレス項目と、有効フラグ項目と、を有し、アドレスごとに各項目の値がレコードとして記憶される。アドレス項目には、ディスクにおけるLBAの範囲が記憶される。アドレス項目における「h」は、LBAが16進数表記されていることを示す接尾語である。
有効フラグ項目には、アドレス項目のLBAの範囲により識別される記憶領域に記憶されているデータと同一内容の複製データが、第2の記憶部120に記憶されているか否かを示す有効フラグが記憶される。図4の例では、有効フラグ「1」は、第2の記憶部120に記憶されていることを示す。一方で、有効フラグ「0」は、第2の記憶部120に記憶されていないことを示す。
MFUテーブル400は、さらに、アドレス項目のLBAの範囲により識別される記憶領域に記憶されているデータと同一内容の複製データが記憶されている第2の記憶部120の記憶領域を識別するLBAの範囲が記憶される項目を有してもよい。
また、MFUテーブル400は、レコード数に上限があってもよい。ストレージ装置100は、MFUテーブル400のレコード数が上限に達した時に、新たにレコードを追加する場合は、MFUテーブル400に最古に追加されたレコードを削除する。ここで、ストレージ装置100は、MFUテーブル400からレコードを削除する場合、当該レコードに対応する第2の記憶部120に記憶されているデータも削除する。
(ストレージ装置100の機能的構成例)
次に、図5を用いて、ストレージ装置100の機能的構成例について説明する。
図5は、ストレージ装置100の機能的構成を示すブロック図である。ストレージ装置100は、第1の記憶部110と、第2の記憶部120と、判定部501と、抽出部502と、作成部503と、制御部504と、更新部505と、を含む。
第1の記憶部110は、所定長単位で区切られた記憶領域に対して所定長のデータの読み書きが行われる記憶媒体である。第1の記憶部110は、例えば、4kB単位で区切られた記憶領域に対して、4kB単位でデータの読み書きが行われるディスクである。第1の記憶部110がディスクである場合、所定長単位で区切られた記憶領域とは、例えば、ディスクの物理セクタである。
ディスクには、例えば、ストレージ装置100に対するインターフェース上では512B単位でデータを扱い、記憶媒体上では4kB単位でデータを扱う種類のものがある。以下の説明では、インターフェース上では512B単位でデータを扱い記憶媒体上では4kB単位でデータを扱う種類を「第1の種類」と表記する場合がある。
ディスクには、例えば、ストレージ装置100に対するインターフェース上でも記憶媒体上でも4kB単位でデータを扱う種類のものがある。以下の説明では、インターフェース上でも記憶媒体上でも4kB単位でデータを扱う種類を「第2の種類」と表記する場合がある。第1の記憶部110は、例えば、図2に示した磁気ディスク204により、その機能を実現する。以下の説明では、第1の記憶部110がディスクであって、所定長単位の記憶領域がディスクの物理セクタである場合を例に挙げて説明を行う。
第2の記憶部120は、ディスクのいずれかの物理セクタに記憶されている所定長のデータと同一内容のデータが記憶される記憶媒体である。第2の記憶部120は、例えば、ディスクより応答性能がよく、512B単位でデータの読み書きが行われるキャッシュメモリである。第2の記憶部120の記憶内容は、例えば、上述したMRUテーブル300やMFUテーブル400により識別される。第2の記憶部120は、例えば、図2に示したメモリ202により、その機能を実現する。以下の説明では、第2の記憶部120がキャッシュメモリである場合を例に挙げて説明を行う。
判定部501は、ディスクに書き込むライトデータ130の書込先となる記憶領域の先頭または末尾がいずれかの物理セクタに含まれる場合に、書込先となる記憶領域の先頭または末尾が、いずれかの物理セクタの先頭または末尾に一致するか否かを判定する。ここで、ライトデータ130は、例えば、I/F205を介して他の装置から受信したデータである。また、ライトデータ130は、ストレージ装置100のキーボード(不図示)によって入力されたデータであってもよい。
判定部501は、例えば、書込先となる記憶領域の先頭がディスクのいずれかの物理セクタの先頭に一致するか否かと、書込先となる記憶領域の末尾がディスクのいずれかの物理セクタの末尾に一致するか否かと、の少なくともいずれかを判定する。これにより、抽出部502は、判定部501によって一致しないと判定されたことを、データを抽出するトリガとして取得することができる。判定部501は、図2に示したメモリ202に記憶されたプログラムをCPU201に実行させることにより、その機能を実現する。判定部501による判定結果は、例えば、メモリ202に記憶される。
抽出部502は、判定部501によっていずれかの物理セクタの先頭または末尾に一致しないと判定された場合に、いずれかの物理セクタのうちの書込先となる記憶領域と重複していない記憶領域に記憶されているデータと同一内容のデータをキャッシュメモリから抽出する。抽出部502は、例えば、判定部501によっていずれかの物理セクタの先頭に一致しないと判定された場合に、いずれかの物理セクタの先頭から書込先となる記憶領域の先頭までの記憶領域に記憶されているデータと同一内容のデータをキャッシュメモリから抽出する。
抽出部502は、例えば、判定部501によっていずれかの物理セクタの末尾に一致しないと判定された場合に、書込先となる記憶領域の末尾からいずれかの物理セクタの末尾までの記憶領域に記憶されているデータと同一内容のデータをキャッシュメモリから抽出する。これにより、作成部503は、ディスクに書き込むデータの作成に使用するデータを、抽出部502から取得することができる。抽出部502は、図2に示したメモリ202に記憶されたプログラムをCPU201に実行させることにより、その機能を実現する。抽出部502によって抽出されたデータは、例えば、メモリ202に記憶される。
作成部503は、抽出部502によって抽出されたデータと、ライトデータ130と、を用いて、ディスクに書き込むデータを作成する。例えば、抽出部502によっていずれかの物理セクタの先頭から書込先となる記憶領域の先頭までの記憶領域に記憶されているデータと同一内容のデータが抽出された場合について説明する。この場合には、作成部503は、先頭がアンアラインであるため、取得したデータをライトデータ130の先頭に付加することにより、ディスクに書き込む先頭がアラインであるデータを作成する。
また、例えば、抽出部502によって書込先となる記憶領域の末尾からいずれかの物理セクタの末尾までの記憶領域に記憶されているデータと同一内容のデータが抽出された場合について説明する。この場合には、作成部503は、末尾がアンアラインであるため、取得したデータをライトデータ130の末尾に付加することにより、ディスクに書き込むデータを作成する。これにより、作成部503は、物理セクタ単位で書き込むことができるデータを作成することができる。物理セクタ単位で書き込むことができるデータとは、例えば、整数個の物理セクタ分のデータであって先頭および末尾がアラインであるデータである。
以下の説明では、整数個の物理セクタ分のデータであって先頭および末尾がアラインであるデータを、単に「アラインなデータ」と表記する場合がある。また、先頭または末尾がアンアラインであるデータを、単に「アンアラインなデータ」と表記する場合がある。作成部503は、例えば、図2に示したメモリ202に記憶されたプログラムをCPU201に実行させることにより、その機能を実現する。
制御部504は、作成部503によって作成されたデータのディスクへの書き込みを制御する。また、制御部504は、判定部501によって先頭および末尾が一致すると判定された場合に、ライトデータ130のディスクへの書き込みを制御してもよい。また、制御部504は、作成部503によって先頭および末尾がアラインであるデータを作成できなかった場合は、RMWによってライトデータ130をディスクに書き込んでもよい。
制御部504は、例えば、書き込み対象がディスクである場合には、書き込み対象とするディスクの種類によって異なる書き込み動作を行うことができる。以下の説明では、書き込み対象とするディスクが上述した第1の種類のディスクである場合の書き込み動作を「第1の書き込み動作」と表記する場合がある。また、書き込み対象とするディスクが上述した第2の種類のディスクである場合の書き込み動作を「第2の書き込み動作」と表記する場合がある。
<第1の書き込み動作>
制御部504は、ディスクの種類が第1の種類である場合には、第1の書き込み動作を行う。制御部504は、例えば、作成部503によって作成されたデータがアラインなデータである場合は、作成部503によって作成されたデータを512Bずつ、ライトコマンドとしてディスクに送信する。これにより、ディスクは、作成部503によって作成されたデータを512Bずつ受信して、受信したデータを4kB分のデータに纏めて、ディスクの物理セクタに書き込む。
また、制御部504は、例えば、作成部503によって作成されたデータがアラインなデータではない場合は、作成部503によって作成されたデータを512Bずつ、ライトコマンドとしてディスクに送信する。これにより、ディスクは、作成部503によって作成されたデータを512Bずつ受信して、受信したデータからRMWによりアラインなデータを作成して、ディスクの物理セクタに書き込む。
また、制御部504は、例えば、判定部501によって先頭および末尾が一致すると判定された場合には、ライトデータ130を、ライトコマンドとしてディスクに送信する。これにより、ディスクは、受信したライトデータ130を、ディスクの物理セクタに書き込む。
また、制御部504は、例えば、作成部503によって作成できなかった場合には、ライトデータ130をライトコマンドとしてディスクに送信する。これにより、ディスクは、受信したライトデータ130から、RMWによりアラインなデータを作成して、ディスクの物理セクタに書き込む。
<第2の書き込み動作>
制御部504は、ディスクの種類が第2の種類である場合には、第2の書き込み動作を行う。制御部504は、例えば、作成部503によって作成されたデータがアラインなデータである場合は、作成部503によって作成されたアラインなデータを4kBずつ、ライトコマンドとしてディスクに送信する。これにより、ディスクは、受信した4kBずつのデータをディスクの物理セクタに書き込む。
また、制御部504は、例えば、作成部503によって作成されたデータがアラインなデータではない場合は、作成部503によって作成されたデータからRMWによりアラインなデータを作成する。次に、制御部504は、作成したアラインなデータを4kBずつ、ライトコマンドとしてディスクに送信する。これにより、ディスクは、受信した4kBずつのデータをディスクの物理セクタに書き込む。
また、制御部504は、例えば、判定部501によって先頭および末尾が一致すると判定された場合には、ライトデータ130をライトコマンドとしてディスクに送信する。これにより、ディスクは、受信した物理セクタ単位のライトデータ130をディスクの物理セクタに書き込む。
また、制御部504は、例えば、作成部503によって作成できなかった場合には、ライトデータ130からRMWによりアラインなデータを作成して、作成したアラインなデータを4kBずつ、ライトコマンドとしてディスクに送信する。これにより、ディスクは、受信した4kBずつのデータをディスクの物理セクタに書き込む。制御部504は、例えば、図2に示したメモリ202に記憶されたプログラムをCPU201に実行させることにより、その機能を実現する。
更新部505は、作成部503によって作成されたデータに基づいて、キャッシュメモリにおいていずれかの物理セクタに対応付けられたデータを更新する。更新部505は、例えば、制御部504の制御によって物理セクタに作成部503によって作成されたデータを書き込む場合に、キャッシュメモリに当該物理セクタのデータと同一内容のデータが記憶されていれば、書き込むデータと同一内容のデータに更新する。これにより、制御部504は、キャッシュメモリに記憶されているデータを、物理セクタに記憶されている最新のデータと同一内容のデータに更新することができる。
また、更新部505は、書込先となる記憶領域の先頭または末尾がいずれかの物理セクタとは異なる他の記憶領域に含まれる場合に、他の記憶領域に記憶されているデータをディスクから読み出して他の記憶領域と対応付けてキャッシュメモリに格納する。更新部505は、例えば、制御部504によってRMWが行われた場合に、RMWの対象になった物理セクタに記憶されているデータと同一内容のデータを、キャッシュメモリに格納する。これにより、制御部504は、次回に当該物理セクタにデータを書き込む際には、RMWなしに、データを書き込むことができる。更新部505は、例えば、図2に示したメモリ202に記憶されたプログラムをCPU201に実行させることにより、その機能を実現する。
また、更新部505は、キャッシュメモリに所定数以上のデータが記憶されている場合に、所定数以上のデータのうちの最古のデータを削除してもよい。これにより、更新部505は、キャッシュメモリの使用量を抑制した上で、キャッシュメモリのデータに最新のデータを記憶しておくことができる。
また、更新部505は、キャッシュメモリの中に、抽出部502によってデータが抽出されていないデータが第1の数以上記憶されている場合に、抽出部502によってデータが抽出されていないデータのうちの最古のデータを削除してもよい。これにより、更新部505は、キャッシュメモリの使用量を抑制した上で、キャッシュメモリのデータに最新のデータを記憶しておくことができる。
また、更新部505は、キャッシュメモリの中に、抽出部502によってデータが抽出されたデータが第2の数以上記憶されている場合に、抽出部502によってデータが抽出されたデータのうちの最古のデータを削除してもよい。これにより、更新部505は、キャッシュメモリの使用量を抑制した上で、キャッシュメモリのデータに最新のデータを記憶しておくことができる。
(ストレージ装置100の動作例)
次に、図6〜図11を用いて、ストレージ装置100の動作例について説明する。以下の説明では、上述した第1の書き込み動作を行う場合のストレージ装置100の動作例を「第1の動作例」と表記する場合がある。また、上述した第2の書き込み動作を行う場合のストレージ装置100の動作例を「第2の動作例」と表記する場合がある。
<第1の動作例>
図6〜図8は、第1の動作例を示す説明図である。まず、図6を用いて、第1の動作例におけるディスクへの書き込み制御内容の一例を示す。図6に示すように、ストレージ装置100は、ディスク610とキャッシュメモリ620とを有する。
ディスク610は、所定長単位で区切られた物理セクタを有し、物理セクタごとに所定長単位のデータが読み書きされる記憶媒体である。図6の例では、ディスク610は、512Bの論理セクタの8個分の集合を、4kBの物理セクタとして扱う。従って、ディスク610には、4kB単位でデータが読み書きされる。
より具体的には、ディスク610は、LBA「0」〜「7」により識別される各々512Bの論理セクタL0〜L7を、PBA「0」により識別される4kBの物理セクタP0として扱う。また、ディスク610は、LBA「8」〜「F」により識別される各々512Bの論理セクタL8〜LFの集合を、PBA「1」により識別される4kBの物理セクタP1として扱う。
キャッシュメモリ620は、ディスク610より応答性能がよく、512B単位のデータが読み書きされる記憶媒体である。キャッシュメモリ620には、過去にストレージ装置100がRMWによりディスク610に書き込んだデータと同一内容の複製データが記憶される。ストレージ装置100は、ライトデータ130を受け付けて、ライトデータ130のディスク610への書き込みを制御する。
以下では、ストレージ装置100が、アンアラインなライトデータ130を受け付けた場合を例に挙げて、ライトデータ130のディスク610への書き込みを制御する処理の一例について示す。アンアラインなライトデータ130は、ライトデータ130の書込先となる記憶領域の先頭または末尾がディスク610のいずれかの物理セクタの先頭または末尾に一致しないデータである。図6の例では、ストレージ装置100は、LBA「0」〜「9」により識別される書込先となる記憶領域L0〜L9に書き込むライトデータ130を受け付ける。
ストレージ装置100は、ライトデータ130を受け付けると、ライトデータ130がアラインなデータであるか否かを判定する。ストレージ装置100は、例えば、書込先となる記憶領域の先頭または末尾が、ディスク610のセクタの先頭または末尾に一致しているか否かを判定する。ここで、書込先となる記憶領域L0〜L9の先頭は物理セクタP0の先頭に一致しているが、書込先となる記憶領域L0〜L9の末尾は物理セクタP0,P1のいずれの末尾にも一致していない。換言すれば、ライトデータ130は、アラインなデータではない。
従って、ストレージ装置100は、ライトデータ130の末尾側を補完してアラインなデータに変換してから、ディスク610への書き込みを制御する。ストレージ装置100は、例えば、キャッシュメモリ620から、ライトデータ130の末尾側に付加すべき、論理セクタL8〜LFに記憶されているデータを探索する。次に、ストレージ装置100は、探索できた場合は、探索されたデータをキャッシュメモリ620から抽出し、抽出したデータをライトデータ130の末尾に付加する。これにより、ストレージ装置100は、ライトデータ130からアラインなデータを作成することができる。
そして、ストレージ装置100は、作成したアラインなデータのディスク610への書き込みを制御する。ストレージ装置100は、例えば、作成したアラインなデータのうちの物理セクタP0が書込先となる記憶領域である4kBのデータを512Bずつ、ライトコマンドとして、ディスク610に送信する。ここで、ディスク610は、受信したデータを4kBのデータに纏めて、物理セクタP0にRMWなしに書き込む。
また、ストレージ装置100は、作成したアラインなデータのうちの物理セクタP1が書込先となる記憶領域であるデータを512Bずつ、ライトコマンドとして、ディスク610に送信する。ここで、ディスク610は、受信したデータを4kBのデータに纏めて、物理セクタP1にRMWなしに書き込む。このように、ストレージ装置100は、ライトデータ130の書き込みにおけるディスク610へのアクセス回数を減らすることができる。結果として、ストレージ装置100は、RMWによるディスク610の回転待ち時間の発生を抑制し、データの書き込みを高速化することができる。
一方で、ストレージ装置100は、ライトデータ130の末尾側に付加すべきデータを探索できなかった場合は、アンアラインなライトデータ130のディスク610への書き込みを制御する。ストレージ装置100は、例えば、アンアラインなライトデータ130のうちの物理セクタP0が書込先となる記憶領域であるデータを512Bずつ、ライトコマンドとして、ディスク610に送信する。ここで、ディスク610は、受信したデータを4kBのデータに纏めて、物理セクタP0にRMWなしに書き込む。
また、ストレージ装置100は、アンアラインなライトデータ130のうちの物理セクタP1が書込先となる記憶領域であるデータを512Bずつ、ライトコマンドとして、ディスク610に送信する。ここで、ディスク610は、受信したデータが4kB分ないため、受信したデータからRMWによりアラインなデータを作成して、物理セクタP1に書き込む。この後、ストレージ装置100は、ディスク610によってRMWされた物理セクタP1のデータを読み出して、キャッシュメモリ620に格納する。このように、ストレージ装置100は、ディスク610によりRMWが行われた場合、次回の書き込み時に探索できるように、キャッシュメモリ620に格納する。
次に、図7および図8を用いて、第1の動作例におけるキャッシュメモリ620の更新内容の一例について示す。図7において、ストレージ装置100は、論理セクタL2〜L11が書込先となる記憶領域であるライトデータ130を受け付ける。次に、ストレージ装置100は、書込先となる記憶領域L2〜L11の先頭がディスク610の物理セクタP0〜P2のいずれの先頭にも一致しないと判定し、書込先となる記憶領域L2〜L11の末尾がディスク610の物理セクタP0〜P2のいずれの末尾にも一致しないと判定する。
そして、ストレージ装置100は、MRUテーブル300とMFUテーブル400とを用いて、キャッシュメモリ620から、ライトデータ130の先頭側に付加すべき論理セクタL0〜L7に記憶されているデータを探索する。ストレージ装置は、例えば、MRUテーブル300とMFUテーブル400との各レコードの中から、アドレス項目にLBA「0」〜「7」が含まれるレコードを探索する。
また、ストレージ装置100は、MRUテーブル300とMFUテーブル400とを用いて、キャッシュメモリ620から、ライトデータ130の末尾側に付加すべき、LBA「12」〜「17」により識別される論理セクタに記憶されているデータを探索する。ストレージ装置100は、例えば、MRUテーブル300とMFUテーブル400との各レコードの中から、アドレス項目にLBA「12」〜「17」が含まれるレコードを探索する。
ここで、ストレージ装置100は、MRUテーブル300にアドレス項目にLBA「0」〜「7」が含まれるレコードがあるため、キャッシュメモリ620に論理セクタL0〜L7に記憶されているデータが記憶されていると判定する。次に、ストレージ装置100は、キャッシュメモリ620から論理セクタL0〜L7に記憶されているデータを抽出する。そして、ストレージ装置100は、抽出したデータをライトデータ130の先頭に付加する。ここで、図8の説明に移行する。
図8において、ストレージ装置100は、論理セクタL0〜L7が書込先となる記憶領域であるデータを512Bずつ、ライトコマンドとして、ディスク610に送信する。ここで、ディスク610は、受信した論理セクタL0〜L7が書込先となる記憶領域である4kBのデータを纏めて、論理セクタL0〜L7が割り当てられた物理セクタP0にRMWなしに書き込む。
また、ストレージ装置100は、論理セクタL8〜LFが書込先となる記憶領域であるデータを512Bずつ、ライトコマンドとして、ディスク610に送信する。ここで、ディスク610は、受信した論理セクタL8〜LFが書込先となる記憶領域である4kBのデータを纏めて、論理セクタL8〜LFが割り当てられた物理セクタP1にRMWなしに書き込む。
また、ストレージ装置100は、論理セクタL10〜L11が書込先となる記憶領域であるデータを512Bずつ、ライトコマンドとして、ディスク610に送信する。ここで、ディスク610は、受信したデータが4kB分ないため、受信したデータからRMWによりアラインなデータを作成して物理セクタP2に書き込む。
そして、ストレージ装置100は、MRUテーブル300に記憶されているLBA「0」〜「7」の範囲を示すレコードが利用されたため、LBA「0」〜「7」の範囲を示すレコードをMFUテーブル400に移行する。また、ストレージ装置100は、MRUテーブル300にRMWが行われたLBA「12」〜「17」の範囲を示すレコードがないため、MRUテーブル300にLBA「12」〜「17」の範囲と有効フラグ「0」とを示すレコードを追加する。
この後、ストレージ装置100は、有効フラグが「0」であるレコードが示すLBA「10」〜「17」により識別される論理セクタL10〜L17に記憶されているデータを、ディスク610から読み出して、キャッシュメモリ620に格納する。ここで、ストレージ装置100は、有効フラグを「0」から「1」に更新する。このように、ストレージ装置100は、ディスク610によってRMWされた物理セクタP2のデータを、次回の書き込み時に探索できるように、キャッシュメモリ620に格納する。
<第2の動作例>
図9〜図11は、第2の動作例を示す説明図である。まず、図9を用いて、第2の動作例におけるディスク610への書き込み制御内容の一例を示す。図9に示すように、ストレージ装置100は、ディスク610とキャッシュメモリ620とを有する。
ディスク610は、所定長単位で区切られた物理セクタを有し、物理セクタごとに所定長単位のデータが読み書きされる記憶媒体である。図9の例では、ディスク610は、4kB単位の物理セクタを有する。従って、ディスク610には、4kB単位でデータが読み書きされる。より具体的には、ディスク610は、PBA「0」により識別される4kBの物理セクタと、PBA「1」により識別される4kBの物理セクタと、を有する。キャッシュメモリ620は、図6と同様のため説明を省略する。
ストレージ装置100は、ディスク610のPBA「0」により識別される4kBの物理セクタP0に、LBA「0」〜「7」により識別される各々512Bの論理セクタL0〜L7を割り当てている。また、ストレージ装置100は、ディスク610のPBA「1」により識別される4kBの物理セクタP1に、LBA「8」〜「F」により識別される各々512Bの論理セクタL8〜LFを割り当てている。
以下では、ストレージ装置100が、アンアラインなライトデータ130を受け付けた場合を例に挙げて、ライトデータ130のディスク610への書き込みを制御する処理の一例について示す。図9の例では、ストレージ装置100は、図6と同様に、LBA「0」〜「9」により識別される書込先となる記憶領域L0〜L9に書き込むライトデータ130を受け付ける。
ストレージ装置100は、ライトデータ130を受け付けると、ライトデータ130がアラインなデータであるか否かを判定する。ストレージ装置100は、例えば、書込先となる記憶領域の先頭または末尾が、ディスク610のセクタの先頭または末尾に一致しているか否かを判定する。ここで、図6と同様に、ライトデータ130は、アラインなデータではない。
従って、ストレージ装置100は、ライトデータ130の末尾側を補完してアラインなデータに変換してから、ディスク610への書き込みを制御する。ストレージ装置100は、例えば、キャッシュメモリ620から、ライトデータ130の末尾側に付加すべき、論理セクタL8〜LFに記憶されているデータを探索する。次に、ストレージ装置100は、探索できた場合は、探索されたデータをキャッシュメモリ620から抽出し、抽出したデータをライトデータ130の末尾に付加する。これにより、ストレージ装置100は、ライトデータ130からアラインなデータを作成することができる。
そして、ストレージ装置100は、作成したアラインなデータのディスク610への書き込みを制御する。ストレージ装置100は、例えば、作成したアラインなデータのうちの物理セクタP0が書込先となる記憶領域である4kBのデータを、ライトコマンドとして、ディスク610に送信する。ここで、ディスク610は、受信したデータを物理セクタP0に書き込む。
また、ストレージ装置100は、作成したアラインなデータのうちの物理セクタP1が書込先となる記憶領域である4kBのデータを、ライトコマンドとして、ディスク610に送信する。ここで、ディスク610は、受信したデータを、物理セクタP1に書き込む。このように、ストレージ装置100は、ライトデータ130の書き込みにおけるディスク610へのアクセス回数を減らすることができる。結果として、ストレージ装置100は、RMWによるディスク610の回転待ち時間の発生を抑制し、データの書き込みを高速化することができる。
一方で、ストレージ装置100は、ライトデータ130の末尾側に付加すべきデータを探索できなかった場合は、アンアラインなライトデータ130のディスク610への書き込みを制御する。ストレージ装置100は、例えば、アンアラインなライトデータ130のうちの物理セクタP0が書込先となる記憶領域である4kBのデータを、ライトコマンドとして、ディスク610に送信する。ここで、ディスク610は、受信したデータを物理セクタP0に書き込む。
また、ストレージ装置100は、ライトデータ130の末尾側に付加すべき論理セクタLA〜LFに記憶されているデータを含む物理セクタP1に記憶されているデータを、ディスク610から抽出する。次に、ストレージ装置100は、抽出したデータから、論理セクタLA〜LFに記憶されているデータを抽出する。そして、ストレージ装置100は、抽出したデータを、アンアラインなライトデータ130のうちの物理セクタP1が書込先となる記憶領域であるデータの末尾に付加する。次に、ストレージ装置100は、付加したデータをライトコマンドとしてディスク610に送信する。ここで、ディスク610は、受信したデータを物理セクタP1に書き込む。
この時、ストレージ装置100は、ディスク610から抽出した物理セクタP1に記憶されているデータを、キャッシュメモリ620に格納する。このように、ストレージ装置100は、RMWを行った場合、次回の書き込み時に探索できるように、キャッシュメモリ620に格納する。
次に、図10および図11を用いて、第2の動作例におけるキャッシュメモリ620の更新内容の一例について示す。図10において、ストレージ装置100は、論理セクタL2〜L11が書込先となる記憶領域であるライトデータ130を受け付ける。次に、ストレージ装置100は、書込先となる記憶領域L2〜L11の先頭がディスク610の物理セクタP0〜P2のいずれの先頭にも一致しないと判定し、書込先となる記憶領域L2〜L11の末尾がディスク610の物理セクタP0〜P2のいずれの末尾にも一致しないと判定する。
そして、ストレージ装置100は、MRUテーブル300とMFUテーブル400とを用いて、キャッシュメモリ620から、ライトデータ130の先頭側に付加すべき論理セクタL0〜L7に記憶されているデータを探索する。ストレージ装置は、例えば、MRUテーブル300とMFUテーブル400との各レコードの中から、アドレス項目にLBA「0」〜「7」が含まれるレコードを探索する。
また、ストレージ装置100は、MRUテーブル300とMFUテーブル400とを用いて、キャッシュメモリ620から、ライトデータ130の末尾側に付加すべき、LBA「12」〜「17」により識別される論理セクタに記憶されているデータを探索する。ストレージ装置100は、例えば、MRUテーブル300とMFUテーブル400との各レコードの中から、アドレス項目にLBA「12」〜「17」が含まれるレコードを探索する。
ここで、ストレージ装置100は、MRUテーブル300にアドレス項目にLBA「0」〜「7」が含まれるレコードがあるため、キャッシュメモリ620に論理セクタL0〜L7に記憶されているデータが記憶されていると判定する。次に、ストレージ装置100は、キャッシュメモリ620から論理セクタL0〜L7に記憶されているデータを抽出する。そして、ストレージ装置100は、抽出したデータをライトデータ130の先頭に付加する。ここで、図11の説明に移行する。
図11において、ストレージ装置100は、論理セクタL0〜L7が割り当てられた物理セクタP0が書込先となる記憶領域である4kBのデータを、ライトコマンドとして、ディスク610に送信する。ここで、ディスク610は、受信した4kBのデータを、物理セクタP0に書き込む。
また、ストレージ装置100は、論理セクタL8〜LFが割り当てられた物理セクタP1が書込先となる記憶領域である4kBのデータを、ライトコマンドとして、ディスク610に送信する。ここで、ディスク610は、受信した4kBのデータを、物理セクタP1に書き込む。
また、ストレージ装置100は、ライトデータ130の末尾側に付加すべき論理セクタL12〜L17に記憶されているデータが含まれる物理セクタP2に記憶されているデータを、ディスク610から抽出する。次に、ストレージ装置100は、抽出したデータから、論理セクタL12〜L17に記憶されているデータを抽出する。そして、ストレージ装置100は、抽出したデータを、ライトデータ130のうちの論理セクタL10〜L11が書込先となる記憶領域であるデータの末尾に付加する。
次に、ストレージ装置100は、付加後の4kBのデータを、ライトコマンドとして、ディスク610に送信する。ここで、ディスク610は、受信した4kBのデータを、物理セクタP2にRMWなしに書き込む。
次に、ストレージ装置100は、MRUテーブル300に記憶されているLBA「0」〜「7」の範囲を示すレコードが利用されたため、LBA「0」〜「7」の範囲を示すレコードをMFUテーブル400に移行する。そして、ストレージ装置100は、ディスク610から抽出した物理セクタP2に書き込んだデータと同一内容のデータを、キャッシュメモリ620に格納する。また、ストレージ装置100は、MRUテーブル300にRMWが行われたLBA「12」〜「17」の範囲を示すレコードがないため、MRUテーブル300にLBA「12」〜「17」の範囲と有効フラグ「1」とを示すレコードを追加する。
このように、ストレージ装置100は、RMWされた物理セクタP2のデータを、次回の書き込み時に探索できるように、キャッシュメモリ620に格納する。また、例えば、第2の動作例においては、MRUテーブル300の有効フラグ項目はなくてもよい。
(書込制御処理手順)
図12は、書込制御処理手順の一例を示すフローチャートである。書込制御処理は、上述した第1の動作例または第2の動作例を実行する処理である。
図12において、ストレージ装置100は、ライトデータ130を受け付けたか否かを判定する(ステップS1201)。ここで、ライトデータ130を受け付けていない場合(ステップS1201:No)、ストレージ装置100は、ステップS1201に戻り、ライトデータ130を受け付けるのを待つ。
一方、ライトデータ130を受け付けた場合(ステップS1201:Yes)、ストレージ装置100は、ライトデータ130の先頭がアラインであるか否かを判定する(ステップS1202)。ここで、アラインである場合(ステップS1202:Yes)、ストレージ装置100は、ステップS1205に移行する。
一方、アラインではない場合(ステップS1202:No)、ストレージ装置100は、MRUテーブル300とMFUテーブル400とを用いて、ライトデータ130の先頭側に付加すべきディスク610のセクタに記憶されているデータと同一内容のデータが、キャッシュメモリ620上にあるか否かを判定する(ステップS1203)。ここで、キャッシュメモリ620上にない場合(ステップS1203:No)、ストレージ装置100は、ステップS1205に移行する。
一方、キャッシュメモリ620上にある場合(ステップS1203:Yes)、ストレージ装置100は、キャッシュメモリ620上の当該データを抽出して、抽出したデータをライトデータ130の先頭に付加して(ステップS1204)、ステップS1205に移行する。
ステップS1205において、ストレージ装置100は、ライトデータ130の末尾がアラインであるか否かを判定する(ステップS1205)。ここで、アラインである場合(ステップS1205:Yes)、ストレージ装置100は、ステップS1208に移行する。
一方、アラインではない場合(ステップS1205:No)、ストレージ装置100は、MRUテーブル300とMFUテーブル400とを用いて、ライトデータ130の末尾側に付加すべきディスク610のセクタに記憶されているデータと同一内容のデータが、キャッシュメモリ620上にあるか否かを判定する(ステップS1206)。ここで、キャッシュメモリ620上にない場合(ステップS1206:No)、ストレージ装置100は、ステップS1208に移行する。
一方、キャッシュメモリ620上にある場合(ステップS1206:Yes)、ストレージ装置100は、キャッシュメモリ620上の当該データを抽出して、抽出したデータをライトデータ130の末尾に付加して(ステップS1207)、ステップS1208に移行する。
ステップS1208において、ストレージ装置100は、ライトデータ130のディスク610への書き込みを制御する(ステップS1208)。例えば、ディスク610が第1の種類であれば、ストレージ装置100は、ライトデータ130を512Bずつライトコマンドとしてディスク610に送信する。また、例えば、ディスク610が第2の種類であれば、ストレージ装置100は、ライトデータ130を4kBずつライトコマンドとしてディスク610に送信する。ストレージ装置100は、ライトデータ130が4kBずつ送信できない場合は、ライトデータ130からRMWにより物理セクタ単位で書き込みできるデータに作成して、4kBずつ送信する。次に、ストレージ装置100は、図13に後述するデータ更新処理を実行する(ステップS1209)。そして、ストレージ装置100は、書込制御処理を終了する。
これにより、ストレージ装置100は、ライトデータ130のディスク610への書き込みを制御する場合におけるディスク610へのアクセス回数を減らすることができる。また、例えば、図12において、ステップS1202とステップS1203との処理は実行順序が逆であってもよいし、ステップS1205とステップS1206との処理は実行順序が逆であってもよい。
(データ更新処理手順)
図13は、データ更新処理手順の一例を示すフローチャートである。データ更新処理は、上述したステップS1209の処理であって、キャッシュメモリ620とMRUテーブル300とMFUテーブル400との記憶内容を更新する処理である。
図13において、ストレージ装置100は、ステップS1204およびステップS1207の少なくともいずれかにおいてライトデータ130に付加されたデータがあるか否かを判定する(ステップS1301)。ここで、ステップS1204およびステップS1207において付加されたデータがない場合(ステップS1301:No)、ストレージ装置100は、ステップS1305に移行する。
一方、ステップS1204およびステップS1207の少なくともいずれかにおいて付加されたデータがある場合(ステップS1301:Yes)、ストレージ装置100は、ライトデータ130に付加されたデータに基づいて、キャッシュメモリ620の記憶内容を更新する(ステップS1302)。
次に、ストレージ装置100は、付加されたデータが、MRUテーブル300のアドレス項目が示すLBAの範囲により識別される論理セクタに記憶されているデータと同一内容のデータであるか否かを判定する(ステップS1303)。ここで、MRUテーブル300のアドレス項目が示すLBAの範囲により識別される論理セクタに記憶されているデータと同一内容のデータではない場合(ステップS1303:No)、ストレージ装置100は、ステップS1305に移行する。
一方、MRUテーブル300のアドレス項目が示すLBAの範囲により識別される論理セクタに記憶されているデータと同一内容のデータである場合(ステップS1303:Yes)、ストレージ装置100は、当該アドレス項目を含むレコードをMFUテーブル400に移行する(ステップS1304)。そして、ストレージ装置100は、ステップS1305に移行する。
ステップS1305において、ストレージ装置100は、ステップS1208においてRMWが行われたか否かを判定する(ステップS1305)。ここで、行われていない場合(ステップS1305:No)、ストレージ装置100はデータ更新処理を終了する。
一方、行われた場合(ステップS1305:Yes)、ストレージ装置100は、RMWが行われたセクタに記憶されているデータをキャッシュメモリ620に格納する(ステップS1306)。そして、ストレージ装置100は、データ更新処理を終了する。これにより、ストレージ装置100は、次回のデータのディスク610への書き込みに備えて、キャッシュメモリ620とMRUテーブル300とMFUテーブル400との記憶内容を更新することができる。
以上説明したように、ストレージ装置100によれば、ライトデータ130の先頭または末尾がアンアラインであれば、ライトデータ130と第2の記憶部120のデータとを用いて先頭または末尾がアラインであるデータを作成して第1の記憶部110に書き込む。これにより、ストレージ装置100は、ライトデータ130の第1の記憶部110への書き込みにおけるディスク610へのアクセス回数を減らし、第1の記憶部110へのデータの書き込みを高速化することができる。
例えば、先頭がアンアラインである場合がある。この場合に、ストレージ装置100は、例えば、第1の記憶部110のいずれかの記憶領域の先頭からライトデータ130の書込先となる記憶領域の先頭までの記憶領域に記憶されているデータと同一内容のデータを、ライトデータ130の先頭に付加する。これにより、ストレージ装置100は、先頭がアンアラインであるライトデータ130から先頭がアラインであるデータを作成することができる。そして、ストレージ装置100は、作成したデータを、RMWなしに第1の記憶部110に書き込むことができる。
例えば、末尾がアンアラインである場合がある。この場合に、ストレージ装置100は、例えば、ライトデータ130の書込先となる記憶領域の末尾から第1の記憶部110のいずれかの記憶領域の末尾までの記憶領域に記憶されているデータと同一内容のデータを、ライトデータ130の末尾に付加する。これにより、ストレージ装置100は、先頭がアンアラインであるライトデータ130から先頭がアラインであるデータを作成することができる。そして、ストレージ装置100は、作成したデータを、RMWなしに第1の記憶部110に書き込むことができる。
例えば、先頭および末尾がアラインである場合に、ストレージ装置100は、ライトデータ130をそのまま第1の記憶部110に書き込む。これにより、ストレージ装置100は、RMWなしにライトデータ130を第1の記憶部110に書き込むことができる。
また、ストレージ装置100は、データを作成して第1の記憶部110の記憶領域に書き込んだ場合に、当該記憶領域に対応付けられた第2の記憶部120に記憶されているデータを、書き込んだデータに基づいて更新する。これにより、ストレージ装置100は、第1の記憶部110に記憶されているデータと、当該データに対応する第2の記憶部120に記憶されているデータと、を同一内容のデータにすることができる。
また、ストレージ装置100は、RMWを行った場合には、RMWにより第1の記憶部110に書き込んだデータと同一内容のデータを第2の記憶部120に格納する。これにより、ストレージ装置100は、今回RMWにより書き込んだ記憶領域と同一の記憶領域に次回書き込む場合に、RMWなしに書き込むことができる。
ストレージ装置100は、第2の記憶部120に記憶されているデータが所定数以上ある場合に、所定数以上あるデータのうち、第2の記憶部120に最古に格納されたデータを削除する。これにより、ストレージ装置100は、第2の記憶部120の記憶領域の使用量を抑制した上で、第2の記憶部120に最近格納されたデータを所定数記憶しておくことができる。
ストレージ装置100は、第2の記憶部120に記憶されてから利用されていないデータが所定数以上ある場合に、所定数以上ある利用されていないデータのうち、第2の記憶部120に最古に格納されたデータを削除する。また、ストレージ装置100は、第2の記憶部120に記憶されてから利用されたデータが所定数以上ある場合に、所定数以上ある利用されたデータのうち、最古に利用されたデータを削除する。これにより、ストレージ装置100は、第2の記憶部120の記憶領域の使用量を抑制した上で、第2の記憶部120に最近格納されたデータを所定数記憶しておくことができ、最近利用されたデータを所定数記憶しておくことができる。
なお、本実施の形態で説明した書込制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本書込制御プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本書込制御プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)所定長単位で区切られた記憶領域に対して前記所定長のデータの読み書きが行われる第1の記憶部と、
前記第1の記憶部のいずれかの記憶領域に対応付けて前記いずれかの記憶領域に記憶されている前記所定長のデータと同一内容のデータが記憶される第2の記憶部と、
前記第1の記憶部に書き込むライトデータの書込先となる記憶領域の先頭または末尾が前記いずれかの記憶領域に含まれる場合に、前記書込先となる記憶領域の先頭または末尾が、前記いずれかの記憶領域の先頭または末尾に一致するか否かを判定する判定部と、
前記判定部によって前記いずれかの記憶領域の先頭または末尾に一致しないと判定された場合に、前記いずれかの記憶領域のうちの前記書込先となる記憶領域と重複していない記憶領域に記憶されているデータと同一内容のデータを前記第2の記憶部から抽出する抽出部と、
前記抽出部によって抽出されたデータと、前記ライトデータと、を用いて、前記第1の記憶部に書き込むデータを作成する作成部と、
前記作成部によって作成されたデータの前記第1の記憶部への書き込みを制御する制御部と、
を有することを特徴とするストレージ装置。
(付記2)前記抽出部は、
前記判定部によって前記いずれかの記憶領域の先頭に一致しないと判定された場合に、前記いずれかの記憶領域の先頭から前記書込先となる記憶領域の先頭までの記憶領域に記憶されているデータと同一内容のデータを前記第2の記憶部から抽出し、
前記作成部は、
前記抽出部によって抽出されたデータを前記ライトデータの先頭に付加することにより、前記第1の記憶部に書き込むデータを作成することを特徴とする付記1に記載のストレージ装置。
(付記3)前記抽出部は、
前記判定部によって前記いずれかの記憶領域の末尾に一致しないと判定された場合に、前記書込先となる記憶領域の末尾から前記いずれかの記憶領域の末尾までの記憶領域に記憶されているデータと同一内容のデータを前記第2の記憶部から抽出し、
前記作成部は、
前記抽出部によって抽出されたデータを前記ライトデータの末尾に付加することにより、前記第1の記憶部に書き込むデータを作成することを特徴とする付記1または2に記載のストレージ装置。
(付記4)前記制御部は、
前記判定部によって先頭および末尾が一致すると判定された場合に、前記ライトデータの前記第1の記憶部への書き込みを制御することを特徴とする付記1〜3のいずれか一つに記載のストレージ装置。
(付記5)前記作成部によって作成されたデータに基づいて、前記第2の記憶部において前記いずれかの記憶領域に対応付けられたデータを更新する更新部を有することを特徴とする付記1〜4のいずれか一つに記載のストレージ装置。
(付記6)前記書込先となる記憶領域の先頭または末尾が前記いずれかの記憶領域とは異なる他の記憶領域に含まれる場合に、前記他の記憶領域に記憶されているデータを前記第1の記憶部から読み出して前記他の記憶領域と対応付けて前記第2の記憶部に格納する更新部を有することを特徴とする付記1〜5のいずれか一つに記載のストレージ装置。
(付記7)前記更新部は、前記第2の記憶部に記憶されているデータの数が所定数以上である場合に、前記第2の記憶部に記憶されている所定数以上のデータのうちの最古のデータを削除することを特徴とする付記5または6に記載のストレージ装置。
(付記8)前記更新部は、前記第2の記憶部の中に、前記抽出部によってデータが抽出されていないデータが第1の数以上記憶されている場合に、前記抽出部によってデータが抽出されていないデータのうちの最古のデータを削除し、前記第2の記憶部の中に、前記抽出部によってデータが抽出されたデータが第2の数以上記憶されている場合に、前記抽出部によってデータが抽出されたデータのうちの最古のデータを削除することを特徴とする付記5または6に記載のストレージ装置。
(付記9)コンピュータが、
所定長単位で区切られた記憶領域に対して前記所定長のデータの読み書きが行われる第1の記憶部に書き込むライトデータの書込先となる記憶領域の先頭または末尾が、前記第1の記憶部のいずれかの記憶領域に含まれる場合に、前記書込先となる記憶領域の先頭または末尾が、前記いずれかの記憶領域の先頭または末尾に一致するか否かを判定し、
前記いずれかの記憶領域の先頭または末尾に一致しないと判定した場合に、前記いずれかの記憶領域のうちの前記書込先となる記憶領域と重複していない記憶領域に記憶されているデータと同一内容のデータを、前記いずれかの記憶領域に対応付けて前記いずれかの記憶領域に記憶されている前記所定長のデータと同一内容のデータが記憶される第2の記憶部から抽出し、
抽出したデータと、前記ライトデータと、を用いて、前記第1の記憶部に書き込むデータを作成し、
作成したデータの前記第1の記憶部への書き込みを制御する、
処理を実行することを特徴とする書込制御方法。
(付記10)コンピュータに、
所定長単位で区切られた記憶領域に対して前記所定長のデータの読み書きが行われる第1の記憶部に書き込むライトデータの書込先となる記憶領域の先頭または末尾が、前記第1の記憶部のいずれかの記憶領域に含まれる場合に、前記書込先となる記憶領域の先頭または末尾が、前記いずれかの記憶領域の先頭または末尾に一致するか否かを判定し、
前記いずれかの記憶領域の先頭または末尾に一致しないと判定した場合に、前記いずれかの記憶領域のうちの前記書込先となる記憶領域と重複していない記憶領域に記憶されているデータと同一内容のデータを、前記いずれかの記憶領域に対応付けて前記いずれかの記憶領域に記憶されている前記所定長のデータと同一内容のデータが記憶される第2の記憶部から抽出し、
抽出したデータと、前記ライトデータと、を用いて、前記第1の記憶部に書き込むデータを作成し、
作成したデータの前記第1の記憶部への書き込みを制御する、
処理を実行させることを特徴とする書込制御プログラム。
100 ストレージ装置
110 第1の記憶部
120 第2の記憶部
501 判定部
502 抽出部
503 作成部
504 制御部
505 更新部

Claims (6)

  1. 所定長単位で区切られた記憶領域に対して前記所定長のデータの読み書きが行われる第1の記憶部と、
    前記第1の記憶部のいずれかの記憶領域に対応付けて前記いずれかの記憶領域に記憶されている前記所定長のデータと同一内容のデータが記憶される第2の記憶部と、
    前記第1の記憶部に書き込むライトデータの書込先となる記憶領域の先頭または末尾が前記いずれかの記憶領域に含まれる場合に、前記書込先となる記憶領域の先頭または末尾が、前記いずれかの記憶領域の先頭または末尾に一致するか否かを判定する判定部と、
    前記判定部によって前記いずれかの記憶領域の先頭または末尾に一致しないと判定された場合に、前記いずれかの記憶領域のうちの前記書込先となる記憶領域と重複していない記憶領域に記憶されているデータと同一内容のデータを前記第2の記憶部から抽出する抽出部と、
    前記抽出部によって抽出されたデータと、前記ライトデータと、を用いて、前記第1の記憶部に書き込むデータを作成する作成部と、
    前記作成部によって作成されたデータの前記第1の記憶部への書き込みを制御する制御部と、
    を有することを特徴とするストレージ装置。
  2. 前記抽出部は、
    前記判定部によって前記いずれかの記憶領域の先頭に一致しないと判定された場合に、前記いずれかの記憶領域の先頭から前記書込先となる記憶領域の先頭までの記憶領域に記憶されているデータと同一内容のデータを前記第2の記憶部から抽出し、
    前記作成部は、
    前記抽出部によって抽出されたデータを前記ライトデータの先頭に付加することにより、前記第1の記憶部に書き込むデータを作成することを特徴とする請求項1に記載のストレージ装置。
  3. 前記抽出部は、
    前記判定部によって前記いずれかの記憶領域の末尾に一致しないと判定された場合に、前記書込先となる記憶領域の末尾から前記いずれかの記憶領域の末尾までの記憶領域に記憶されているデータと同一内容のデータを前記第2の記憶部から抽出し、
    前記作成部は、
    前記抽出部によって抽出されたデータを前記ライトデータの末尾に付加することにより、前記第1の記憶部に書き込むデータを作成することを特徴とする請求項1または2に記載のストレージ装置。
  4. 前記作成部によって作成されたデータに基づいて、前記第2の記憶部において前記いずれかの記憶領域に対応付けられたデータを更新する更新部を有することを特徴とする請求項1〜3のいずれか一つに記載のストレージ装置。
  5. コンピュータが、
    所定長単位で区切られた記憶領域に対して前記所定長のデータの読み書きが行われる第1の記憶部に書き込むライトデータの書込先となる記憶領域の先頭または末尾が、前記第1の記憶部のいずれかの記憶領域に含まれる場合に、前記書込先となる記憶領域の先頭または末尾が、前記いずれかの記憶領域の先頭または末尾に一致するか否かを判定し、
    前記いずれかの記憶領域の先頭または末尾に一致しないと判定した場合に、前記いずれかの記憶領域のうちの前記書込先となる記憶領域と重複していない記憶領域に記憶されているデータと同一内容のデータを、前記いずれかの記憶領域に対応付けて前記いずれかの記憶領域に記憶されている前記所定長のデータと同一内容のデータが記憶される第2の記憶部から抽出し、
    抽出したデータと、前記ライトデータと、を用いて、前記第1の記憶部に書き込むデータを作成し、
    作成したデータの前記第1の記憶部への書き込みを制御する、
    処理を実行することを特徴とする書込制御方法。
  6. コンピュータに、
    所定長単位で区切られた記憶領域に対して前記所定長のデータの読み書きが行われる第1の記憶部に書き込むライトデータの書込先となる記憶領域の先頭または末尾が、前記第1の記憶部のいずれかの記憶領域に含まれる場合に、前記書込先となる記憶領域の先頭または末尾が、前記いずれかの記憶領域の先頭または末尾に一致するか否かを判定し、
    前記いずれかの記憶領域の先頭または末尾に一致しないと判定した場合に、前記いずれかの記憶領域のうちの前記書込先となる記憶領域と重複していない記憶領域に記憶されているデータと同一内容のデータを、前記いずれかの記憶領域に対応付けて前記いずれかの記憶領域に記憶されている前記所定長のデータと同一内容のデータが記憶される第2の記憶部から抽出し、
    抽出したデータと、前記ライトデータと、を用いて、前記第1の記憶部に書き込むデータを作成し、
    作成したデータの前記第1の記憶部への書き込みを制御する、
    処理を実行させることを特徴とする書込制御プログラム。
JP2013006688A 2013-01-17 2013-01-17 ストレージ装置、書込制御方法、および書込制御プログラム Pending JP2014137749A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013006688A JP2014137749A (ja) 2013-01-17 2013-01-17 ストレージ装置、書込制御方法、および書込制御プログラム
US14/075,202 US9021160B2 (en) 2013-01-17 2013-11-08 Storage apparatus and writing control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013006688A JP2014137749A (ja) 2013-01-17 2013-01-17 ストレージ装置、書込制御方法、および書込制御プログラム

Publications (1)

Publication Number Publication Date
JP2014137749A true JP2014137749A (ja) 2014-07-28

Family

ID=51164929

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013006688A Pending JP2014137749A (ja) 2013-01-17 2013-01-17 ストレージ装置、書込制御方法、および書込制御プログラム

Country Status (2)

Country Link
US (1) US9021160B2 (ja)
JP (1) JP2014137749A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6540363B2 (ja) * 2015-08-19 2019-07-10 富士通株式会社 ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02197941A (ja) * 1989-01-27 1990-08-06 Oki Electric Ind Co Ltd ディスクキャッシュの制御方式
JPH11338775A (ja) * 1998-05-27 1999-12-10 Nec Corp キャッシュページの管理方法およびキャッシュページの管理プログラムを記憶した媒体
JP2007011619A (ja) * 2005-06-29 2007-01-18 Sharp Corp 記録装置、並びに、そのプログラムおよび記録媒体
JP2010027114A (ja) * 2008-07-16 2010-02-04 Sony Corp 情報処理装置および方法、並びにプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5434992A (en) 1992-09-04 1995-07-18 International Business Machines Corporation Method and means for dynamically partitioning cache into a global and data type subcache hierarchy from a real time reference trace
US6801921B2 (en) * 2000-09-08 2004-10-05 Hitachi, Ltd. Method and system for managing multiple database storage units
JP4630933B2 (ja) 2009-05-15 2011-02-09 株式会社東芝 ディスクコントローラ、ディスクドライブ装置、及びディスク制御方法
AU2010294783B2 (en) * 2009-09-15 2015-04-16 Interdigital Ce Patent Holdings Method and device for providing complementary information

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02197941A (ja) * 1989-01-27 1990-08-06 Oki Electric Ind Co Ltd ディスクキャッシュの制御方式
JPH11338775A (ja) * 1998-05-27 1999-12-10 Nec Corp キャッシュページの管理方法およびキャッシュページの管理プログラムを記憶した媒体
JP2007011619A (ja) * 2005-06-29 2007-01-18 Sharp Corp 記録装置、並びに、そのプログラムおよび記録媒体
JP2010027114A (ja) * 2008-07-16 2010-02-04 Sony Corp 情報処理装置および方法、並びにプログラム

Also Published As

Publication number Publication date
US9021160B2 (en) 2015-04-28
US20140198402A1 (en) 2014-07-17

Similar Documents

Publication Publication Date Title
US11573701B2 (en) Memory device and host device
US9489239B2 (en) Systems and methods to manage tiered cache data storage
JP6076506B2 (ja) ストレージ装置
US9910798B2 (en) Storage controller cache memory operations that forego region locking
US20160041927A1 (en) Systems and Methods to Manage Cache Data Storage in Working Memory of Computing System
JP2018116329A (ja) ストレージ制御装置、およびストレージ制御プログラム
JP6089844B2 (ja) 制御装置,ストレージ装置,及び制御プログラム
KR20120102923A (ko) 복사 명령 및 이동 명령을 지원하는 스토리지 시스템 및 상기 스토리지 시스템의 동작 방법
JP5821744B2 (ja) データ有無判定装置、データ有無判定方法及びデータ有無判定プログラム
JP2014219750A (ja) 仮想ライブラリコントローラ及び制御方法
US9632950B2 (en) Storage control device controlling access to a storage device and access controlling method of a storage device
US20150121033A1 (en) Information processing apparatus and data transfer control method
US10430287B2 (en) Computer
JP2014137749A (ja) ストレージ装置、書込制御方法、および書込制御プログラム
US20190065395A1 (en) Storage device and data arrangement method
JP6874348B2 (ja) ストレージ制御装置、およびストレージ制御プログラム
US9454488B2 (en) Systems and methods to manage cache data storage
JP6243884B2 (ja) 情報処理装置、プロセッサ、および情報処理方法
US20220147446A1 (en) Offloading memory maintenance for a log-structured file system
JP6521694B2 (ja) 記憶制御システム及び記憶制御装置
JP2006127377A (ja) Fatファイルシステム
JP4204405B2 (ja) メモリ管理方式
US11698871B2 (en) Method for PRP/SGL handling for out-of-order NVME controllers
JP2004362092A (ja) Fatキャッシュ機能付きファイルシステム
US11099985B2 (en) Storage controller, storage array device, data depositing method, and storage medium

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150903

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160826

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160830

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161031

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170314