JP2014186412A - 制御装置,ストレージ装置,及び制御プログラム - Google Patents

制御装置,ストレージ装置,及び制御プログラム Download PDF

Info

Publication number
JP2014186412A
JP2014186412A JP2013059325A JP2013059325A JP2014186412A JP 2014186412 A JP2014186412 A JP 2014186412A JP 2013059325 A JP2013059325 A JP 2013059325A JP 2013059325 A JP2013059325 A JP 2013059325A JP 2014186412 A JP2014186412 A JP 2014186412A
Authority
JP
Japan
Prior art keywords
data
area
areas
write
storage
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.)
Granted
Application number
JP2013059325A
Other languages
English (en)
Other versions
JP6089844B2 (ja
Inventor
Hideshi Kobayashi
秀史 小林
Yoshihito Konta
與志仁 紺田
Jun Ito
惇 猪頭
Kotaro Nimura
康太郎 仁村
Marie Abe
麻理恵 安部
Mihoko Tojo
美帆子 東條
Masatomo Nakamura
政智 中村
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 JP2013059325A priority Critical patent/JP6089844B2/ja
Priority to US14/170,679 priority patent/US9703695B2/en
Publication of JP2014186412A publication Critical patent/JP2014186412A/ja
Application granted granted Critical
Publication of JP6089844B2 publication Critical patent/JP6089844B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】第1サイズの単位データを第1サイズと異なる第2サイズのデータ領域に保存する記憶装置における書込処理の性能低下を軽減させる。
【解決手段】記憶装置5のデータ領域を複数の第1サイズのデータブロックの記憶領域に割り当て、記憶装置5の複数の前記データ領域に同じ第1サイズのデータブロックを割り当てる割当処理部14と、各データ領域における前記複数の第1サイズのデータブロックの記憶領域のデータ保存状態を示す管理情報を管理する管理部13と、書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、該複数のデータ領域の中から一のデータ領域を判定する書込領域判定部11aと、前記書き込み対象のデータブロックのデータを含む前記第1サイズと異なる第2サイズの書込用データを生成して前記一のデータ領域に書き込む書込処理部11bと、を備える。
【選択図】図1

Description

本発明は、制御装置,ストレージ装置,及び制御プログラムに関する。
従来、512エミュレーションを行なう4KセクタHard Disk Drive(HDD)が知られている。4KセクタHDDは、ディスク(媒体)に記録されるデータの最小単位である1セクタが4Kバイト(4096バイト(4KiB))のHDDである。
512エミュレーションは、ディスク上では1セクタ=4096バイトであるが、PCやサーバ等のホスト装置に対するI/F(インタフェース)上では、512バイト/セクタとなるように行なわれるエミュレーションである。以下、512エミュレーションを行なう4KセクタHDDを4KセクタHDD(512E)という。
4KセクタHDDが登場する以前から、1セクタが512バイトであるHDDが用いられており、ホスト装置には、512バイト/セクタのHDDに合わせて512バイト単位でHDDに対して書込コマンドを発行するものが少なくない。
4KセクタHDD(512E)は、上記のような512バイト単位で書込コマンドを発行するホスト装置との互換性を担保するために、ホスト装置に対して512バイト/セクタのHDDと同様なI/Fを提供する。従って、ホスト装置は、512バイト/セクタのHDDへのアクセスと同様のコマンド及びデータサイズで、4KセクタHDD(512E)へのアクセスを行なうことができる。
ここで、4KセクタHDD(512E)では、ホスト装置からの書込コマンドに応じて、Read Modify Write(リードモディファイライト;以下、RMWという)が発生することがある。以下、図14及び図15を参照して、RMWについて説明する。
図14は、4KセクタHDD(512E)によるRMWの動作例を示す図であり、図15は、4KセクタHDD(512E)におけるLogical Block Address(LBA)とセクタとの対応関係を例示する図である。
図14に示すように、情報処理システム100は、ストレージ装置200及びホスト装置300を備える。ホスト装置300は、PCやサーバ等の情報処理装置であり、512バイト単位で書込コマンド及び読出コマンドを発行する。ストレージ装置200は、コントローラモジュール400及び4KセクタHDD(512E)500を備える。以下、4KセクタHDD(512E)500を単にHDD500ともいう。
コントローラモジュール400は、ホスト装置300からのアクセス要求に応じてHDD500に対してアクセスを行なう制御装置であり、HDD500に出力する書込データ及びHDD500から読み出した読出データ等を一時的に格納するメモリ410を備える。HDD500は、4KセクタHDD(512E)であり、コントローラモジュール400との間でやり取りされる書込/読出データを一時的に格納するメモリ510、及び、データを記憶する記憶領域(ディスク)520を備える。
HDD500は、図15に示すように、ホスト装置300に対するI/F上では512バイトを1ブロックとして管理する一方、ディスク上では4096バイトを1ブロック(セクタ)として管理する。ホスト装置300は、コントローラモジュール400配下に接続されたHDD500へアクセスを行なう際には、HDD500のI/Fによりホスト装置300が認識できる512バイト単位のLBAを指定して、コマンドを発行する。
なお、図15に示す例では、LBAの#00〜#15がそれぞれ512バイトのブロックであり、セクタ#0及び#1がそれぞれ4096バイトのブロックである。また、LBAの#00〜#07とHDD500のセクタ#0とが対応し、LBAの#08〜#15とHDD500のセクタ#1とが対応する。
図14に示す情報処理システム100において、ホスト装置300から512バイトの書込データをLBA#02に書き込む書込コマンドが発行されると、コントローラモジュール400は、書込データを一旦メモリ410に溜め込む。このとき、コントローラモジュール400は、書込データを512バイト単位のデータブロックで管理する。
そして、コントローラモジュール400は、メモリ410に溜め込んだ書込データを非同期でHDD500へ書き込む(図14中の矢印(1)参照)。HDD500は、書込データを受信すると、書き込み対象のブロックであるLBA#02を含む4096バイトのデータブロック#0を、記憶領域520からメモリ510に読み出す(図14中の矢印(2)参照)。
次いで、HDD500は、記憶領域520から読み出した4096バイトのデータとコントローラモジュール400から受信した書込データとをマージする(図14中の(3)参照)。つまり、HDD500は、読み出した4096バイトのデータのうち、LBA#02に対応する領域の512バイトのデータを、書込データで上書き(モディファイ)する。
最後に、HDD500は、メモリ510に保持されたマージ後の4096バイトのデータを記憶装置520へ書き込む(図14中の矢印(4)参照)。
以上のように、4KセクタHDD(512E)は、1セクタである4096バイト未満の書込データを受信すると、図14中の(2)〜(4)に示すRMWを行なう。
なお、関連する技術として、未記録Error Correction Code(ECC)ブロックを含む光ディスク等に、リードモディファイを行なわずにユーザデータを記録可能にする技術が知られている(例えば、特許文献1参照)。この技術では、光ディスク装置は、未使用ECCブロック内のセクタにユーザデータを記録するコマンドを受け取った場合、RMWを行なわずにホスト装置から転送されたユーザデータにダミーデータを付加する。そして、光ディスク装置は、ダミーデータの付加によりユーザデータを1ECCブロック分のデータ長とした上で目的のECCブロックに記録する。
また、関連する他の技術として、4Kバイトでディスクに読み書きするハードディスクドライブ装置において、ディスクに記憶されている512バイトの管理データを上書きする際の処理速度を向上させる技術が知られている(例えば、特許文献2参照)。この技術では、ハードディスクドライブ装置は、管理データを含む4Kバイトのデータを予めキャッシュメモリに記憶しておき、データの書込命令により、PCからの管理データでキャッシュメモリ内の管理データを更新する。そして、ハードディスクドライブ装置は、更新された管理データを含む4Kバイトのデータをキャッシュメモリからディスクに書き込む。
特開平10−106170号公報 特開2012−113789号公報
4KセクタHDD(512E)500において上述したRMWが発生すると、512バイト/セクタのHDDと比べて、HDDの性能低下が懸念される。
具体的には、512バイト/セクタのHDDは、例えば512バイトの書込データを受け取ると、書き込みのためのシーク処理、及び、書込データの書込処理を行なう。これに対し、4KセクタHDD(512E)は、RMWが発生すると、512バイト/セクタのHDDにおける処理に加えて、読み出しのためのシーク処理、データの読出処理、及び、マージ処理を行なう(図14の(2)〜(4)参照)。このように、RMWの処理は、512バイト/セクタのHDDによるデータの書き込みよりもオーバーヘッドが大きい。
特に、数ms程度の時間がかかるシーク処理に着目すると、512バイト/セクタのHDDでは書き込みのために1回行なわれるのに対し、RMWにおいては読み出し及び書き込みのために2回行なわれることになる。
以上のように、4KセクタHDD(512E)によるRMWは、HDD単体でみた場合、512バイト/セクタのHDDによるデータの書き込みよりもHDD性能を低下させる要因となる。
また、上述したユーザデータにダミーデータを付加する技術は、ダミーデータが付加されたユーザデータを、未使用の1ECCブロック内へ記録するものであり、既にデータが記憶されているブロック内への記録については、考慮されていない。
さらに、上述した4Kバイトのデータを予めキャッシュメモリに記憶しておく技術では、キャッシュメモリの占有時間及び占有率が高くなり、ディスクに対するキャッシュとして使用可能なキャッシュメモリの領域が減少する。キャッシュメモリの利用可能領域が減少すると、同容量のキャッシュメモリを有するHDDよりもキャッシュミスの可能性が高くなるため、HDDの性能低下が懸念される。
ここまで、4KセクタHDD(512E)においてRMWが発生する場合を例に挙げて説明したが、入力される最小サイズ(単位)と異なるサイズで書込データを保存し、RMWに類する処理を行なう他の記憶装置においても同様の問題がある。このような記憶装置の一例としては、4Kバイト等のページ単位で書込データを記憶するSolid State Drive(SSD)やUniversal Serial Bus(USB)メモリ等のフラッシュメモリが挙げられる。
1つの側面では、本発明は、第1サイズの単位データを第1サイズと異なる第2サイズのデータ領域に保存する記憶装置における書込処理の性能低下を軽減させることを目的とする。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の1つとして位置付けることができる。
本件の制御装置は、上位装置に対して第1サイズのデータブロック単位で入出力を行ない、記憶装置の各データ領域に対して前記第1サイズと異なる第2サイズ単位でデータの入出力を行なう制御装置であって、前記データ領域を複数の第1サイズのデータブロックの記憶領域に割り当て、複数の前記データ領域に同じ第1サイズのデータブロックを割り当てる処理を行なう割当処理部と、各データ領域における前記複数の第1サイズのデータブロックの記憶領域のデータ保存状態を示す第1管理情報を管理する管理部と、書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記第1管理情報に基づいて、該複数のデータ領域の中から一のデータ領域を判定する書込領域判定部と、前記書き込み対象のデータブロックのデータを含む前記第2サイズの書込用データを生成し、生成した前記書込用データを、前記書込領域判定部により判定された前記一のデータ領域に書き込む処理を行なう書込処理部と、を備える。
一実施形態によれば、第1サイズの単位データを第1サイズと異なる第2サイズのデータ領域に保存する記憶装置における書込処理の性能低下を軽減させることができる。
一実施形態に係る通信システムの構成例を示す図である。 図1に示すHDDにおけるLBAとセクタとの対応関係を例示する図である。 図1に示す処理部による動作例を説明するための図である。 図1に示す処理部による動作例を説明するための図である。 図1に示す処理部による動作例を説明するための図である。 図1に示す処理部による動作例を説明するための図である。 図1に示す処理部による動作例を説明するための図である。 図1に示す処理部による動作例を説明するための図である。 (a)及び(b)は、それぞれ、図7及び図8に示す動作例におけるHDDでのマージ量を説明するための図である。 図1に示す書込制御部による動作例を説明するフローチャートである。 図1に示す読出制御部による動作例を説明するフローチャートである。 一実施形態に係る情報処理システムの構成の変形例を示す図である。 図1又は図12に示すコントローラモジュールのハードウェア構成例を示す図である。 HDDによるリードモディファイライトの動作例を示す図である。 4KセクタHDD(512エミュレーション)におけるLBAとセクタとの対応関係を例示する図である。
以下、図面を参照して実施の形態を説明する。
〔1〕一実施形態
〔1−1〕情報処理システムの説明
図1は、一実施形態に係る情報処理システム1の構成例を示す図である。
図1に示すように、情報処理システム1は、ストレージ装置2及びホスト装置3を備える。ホスト装置3は、PCやサーバ等の情報処理装置であり、ストレージ装置2に対して512バイト単位で書込又は読出コマンドを発行する上位装置の一例である。ストレージ装置2は、コントローラモジュール4、少なくとも一つの4KセクタHDD(512E)5、チャネルアダプタ6、及び、デバイスアダプタ7を備える。以下、4KセクタHDD(512E)5を単にHDD5ともいう。
チャネルアダプタ6は、ホスト装置3と接続され、ホスト装置3とのインタフェース制御を行なうモジュールであり、ホスト装置3との間で通信やデータ転送を行なう。デバイスアダプタ7は、ストレージ装置2に収容されるHDD5とのインタフェース制御を行なうモジュールであり、HDD5との間で通信やデータ転送を行なう。
コントローラモジュール(制御装置,制御部)4は、ホスト装置3からのアクセス要求に応じてHDD5に対してアクセスを行なう制御装置であり、後述するメモリ20や各種資源の管理及びライトバック処理等の制御を行なうモジュールである。本実施形態に係るコントローラモジュール4は、ホスト装置3に対して第1サイズのデータブロック単位で入出力を行ない、HDD5の各データ領域に対して第1サイズと異なる第2サイズ単位でデータの入出力を行なう。
HDD(記憶装置)5は、図示しないCentral Processing Unit(CPU)等のプロセッサを備え、上述した512エミュレーションを行なう4KセクタHDDである。また、HDD5は、メモリ51、記憶領域52、及び、記憶装置ビットマップ53を備える。なお、HDD5に代えて、4Kバイト等のページ単位で書込データを記憶し、RMWに類する処理を行なうSSDやUSBメモリ等のフラッシュメモリが用いられてもよい。また、図1では、一つのHDD5のみを図示しているが、複数のHDD5がデバイスアダプタ7を介してコントローラモジュール4と接続されてもよい。
メモリ51は、コントローラモジュール4との間でやり取りされる書込/読出データを一時的に格納するものであり、例えば、Random Access Memory(RAM)等の揮発性メモリ又はフラッシュメモリ等の不揮発性メモリが挙げられる。なお、メモリ51は、上述した揮発性又は不揮発性メモリのほか、HDDやSSD等の記憶装置であってもよく、情報を記憶可能な種々のデバイスが用いられてよい。例えばメモリ51として、記憶領域52と同じ媒体上の別領域が用いられてもよい。
記憶領域52は、種々のデータやプログラムを記憶するディスク領域である。本実施形態に係る記憶領域52においては、一つのLBAに対して、複数(例えば二つ)のデータ領域が割り当てられる。以下、記憶領域52について、図2を参照して説明する。
図2は、図1に示すHDD5におけるLBAとセクタとの対応関係を例示する図である。HDD5は、図2に示すように、ホスト装置3に対するI/F上では512バイト(第1サイズ)を1ホストブロックとして管理する。ホストブロックは、HDD5に対するホスト装置3からのInput/Output(I/O)命令単位データブロックである。
一方、HDD5は、記憶領域52上では第1サイズの整数倍である4096バイト(第2サイズ)を1セクタブロックとして記憶領域52上の各セクタに対応付けて管理する。セクタブロックは、ハードディスクの記憶領域52に対するHDD5のコントローラからのI/O命令単位データブロックである。なお、図2に示すように、LBAの#00〜#15がそれぞれ512バイトのブロックであり、セクタ#0−0及び#0−1がそれぞれ4096バイトのブロックである。また、以下、セクタブロックを単にセクタという。
本実施形態に係るHDD5では、LBAの#00〜#07と、HDD5のセクタ#0−0及びセクタ#0−1とが対応する。すなわち、ホスト装置3が認識できる512バイト単位のLBAに対して、複数(図2に示す例では二つ)の4096バイトのセクタ(データ領域)が割り当てられるのである。なお、図2において図示を省略しているが、LBAの#08〜#15に対しても、HDD5の図示しない二つのセクタが割り当てられる。このような割り当ては、後述する割当処理部14により行なわれる。
以下、記憶領域52についてより具体的に説明する。
上述のように、コントローラモジュール4又はHDD5は、一つのLBA(以下、ホストブロックともいう)を512バイトで管理する。そして、コントローラモジュール4(割当管理部14)又はHDD5は、8ブロックを1単位として記憶領域52の1セクタにマッピングし、さらに同一ホストブロックに対してもう1セクタをマッピングする。以下、同一の8ホストブロックに対応する二つのセクタ(図2に示すセクタ#0−0及び#0−1参照)を、それぞれA領域52b−1及びB領域52b−2という。なお、以下、A領域52b−1及びB領域52b−2を区別しない場合には、データ領域52bという。これらのA領域52b−1及びB領域52b−2は、記憶領域52における互いに異なる領域であり、且つ、いずれのデータ領域52bも第1サイズの複数のデータブロックの各々のLBAに対応する領域を含む。
記憶領域52において、A領域52b−1及びB領域52b−2は、例えば数十セクタ〜数百セクタの単位で、複数のA領域52b−1、複数のB領域52b−2、複数のA領域52b−1、…という形で交互に配置される(図1参照)。つまり、A領域52b−1及びB領域52b−2は、記憶領域52において1セクタごとに交互に配置されるのではなく、連続するホストブロックの書き込み又は読み出しを考慮して、ある程度意味のある単位で複数セクタがまとめられることが好ましい。なお、HDD5のディスクは、トラック当たりのセクタ数や角速度の関係から、内周部よりも外周部の方が性能が良いため、性能差を考慮して、一対のA領域52b−1及びB領域52b−2が離れすぎないようにすることが好ましい。
A領域52b−1及びB領域52b−2をそれぞれ所定の単位でまとめることにより、ホスト装置3によりシーケンシャルなアクセスが行なわれた場合でも、HDD5の性能低下を抑止することができる。なお、以下、記憶領域52における、A領域52b−1のグループを第1グループ52a−1といい、B領域52b−2のグループを第2グループ52a−2という。
ここで、同一の8ホストブロックに対応するA領域52b−1及びB領域52b−2が格納するデータは、ホストブロックごとに排他的な関係を有する。図2に示すLBA#00〜#07に着目して説明すると、例えば、LBA#00〜#03の最新のデータがA領域52b−1であるセクタ#0−0に格納されている場合、B領域52b−2であるセクタ#0−1に格納されているデータは無効なデータとなる。一方、LBA#04〜#07の最新のデータがセクタ#0−1に格納されている場合には、セクタ#0−0に格納されているデータは無効なデータとなる。
HDD5は、各データ領域の上述のような排他関係に基づく後述するコントローラモジュール4による制御を受けて、第1サイズのデータブロックを第1サイズよりも大きい第2サイズの複数のデータ領域のいずれか一つに保存する。HDD5におけるデータの保存の態様の詳細は、後述する。
記憶装置ビットマップ格納領域53は、A領域52b−1及びB領域52b−2における排他的なデータ保存状態を管理する記憶装置ビットマップ22aを格納する。
記憶装置ビットマップ(管理情報,第1管理情報)22aは、各データ領域52bにおける複数の第1サイズのデータブロックの記憶領域のデータ保存状態を示す情報である。記憶装置ビットマップ22aは、以下に例示するように、A領域52b−1及び52b−2のいずれか一方のデータ領域52bに含まれるデータブロックごとに該データブロックのデータ保存状態が有効か否かを示すビットマップ情報とすることができる。例えば、LBA#00〜#03のデータがA領域52b−1に、LBA#04〜#07のデータがB領域52b−2に、それぞれ格納されている場合、LBA#00〜#07に関する記憶装置ビットマップ22aが示すデータ保存状態は、以下のようになる。
A領域52b−1:11110000
B領域52b−2:00001111
なお、上記の記憶装置ビットマップ22aは、1ビットが512バイトの1ホストブロックに相当し、左からLBAの昇順で配置される。また、記憶装置ビットマップ22aにおいて、“1”は有効つまり当該セクタにおいてホストブロックのデータが最新であることを示し、“0”は無効つまり当該セクタに格納されたホストブロックのデータが無効であることを示す。
また、上記ではA領域52b−1及びB領域52b−2の双方について、LBA#00〜#07に関する記憶装置ビットマップ22aの例を示したが、それぞれのビットマップは排他関係を有するため、記憶装置ビットマップ22aには、A領域52b−1及びB領域52b−2のいずれか一方のビットマップが設定されればよい。以下、記憶装置ビットマップ22aには、A領域52b−1のビットマップが設定されるものとするが、便宜上、記憶装置ビットマップ22aにB領域52b−2のビットマップも設定されるものとして説明する場合がある。
記憶装置ビットマップ格納領域53は、記憶領域52における第1グループ52a−1(全てのA領域52b−1)についての記憶装置ビットマップ22aを格納する。例えば、HDD5における記憶領域52の容量が300Gバイトである場合、記憶装置ビットマップ格納領域53は、第1グループ52a−1についての36Mバイト程度の記憶装置ビットマップ22aを格納する。
なお、記憶装置ビットマップ格納領域53は、HDD5のディスク領域の一部の領域とすることができる。
〔1−2〕コントローラモジュールの説明
次に、図1を参照しながら、コントローラモジュール4の詳細を説明する。
図1に示すように、コントローラモジュール4は、CPU10、メモリ20、及び、SSD30を備える。
CPU(処理部)10は、メモリ20、SSD30、チャネルアダプタ6、及び、デバイスアダプタ7とそれぞれ接続され、種々の制御や演算を行なう処理装置(プロセッサ)の一例である。CPU10は、メモリ20、SSD30、HDD5、又は、図示しないRead Only Memory(ROM)等に格納されたプログラムを実行することにより、コントローラモジュール4における種々の機能を実現する。本実施形態に係るCPU10は、メモリ20等に格納された制御プログラムを実行することにより、後述する書込制御部11、読出制御部12、記憶装置ビットマップ管理部13、割当処理部14、及び、メモリビットマップ管理部15を備える処理部としての機能を実現する。
メモリ(保持部)20は、種々のデータやプログラムを一時的に格納するキャッシュメモリ等の記憶装置であって、CPU10がプログラムを実行する際に、データやプログラムを一時的に格納・展開して用いる。例えば、メモリ20は、ユーザデータ領域21及びビットマップ領域22を含む。なお、メモリ20としては、例えばRAM等の揮発性メモリが挙げられる。
ユーザデータ領域(保持領域)21は、CPU20が処理部として機能するための制御プログラム、ホスト装置3からHDD5へ書き込まれる書込データ、又は、HDD5からホスト装置3へ読み出される読出データ等を一時的に格納する領域である。ユーザデータ領域21は、第2サイズである4096バイト以上の領域である。なお、書込データは、A領域52b−1及びB領域52b−2のいずれか一つに書き込まれるデータブロック(書き込み対象のデータブロック)であり、ホスト装置3から第1サイズである512バイト単位で入力される。
ビットマップ領域22は、CPU20により参照される記憶装置ビットマップ22a及びメモリビットマップ22bを保持する領域である。なお、ビットマップ領域22が保持する記憶装置ビットマップ22aは、HDD5の記憶装置ビットマップ格納領域53又はSSD30の記憶装置ビットマップ格納領域31に格納された記憶装置ビットマップ22aの少なくとも一部である。ビットマップ領域22が保持する記憶装置ビットマップ22a及びメモリビットマップ22bの詳細については、後述する。
SSD(格納部)30は、種々のデータやプログラムを格納する記憶装置であり、記憶装置ビットマップ格納領域31を含む。記憶装置ビットマップ格納領域31は、上述したHDD5の記憶装置ビットマップ格納領域53に格納されるものと同一の記憶装置ビットマップ22aを格納する。なお、図1には、SSD30及びHDD5の双方が記憶装置ビットマップ22aを格納する例を示しているが、SSD30及びHDD5のうちのいずれか一方のみが記憶装置ビットマップ22aを格納することとしてもよい。また、SSD30又は/及びHDD5の記憶装置ビットマップ格納領域53に代えて、CPU10からアクセス可能な他の記憶装置が用いられてもよい。さらに、コントローラモジュール4には、SSD30に代えて、HDD等がそなえられてもよい。
〔1−3〕処理部の説明
次に、CPU10が処理部として実現する各機能について説明する。
割当処理部14は、HDD5のデータ領域52bを複数の第1サイズのデータブロックの記憶領域に割り当て、複数のデータ領域52bに同じ第1サイズのデータブロックを割り当てる処理を行なう。つまり、割当処理部14は、上述のように、例えば数十セクタ〜数百セクタの単位で、複数のA領域52b−1、複数のB領域52b−2、複数のA領域52b−1、…という形で、データ領域52bを交互に割り当てる(図1参照)。
なお、割当処理部14によるLBAとHDD5の一つのセクタとの間でのアドレスの変換は、既知の種々の手法を用いて実現可能である。本実施形態においては、このような手法に対して、一つのLBAについて対応する複数(二つ)のセクタを得るように論理を変更することで、LBAとHDD5の複数(二つ)のセクタとの間でのアドレスの変換を実現することができる。
記憶装置ビットマップ管理部(管理部)13は、HDD5にホスト装置3からのデータブロックをA領域52b−1及びB領域52b−2のいずれか一つに排他的に保存させるように、複数のデータ領域52bにおけるデータ保存状態を管理する。記憶装置ビットマップ管理部13によるデータ保存状態の管理は、メモリ20のビットマップ領域22に保持された記憶装置ビットマップ22a及びメモリビットマップ22bに基づいて行なわれる。例えば、記憶装置ビットマップ管理部13は、ビットマップ更新部13a、ビットマップ読出部13b、及び、ビットマップ書込部13cを備える。
ビットマップ更新部13aは、メモリ20に保持されたデータブロックが、後述する書込制御部11により一のデータ領域52bへライトバックにより書き込まれると、メモリビットマップ22bに基づき記憶装置ビットマップ22aを作成又は更新する。
具体的には、ビットマップ更新部13aは、ホスト装置3からユーザデータ領域21に書き込まれたデータブロックが、一のデータ領域52bへ書き込まれると、該データブロックに対して割り当てられた複数の記憶領域のデータ保存状態を更新する。
より具体的に、ビットマップ更新部13aは、書き込み対象のデータブロックに対して割り当てられた複数の記憶領域のデータ保存状態について、以下の二つの条件を満たすように記憶装置ビットマップ22aを書き換える。
・上記複数の記憶領域のうち、一のデータ領域52b内で書き込み対象のデータブロックに対して割り当てられた記憶領域はデータブロックのデータが書き込まれると有効を示す。
・上記複数の記憶領域のうち、他の全てのデータ領域52b内で書き込み対象のデータブロックに対して割り当てられた記憶領域は無効を示す。
例えば、ビットマップ更新部13aは、ホストブロックが書き込まれたデータ領域52bの記憶装置ビットマップ22aに対して、メモリビットマップ22bにおいて“1”が設定されたデータブロックに対応する位置のビットを“1”に更新する。
なお、ビットマップ更新部13aは、HDD5がフォーマットされた場合等、対象となる記憶装置ビットマップ22aが存在しない場合には、対象となる記憶装置ビットマップ22aを新たに作成してビットマップ領域22に格納する。
なお、HDD5がフォーマットされる場合、第1グループ52a−1及び第2グループ52a−2の全データ領域52bに、有効なデータ(例えば“0”)が設定される。この場合、全データ領域52b内に有効なデータが存在するが、ビットマップ更新部13aは、第1グループ52a−1及び第2グループ52a−2のいずれか一方のグループについて、全てのビットが“1”(有効)の記憶装置ビットマップ22aを作成する。
ビットマップ読出部13bは、SSD30又はHDD5等から記憶装置ビットマップ22aのうちの、CPU10から指示されたデータ領域52bに係る部分を読み出し、メモリ20のビットマップ領域22に展開する。
なお、ビットマップ読出部13bは、SSD30等から読み出す記憶装置ビットマップ22aの部分を、CPU10からの指示ではなく、CPU10内部又はチャネルアダプタ6を監視することで推定してもよい。つまり、ビットマップ読出部13bは、監視により得られたホスト装置3からの書込/読出コマンドから、CPU10による処理対象となるデータ領域52bを推定してもよい。処理対象となるデータ領域52bを推定することにより、ビットマップ読出部13bは、CPU10が要求する記憶装置ビットマップ22aを予めビットマップ領域22に格納しておくことができ、コントローラモジュール4の処理性能を向上させることができる。
ビットマップ書込部13cは、ビットマップ領域22に保持された記憶装置ビットマップ22aを、所定のタイミングでSSD30又はHDD5等へ書き込み、記憶装置ビットマップ格納領域31又は53内の記憶装置ビットマップ22aを更新する。なお、所定のタイミングの例としては、以下の(i)〜(iii)のうちの一つ又はこれらの組み合わせが挙げられる。
(i)定期的なタイミング
(ii)書込制御部11によりHDD5へライトバックが行なわれたタイミング
(iii)ビットマップ領域22内の記憶装置ビットマップ22aのサイズが所定サイズ以上になったタイミング
このように、記憶装置ビットマップ管理部13は、複数のデータ領域52bのうちのいずれか一のデータ領域52b内でデータブロックに対して割り当てられた記憶領域が、他の全てのデータ領域内で該データブロックに対して割り当てられた記憶領域との間で排他的に有効を示すように、データ保存状態を管理する。なお、記憶装置ビットマップ管理部13は、各データ領域52bに割り当てられた複数のデータブロックの記憶領域について、データブロックごとに、上記の管理を行なう。
メモリビットマップ管理部15は、ホスト装置3からのユーザデータ(書き込み対象のユーザデータ)が、HDD5内の対応するデータ領域52bのうちのいずれのデータブロックに書き込まれるか否かを示すメモリビットマップ22bを管理する。
メモリビットマップ(第2管理情報)22bは、書き込み対象のデータブロックに対して割り当てられた複数のデータ領域52bにおける書き込み対象のデータブロックが保存される領域を示す情報である。図2に示すLBA#00〜#07に着目して説明すると、例えば、LBA#03及び#04のデータがHDD5のセクタ#0−0又は#0−1に書き込むべきユーザデータとしてホスト装置3から入力された場合、メモリビットマップ22bは以下のようになる。
LBA#00〜#07:00011000
なお、上記のメモリビットマップ22bは、1ビットが512バイトの1ホストブロックに相当し、左からLBAの昇順で配置される。また、メモリビットマップ22bにおいて、“1”は有効つまり対応する位置のホストブロックのデータが書き込み対象であることを示し、“0”は無効つまり対応する位置のホストブロックのデータが書き込み対象ではないことを示す。
メモリビットマップ管理部15は、ホスト装置3からの書込コマンドに応じて、上述したメモリビットマップ22bを作成し、メモリ20のビットマップ領域22に格納する。
ここで、書き込み対象のユーザデータは、ユーザデータ領域21の任意の位置に格納される。従って、メモリビットマップ管理部15は、ユーザデータ領域21における書き込み対象のユーザデータが格納された位置と、メモリビットマップ22bとを対応付けて管理することが好ましい。
なお、メモリビットマップ管理部15は、ユーザデータ領域21に保持されたユーザデータがHDD5へライトバックされると、当該ユーザデータに対応するメモリビットマップ22bを破棄、又は、ALL“0”に更新する。
〔1−3−1〕書込制御部の説明
書込制御部11は、ホスト装置3からの書込コマンドに応じて書込データをメモリ20に一旦留め、ライトバック等により非同期でHDD5へ書き込む制御を行なう。例えば、書込制御部11は、書込領域判定部11a及び書込処理部11bを備える。
書込領域判定部11aは、ビットマップ領域22に保持された、書き込み対象のデータブロックに対して割り当てられた複数のデータ領域52bの記憶装置ビットマップ22aに基づき、複数のデータ領域52bの中から一のデータ領域52bを判定する。ここで、一のデータ領域52bとは、HDD5においてデータブロックの書き込みに伴うデータブロックの読み出し、つまり、RMWが可能な限り発生しないデータ領域52bである。
なお、書込領域判定部11aは、RMWの発生しないデータ領域52bを判定できない場合がある。この場合、HDD5においてRMWが発生することになるが、以下の処理により、今回又は次回以降のRMWによるHDD5の性能低下への影響を抑えたり、RMWの発生しないデータ領域52bを判定し易くしたりすることができる。
例えば、書込領域判定部11aは、RMWの発生しないデータ領域52bを判定できない場合、所定の条件に応じて、複数のデータ領域52bからいずれか一のデータ領域52bを選択する。所定の条件としては、HDD5の処理負荷が所定の閾値以上であることや、ホスト装置3から書込/読出コマンドが所定数以上発行されていること等、HDD5の性能低下を引き起こす可能性が高まったことを条件とすることができる。
書込領域判定部11aは、HDD5の性能低下を引き起こす可能性が高まった場合、RMWにおいてHDD5によるシーク処理及びマージ処理(図14中(3)参照)の処理量が少なくなるデータ領域52bを選択する。一方、書込領域判定部11aは、HDD5の性能低下を引き起こす可能性が低い場合、今回又は次回以降RMWの発生しないデータ領域52bを判定し易くするために、記憶装置ビットマップ22aが複数のデータ領域52b間で偏るようなデータ領域52bを選択する。
書込領域判定部11aによる一のデータ領域52bの判定の手法については、後述する。
書込処理部11bは、書き込み対象のデータブロックのデータを含む第2サイズの書込用データブロック(書込用データ)を生成し、生成した書込用データブロックを、書込領域判定部11aにより判定された一のデータ領域52bへ書き込む処理を行なう。
具体的には、書込処理部11bは、ユーザデータ領域21において、書き込み対象のユーザデータ(データブロック)にダミーデータを付加して4096バイト単位に丸めることで、書込用データブロックを生成する。より具体的に、書込処理部11bは、メモリビットマップ22bとユーザデータ領域21内のユーザデータの格納位置とに基づき、書き込み対象のユーザデータを含む4096バイト分のユーザデータ領域21内のデータ(書込用データブロック)を取得する。取得されたデータには、書き込み対象のユーザデータ(データブロック)と、ユーザデータ領域21のアドレス上における、書き込み対象のユーザデータの前後少なくとも一方のダミーデータ(不要データ)とが含まれる。
なお、ダミーデータは、既に書込制御部11によりHDD5へライトバックが行なわれたデータブロックである。従って、書込処理部11bは、書込用データブロックの生成にあたり、ユーザデータ領域21に残存する不要データブロックを流用することができるため、ダミーデータを生成してユーザデータに付加するよりも高速に書込用データブロックを生成することができる。なお、コントローラモジュール4は、メモリビットマップ22bによりユーザデータとダミーデータとを区別することができる。
図2に示すLBA#00〜#07に着目し、例えば、ホスト装置3から書き込み対象のユーザデータとしてLBA#03及び#04のデータがメモリ20に書き込まれた場合について説明する。書込処理部11bは、ユーザデータ領域21におけるLBA#03及び#04の書き込み対象のデータブロックと、LBA#00〜#02及び#05〜#07に対応するユーザデータ領域21におけるデータブロックと、をまとめて書込用データブロックとして取得する。つまり、書込処理部11bは、ユーザデータ領域21に保持された書き込み対象のデータブロックを含む二以上のデータブロックを用いて書込用データブロックを生成するのである。
このように、書込処理部11bによれば、HDD5において、4096バイト単位でデータブロックが書き込まれるためRMWが発生せず、従来の512バイト/セクタのHDDと同等な書込性能を維持することができる。また、書込用データブロックの生成にあたりユーザデータ領域21内の実際のデータを用いるため、4096バイトの書込用データブロックを容易に生成することができる。
なお、書込処理部11bは、ホスト装置3からのデータブロックに“0”又は“1”の任意のダミーデータを付加することで書込用データブロックを生成してもよい。
また、上述したように、書込領域判定部11aによりRMWの発生しないデータ領域52bが判定されない場合がある。この場合、書込処理部11bは、書き込み対象のデータブロックに対して割り当てられた複数のデータ領域52bの記憶装置ビットマップ22aに基づいて、書き込み対象のデータブロックを含む所定のサイズの書込用データブロックを生成する。そして、書込処理部11bは、生成した所定のサイズの書込用データブロックを、書込領域判定部11aにより選択された一のデータ領域52bへ書き込む。
なお、書込領域判定部11aは、ホスト装置3からのユーザデータが第2サイズである4096バイト単位である場合には、RMWが発生しないため、データ領域52bの判定処理を行なわずに対応するデータ領域52bのうちの任意の一方を選択する。そして、書込処理部11bは、第2サイズであるユーザデータを、書込領域判定部11aが選択した一のデータ領域52bへ書き込む。
換言すれば、書込領域判定部11aは、ホスト装置3からのユーザデータが、RMWが発生する条件に該当する場合に、記憶装置ビットマップ22aに基づく一のデータ領域52bの判定を行なうのである。なお、RMWが発生する条件として、ホスト装置3からのユーザデータが4096バイトに満たない(又は4096バイトの整数倍のサイズではない)場合が挙げられる。また、RMWが発生する他の条件として、4096バイトの整数倍のサイズであるユーザデータの開始アドレスがデータ領域52bの開始アドレスからずれている場合等も挙げられる。
なお、ビットマップ更新部13aは、書込処理部11bにより書込用データブロックがデータ領域52bに書き込まれると、上述のように、書込用データブロックに含まれる書き込み対象のデータブロックについて、記憶装置ビットマップ22aを更新する。
次に、図3〜図9を参照して、書込制御部11の動作例を説明する。図3〜図8は、それぞれ、図1に示す処理部による動作例を説明するための図であり、図9(a)及び図9(b)は、それぞれ、図7及び図8に示す動作例におけるHDD5でのマージ量を説明するための図である。なお、図3〜図9において、枠で囲われた“記憶領域”及び“ユーザデータ領域”内の数字はデータブロックの世代数を示し、英字は当該データブロックが意味のない(無効な)データを設定されたブロックであることを示す。また、図3〜図9において、記憶装置ビットマップ22aは、A領域52b−1(第1グループ52a−1)についてのビットマップ情報であるものとする。
〔1−3−1−1〕A領域又はB領域の記憶装置ビットマップがALL“1”である場合
書込領域判定部11aは、データブロックを書き込むデータ領域52bの判定において、対応するA領域52b−1及びB領域52b−2のいずれか一方の記憶装置ビットマップ22aのデータ保存状態がALL“1”であるか否かを判定する。A領域52b−1及びB領域52b−2のいずれか一方がALL“1”と判定すると、書込領域判定部11aは、ALL“1”ではないデータ領域52bを、データブロックを書き込むべき一のデータ領域52bと判定する。
換言すれば、書込領域判定部11aは、一のデータ領域52bとして、書き込み対象のデータブロックに対して割り当てられた複数のデータ領域52bの記憶装置ビットマップ22aのデータ保存状態がALL“0”のデータ領域52bを選択するのである。
一例として、図3を参照して説明する。前提として、HDD5の記憶領域52はフォーマットされた直後であり、全てのデータ領域52bにはALL“0”のデータが記憶されているものとする。図3の(1)に示すように、フォーマット直後の記憶装置ビットマップ22aには、ビットマップ更新部13aによりA領域52b−1についてALL“1”が設定されている。この場合、図3の(2)に示すように、B領域52b−2についての記憶装置ビットマップ22aは、ALL“0”である。
図3の(3)において、ホスト装置3により、LBA#00〜#03について世代“1”のデータブロックの書込コマンドが発行されると、メモリビットマップ管理部15により、先頭4ビットが“1”のメモリビットマップ22bが生成される。
書込領域判定部11aは、書込コマンドに応じて、書き込み対象のLBAに対応するセクタ#0−0(A領域52b−1)の記憶装置ビットマップ22aを参照し、全てのビットが“1”であるか否かを判定する。図3の(2)に示す例では、A領域52b−1の記憶装置ビットマップ22aはALL“1”であるため、書込領域判定部11aは、A領域52b−1とは異なるB領域52b−2を、データブロックを書き込むべき一のデータ領域52bと判定する。
また、書込処理部11bは、書き込み対象のLBA#00〜#03のデータブロック(2048バイトのショートブロック)を、書込領域判定部11aが判定したB領域52b−2に書き込む。このとき、LBA#00〜#03の4ブロックのみをB領域52b−2にライトバックすると、HDD5においてRMWが発生する。そこで、書込処理部11bは、メモリビットマップ22bに基づき、ユーザデータ領域21から、書き込み対象のLBA#00〜#03のデータブロックと、ダミーデータであるLBA#04〜#07のデータブロックとを生成(取得)する。そして、書込処理部11bは、生成した4096バイトの書込用データブロックを、書込領域判定部11aが判定したデータ領域52bに書き込む(図3の(4)参照)。
さらに、書込処理部11bが書込用データブロックの書き込みを行なうと、ビットマップ更新部13aがメモリビットマップ22bに基づき記憶装置ビットマップ22aを更新する。
なお、書込領域判定部11aは、A領域52b−1の記憶装置ビットマップ22aを参照し、全てのビットが“1”であるか否かを判定するものとして説明したが、これに限定されるものではない。例えば、書込領域判定部11aは、A領域52b−1の記憶装置ビットマップ22aの全てのビットが“0”であるか否かを判定してもよい。この場合、“0”である場合には、書込領域判定部11aは、A領域52b−1を、データブロックを書き込むべき一のデータ領域52bと判定する。
〔1−3−1−2〕メモリビットマップと、A領域又はB領域の記憶装置ビットマップとの論理和がALL“1”である場合
書込領域判定部11aは、A領域52b−1及びB領域52b−2のいずれか一方に書き込み対象のデータブロックが保存されると、一方のデータ領域52bにおける全ての記憶装置ビットマップ22aのデータ保存状態がALL“1”になるか否かを判定する。データ保存状態がALL“1”になると判定すると、書込領域判定部11aは、ALL“1”になるデータ領域52bとは異なる他のデータ領域52bを、データブロックを書き込むべき一のデータ領域52bと判定する。
換言すれば、書込領域判定部11aは、データ領域52bの記憶装置ビットマップ22aにおいて“1”である全てのビット位置が、書き込み対象のデータブロックのメモリビットマップ22bにおいて“1”である全てのビット位置に含まれるか否かを判定する。つまり、書込領域判定部11aは、前記書き込み対象のデータブロックに対して割り当てられたデータ領域52bにおけるデータ保存状態が有効な全てのデータブロックの領域が、データ領域52bにおいて書き込み対象のデータブロックが保存される全ての領域に含まれるか否かを判断する。そして、書込領域判定部11aは、含まれると判定した場合に、当該データ領域52bを、データブロックを書き込むべき一のデータ領域52bと判定する。
一例として、図4を参照して説明する。前提として、HDD5の記憶領域52はランダムライトが行なわれた後であり、複数のデータ領域52bには、飛び飛びでデータが書き込まれた状態であるものとする。図4の(1)に示すように、記憶装置ビットマップ22aには、ビットマップ更新部13aによりA領域52b−1について飛び飛びで“1”が設定されている。
図4の(2)において、ホスト装置3により、LBA#00〜#07のデータブロックの書込コマンドが発行されると、メモリビットマップ管理部15により、先頭8ビットが“1”のメモリビットマップ22bが生成される。
書込領域判定部11aは、書込コマンドに応じて、書き込み対象のLBAに対応するセクタ#0−0(A領域52b−1)の記憶装置ビットマップ22aを参照し、メモリビットマップ22bとの論理和を取った場合に、全てのビットが“1”になるか否かを判定する。図4の(2)に示す例では、メモリビットマップ22bだけで8ホストブロック全てが“1”であり、バウンダリに合った4096バイトのユーザデータであるため、書込領域判定部11aは、A領域52b−1及びB領域52b−2を選択するまでもない。例えば、書込領域判定部11aがA領域52b−1を選択した場合、書込処理部11bにより、4096バイトである書き込み対象のデータブロックがA領域52b−1に書き込まれる(図4の(3)参照)。
また、他の例を、図5を参照して説明する。前提として、HDD5の記憶領域52はランダムライトが行なわれた後であり、複数のデータ領域52bには、1024バイトで離散したデータが書き込まれた状態であるものとする。図5の(1)に示すように、記憶装置ビットマップ22aには、ビットマップ更新部13aによりA領域52b−1について2ブロックごとに飛び飛びで“1”が設定されている。
図5の(2)において、ホスト装置3により、LBA#00、#01、#04、#05のデータブロックの書込コマンドが発行されると、メモリビットマップ管理部15により、2ビットごとに飛び飛びで“1”であるメモリビットマップ22bが生成される。
書込領域判定部11aは、書込コマンドに応じて、書き込み対象のLBAに対応するセクタ#0−0(A領域52b−1)の記憶装置ビットマップ22aを参照し、メモリビットマップ22bとの論理和を取った場合に、全てのビットが“1”になるか否かを判定する。図5の(2)に示す例では、A領域52b−1の記憶装置ビットマップ22aとメモリビットマップ22bとの論理和がALL“1”になるため、書込領域判定部11aは、A領域52b−1とは異なるB領域52b−2を、データブロックを書き込むべき一のデータ領域52bと判定する。
また、書込処理部11bは、メモリビットマップ22bに基づき、書き込み対象のLBA#00、#01、#04、#05のデータブロックと、ダミーデータであるLBA#02、#03、#06、#07のデータブロックとを生成(取得)する。そして、書込処理部11bは、生成した4096バイトの書込用データブロックを、書込領域判定部11aが判定したデータ領域52bに書き込む(図5の(3)参照)。
さらに、他の例を、図6を参照して説明する。前提として、ホスト装置3がメインフレームであり、ホスト装置3から指定される書き込み対象のアドレスがLBAではなくCount Key Data(CKD)であるものとする。なお、CKDは、書き込み対象のデータブロックのサイズがレコードという固定サイズであり(図6の(1)“R1”〜“R4”参照)、1レコードは、512バイトよりも大きく、且つ、512バイトの整数倍ではないものとする。また、コントローラモジュール4は、ホスト装置3から指定されるCKDをLBAに変換して、書き込み対象のレコード(書き込み対象のデータブロック)をLBAに対応付ける。さらに、コントローラモジュール4は、レコードを512バイト単位で区切ったときの512バイト未満の部分にダミーデータを付加して、当該部分のバウンダリを512バイトに合わせる。なお、図6に示す例では、レコードのサイズは、ダミーデータが付加されて5データブロック(2560バイト)に調整される。
さらに、前提として、HDD5の記憶領域52はフォーマットされた直後であり、全てのデータ領域52bにはALL“0”のデータが記憶されているものとする。図6の(2)に示すように、フォーマット直後の記憶装置ビットマップ22aには、ビットマップ更新部13aによりA領域52b−1(第1グループ52a−1)についてALL“1”が設定されている。
上述した前提において、ホスト装置3により、R2について世代“1”のレコードの書込コマンドが発行されると、メモリ20のユーザデータ領域21に、世代“1”のR2のデータが格納される(図6の(3)参照)。また、メモリビットマップ管理部15により、R2に対応するビット(6ビット目〜10ビット目のビット)が“1”のメモリビットマップ22bが生成される。
書込領域判定部11aは、書込コマンドに応じて、書き込み対象のレコードに対応するセクタ#0−0及び#1−0(A領域52b−1)の記憶装置ビットマップ22aを参照し、それぞれのセクタにおいて全てのビットが“1”であるか否かを判定する。図6の(4)に示す例では、セクタ#0−0及び#1−0のいずれの記憶装置ビットマップ22aもALL“1”である。従って、書込領域判定部11aは、A領域52b−1とは異なるB領域52b−2であるセクタ#0−1及び#1−1を、それぞれレコードを書き込むべき一のデータ領域52bと判定する。
また、書込処理部11bは、書き込み対象のR2のレコードを、書込領域判定部11aが判定したB領域52b−2であるセクタ#0−1及び#1−1に書き込む。このとき、書込処理部11bは、メモリビットマップ22bに基づき、ユーザデータ領域21から、書き込み対象のR2のレコードと、ダミーデータであるデータブロック(図6の(3)セクタ#0−0〜#1−0に対応するデータ“x”参照)とを生成(取得)する。そして、書込処理部11bは、生成した4096バイト×2の書込用データブロックを、書込領域判定部11aが判定したデータ領域52bに書き込む(図6の(4)参照)。
次いで、ホスト装置3により、R1について世代“1”のレコードの書込コマンドが発行されると、メモリ20のユーザデータ領域21に、世代“1”のR1のデータが格納される(図6の(5)参照)。また、メモリビットマップ管理部15により、R1に対応するビット(1ビット目〜5ビット目のビット)が“1”のメモリビットマップ22bが生成される。
書込領域判定部11aは、書込コマンドに応じて、書き込み対象のレコードに対応するセクタ#0−0(A領域52b−1)の記憶装置ビットマップ22aを参照し、それぞれのセクタにおいて全てのビットが“1”であるか否かを判定する。図6の(4)に示す例では、セクタ#0−0の記憶装置ビットマップ22aはALL“1”ではない。
そこで、書込領域判定部11aは、書き込み対象のレコードに対応するセクタ#0−0及び#0−1(A領域52b−1)の記憶装置ビットマップ22aを参照し、メモリビットマップ22bとの論理和を取った場合に、全てのビットが“1”になるか否かを判定する。図6の(5)に示す例では、B領域52b−2の記憶装置ビットマップ22aとメモリビットマップ22bとの論理和がALL“1”になるため、書込領域判定部11aは、B領域52b−1とは異なるA領域52b−2を、データブロックを書き込むべき一のデータ領域52bと判定する。
また、書込処理部11bは、書き込み対象のR1のレコードを、書込領域判定部11aが判定したA領域52b−1であるセクタ#0−0に書き込む。このとき、書込処理部11bは、メモリビットマップ22bに基づき、ユーザデータ領域21から、書き込み対象のR1のレコードと、ダミーデータであるデータブロック(図6の(5)セクタ#0−0に対応するデータ“x”参照)とを生成(取得)する。そして、書込処理部11bは、生成した4096バイトの書込用データブロックを、書込領域判定部11aが判定したデータ領域52bに書き込む(図6の(6)参照)。
図6を用いて説明したように、本実施形態に係るストレージ装置2は、ホスト装置3がメインフレームである場合でも、RMWの発生を抑止し、HDD5の性能低下を軽減させることができる。特に、レコードサイズが第2サイズである4096バイト(1セクタ)よりも大きい場合には、一つのセクタに属するレコードは最大でも二つになる。これは、書込領域判定部11aが、A領域52b−1又はB領域52b−2から、データブロックを書き込むべき一のデータ領域52bを確実に判定できることを意味する。すなわち、レコードサイズが第2サイズよりも大きい場合には、RMWが発生しなくなるため、RMWに起因するHDD5の性能低下を無くすことができる。
なお、図4〜図6の例においても、書込処理部11bが書込用データブロックの書き込みを行なうと、ビットマップ更新部13aがメモリビットマップ22bに基づき記憶装置ビットマップ22aを更新する。
また、書込領域判定部11aは、A領域52b−1又はB領域52b−2の記憶装置ビットマップ22aとメモリビットマップ22bとの論理和がALL“1”になるか否かを判定するものとして説明したが、これに限定されるものではない。
例えば、書込領域判定部11aは、上述のように、データ領域52bの記憶装置ビットマップ22aにおいて“1”である全てのビット位置が、メモリビットマップ22bにおいて“1”である全てのビット位置に含まれるか否かを判定してもよい。この場合、書込領域判定部11aは、含まれると判定したデータ領域52bを、データブロックを書き込むべき一のデータ領域52bと判定する。
〔1−3−1−3〕その他の場合
上述した例では、書込領域判定部11aが、RMWの発生しないデータ領域52bを判定できる場合について説明したが、ここでは、RMWの発生しないデータ領域52bを判定できない場合について説明する。
一例として、図7及び図8を用いて説明する。前提として、HDD5の記憶領域52は書込処理が行なわれた後であり、複数のデータ領域52bには、図7の(1)及び図8の(1)に示すようなデータが書き込まれた状態であるものとする。図7の(1)及び図8の(1)に示すように、記憶装置ビットマップ22aには、ビットマップ更新部13aによりA領域52b−1について飛び飛びで“1”が設定されている。
図7の(2)及び図8の(2)において、ホスト装置3により、LBA#07のデータブロックの書込コマンドが発行されると、メモリビットマップ管理部15により、最終1ビットが“1”のメモリビットマップ22bが生成される。
書込領域判定部11aは、書込コマンドに応じて、RMWの発生しないデータ領域52bの判定を試みる。しかし、書き込み対象のLBAに対応するセクタ#0−0(A領域52b−1)は、全ビットが“1”ではなく、セクタ#0−0の記憶装置ビットマップ22aとメモリビットマップ22bとの論理和も全ビットが“1”にはならない。
このような場合にはRMWが発生するが、書込領域判定部11aは、既述のように所定の条件に応じて、A領域52b−1及びB領域52b−2のいずれか一方のデータ領域52bを選択する。
図7に示す例では、バックエンド負荷が低く、HDD5の性能低下を引き起こす可能性が低い場合について説明する。
この場合、書込領域判定部11aは、HDD5においてRMWによりマージされる量が多いデータ領域52bを選択する。マージ量が多いということは、データ領域52b中に有効データが多くなることを意味する。つまり、書込領域判定部11aは、A領域52b−1又はB領域52b−2のいずれかに有効データが多いデータ領域52bを用意しておくのである。これにより、次回以降の書き込みにおいて、ホスト装置3から書き込まれるホストブロック数が少なくても、ライトバックの際に、A領域52b−1の記憶装置ビットマップ22aとメモリビットマップ22bとの論理和が全ビット“1”になる可能性が高くなる。
例えば、図7の(3)に示すように、書込領域判定部11aは、HDD5においてRMWによる読出量が多いが1セクタ内に有効データが多くなるように、データブロックを書き込むべき一のデータ領域52bとしてB領域52b−2を選択する。
また、書込処理部11bは、書き込み対象のLBA#07のデータブロックを、書込領域判定部11aが判定したB領域52b−2に書き込む(図7の(4)参照)。
さらに、HDD5は、図9(a)に示すように、RMWにより記憶領域52のセクタ#0−1(B領域52b−2)から、7データブロック分のデータを読み出し、メモリ51で書込処理部11bからの1データブロックとのマージ処理を行なう。そして、HDD5は、マージ結果をセクタ#0−1へ書き込み、処理を終了する。
なお、書込処理部11bが書込用データブロックの書き込みを行なうと、ビットマップ更新部13aが記憶装置ビットマップ22aを更新する。
上記の処理により、セクタ#0−1では、LBA#01〜#07に対応する7データブロックが有効なデータとなる。
一方、図8に示す例では、バックエンド負荷が高く、HDD5の性能低下を引き起こす可能性が高い場合について説明する。
この場合、書込領域判定部11aは、バックエンド負荷をこれ以上上げないため、マージ量が少ない面を選択する。
例えば、図8の(3)に示すように、書込領域判定部11aは、HDD5においてRMWによる読出量が少ないA領域52b−1を、データブロックを書き込むべき一のデータ領域52bに選択する。
また、書込処理部11bは、書き込み対象のLBA#07のデータブロックを、書込領域判定部11aが判定したB領域52b−2に書き込む。このとき、書込処理部11bは、メモリビットマップ22bに基づき、ユーザデータ領域21から、書き込み対象のLBA#07のデータブロックと、ダミーデータであるLBA#01〜#06のデータブロックとを生成(取得)する。そして、書込処理部11bは、生成した7データブロック分の書込用データブロックを、書込領域判定部11aが判定したデータ領域52bに書き込む(図8の(4)参照)。
さらに、HDD5は、図9(b)に示すように、RMWにより記憶領域52のセクタ#0−0(A領域52b−1)から、1データブロック分のデータを読み出し、メモリ51で書込処理部11bからの7データブロックとのマージ処理を行なう。そして、HDD5は、マージ結果をセクタ#0−0へ書き込み、処理を終了する。
なお、書込処理部11bが書込用データブロックの書き込みを行なうと、ビットマップ更新部13aが記憶装置ビットマップ22aを更新する。
上記の処理により、図9(b)に示すように、HDD5においてRMWにより記憶領域52のセクタ#0−0から読み出すデータは、1データブロック分で済む。従って、図9(a)の場合と比較して、HDD5の性能劣化を低減させることができる。
以上のように、本実施形態に係るコントローラモジュール4は、ホスト装置3から見たデータブロックに対して、HDD5内に複数倍(例えば二倍)のデータブロックを持つように制御を行なう。そして、書込制御部11は、書き込み対象のデータブロックをHDD5へ書き込む際に、可能な限りRMWが発生しないデータ領域52bを選択し、書き込みを行なうことで、性能の低下を抑えるように制御を行なう。
〔1−3−2〕読出制御部の説明
図1の説明に戻り、読出制御部12は、ホスト装置3からの読出要求に応じて、HDD5から読出データを読み出し、ホスト装置3へ渡す制御を行なう。例えば、読出制御部12は、読出領域判定部12a、読出処理部12b、及び、データマージ処理部12cを備える。
読出領域判定部12aは、読み出し対象のデータを形成する第1サイズの一以上のデータブロックの読出要求に応じて、複数のデータ領域52bの中から、一以上のデータ領域52bを判定する。
具体的には、読出領域判定部12aは、ホスト装置3から読出要求を受けた場合に、指定されたデータがA領域52b−1及びB領域52b−2のいずれのデータ領域52bに含まれるかを、読み出し対象の一以上のデータブロックに対して割り当てられた複数のデータ領域の記憶装置ビットマップ22aを参照して判定する。
読出処理部12bは、記憶装置ビットマップ22aに基づいて、読出領域判定部12aにより判定された一以上のデータ領域52bの中から、データ保存状態が有効である読出要求に係るデータブロックを読み出す。
読出処理部12bは、例えば、読出要求に係るデータがA領域52b−1及びB領域52b−2のいずれか一方のデータ領域52bにのみ含まれる場合には、当該データ領域52bから読出要求に係るデータブロックを読み出して、ホスト装置3へ出力する。具体的には、読出処理部12bは、読み出し対象の一以上のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、読出領域判定部12aにより判定された一以上のデータ領域の中から、データ保存状態が有効な読み出し対象の一以上のデータブロックを読み出す処理を行なう。
一例として、図4を参照して説明する。前提として、記憶装置ビットマップ22a及び記憶領域52には図4の(3)に示すデータが格納されているものとする。また、図4の(2)においてユーザデータ領域21に格納されたLBA#00〜#07のデータは、全てメモリ20から削除され、キャッシュミスの状態になっているものとする。
図4の(3)において、ホスト装置3により、LBA#00〜#07のデータの読出要求が発行されると、読出領域判定部12aは、記憶装置ビットマップ22aを参照して、読出要求に係るデータがどのデータ領域52bに保存されているかを判定する。図4の(3)に示す例では、A領域52b−1のデータ保存状態がALL“1”であるため、LBA#00〜#07の各データブロックは、全てA領域52b−1に保存されている。従って、読出領域判定部12aは、読出要求に係るデータブロックを読み出すべきデータ領域52bがA領域52b−1であると判定する。
また、読出処理部12bは、読出領域判定部12aにより判定されたA領域52b−1から、読出要求に係るLBA#00〜#07のデータブロックを読み出して、ホスト装置3へ出力する。
一方、読出要求に係るデータがA領域52b−1及びB領域52b−2の双方に離散して保存されている場合も考えられる。この場合、読出処理部12bは、それぞれのデータ領域52bから読み出したデータブロックについて、データマージ処理部12cに対して読出要求に係るデータの生成を指示する。
データマージ処理部12cは、読出処理部12bにより、二以上のデータ領域52bの中から、読出要求に係るデータブロックがそれぞれ読み出される場合に、読み出された各々のデータブロックをマージし、読み出し対象のデータを生成する処理を行なう。データマージ処理部12cによるマージ処理は、例えばメモリ20のユーザデータ領域21上で行なわれる。データマージ処理部12cは、マージ処理を行なって読出要求に係るデータを生成すると、読出処理部12bを介して、又は直接、ホスト装置3へ出力する。
一例として、図3、図5、図7、及び図8を参照して説明する。前提として、記憶装置ビットマップ22a及び記憶領域52には図3の(4)、並びに、図5、図7、及び図8の(3)に示すデータが格納されているものとする。また、図3の(3)、並びに、図5、図7、及び図8の(2)においてユーザデータ領域21に格納されたLBA#00〜#07のデータは、全てメモリ20から削除され、キャッシュミスの状態になっているものとする。
ホスト装置3により、LBA#00〜#07のデータの読出要求が発行されると、読出領域判定部12aは、記憶装置ビットマップ22aを参照して、読出要求に係るデータがどのデータ領域52bに保存されているかを判定する。図3の(4)に示す例では、LBA#00〜#03の各データブロックはB領域52b−2に保存され、LBA#04〜#07の各データブロックはA領域52b−1に保存されている。図5の(3)に示す例では、LBA#00、#01、#04、#05の各データブロックはB領域52b−2に保存され、LBA#02、#03、#06、#07の各データブロックはA領域52b−1に保存されている。図7の(3)に示す例では、LBA#01〜#07の各データブロックはB領域52b−2に保存され、LBA#00のデータブロックはA領域52b−1に保存されている。また、図8の(3)に示す例では、LBA#01〜#06の各データブロックはB領域52b−2に保存され、LBA#00、#07の各データブロックはA領域52b−1に保存されている。
従って、読出領域判定部12aは、A領域52b−1及びB領域52b−2のデータ保存状態がいずれもALL“1”ではないため、読出要求に係るデータブロックを読み出すべきデータ領域52bがA領域52b−1及びB領域52b−2であると判定する。
また、読出処理部12bは、読出領域判定部12aにより判定されたA領域52b−1及びB領域52b−2のそれぞれから、読出要求に係るLBA#00〜#07のデータブロックを読み出して、ユーザデータ領域21へ格納する。そして、読出処理部12bは、データマージ処理部12cに対して読出要求に係るデータの作成を指示する。
データマージ処理部12cは、ユーザデータ領域21に格納された各データブロックをマージする。図3の(5)に示す例では、データマージ処理部12cは、B領域52b−2からのLBA#00〜#03の各データブロックと、A領域52b−1からのLBA#04〜#07の各データブロックとをマージする。図5の(4)に示す例では、データマージ処理部12cは、B領域52b−2からのLBA#00、#01、#04、#05の各データブロックと、A領域52b−1からのLBA#02、#03、#06、#07の各データブロックとをマージする。図7の(4)に示す例では、データマージ処理部12cは、B領域52b−2からのLBA#01〜#07の各データブロックと、A領域52b−1からのLBA#00のデータブロックとをマージする。また、図8の(4)に示す例では、データマージ処理部12cは、B領域52b−2からのLBA#01〜#06の各データブロックと、A領域52b−1からのLBA#00、#07の各データブロックとをマージする。
そして、データマージ処理部12cは、マージにより得られた読出要求に係るデータをホスト装置3へ出力する。
なお、ここまで、ホスト装置3からの読出要求が第2サイズである場合について説明したが、読出要求が第1サイズの単位で発行される場合でも、読出制御部12は上述したものと同様の制御により対応可能である。
〔1−4〕情報処理システムの動作例
次に、上述の如く構成された情報処理システム1(コントローラモジュール4)の動作例を、図10及び図11を参照して説明する。図10は、図1に示す書込制御部11による動作例を説明するフローチャートであり、図11は、図1に示す読出制御部12による動作例を説明するフローチャートである。
〔1−4−1〕書込制御部の動作例
はじめに、図10を参照して書込制御部11の動作を説明する。
なお、前提として、書込制御部11がホスト装置3から書込コマンドを受けた状態であるとする。
図10に示すように、書込領域判定部11aにより、ホスト装置3からの書込コマンドに応じて、A領域52b−1の記憶装置ビットマップ22aがALL“1”又はALL“0”であるか否かが判定される(ステップS1)。ALL“1”又はALL“0”であると判定された場合(ステップS1のYesルート)、さらに、書込領域判定部11aにより、A領域52b−1の記憶装置ビットマップ22aがALL“1”であるか否かが判定される(ステップS2)。ALL“1”ではない、つまりALL“0”であると判定された場合(ステップS2のNoルート)、書込領域判定部11aにより、書き込み対象のデータ領域52bがA領域52b−1であると判定される。そして、書込処理部11bにより、書込要求に係るユーザデータがA領域52b−1に書き込まれ(ステップS3)、処理が終了する。
一方、ステップS2において、A領域52b−1の記憶装置ビットマップ22aがALL“1”であると判定された場合(ステップS2のYesルート)、書込領域判定部11aにより、書き込み対象のデータ領域52bがB領域52b−2であると判定される。そして、書込処理部11bにより、書込要求に係るユーザデータがB領域52b−2に書き込まれ(ステップS4)、処理が終了する。
また、ステップS1において、A領域52b−1の記憶装置ビットマップ22aがALL“1”及びALL“0”のいずれでもないと判定された場合(ステップS1のNoルート)、書込領域判定部11aにより、次の判定処理が行なわれる。すなわち、書込領域判定部11aにより、メモリビットマップ22bとA領域52b−1又はB領域52b−2の記憶装置ビットマップ22aとの論理和がALL“1”であるか否かが判定される(ステップS5)。論理和がALL“1”であると判定された場合(ステップS5のYesルート)、書込領域判定部11aにより、メモリビットマップ22bとA領域52b−1の記憶装置ビットマップ22aとの論理和がALL“1”であるか否かが判定される(ステップS6)。
一方、メモリビットマップ22bとA領域52b−1の記憶装置ビットマップ22aとの論理和がALL“1”ではないと判定された場合(ステップS6のNoルート)、ステップS3に移行する。また、メモリビットマップ22bとA領域52b−1の記憶装置ビットマップ22aとの論理和がALL“1”であると判定された場合(ステップS6のYesルート)、ステップS4に移行する。
また、ステップS5において、論理和がALL“1”ではないと判定された場合(ステップS5のNoルート)、書込領域判定部11aにより、バックエンド負荷が閾値以上であるか否かが判定される(ステップS7)。バックエンド負荷が閾値以上であると判定された場合(ステップS7のYesルート)、書込領域判定部11aにより、マージ量が少ないのはA領域52b−1であるか否かが判定される(ステップS8)。マージ量が少ないのはA領域52b−1であると判定された場合(ステップS8のYesルート)、ステップS3に移行する。一方、マージ量が少ないのはA領域52b−1ではないと判定された場合(ステップS8のNoルート)、ステップS4に移行する。
さらに、ステップS7において、バックエンド負荷が閾値未満であると判定された場合(ステップS7のNoルート)、書込領域判定部11aにより、マージ量が多いのはA領域52b−1であるか否かが判定される(ステップS9)。マージ量が多いのはA領域52b−1であると判定された場合(ステップS9のYesルート)、ステップS3に移行する。一方、マージ量が多いのはA領域52b−1ではないと判定された場合(ステップS9のNoルート)、ステップS4に移行する。
〔1−4−2〕読出制御部の動作例
次に、図11を参照して読出制御部12の動作を説明する。
なお、前提として、読出制御部12がホスト装置3から読出要求を受けた状態であるとする。
図11に示すように、読出領域判定部12aにより、読出要求に係る読み出し対象LBAの範囲のA領域52b−1の記憶装置ビットマップ22aが、ALL“1”であるか否かが判定される(ステップS11)。ALL“1”であると判定された場合(ステップS11のYesルート)、読出処理部12bにより、A領域52b−1から読出データの読み出しが行なわれ(ステップS12)、処理が終了する。
一方、ステップS11において、ALL“1”ではないと判定された場合(ステップS11のNoルート)、読出領域判定部12aにより、当該A領域52b−1の記憶装置ビットマップ22aが、ALL“0”であるか否かが判定される(ステップS13)。ALL“0”であると判定された場合(ステップS13のYesルート)、読出処理部12bにより、B領域52b−2から読出データの読み出しが行なわれ(ステップS14)、処理が終了する。
また、ステップS13において、ALL“0”ではないと判定された場合(ステップS13のNoルート)、データマージ処理部12cによる処理が行なわれる(ステップS15)。すなわち、データマージ処理部12cにより、A領域52b−1の記憶装置ビットマップ22aのうち、ビット“1”のデータブロックがA領域52b−1から、ビット“0”のデータブロックがB領域52b−2から、それぞれ読み出されてマージされる。そして、処理が終了する。
〔1−5〕まとめ
上述のように、本実施形態に係るコントローラモジュール4によれば、書き込み対象の第1サイズのデータブロックを含む第2サイズの書込用データブロック(書込用データ)が、複数のデータ領域52bのうちの一のデータ領域52bへ書き込まれる。具体的には、コントローラモジュール4が、LBAのブロックサイズよりも大きい複数のセクタのうち、RMWが生じない一のセクタに、LBAで指定された対象データを含むセクタサイズのデータを書き込む。従って、HDD5等の記憶装置において書き込み対象のデータブロックの書き込みに伴う第2サイズのデータブロックの読み出し(RMW)の発生を抑制でき、HDD5の性能低下を軽減することができる。
4KセクタHDD(512E)においては、RMWが頻発する可能性もあり、従来の512バイト/セクタのHDDと比較して、性能低下は顕著である。また、近年、HDDの容量の増加に伴いHDDへのアクセス頻度も増加している。HDDの容量が増加しても、ディスクの数は変わらないため、HDDはビジー状態に陥りやすくなり、性能低下が懸念される。
本実施形態においては、4KセクタHDD(512E)におけるRMWの発生に伴う性能低下、及び、HDDが大容量化することによる性能低下に着眼し、HDD等の記憶容量の一部を用いて、RMWの発生の抑制を実現するものである。これにより、本実施形態においては、可能な限りRMWの発生を抑制してHDD5への書き込みを行なうことができるため、従来の512バイト/セクタのHDDと比べても同等な書込性能を得ることができる。
なお、RMWの発生を抑制するために、HDDのデータ領域内のデータをキャッシュメモリ上に記憶しておくことも考えられるが、HDDへの書込サイズ単位でキャッシュメモリが占有されてしまい、キャッシュメモリの使用効率が悪い。また、キャッシュメモリの使用効率の悪さをキャッシュメモリの増設により補おうとしても、HDDのように大容量を容易に拡張することは困難である。
本実施形態では、HDDの記憶容量を二倍使用することになるが、近年大容量で安価なHDDが多く普及するようになり、比較的安価にHDDを増設することができる。従って、本実施形態に係るコントローラモジュール4は、HDD等の記憶装置の容量を犠牲にしても従来の512バイト/セクタと同等なライト性能を維持することを期待する場合に、特に有効である。
また、本実施形態に係るコントローラモジュール4によれば、書き込み対象のデータブロックに対して割り当てられた複数の記憶領域のデータ保存状態が、該データブロックが書き込まれたデータ領域52bに応じた値を示すように、記憶装置ビットマップ22aが書き換えられる。従って、複数のデータ領域52b間で書き込み対象のデータブロックの整合性を保つことができ、書込領域判定部11aは、RMWが発生しない一のデータ領域52bの判定を確実に行なうことができる。
また、書込領域判定部11aにより、図10のステップS1、S2、S5、及びS6において、記憶装置ビットマップ22a及びメモリビットマップ22bに基づき、書き込み対象のデータブロックを書き込むべき一のデータ領域52bが判定される。従って、複数のデータ領域52b間で書き込み対象のデータブロックの整合性を保つことができ、書込領域判定部11aは、RMWが発生しない一のデータ領域52bの判定を確実に行なうことができる。
さらに、書込領域判定部11aによれば、図10のステップS7〜S9において、書き込み対象のデータブロックを含む所定のサイズの書込用データブロックが、所定の条件に応じた最適なデータ領域52bへ書き込まれる。従って、今回又は次回の書き込みにおけるRMWの影響を軽減することができる。
また、記憶装置ビットマップ22aは、A領域52b−1及びB領域52b−2のいずれか一方のデータ領域52bに含まれるデータブロックごとに該データブロックのデータ保存状態が有効か否かを示すビットマップ情報である。従って、一のデータ領域52bに係るビットマップ情報により、二つのデータ領域52bにおけるデータ保存状態を管理でき、記憶装置ビットマップ22aを記憶するリソースを削減することができる。
さらに、記憶装置ビットマップ管理部13により、書込用データブロックが一のデータ領域52bへ書き込まれると、書込用データブロックに含まれる第1サイズのデータブロックについて、該データブロックに対して割り当てられた複数の記憶領域のデータ保存状態が更新される。従って、書込領域判定部11aは、最新のデータ保存状態に基づき、RMWが発生しない一のデータ領域52bの判定を確実に行なうことができる。
また、読出領域判定部12aにより、データの読出要求に応じて、複数のデータ領域52bの中から、読み出し対象のデータを形成する一以上のデータブロックを読み出す一以上のデータ領域52bが判定される。そして、読出処理部12bによって、読出領域判定部12aにより判定された一以上のデータ領域の中から、データ保存状態が有効な前記読み出し対象の一以上のデータブロックが読み出される。従って、読出制御部12は、読出要求に係る一以上のデータブロックを一以上のデータ領域52bの中から確実に読み出すことができる。
さらに、データマージ処理部12cにより、複数のデータ領域52bのうちの二以上のデータ領域の中から、読み出された各々のデータブロックがマージされ、読み出し対象のデータが生成される。従って、読出要求に係るデータが複数のデータ領域52bに離散していても、マージ処理により確実に読み出すことができる。
また、書込処理部11bにより、ユーザデータ領域21に保持された書き込み対象のデータブロックと、ユーザデータ領域21に保持された不要データブロックとを用いて書込用データブロックが生成される。そして、書込処理部11bにより、生成された書込用データブロックが、一のデータ領域52bへ書き込まれる。従って、書込処理部11bは、書き込み対象のデータブロックに対してダミーデータ等を付加するといった処理が不要となり、書込用データブロックを容易に生成することができる。
〔2〕変形例
上述した一実施形態において、コントローラモジュール4のCPU10は、図12に示すようにさらに最適化部16を備えてもよく、書込制御部11は、図1に示す書込処理部11bに対して追加の処理を行なう書込処理部11b′を備えてもよい。
図12は、一実施形態に係る情報処理システム1の構成の変形例を示す図である。なお、図12において、図1に示す符号と同一の符号は、図1に示す構成と同一又は略同一のため、重複した説明は省略する。また、図12においては、読出制御部12、記憶装置ビットマップ管理部13、及びビットマップ領域22の詳細な図示を省略している。
図12に示すCPU10は、図1に示すCPU10と比べて、書込制御部11が書込処理部11bに代えて書込処理部11b′を備える点、及び、新たに最適化部16を備える点が異なる。
最適化部16は、複数のデータ領域52b間で、各々のデータ領域52bが格納する複数のデータブロックを移動させるものである。具体的には、最適化部16は、所定のタイミングで、記憶装置ビットマップ管理部13が管理する記憶装置ビットマップ22aに基づいて、複数のデータ領域52bの各々からデータ保存状態が有効な第1サイズのデータブロックを全て読み出す。そして、最適化部16は、読み出したデータブロックを含む第2サイズの書込用データブロック(書込用データ)を生成して、生成した書込用データブロックを、複数のデータ領域52bのいずれか一のデータ領域52bに書き込む。
つまり、最適化部16は、例えば図4の(1)のように、複数のデータ領域52b間で有効なデータブロックが離散している場合に、それぞれのデータ領域52bから有効なデータブロックを例えばユーザデータ領域21に読み出す。そして、最適化部16は、読み出した複数のデータブロックを4096バイトの書込用データブロックにマージして、複数のデータ領域52bのうちの一のデータ領域52bに書き込む(例えば図4の(3)セクタ#0−0参照)。
なお、所定のタイミングの例としては、以下の(i)〜(ii)のうちの一つ又はこれらの組み合わせが挙げられる。
(i)定期的なタイミング
(ii)HDD5の負荷等のバックエンド負荷が閾値未満になったタイミング
このように、最適化部16によれば、データ保存が有効であるデータブロックを一つのデータ領域52bに偏らせることができ、次回の書き込みの際にRMWが発生しない一のデータ領域52bが判定される確率を高めることができる。つまり、次回の書き込みの際には、書込制御部11は、図10のステップS1及びS2の判定を経て、RMWを発生させずに書き込み対象のデータブロックを確実にA領域52b−1又はB領域52b−2に書き込むことができる。従って、HDD5の性能低下を確実に防止することができる。
書込処理部11b′は、図1に示す書込処理部11bの機能に加えて、データマージ処理部12cにより生成されたデータを、該データを形成する一以上のデータブロックに対して割り当てられた複数のデータ領域52bのうちの一のデータ領域52bに書き込む機能を有する。すなわち、書込処理部11b′は、読出制御部12により複数のデータ領域52bから読み出されてユーザデータ領域21においてマージされたデータを、一のデータ領域52bに書き込むのである。
このように、書込処理部11b′によっても、最適化部16と同様の効果を奏するこことができる。
なお、CPU10は、最適化部16及び書込処理部11b′の機能のうちの少なくとも一方を備えることとしてもよい。また、最適化部16及び書込処理部11b′の機能は、例えば書込制御部11及び読出制御部12の少なくとも一方に備えさせてもよい。
このように、一実施形態の変形例に係る情報処理システム1によれば、上述した一実施形態の情報処理システム1と同様の効果を奏することができるほか、上述した最適化部16及び書込処理部11b′による効果を奏することもできる。
〔3〕ハードウェア構成例
図13は、図1又は図12に示すコントローラモジュール4のハードウェア構成例を示す図である。
図13に示すように、ストレージ装置2は、図1又は図12において既述のCPU10、メモリ20、SSD30を備えるとともに、入出力装置41、記録媒体42、及び、読取装置43を備える。
入出力装置41は、例えばマウスやキーボード等の入力装置及びディスプレイやプリンタ等の出力装置の少なくとも一方を含むものであり、ユーザ操作等による動作命令を受け付ける一方、コントローラモジュール4による処理結果を出力する。
記録媒体42は、フラッシュメモリやROM等の記憶装置であり、種々のデータやプログラムを記録する。
読取装置43は、光ディスクやUSBメモリ等のコンピュータ読取可能な記録媒体43aに記録されたデータやプログラムを読み出す装置である。
記録媒体42又は/及び43aには、一実施形態及び変形例に係る処理部の機能を実現する制御プログラムが格納されてもよい。すなわち、CPU10は、記録媒体42、又は、読取装置43を介して記録媒体43aから入力された制御プログラムを、メモリ20等の記憶装置に展開して実行することにより、処理部の機能を実現する。
なお、上述した各ハードウェアは、互いにバスで通信可能に接続される。
〔4〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
例えば、一実施形態及び変形例において、データ領域52bの組は二つであるものとして説明したが、これに限定されるものではない。コントローラモジュール4は、三つ以上のデータ領域52bをHDD5の記憶領域52に管理し、三つ以上のデータ領域52bで排他的にデータブロックが保存されるように制御してもよい。
また、書込処理部11bは、ユーザデータをHDD5へライトバックするものとして説明したが、これに限定されるものではない。例えば、書込処理部11bがライトスルーを行なう場合であっても、上述した処理部の構成を適用することができる。
さらに、A領域52b−1及びB領域52b−2は、一つのHDD5の記憶領域52に割り当てられるものとして説明したが、これに限定されるものではない。A領域52b−1及びB領域52b−2は、複数のHDD5に跨って、それぞれ所定の単位で複数のセクタがまとまって割り当てられてもよい。
また、一実施形態及び変形例において、コントローラモジュール4は、ストレージ装置2に備えられるものとして説明したが、これに限定されるものではない。例えば、コントローラモジュール4は、個々のHDD5内に備えられてもよいし、ホスト装置3に備えられてもよい。
さらに、図13を参照して、一実施形態及び変形例に係るコントローラモジュール4は、入出力装置41、記録媒体42、及び読取装置43を備えるものとして説明したが、これに限定されるものではない。例えば、入出力装置41、記録媒体42、及び読取装置43の少なくとも一つは、ホスト装置3に備えられてもよい。制御プログラムはホスト装置3からコントローラモジュール4に転送され、コントローラモジュール4のCPU10は、ホスト装置3から転送された制御プログラムをメモリ20に展開して実行してもよい。また、ホスト装置3及びコントローラモジュール4の少なくとも一方は、有線又は無線を介してインターネット等のネットワークに接続されてもよい。CPU10は、制御プログラムを提供する他の装置からネットワークを介して制御プログラムを受信し、受信した制御プログラムをメモリ20に展開して実行してもよい。
また、一実施形態及び変形例に係るコントローラモジュール4は、複数の4KセクタHDD(512E)や、複数の4KセクタHDD(512E)を用いた種々のRedundant Array of Inexpensive Disks(RAID)構成のストレージに対しても同様の制御を行なうことができる。
なお、一実施形態及び変形例に係るストレージ装置2において、チャネルアダプタ6及びデバイスアダプタ7の少なくとも一方は、コントローラモジュール4に備えられてもよい。
また、一実施形態のコントローラモジュール4の各種機能の全部もしくは一部は、コンピュータ(CPU,情報処理装置,各種端末を含む)が所定のプログラムを実行することによって実現されてもよい。
そのプログラムは、例えばフレキシブルディスク,CD(CD−ROM,CD−R,CD−RWなど),DVD(DVD−ROM,DVD−RAM,DVD−R,DVD−RW,DVD+R,DVD+RWなど),ブルーレイディスク等のコンピュータ読取可能な記録媒体に記録された形態で提供される。この場合、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。
ここで、コンピュータとは、ハードウェアとOS(オペレーティングシステム)とを含む概念であり、OSの制御の下で動作するハードウェアを意味している。また、OSが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、CPU等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取る手段とをそなえている。上記プログラムは、上述のようなコンピュータに、一実施形態のコントローラモジュール(制御装置,制御部)4の各種機能を実現させるプログラムコードを含んでいる。また、その機能の一部は、アプリケーションプログラムではなくOSによって実現されてもよい。
〔5〕付記
以上の実施形態及び変形例に関し、更に以下の付記を開示する。
(付記1)
上位装置に対して第1サイズのデータブロック単位で入出力を行ない、記憶装置の各データ領域に対して前記第1サイズと異なる第2サイズ単位でデータの入出力を行なう制御装置であって、
前記データ領域を複数の第1サイズのデータブロックの記憶領域に割り当て、複数の前記データ領域に同じ第1サイズのデータブロックを割り当てる処理を行なう割当処理部と、
各データ領域における前記複数の第1サイズのデータブロックの記憶領域のデータ保存状態を示す第1管理情報を管理する管理部と、
書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記第1管理情報に基づいて、該複数のデータ領域の中から一のデータ領域を判定する書込領域判定部と、
前記書き込み対象のデータブロックのデータを含む前記第2サイズの書込用データを生成し、生成した前記書込用データを、前記書込領域判定部により判定された前記一のデータ領域に書き込む処理を行なう書込処理部と、
を備えることを特徴とする、制御装置。
(付記2)
前記管理部は、
前記書き込み対象のデータブロックに対して割り当てられた複数の記憶領域のデータ保存状態が、該複数の記憶領域のうち、一の記憶領域は前記データブロックのデータが書き込まれると有効を示し、他の全ての記憶領域は無効を示すように、前記第1管理情報を書き換える
ことを特徴とする、付記1記載の制御装置。
(付記3)
前記管理部は、
前記各データ領域に割り当てられた前記複数のデータブロックの記憶領域について、データブロックごとに、前記複数のデータ領域のうちのいずれか一のデータ領域内で該データブロックに対して割り当てられた記憶領域が、他の全てのデータ領域内で該データブロックに対して割り当てられた記憶領域との間で排他的に有効を示すように、前記データ保存状態を管理し、
前記書込領域判定部は、
前記書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記第1管理情報に基づいて、前記複数のデータ領域のうちの一つである第1のデータ領域における全てのデータブロックのデータ保存状態が無効であると判断した場合に、前記第1のデータ領域を、前記一のデータ領域と判定する
ことを特徴とする、付記2記載の制御装置。
(付記4)
前記書込領域判定部は、
前記書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記第1管理情報と、前記書き込み対象のデータブロックに対して割り当てられた前記複数のデータ領域における前記書き込み対象のデータブロックが保存される領域を示す第2管理情報とに基づき、前記第1のデータ領域における前記データ保存状態が有効な全てのデータブロックの領域が、前記第1のデータ領域において前記書き込み対象のデータブロックが保存される全ての領域に含まれると判断した場合に、前記第1のデータ領域を、前記一のデータ領域と判定する
ことを特徴とする、付記3記載の制御装置。
(付記5)
前記書込領域判定部は、
前記第1及び第2管理情報に基づく判断によっても、前記複数のデータ領域の中から前記一のデータ領域が判定できない場合に、所定の条件に応じて、前記複数のデータ領域からいずれか一のデータ領域を選択し、
前記書込処理部は、
選択した前記一のデータ領域について、前記書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記第1管理情報に基づいて、前記書き込み対象のデータブロックを含む所定のサイズの書込用データを生成し、生成した前記書込用データを、前記書込領域判定部により選択された前記一のデータ領域へ書き込む
ことを特徴とする、付記4記載の制御装置。
(付記6)
前記複数のデータ領域は、第1のデータ領域及び第2のデータ領域の二つのデータ領域であり、
前記第1管理情報は、前記第1及び第2のデータ領域のいずれか一方のデータ領域に含まれる前記データブロックごとに該データブロックのデータ保存状態が有効か否かを示すビットマップ情報であり、
前記管理部は、
前記ビットマップ情報に基づいて、前記第1及び第2のデータ領域におけるデータ保存状態を管理する
ことを特徴とする、付記3〜5のいずれか1項記載の制御装置。
(付記7)
所定のタイミングで、前記管理部が管理する前記データ保存状態に基づいて、前記複数のデータ領域の各々から前記データ保存状態が有効な前記第1サイズのデータブロックを全て読み出し、読み出した前記データブロックを含む前記第2サイズの書込用データを生成して、生成した前記書込用データを、前記複数のデータ領域のいずれか一のデータ領域に書き込む最適化部、
をさらに備えることを特徴とする、付記2〜6のいずれか1項記載の制御装置。
(付記8)
前記管理部は、
前記書込用データが前記一のデータ領域へ書き込まれると、前記書込用データに含まれる前記第1サイズのデータブロックについて、該データブロックに対して割り当てられた複数の記憶領域のデータ保存状態を更新する
ことを特徴とする、付記2〜7のいずれか1項記載の制御装置。
(付記9)
読み出し対象のデータを形成する一以上のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、前記複数のデータ領域の中から、一以上のデータ領域を判定する読出領域判定部と、
前記読み出し対象の一以上のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、前記読出領域判定部により判定された前記一以上のデータ領域の中から、前記データ保存状態が有効な前記読み出し対象の一以上のデータブロックを読み出す処理を行なう読出処理部と、
をさらに備えることを特徴とする、付記2〜8のいずれか1項記載の制御装置。
(付記10)
前記読出処理部により、前記複数のデータ領域のうちの二以上のデータ領域の中からデータブロックがそれぞれ読み出されると、読み出された各々のデータブロックをマージして、前記読み出し対象のデータを生成する処理を行なうデータマージ処理部、
をさらに備えることを特徴とする、付記9記載の制御装置。
(付記11)
前記書込処理部は、
前記データマージ処理部により生成された前記データを、該データを形成する前記一以上のデータブロックに対して割り当てられた複数のデータ領域のうちの一のデータ領域に書き込む
ことを特徴とする、付記10記載の制御装置。
(付記12)
前記複数のデータ領域のいずれか一つに書き込む前記書き込み対象のデータブロックを保持する前記第2サイズ以上の保持領域を有する保持部、
をさらに備え、
前記書込処理部は、
前記保持領域に保持された前記書き込み対象のデータブロックと、前記保持領域に保持された不要データブロックとを用いて前記書込用データを生成し、生成した前記書込用データを、前記書込領域判定部により判定された前記一のデータ領域へ書き込む
ことを特徴とする、付記1〜11のいずれか1項記載の制御装置。
(付記13)
データを記憶する記憶装置と、
上位装置に対して第1サイズのデータブロック単位で入出力を行ない、前記記憶装置の各データ領域に対して前記第1サイズと異なる第2サイズ単位でデータの入出力を行なう制御装置と、
を備え、
前記制御装置は、
前記データ領域を複数の第1サイズのデータブロックの記憶領域に割り当て、複数の前記データ領域に同じ第1サイズのデータブロックを割り当てる処理を行なう割当処理部と、
各データ領域における前記複数の第1サイズのデータブロックの記憶領域のデータ保存状態を示す管理情報を管理する管理部と、
書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、該複数のデータ領域の中から一のデータ領域を判定する書込領域判定部と、
前記書き込み対象のデータブロックのデータを含む前記第2サイズの書込用データを生成し、生成した前記書込用データを、前記書込領域判定部により判定された前記一のデータ領域に書き込む処理を行なう書込処理部と、
を備えることを特徴とする、ストレージ装置。
(付記14)
前記管理部は、
前記書き込み対象のデータブロックに対して割り当てられた複数の記憶領域のデータ保存状態が、該複数の記憶領域のうち、一の記憶領域は前記データブロックのデータが書き込まれると有効を示し、他の全ての記憶領域は無効を示すように、前記第1管理情報を書き換える
ことを特徴とする、付記13記載のストレージ装置。
(付記15)
前記管理部は、
前記各データ領域に割り当てられた前記複数のデータブロックの記憶領域について、データブロックごとに、前記複数のデータ領域のうちのいずれか一のデータ領域内で該データブロックに対して割り当てられた記憶領域が、他の全てのデータ領域内で該データブロックに対して割り当てられた記憶領域との間で排他的に有効を示すように、前記データ保存状態を管理し、
前記書込領域判定部は、
前記書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記第1管理情報に基づいて、前記複数のデータ領域のうちの一つである第1のデータ領域における全てのデータブロックのデータ保存状態が無効であると判断した場合に、前記第1のデータ領域を、前記一のデータ領域と判定する
ことを特徴とする、付記14記載のストレージ装置。
(付記16)
前記書込領域判定部は、
前記書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記第1管理情報と、前記書き込み対象のデータブロックに対して割り当てられた前記複数のデータ領域における前記書き込み対象のデータブロックが保存される領域を示す第2管理情報とに基づき、前記第1のデータ領域における前記データ保存状態が有効な全てのデータブロックの領域が、前記第1のデータ領域において前記書き込み対象のデータブロックが保存される全ての領域に含まれると判断した場合に、前記第1のデータ領域を、前記一のデータ領域と判定する
ことを特徴とする、付記15記載のストレージ装置。
(付記17)
前記制御装置は、
所定のタイミングで、前記管理部が管理する前記データ保存状態に基づいて、前記複数のデータ領域の各々から前記データ保存状態が有効な前記第1サイズのデータブロックを全て読み出し、読み出した前記データブロックを含む前記第2サイズの書込用データを生成して、生成した前記書込用データを、前記複数のデータ領域のいずれか一のデータ領域に書き込む最適化部、
をさらに備えることを特徴とする、付記13〜16のいずれか1項記載のストレージ装置。
(付記18)
前記制御装置は、
読み出し対象のデータを形成する一以上のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、前記複数のデータ領域の中から、一以上のデータ領域を判定する読出領域判定部と、
前記読み出し対象の一以上のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、前記読出領域判定部により判定された前記一以上のデータ領域の中から、前記データ保存状態が有効な前記読み出し対象の一以上のデータブロックを読み出す処理を行なう読出処理部と、
をさらに備えることを特徴とする、付記13〜16のいずれか1項記載のストレージ装置。
(付記19)
前記制御装置は、
前記読出処理部により、前記複数のデータ領域のうちの二以上のデータ領域の中からデータブロックがそれぞれ読み出されると、読み出された各々のデータブロックをマージして、前記読み出し対象のデータを生成する処理を行なうデータマージ処理部、
をさらに備えることを特徴とする、付記18記載のストレージ装置。
(付記20)
上位装置に対して第1サイズのデータブロック単位で入出力を行ない、記憶装置の各データ領域に対して前記第1サイズと異なる第2サイズ単位でデータの入出力を行なうコンピュータに、
前記データ領域を複数の第1サイズのデータブロックの記憶領域に割り当て、複数の前記データ領域に同じ第1サイズのデータブロックを割り当て、
各データ領域における前記複数の第1サイズのデータブロックの記憶領域のデータ保存状態を示す管理情報を管理し、
書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、該複数のデータ領域の中から一のデータ領域を判定し、
前記書き込み対象のデータブロックのデータを含む前記第2サイズの書込用データを生成し、生成した前記書込用データを、前記書込領域判定部により判定された前記一のデータ領域に書き込む、
処理を実行させることを特徴とする、制御プログラム。
1,100 情報処理システム
2,200 ストレージ装置
3 ホスト装置(上位装置)
4 コントローラモジュール(制御装置,制御部)
5 HDD(記憶装置)
6 チャネルアダプタ
7 デバイスアダプタ
10 CPU(処理部)
11 書込制御部
11a 書込領域判定部
11b,11b′ 書込処理部
12 読出制御部
12a 読出領域判定部
12b 読出処理部
12c データマージ処理部
13 記憶装置ビットマップ管理部(管理部)
13a ビットマップ更新部
13b ビットマップ読出部
13c ビットマップ書込部
14 割当処理部
15 メモリビットマップ管理部
16 最適化部
20 メモリ(保持部)
21 ユーザデータ領域(保持領域)
22 ビットマップ領域
22a 記憶装置ビットマップ(管理情報,第1管理情報)
22b メモリビットマップ(第2管理情報)
30 SSD(格納部)
31,53 記憶装置ビットマップ格納領域
41 入出力装置
42,43a 記録媒体
43 読取装置
51,410,510 メモリ
52,520 記憶領域
52a−1 第1グループ
52a−2 第2グループ
52b,52b−1 A領域(データ領域)
52b,52b−2 B領域(データ領域)
300 ホスト装置
400 コントローラモジュール
500 HDD

Claims (7)

  1. 上位装置に対して第1サイズのデータブロック単位で入出力を行ない、記憶装置の各データ領域に対して前記第1サイズと異なる第2サイズ単位でデータの入出力を行なう制御装置であって、
    前記データ領域を複数の第1サイズのデータブロックの記憶領域に割り当て、複数の前記データ領域に同じ第1サイズのデータブロックを割り当てる処理を行なう割当処理部と、
    各データ領域における前記複数の第1サイズのデータブロックの記憶領域のデータ保存状態を示す管理情報を管理する管理部と、
    書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、該複数のデータ領域の中から一のデータ領域を判定する書込領域判定部と、
    前記書き込み対象のデータブロックのデータを含む前記第2サイズの書込用データを生成し、生成した前記書込用データを、前記書込領域判定部により判定された前記一のデータ領域に書き込む処理を行なう書込処理部と、
    を備えることを特徴とする、制御装置。
  2. 前記管理部は、
    前記書き込み対象のデータブロックに対して割り当てられた複数の記憶領域のデータ保存状態が、該複数の記憶領域のうち、一の記憶領域は前記データブロックのデータが書き込まれると有効を示し、他の全ての記憶領域は無効を示すように、前記管理情報を書き換える
    ことを特徴とする、請求項1記載の制御装置。
  3. 前記管理部は、
    前記各データ領域に割り当てられた前記複数のデータブロックの記憶領域について、データブロックごとに、前記複数のデータ領域のうちのいずれか一のデータ領域内で該データブロックに対して割り当てられた記憶領域が、他の全てのデータ領域内で該データブロックに対して割り当てられた記憶領域との間で排他的に有効を示すように、前記データ保存状態を管理し、
    前記書込領域判定部は、
    前記書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、前記複数のデータ領域のうちの一つである第1のデータ領域における全てのデータブロックのデータ保存状態が無効であると判断した場合に、前記第1のデータ領域を、前記一のデータ領域と判定する
    ことを特徴とする、請求項2記載の制御装置。
  4. 所定のタイミングで、前記管理部が管理する前記データ保存状態に基づいて、前記複数のデータ領域の各々から前記データ保存状態が有効な前記第1サイズのデータブロックを全て読み出し、読み出した前記データブロックを含む前記第2サイズの書込用データを生成して、生成した前記書込用データを、前記複数のデータ領域のいずれか一のデータ領域に書き込む最適化部、
    をさらに備えることを特徴とする、請求項2又は請求項3記載の制御装置。
  5. 読み出し対象のデータである一以上のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、前記複数のデータ領域の中から一以上のデータ領域を判定する読出領域判定部と、
    前記読み出し対象の一以上のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、前記読出領域判定部により判定された前記一以上のデータ領域の中から、前記データ保存状態が有効な前記読み出し対象の一以上のデータブロックを読み出す処理を行なう読出処理部と、
    をさらに備えることを特徴とする、請求項2〜4のいずれか1項記載の制御装置。
  6. データを記憶する記憶装置と、
    上位装置に対して第1サイズのデータブロック単位で入出力を行ない、前記記憶装置の各データ領域に対して前記第1サイズと異なる第2サイズ単位でデータの入出力を行なう制御装置と、をそなえ、
    前記制御装置は、
    前記データ領域を複数の第1サイズのデータブロックの記憶領域に割り当て、複数の前記データ領域に同じ第1サイズのデータブロックを割り当てる処理を行なう割当処理部と、
    各データ領域における前記複数の第1サイズのデータブロックの記憶領域のデータ保存状態を示す管理情報を管理する管理部と、
    書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、該複数のデータ領域の中から一のデータ領域を判定する書込領域判定部と、
    前記書き込み対象のデータブロックのデータを含む前記第2サイズの書込用データを生成し、生成した前記書込用データを、前記書込領域判定部により判定された前記一のデータ領域に書き込む処理を行なう書込処理部と、
    を備えることを特徴とする、ストレージ装置。
  7. 上位装置に対して第1サイズのデータブロック単位で入出力を行ない、記憶装置の各データ領域に対して前記第1サイズと異なる第2サイズ単位でデータの入出力を行なうコンピュータに、
    前記データ領域を複数の第1サイズのデータブロックの記憶領域に割り当て、複数の前記データ領域に同じ第1サイズのデータブロックを割り当て、
    各データ領域における前記複数の第1サイズのデータブロックの記憶領域のデータ保存状態を示す管理情報を管理し、
    書き込み対象のデータブロックに対して割り当てられた複数のデータ領域の前記管理情報に基づいて、該複数のデータ領域の中から一のデータ領域を判定し、
    前記書き込み対象のデータブロックのデータを含む前記第2サイズの書込用データを生成し、生成した前記書込用データを、前記書込領域判定部により判定された前記一のデータ領域に書き込む、
    処理を実行させることを特徴とする、制御プログラム。
JP2013059325A 2013-03-22 2013-03-22 制御装置,ストレージ装置,及び制御プログラム Active JP6089844B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013059325A JP6089844B2 (ja) 2013-03-22 2013-03-22 制御装置,ストレージ装置,及び制御プログラム
US14/170,679 US9703695B2 (en) 2013-03-22 2014-02-03 Control device, storage device, and computer-readable recording medium having stored therein control program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013059325A JP6089844B2 (ja) 2013-03-22 2013-03-22 制御装置,ストレージ装置,及び制御プログラム

Publications (2)

Publication Number Publication Date
JP2014186412A true JP2014186412A (ja) 2014-10-02
JP6089844B2 JP6089844B2 (ja) 2017-03-08

Family

ID=51570026

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013059325A Active JP6089844B2 (ja) 2013-03-22 2013-03-22 制御装置,ストレージ装置,及び制御プログラム

Country Status (2)

Country Link
US (1) US9703695B2 (ja)
JP (1) JP6089844B2 (ja)

Cited By (1)

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

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6255893B2 (ja) * 2013-10-24 2018-01-10 富士通株式会社 ストレージ制御装置、およびストレージ制御プログラム
KR20180058327A (ko) * 2016-11-24 2018-06-01 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그의 동작 방법
US10606775B1 (en) * 2018-12-28 2020-03-31 Micron Technology, Inc. Computing tile
CN111190537B (zh) * 2019-12-10 2023-08-25 优刻得科技股份有限公司 一种追加写场景下顺序存储磁盘管理的方法及系统
JP2022029558A (ja) * 2020-08-05 2022-02-18 株式会社東芝 磁気ディスク装置及びエラー訂正方法
JP2022093083A (ja) * 2020-12-11 2022-06-23 富士通株式会社 情報処理装置及び制御プログラム

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007193439A (ja) * 2006-01-17 2007-08-02 Toshiba Corp 不揮発性キャッシュメモリを用いる記憶装置とその制御方法
JP2009032323A (ja) * 2007-07-26 2009-02-12 Toshiba Corp ディスク記憶装置
US20090113119A1 (en) * 2007-10-30 2009-04-30 Hagiwara Sys-Com Co., Ltd Data writing method
JP2009134682A (ja) * 2007-10-30 2009-06-18 Hagiwara Sys-Com:Kk ソリッドステートドライブ及びデータ書き込み方法
JP2010250847A (ja) * 2007-12-28 2010-11-04 Toshiba Corp 半導体記憶装置
JP2010267345A (ja) * 2009-05-15 2010-11-25 Toshiba Corp ディスクコントローラ、ディスクドライブ装置、及びディスク制御方法
JP2011222015A (ja) * 2010-04-06 2011-11-04 Samsung Electronics Co Ltd ディスク装置及びそのライト方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10106170A (ja) 1996-09-27 1998-04-24 Toshiba Corp 光ディスク情報記録システム
US7934074B2 (en) * 1999-08-04 2011-04-26 Super Talent Electronics Flash module with plane-interleaved sequential writes to restricted-write flash chips
JP2012113789A (ja) 2010-11-26 2012-06-14 Buffalo Inc ハードディスクドライブ装置およびその処理装置
US9146683B2 (en) * 2011-04-20 2015-09-29 Seagate Technology Llc Logical block address mapping

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007193439A (ja) * 2006-01-17 2007-08-02 Toshiba Corp 不揮発性キャッシュメモリを用いる記憶装置とその制御方法
JP2009032323A (ja) * 2007-07-26 2009-02-12 Toshiba Corp ディスク記憶装置
US20090113119A1 (en) * 2007-10-30 2009-04-30 Hagiwara Sys-Com Co., Ltd Data writing method
JP2009134682A (ja) * 2007-10-30 2009-06-18 Hagiwara Sys-Com:Kk ソリッドステートドライブ及びデータ書き込み方法
JP2010250847A (ja) * 2007-12-28 2010-11-04 Toshiba Corp 半導体記憶装置
JP2010267345A (ja) * 2009-05-15 2010-11-25 Toshiba Corp ディスクコントローラ、ディスクドライブ装置、及びディスク制御方法
JP2011222015A (ja) * 2010-04-06 2011-11-04 Samsung Electronics Co Ltd ディスク装置及びそのライト方法

Cited By (1)

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

Also Published As

Publication number Publication date
JP6089844B2 (ja) 2017-03-08
US20140289493A1 (en) 2014-09-25
US9703695B2 (en) 2017-07-11

Similar Documents

Publication Publication Date Title
JP6089844B2 (ja) 制御装置,ストレージ装置,及び制御プログラム
US9128855B1 (en) Flash cache partitioning
KR102060736B1 (ko) 저장 장치에 의해 데이터를 저장하기 위한 방법 및 저장 장치
KR101086857B1 (ko) 데이터 머지를 수행하는 반도체 스토리지 시스템의 제어 방법
EP3617867B1 (en) Fragment management method and fragment management apparatus
JP2008015769A (ja) ストレージシステム及び書き込み分散方法
JP2000305860A (ja) 情報記憶システム及び同システムに於ける記憶制御方法
JP2011192260A (ja) 半導体記憶装置
JPWO2015076354A1 (ja) ストレージ装置と方法並びにプログラム
US9319067B2 (en) Storage control apparatus, storage system, and storage control method
JP6011153B2 (ja) ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
JP2017204037A (ja) 情報処理装置、重複除去プログラム、及び重複除去方法
JP2017211920A (ja) ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
US10133517B2 (en) Storage control device
JP5594647B2 (ja) ストレージ装置及びその制御方法
US10162573B2 (en) Storage management system, storage management method, storage medium and information processing system
JP2019003416A (ja) ストレージ制御装置、制御プログラム及び制御方法
US20110264848A1 (en) Data recording device
JP6874348B2 (ja) ストレージ制御装置、およびストレージ制御プログラム
JP6928247B2 (ja) ストレージ制御装置およびストレージ制御プログラム
JP2008198102A (ja) データ処理システム、データ記憶装置、ハードディスク装置、およびデータ記憶装置におけるデータ管理方法
JP6693181B2 (ja) ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム
WO2020097781A1 (zh) 一种管理逻辑磁盘的性能的方法及存储阵列
JP2017134700A (ja) 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
WO2014010016A1 (ja) プログラム、データ管理方法、および情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151106

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160921

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161004

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161129

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170110

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170123

R150 Certificate of patent or registration of utility model

Ref document number: 6089844

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150