JP6255893B2 - ストレージ制御装置、およびストレージ制御プログラム - Google Patents

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

Info

Publication number
JP6255893B2
JP6255893B2 JP2013220787A JP2013220787A JP6255893B2 JP 6255893 B2 JP6255893 B2 JP 6255893B2 JP 2013220787 A JP2013220787 A JP 2013220787A JP 2013220787 A JP2013220787 A JP 2013220787A JP 6255893 B2 JP6255893 B2 JP 6255893B2
Authority
JP
Japan
Prior art keywords
command
queue
data
write
data size
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.)
Expired - Fee Related
Application number
JP2013220787A
Other languages
English (en)
Other versions
JP2015082269A (ja
Inventor
政智 中村
政智 中村
康太郎 仁村
康太郎 仁村
麻理恵 安部
麻理恵 安部
與志仁 紺田
與志仁 紺田
秀史 小林
秀史 小林
美帆子 東條
美帆子 東條
康寛 小笠原
康寛 小笠原
秋山 茂
茂 秋山
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 JP2013220787A priority Critical patent/JP6255893B2/ja
Priority to US14/510,157 priority patent/US9529707B2/en
Priority to EP20140188972 priority patent/EP2866137A1/en
Publication of JP2015082269A publication Critical patent/JP2015082269A/ja
Application granted granted Critical
Publication of JP6255893B2 publication Critical patent/JP6255893B2/ja
Expired - Fee Related 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
    • G06F12/023Free address space management
    • 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
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • 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
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、ストレージ制御装置、およびストレージ制御プログラムに関する。
近年のハード ディスク ドライブ(HDD:Hard Disk Drive)の高記録密度化を背景に、HDDの物理フォーマットが512バイトセクタから4096バイトセクタ(4K)に移行しつつある。
一方、既存のソフトウェアは、512バイトの論理セクタサイズに対応しているため、4096バイトの論理セクタサイズに対応した4K対応のHDD(4Kバイトセクタ Native)との間で互換性の問題が生じる。そこで、既存のソフトウェアが512バイトの論理セクタサイズでアクセス可能にエミュレートする4K対応のHDD(512バイトセクタ Emulation)の提案があり、AFT(Advanced Format Technology)として知られている。
特開2012−221350号公報 特開2005−63441号公報 特開2010−26345号公報 特開2010−211888号公報 特開2010−80021号公報
しかしながら、512バイトセクタ Emulationは、アクセスデータと4096バイトの物理セクタサイズとのバウンダリがずれた場合に、RMW(Read Modify Write)をおこなう。RMWは、書込動作前に読込動作をおこなうことから、ディスク媒体の回転分単位(たとえば、2回転分)の遅延を生じ、HDD(記憶装置)のアクセス性能を低下させる。
1つの側面では、本発明は、RMWの実行回数削減による記憶装置のアクセス性能低下を抑制できるストレージ制御装置、およびストレージ制御プログラムを提供することを目的とする。
上記目的を達成するために、以下に示すような、ストレージ制御装置が提供される。ストレージ制御装置は、第1のデータサイズのデータをアクセス単位とするコマンドを受け付けて、第1のデータサイズの所定の整数倍である第2のデータサイズのデータをアクセス単位とする記憶装置の入出力制御をおこなう。ストレージ制御装置は、メモリと、コマンド振分部と、コマンド発行部と、を備える。メモリは、コマンドを格納可能な、第1のキューと第2のキューとを備える。コマンド振分部は、受け付けたコマンドのうちの、第2のデータサイズとバウンダリが一致しないライトコマンドである第1のコマンドを第2のキューに振り分け、第2のデータサイズとバウンダリが一致するライトコマンドを含む第2のコマンドを第1のキューに振り分けて、メモリに格納する。コマンド発行部は、第1のコマンドに優先して第2のコマンドを記憶装置に発行するとともに、所定条件成立時に第2のキューからデキューした第1のコマンドを第2のコマンドに変換して第1のキューの先頭にキューイングする
1態様によれば、ストレージ制御装置、およびストレージ制御プログラムにおいて、RMWの実行回数削減による記憶装置のアクセス性能低下を抑制できる。
第1の実施形態のストレージ制御装置の構成の一例を示す図である。 第2の実施形態のストレージシステムの構成例と、ストレージディスクアレイ装置のハードウェア構成例を示す図である。 第2の実施形態のI/O発行待ちキューの一例を示す図である。 第2の実施形態の書込データにおけるバウンダリの一致例および不一致例を示す図である。 第2の実施形態のアンアラインコマンドによるアクセス遅延例である。 第2の実施形態のコマンド振分処理のフローチャートを示す図である。 第2の実施形態の通常キューまたはアンアラインキューへのコマンドの振分の一例を示す図である。 第2の実施形態のアンアラインコマンドからアラインコマンドの構成例を示す図である。 第2の実施形態の疑似リードコマンドとその動作の一例を示す図である。 第2の実施形態の複数のアンアラインコマンドの書込領域と疑似読出領域とが重複する疑似リードコマンドとその動作の一例を示す図である。 第2の実施形態のコマンド掃き出し処理のフローチャートを示す図である。 第2の実施形態のデキュー処理のフローチャートを示す図である。 第2の実施形態の応答確認処理のフローチャートを示す図である。 第2の実施形態の疑似リード設定処理のフローチャートを示す図である。
以下、図面を参照して実施の形態を詳細に説明する。
[第1の実施形態]
まず、第1の実施形態のストレージ制御装置について図1を用いて説明する。図1は、第1の実施形態のストレージ制御装置の構成の一例を示す図である。
ストレージ制御装置1は、図示しない上位制御装置(たとえば、ファイルサーバなど)からコマンドを受け付けて、記憶装置2の入出力制御をおこなう。ストレージ制御装置1は、上位制御装置から第1のデータサイズをアクセス単位とするコマンドを受け付ける。
第1のデータサイズは、従来のHDDの物理セクタサイズに対応した論理セクタサイズであり、たとえば、512バイトや520バイトなどである。第2のデータサイズは、第1のデータサイズの整数倍であり、たとえば、8倍である。より、具体的には、第2のデータサイズは、4K対応のHDDの物理セクタサイズに対応し、4096バイト(=512×8)や4160(=520×8)バイトなどである。
記憶装置2は、第2のデータサイズをアクセス単位として所要のデータを記憶可能であり、第1のデータサイズのコマンドに対応して入出力をおこなう。記憶装置2は、たとえばAFTに準拠し、512バイトの論理セクタサイズで4K対応の物理セクタサイズにアクセス可能にエミュレートする。すなわち、記憶装置2は、第2のデータサイズのライトコマンドに対して1回の書込動作をおこなうが、第1のデータサイズのライトコマンドに対して第2のデータサイズのデータの読出動作を伴うRMWをおこなう。
ストレージ制御装置1は、メモリ3と、コマンド振分部4と、コマンド発行部5とを備える。メモリ3は、たとえばキャッシュメモリであり、上位制御装置から受け付けたコマンドを格納可能である。
コマンド振分部4は、受け付けたコマンドを、第2のデータサイズとバウンダリが一致しないライトコマンドである第1のコマンドと、バウンダリが一致するライトコマンドを含む第2のコマンドとに振り分けて、メモリ3に格納する。なお、言い換えれば、第1のコマンドは、記憶装置2がRMWを要するコマンドであり、第2のコマンドは、記憶装置2がRMWを要しないコマンドである。また、第2のコマンドは、バウンダリが一致するライトコマンドの他に、リードコマンドがある。
たとえば、メモリ3は、第1のキュー6と第2のキュー7とを備え、コマンド振分部4は、受け付けたコマンドを第1のキュー6と第2のキュー7とに振り分ける。コマンド振分部4は、第1のコマンドを第2のキュー7に振り分けて格納し、第2のコマンドを第1のキュー6に振り分けて格納する。
コマンド発行部5は、第1のコマンドに優先して第2のコマンドを記憶装置2に発行するとともに、所定条件成立時に第1のコマンドを第2のコマンドに変換する。これにより、第1のコマンドは、メモリ3に滞留する時間が第2のコマンドより大きくなる。また、第1のコマンドは、メモリ3の滞留中に変換機会を得て第2のコマンドに変換され得る。
したがって、ストレージ制御装置1は、受け付けたコマンドのうちRMWを要するコマンドを低減して記憶装置2の入出力制御をおこなうことができる。すなわち、ストレージ制御装置1は、RMWの実行回数を削減して記憶装置2のアクセス性能低下を抑制できる。
[第2の実施形態]
次に、第2の実施形態のストレージシステムと、ストレージディスクアレイ装置のハードウェア構成について図2を用いて説明する。図2は、第2の実施形態のストレージシステムの構成例と、ストレージディスクアレイ装置のハードウェア構成例を示す図である。
ストレージシステム10は、ストレージディスクアレイ装置20とディスクエンクロージャ(以下、DE)30とを含んで構成される。
ストレージシステム10は、1以上のサーバ11と、サーバ11と通信可能に接続する1以上のストレージディスクアレイ装置20とを含んで構成される。ストレージディスクアレイ装置20は、複数のHDD31(31a,31b,・・・,31n)を収容するDE30と接続する。HDD31は、記憶装置の1つであり、4K対応のHDD(512バイトセクタ Emulation)である。
なお、DE30は、複数のHDD31とストレージディスクアレイ装置20とを接続するインタフェースを有する。ストレージシステム10は、1以上のHDD31の組合せにより論理ボリュームを構成する。なお、DE30は、ストレージディスクアレイ装置20が内蔵するものであってもよいし、ストレージディスクアレイ装置20に外付けされるものであってもよい。また、図示するストレージディスクアレイ装置20は、1つのDE30と接続するが2以上のDE30と接続してもよい。
ストレージディスクアレイ装置20は、論理ボリュームへのI/O要求として、HDD31へのI/O要求をサーバ11から受け付ける。ストレージディスクアレイ装置20は、1以上のコントローラモジュール(以下、CM(Controller Module))21を含む。ストレージディスクアレイ装置20は、CM21aとCM21bとにより冗長構成を有する。
CM21aは、ストレージ制御装置の一形態であり、サーバ11からのI/O要求(たとえば、ライトコマンド、リードコマンドなど)を受け付けて、HDD31を制御する。CM21aは、プロセッサ22、メモリ23、ディスクアダプタ(以下、DA(Disk Adaptor))24と、チャネルアダプタ(以下、CA(Channel Adaptor))25とを備え、図示しないバスを介して接続されている。CM21aは、DA24を介してDE30が収容するHDD31と接続し、CA25を介してサーバ11と接続する。
プロセッサ22は、CM21a全体を制御し、HDD31の制御をおこなう。プロセッサ22は、マルチプロセッサであってもよい。プロセッサ22は、たとえばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)である。またプロセッサ22は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組合せであってもよい。
メモリ23は、たとえば、RAM(Random Access Memory)や不揮発性メモリを含む。メモリ23は、HDD31からデータを読み出したときにデータを保持するほか、I/O要求を一時的に蓄積するI/O発行待ちキューやHDD31にデータを書き込むときのバッファとなる。また、メモリ23は、ユーザデータや制御情報を格納する。DA24は、HDD31とのインタフェース制御(アクセス制御)をおこなう。たとえば、RAMは、CM21aの主記憶装置として使用される。RAMには、プロセッサ22に実行させるオペレーティングシステム(Operating System)のプログラムやファームウェア、アプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAMには、プロセッサ22による処理に必要な各種データが格納される。また、RAMは、各種データの格納に用いるメモリと別体にキャッシュメモリを含むものであってもよい。
不揮発性メモリは、ストレージディスクアレイ装置20の電源遮断時においても記憶内容を保持する。不揮発性メモリは、たとえば、EEPROM(Electrically Erasable and Programmable ROM)やフラッシュメモリなどの半導体記憶装置や、HDDなどである。不揮発性メモリには、オペレーティングシステムのプログラムやファームウェア、アプリケーションプログラム、および各種データが格納される。
なお、CM21bについては、CM21aと同様のため説明を省略する。
以上のようなハードウェア構成によって、第2の実施形態のCM21(ストレージディスクアレイ装置20)の処理機能を実現することができる。なお、第1の実施形態に示したストレージ制御装置1も、図示したCM21と同様のハードウェアにより実現することができる。
CM21(ストレージディスクアレイ装置20)は、たとえばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施形態の処理機能を実現する。CM21に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。たとえば、CM21に実行させるプログラムを不揮発性メモリに格納しておくことができる。プロセッサ22は、不揮発性メモリ内のプログラムの少なくとも一部をRAMにロードし、プログラムを実行する。またCM21に実行させるプログラムを、図示しない光ディスク、メモリ装置、メモリカードなどの可搬型記録媒体に記録しておくこともできる。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。メモリ装置は、図示しない入出力インタフェースあるいは機器接続インタフェースとの通信機能を搭載した記録媒体である。たとえば、メモリ装置は、メモリリーダライタによりメモリカードへのデータの書き込み、またはメモリカードからのデータの読み出しをおこなうことができる。メモリカードは、カード型の記録媒体である。
可搬型記録媒体に格納されたプログラムは、たとえばプロセッサ22からの制御により、不揮発性メモリにインストールされた後、実行可能となる。またプロセッサ22が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
次に、第2の実施形態のI/O発行待ちキューについて図3を用いて説明する。図3は、第2の実施形態のI/O発行待ちキューの一例を示す図である。
CM21は、HDD31へのコマンド(たとえば、SCSI(Small Computer System Interface)コマンド)の発行および応答を制御するモジュールとしてドライバ26を有する。ドライバ26は、プロセッサ22が所要のプログラムを実行することで実現する。ドライバ26は、メモリ23上にI/O発行待ちキュー27を用意する。ドライバ26は、キャッシュメモリ23aを介してコマンドを受け取り、I/O発行待ちキュー27にコマンドをキューイングする。ドライバ26は、HDD31へのコマンド発行ができる場合に、I/O発行待ちキュー27からコマンドをデキューしてDE30(HDD31)にコマンドを発行する。また、ドライバ26は、DE30(HDD31)から応答があった場合にキャッシュメモリ23aを介して上位装置に応答する。
I/O発行待ちキュー27は、通常キュー(アラインキュー)28とアンアラインキュー29とがある。ドライバ26は、コマンドのうちアンアラインコマンドを受け取った場合にアンアラインキュー29にキューイングし、アンアラインコマンド以外のコマンド(アラインコマンド)を受け取った場合に通常キュー28にキューイングする。
アンアラインコマンドは、HDD31の物理セクタサイズとバウンダリが一致しないライトコマンド(第1のコマンド)であり、HDD31がRMWを要するコマンドである。アラインコマンドは、HDD31の物理セクタサイズとバウンダリが一致するライトコマンドを含むコマンド(第2のコマンド)であり、HDD31がRMWを要しないコマンドである。なお、アラインコマンドは、HDD31の物理セクタサイズとのバウンダリの一致を問わないリードコマンドを含む。
次に、HDD31の物理セクタサイズとバウンダリについて図4を用いて説明する。図4は、第2の実施形態の書込データにおけるバウンダリの一致例および不一致例を示す図である。
HDD31の論理セクタサイズは、520バイトであり、物理セクタサイズは、520バイトの8倍の4160バイト(=4kバイト)である。HDD31は、4kバイトより小さいデータ長の書き込みに対してディスク内部でRMWを実行するため、4kバイトより小さいデータ長の書き込みは、HDD31のアクセス性能を低下させる。
たとえば、書込データ200は、先頭200Sと末尾200Eの両方が、物理セクタのバウンダリ(境界)と一致することから、RMWを要しない。また、書込データ201は、先頭201Sが物理セクタの境界と一致せず、末尾201Eが物理セクタの境界と一致することから、先頭が位置する物理セクタでRMWを要する。また、書込データ202は、先頭202Sが物理セクタの境界と一致し、末尾202Eが物理セクタの境界と一致しないことから、末尾が位置する物理セクタでRMWを要する。また、書込データ203は、先頭203Sおよび末尾203Eが物理セクタの境界と一致せず、先頭が位置する物理セクタと末尾が位置する物理セクタでRMWを要する。
したがって、書込データ200は、すべてをアラインコマンドとすることができる。一方、書込データ201,202,203は、先頭が位置する物理セクタまたは末尾が位置する物理セクタ、あるいはその両方への書き込みがアンアラインコマンドとなる。
次に、アンアラインコマンドによるアクセス遅延について図5を用いて説明する。図5は、第2の実施形態のアンアラインコマンドによるアクセス遅延例である。
図5は、ストレージディスクアレイ装置20がHDD31に4kバイトのライトコマンド(Write(=4k))、4kバイト未満のライトコマンド(Write(≠4k))、およびリードコマンド(Read)を順に発行したことを示す。
HDD31は、Write(=4k)を受け付けて、ディスク媒体に4kバイトのデータを書き込む。一方、HDD31は、Write(≠4k)を受け付けた場合、まず、ディスク媒体から書込データの書込位置に対応する物理セクタから4kバイトのデータを読み出す。HDD31は、読み出した4kバイトのデータに書込データを重畳(Modify)する。HDD31は、書込データを重畳した4kバイトのデータをディスク媒体に書き戻す。すなわち、ストレージディスクアレイ装置20がHDD31に発行する4kバイト未満のライトコマンドは、HDD31にRMWを実行させる。HDD31は、4kバイト未満のライトコマンドにより、読出動作分の遅延(およそディスク2回転分程度)を生じ、アクセス性能を低下させる。
このような動作遅延は、4kバイト未満のライトコマンドに続くリードコマンドにも影響が及ぶ。また、4kバイト未満のライトコマンドの頻度が高いほど、遅延時間が蓄積する。したがって、4kバイト未満のライトコマンドの低減がHDD31のアクセス性能低下を抑制する。
次に、第2の実施形態のコマンド振分処理について図6を用いて説明する。図6は、第2の実施形態のコマンド振分処理のフローチャートを示す図である。
コマンド振分処理は、ストレージディスクアレイ装置20が受け付けたコマンドを、通常キュー28またはアンアラインキュー29に振り分けてキューイングする処理である。また、コマンド振分処理は、所定条件が成立した場合に、アンアラインキュー29にキューイングされているアンアラインコマンドをアラインコマンドに変換する。コマンド振分処理は、上位装置からコマンドを受け付けて、ドライバ26が実行する処理である。
[ステップS11]ドライバ26(プロセッサ22)は、受け付けたコマンドがアンアラインのライトコマンドであるか否かを判定する。言い換えれば、ドライバ26は、受け付けたコマンドがRMWを要するライトコマンドであるか否かを判定する。ドライバ26は、受け付けたコマンドがアンアラインのライトコマンドである場合にステップS13にすすみ、アンアラインのライトコマンドでない場合にステップS12にすすむ。
[ステップS12]ドライバ26は、受け付けたコマンドを通常キュー28のテイル(通常キューテイル)にキューイングし、コマンド振分処理を終了する。通常キュー28にキューイングされたコマンドは、原則としてFIFO(First In First Out)でデキューされて処理される。
[ステップS13]ドライバ26は、受け付けたコマンドをアンアラインキュー29のテイル(アンアラインキューテイル)にキューイングする。
ここで、ストレージディスクアレイ装置20が受け付けたコマンドの振分について図7を用いて説明する。図7は、第2の実施形態の通常キューまたはアンアラインキューへのコマンドの振分の一例を示す図である。
ドライバ26は、図示する到着順(コマンドC1、コマンドC2、・・・、コマンドC5の順)でコマンドを受け付ける。ドライバ26は、コマンドC1が「Write(≠4k)」、すなわちアンアラインのライトコマンド(アンアラインコマンド)であることから、アンアラインキュー29のテイル(最後尾)にキューイングする。
次に、ドライバ26は、コマンドC2が「Write(=4k)」、すなわちアラインのライトコマンド(アラインコマンド)であることから、通常キュー28のテイルにキューイングする。ドライバ26は、コマンドC3が「Read」であることから、通常キュー28のテイルにキューイングする。以下、ドライバ26は、コマンドC4をアンアラインキュー29のテイルに、コマンドC5を通常キュー28のテイルにキューイングする。
これにより、RMWが不要なコマンドは通常キュー28にキューイングされ、RMWを要するコマンドはアンアラインキュー29にキューイングされることとなる。
再び、コマンド振分処理のフローチャートの説明に戻る。
[ステップS14]ドライバ26は、アンアラインキュー29にキューイングされている2以上のアンアラインコマンドからアラインコマンドを構成できるか否かを判定する。すなわち、ドライバ26は、アンアラインキューにキューイングされている2以上のアンアラインコマンドの書込データから同じ4kバウンダリの領域(同一の物理セクタ)分のデータを作成することができるか否かを判定する。
ここで、アンアラインコマンドからアラインコマンドを構成できる場合について図8を用いて説明する。図8は、第2の実施形態のアンアラインコマンドからアラインコマンドの構成例を示す図である。
コマンドC11は、アンアラインのライトコマンド(アンアラインコマンド)であり、書込データ210は、4kバウンダリの一部領域に書き込まれるアンアラインのデータ(アンアラインデータ)である。コマンドC12も、アンアラインコマンドであり、書込データ211は、アンアラインデータであり、書込データ210と同じ4kバウンダリにある。書込データ210と書込データ211は、同じ4kバウンダリで相互に補完する関係にあり、両者を重畳(Modify)することで書込データ212を得る。書込データ212は、4kバウンダリの全部領域に書き込まれるアラインのデータ(アラインデータ)である。書込データ212を書込対象とするコマンドC13は、アラインのライトコマンドとすることができる。
なお、2以上のアンアラインデータを重畳してもアラインデータを生成できない場合は、アンアラインコマンドからアラインコマンドを構成できないことから、ドライバ26は、アラインコマンドを構成可能なアンアラインコマンドの到着を待つ。
再び、コマンド振分処理のフローチャートの説明に戻る。
[ステップS15]ドライバ26は、ステップS14のアラインコマンド構成判定の結果を参照し、アラインコマンドを構成できる場合にステップS16にすすみ、アラインコマンドを構成できない場合にステップS19にすすむ。
[ステップS16]ドライバ26は、アラインコマンドを構成可能なアンアラインコマンドをアンアラインキュー29からデキューする。なお、この場合、ドライバ26は、FIFOの原則によらずに、対象となるアンアラインコマンドをアンアラインキュー29からデキューする。
[ステップS17]ドライバ26は、アンアラインキュー29からデキューしたアンアラインコマンドからアラインコマンドを生成する。すなわち、ドライバ26は、アンアラインコマンドをアラインコマンドに変換する。
[ステップS18]ドライバ26は、生成したアラインコマンドを通常キュー28のヘッド(通常キューヘッド)にキューイングし、コマンド振分処理を終了する。これにより、アンアラインコマンドから生成されたアラインコマンドは、通常キュー28からデキューされてHDD31にコマンド発行されることとなる。
このように、ストレージディスクアレイ装置20は、アンアラインコマンドをアラインコマンドに変換することができる。したがって、ストレージディスクアレイ装置20は、RMWを要するアンアラインコマンドを低減してHDD31の入出力制御をおこなうことができる。すなわち、ストレージディスクアレイ装置20は、RMWの実行回数を削減してHDD31のアクセス性能低下を抑制できる。さらに、ストレージディスクアレイ装置20は、ライトコマンドの数を削減することからアクセス性能向上を図ることもできる。
[ステップS19]ドライバ26は、アンアラインキュー29のキャッシュ使用率が大きいか否かを判定する。ドライバ26は、あらかじめ設定する閾値と、アンアラインキュー29のキャッシュ使用率との比較によりキャッシュ使用率が大きいか否かを判定することができる。ドライバ26は、アンアラインキュー29のキャッシュ使用率が大きい場合にステップS20にすすみ、アンアラインキュー29のキャッシュ使用率が大きくない場合にコマンド振分処理を終了する。
なお、閾値は、ストレージディスクアレイ装置20の稼働状態や、メモリ23の使用率などにもとづいて変動するものであってもよい。また、アンアラインキュー29のキャッシュ使用率が大きいか否かの判定は、アンアラインコマンドがアンアラインキュー29に過大に蓄積することを防止するものである。したがって、キャッシュ使用率に代えてアンアラインコマンドの蓄積量、滞在時間(たとえば、平均滞在時間)などによって評価してもよい。
[ステップS20]ドライバ26は、アンアラインキュー29のキャッシュ使用率が大きいことから、アンアラインキュー29からアンアラインコマンドの掃き出しをおこなうコマンド掃き出し処理を実行する。コマンド掃き出し処理は、後述する疑似リードコマンドの生成によりRMWを回避するアンアラインコマンドの掃き出しと、RMWを要するアンアラインコマンドの掃き出しとのうちいずれを実行するかを決定する処理である。コマンド掃き出し処理の詳細は、図11を用いて後述する。
ここで、疑似リードコマンドについて図9、図10を用いて説明する。まず、リードコマンドを拡張する疑似リードコマンドについて図9を用いて説明する。図9は、第2の実施形態の疑似リードコマンドとその動作の一例を示す図である。
ドライバ26は、キャッシュ(メモリ23)上に疑似リード専用領域をあらかじめ確保する。疑似リードコマンドは、リードコマンドが読出対象とする物理セクタ(読出対象セクタ)に加えて、読出対象セクタに連続する物理セクタからデータを読み出すコマンドである。すなわち、疑似リードコマンドは、リードコマンドの読出領域を疑似読出領域の分だけ拡張してHDD31からデータを読み出すコマンドである。すなわち、リードコマンドの読出領域を疑似読出領域の分だけ拡張する疑似リードコマンドは、受け付けたリードコマンドを拡張する拡張リードコマンドともいえる。なお、疑似読出領域は、読出領域を含めて疑似リード専用領域のサイズに収まる大きさである。
疑似リードコマンドは、ドライバ26が受け付けたリードコマンドの読出領域を拡張したときに、アンアラインキュー29にあるアンアラインコマンドの書込領域と疑似読出領域とが重なる場合に、ドライバ26によって生成される。たとえば、書込領域WR1にデータを書き込むアンアラインコマンドC21と、書込領域WR2にデータを書き込むアンアラインコマンドC22とがアンアラインキュー29にある。このとき、ドライバ26が読出領域RRからデータを読み出すリードコマンドC20を受け付けたとする。この場合、リードコマンドC20の読出領域RRを疑似読出領域DR1を含む範囲まで拡張することで、アンアラインコマンドC21,C22のRMWを不要にする。
すなわち、ドライバ26は、リードコマンドC20に代えて疑似リードコマンドC23を発行する。これにより、ドライバ26は、疑似リード専用領域に読出データ221を記憶する。ドライバ26は、アンアラインコマンドC21,C22のそれぞれの書込データ(図中横線部)を読出データ221(図中斜線部)に重畳した書込データ222で疑似リード専用領域を更新する。ドライバ26は、書込データ222のアラインコマンドC24を発行する。このようにして、ドライバ26は、RMWを要するアンアラインコマンドC21,C22の発行に代えて、RMWを不要とするアラインコマンドC24を発行できる。
次に、複数のアンアラインコマンドの書込領域と疑似読出領域とが重複する疑似リードコマンドについて図10を用いて説明する。図10は、第2の実施形態の複数のアンアラインコマンドの書込領域と疑似読出領域とが重複する疑似リードコマンドとその動作の一例を示す図である。
疑似リードコマンドは、複数のアンアラインコマンドの書込領域と疑似読出領域とが重複する場合、かつ疑似リードコマンドの発行が有効であるとされる場合に、ドライバ26によって生成される。たとえば、書込領域WR1にデータを書き込むアンアラインコマンドC21と、書込領域WR2にデータを書き込むアンアラインコマンドC22と、書込領域WR3にデータを書き込むアンアラインコマンドC25とがアンアラインキュー29にある。このとき、疑似リードコマンドの発行が有効とされている場合に、ドライバ26は、疑似リードコマンドC26を生成する。疑似リードコマンドC26は、アンアラインコマンドC25のRMWに必要な読出領域を拡張した疑似読出領域DR2からデータを読み出すコマンドである。疑似リードコマンドC26は、書込領域WR1,WR2,WR3を疑似読出領域DR2の範囲内に含むので、アンアラインコマンドC21,C22,C25のRMWを不要にする。
すなわち、ドライバ26は、疑似リードコマンドC26を発行する。これにより、ドライバ26は、疑似リード専用領域に読出データ223を記憶する。ドライバ26は、アンアラインコマンドC21,C22,C25のそれぞれの書込データ(図中横線部)を読出データ223(図中斜線部)に重畳した書込データ224で疑似リード専用領域を更新する。ドライバ26は、書込データ224のアラインコマンドC27を発行する。このようにして、ドライバ26は、RMWを要するアンアラインコマンドC21,C22,C25の発行に代えて、RMWを不要とするアラインコマンドC27を発行できる。
再び、コマンド振分処理のフローチャートの説明に戻る。
[ステップS21]ドライバ26は、コマンド掃き出し処理の実行結果から、疑似リードコマンドの生成の有無を判定する。ドライバ26は、疑似リードコマンドが生成されている場合にステップS22にすすみ、疑似リードコマンドが生成されていない場合にステップS23にすすむ。なお、コマンド掃き出し処理の実行結果から、生成される疑似リードコマンドは、複数のアンアラインコマンドの書込領域と疑似読出領域とが重複する疑似リードコマンドである。リードコマンドを拡張する疑似リードコマンドは、ここでは、生成対象とならない。
[ステップS22]ドライバ26は、生成した疑似リードコマンドを通常キュー28のヘッド(通常キューヘッド)にキューイングし、コマンド振分処理を終了する。これにより、疑似リードコマンドは、通常キュー28からデキューされてHDD31にコマンド発行されることとなる。
[ステップS23]ドライバ26は、アンアラインキュー29からアンアラインコマンドをデキューする。
[ステップS24]ドライバ26は、アンアラインキュー29からデキューしたアンアラインコマンドを通常キュー28のヘッド(通常キューヘッド)にキューイングし、コマンド振分処理を終了する。これにより、アンアラインコマンドは、通常キュー28からデキューされてHDD31にコマンド発行されることとなる。
次に、第2の実施形態のコマンド掃き出し処理について図11を用いて説明する。図11は、第2の実施形態のコマンド掃き出し処理のフローチャートを示す図である。
コマンド掃き出し処理は、アンアラインコマンドの掃き出しをおこなう処理である。また、コマンド掃き出し処理は、コマンド振分処理のステップS20でドライバ26が実行する処理である。
[ステップS31]ドライバ26(プロセッサ22)は、疑似リードコマンドの発行が有効とされているか否かを判定する。疑似リードコマンドの発行が有効とされているか否かは、疑似リード設定処理において有効/無効を設定する疑似リードコマンドの発行の設定により判定できる。疑似リード設定処理については、図14を用いて後で説明する。ドライバ26は、疑似リード設定処理による疑似リードコマンド発行の設定内容を参照して疑似リードコマンドの発行が有効とされているか否かの判定をおこなう。ドライバ26は、疑似リードコマンドの発行が有効とされている場合にステップS32にすすみ、疑似リードコマンドの発行が有効とされていない場合にコマンド掃き出し処理を終了する。
[ステップS32]ドライバ26は、疑似読出領域と複数のアンアラインコマンドの書込領域とが重複するか否かを判定する。ドライバ26は、疑似読出領域と複数のアンアラインコマンドの書込領域とが重複する場合にステップS33にすすみ、重複しない場合にコマンド掃き出し処理を終了する。
[ステップS33]ドライバ26は、疑似読出領域からデータを読み出す疑似リードコマンドを生成し、コマンド掃き出し処理を終了する。
次に、第2の実施形態のデキュー処理について図12を用いて説明する。図12は、第2の実施形態のデキュー処理のフローチャートを示す図である。
デキュー処理は、I/O発行待ちキュー27にあるコマンドを発行する処理である。デキュー処理は、ドライバ26の起動後に、ドライバ26が実行する処理である。
[ステップS41]ドライバ26(プロセッサ22)は、コマンド発行が可能か否かを判定する。たとえば、ドライバ26は、コマンドの発行先がコマンドの受付が可能か否かを判定する。ドライバ26は、コマンド発行ができる場合にステップS42にすすみ、コマンド発行ができない場合にコマンド発行可能な状態の検出を待つ。
[ステップS42]ドライバ26は、通常キュー28にコマンドがあるか否かを判定する。ドライバ26は、通常キュー28にコマンドがある場合にステップS43にすすみ、通常キュー28にコマンドがない場合にステップS44にすすむ。
[ステップS43]ドライバ26は、アンアラインキュー29に待ち時間大のコマンドがあるか否かを判定する。アンアラインキュー29にあるコマンドの待ち時間の大きさは、あらかじめ定めた閾値、あるいは稼働状態に応じて設定される閾値との比較によりおこなうことができる。ドライバ26は、アンアラインキュー29に待ち時間大のコマンドがある場合にステップS44にすすみ、アンアラインキュー29に待ち時間大のコマンドがない場合にステップS45にすすむ。
[ステップS44]ドライバ26は、アンアラインキュー29からコマンド(アンアラインコマンド)をデキューする。
[ステップS45]ドライバ26は、通常キュー28からコマンド(アラインコマンド)をデキューする。
[ステップS46]ドライバ26は、I/O発行待ちキュー27(通常キュー28またはアンアラインキュー29)からデキューされたコマンドをHDD31に発行し、次のコマンドの発行機会を待つためステップS41にすすむ。
これにより、ドライバ26は、アンアラインキュー29に優先して通常キュー28からのコマンドの掃き出しをおこなう。また、ドライバ26は、アンアラインコマンドが所定時間を超えてアンアラインキュー29に留まることを防止する。
次に、第2の実施形態の応答確認処理について図13を用いて説明する。図13は、第2の実施形態の応答確認処理のフローチャートを示す図である。
応答確認処理は、発行先に発行したコマンドの発行先からの応答を確認する処理である。応答確認処理は、ドライバ26が発行先からの応答を受け付けて、ドライバ26が実行する処理である。
[ステップS51]ドライバ26(プロセッサ22)は、発行先からの応答がリードコマンドに対する応答であるか否かを判定する。ドライバ26は、発行先からの応答がリードコマンドに対する応答である場合にステップS52にすすみ、リードコマンドに対する応答でない場合にステップS53にすすむ。なお、ここでいうリードコマンドは、疑似リードコマンドを含むものである。
[ステップS52]ドライバ26は、アンアラインキュー29にキューイングされているコマンド(アンアラインコマンド)のうち書込領域が、リードコマンドの読出領域と重複するコマンドがあるか否かを判定する。ドライバ26は、書込領域がリードコマンドの読出領域と重複するコマンドがある場合にステップS54にすすみ、重複するコマンドがない場合にステップS53にすすむ。
[ステップS53]ドライバ26は、発行元(上位装置)に応答をおこない応答確認処理を終了する。
[ステップS54]ドライバ26は、読出データをバッファ(疑似リード専用領域)に退避する。
[ステップS55]ドライバ26は、書込領域がリードコマンドの読出領域と重複するコマンドを、アンアラインキュー29からデキューする。この場合、アンアラインキュー29からのデキューは、必ずしもアンアラインキュー29の先頭位置からのデキューに限らない。また、デキューされるコマンドの数は、1つに限らない。
[ステップS56]ドライバ26は、デキューされるコマンドの書込データを、バッファに退避した読出データに重畳する。これにより、アンアラインコマンドは、RMWのためのデータの読み出しが不要となり、書込データを重畳したデータを新たな書込データとするアラインコマンドに変換可能になる。
[ステップS57]ドライバ26は、応答に対応するリードコマンドが疑似リードコマンドであったか否かを判定する。ドライバ26は、応答に対応するリードコマンドが疑似リードコマンドであった場合にステップS59にすすみ、疑似リードコマンドでない場合にステップS58にすすむ。
[ステップS58]ドライバ26は、発行元(上位装置)に応答をおこなう。
[ステップS59]ドライバ26は、疑似読出領域に対応する応答を除いて、発行元(上位装置)に応答をおこなう。たとえば、図9に示したリードコマンドを拡張する疑似リードコマンドC23の場合、ドライバ26は、疑似読出領域DR1に対応する応答を除いて、読出領域RRに対応する応答をおこなう。また、図10に示した複数のアンアラインコマンドの書込領域と疑似読出領域とが重複する疑似リードコマンドC26の場合、上位装置からのコマンドではないので対応する応答をおこなわない。
[ステップS60]ドライバ26は、アンアラインキュー29からデキューしたアンアラインコマンドから生成したアラインコマンドを通常キュー28の先頭(通常キューヘッド)にキューイングして、応答確認処理を終了する。
このように、ドライバ26は、疑似リードコマンドを含むリードコマンドの応答を受けて、RMWが不要となるアンアラインコマンドを検索して、アラインコマンドに変換する。これにより、ドライバ26は、アンアラインコマンドの発行によるHDD31のRMWの実行機会を低減することができる。したがって、ドライバ26は、RMWによるHDD31のアクセス性能低下を抑制することができる。
次に、第2の実施形態の疑似リード設定処理について図14を用いて説明する。図14は、第2の実施形態の疑似リード設定処理のフローチャートを示す図である。
疑似リード設定処理は、疑似リードコマンドの発行の有効/無効を設定する処理である。疑似リード設定処理は、所定のタイミング(たとえば、あらかじめ設定したタイマ周期、あるいはイベントトリガなど)で、ドライバ26が実行する処理である。したがって、ドライバ26は、所定のタイミングで疑似リードコマンドの発行の有効/無効の設定を更新する。
[ステップS71]ドライバ26(プロセッサ22)は、ドライバ26からHDD31に発行するコマンド(発行コマンド)の情報を取得する。ここでいう発行コマンドの情報は、アンアラインキュー29の掃けやすさの評価に用いることができる情報であり、たとえば、リードコマンドとライトコマンドの比率(リード/ライト比率)、アラインコマンドとアンアラインコマンドの比率(アライン/アンアライン比率)、アンアラインコマンドからアラインコマンドへの変換率(ヒット率)がある。発行コマンドの情報は、たとえば、図示しない集計部が統計情報として集計する情報である。
[ステップS72]ドライバ26は、評価値を初期化(たとえば、ゼロクリア)する。評価値は、疑似リードコマンドの発行の有効/無効の設定評価に用いられる。評価値があらかじめ定めた閾値と比較して大きい場合に、疑似リードコマンドの発行が有効化される。
[ステップS73]ドライバ26は、リード/ライト比率を評価する。リード/ライト比率は、着目ディスクにおいてリードコマンドをアンアラインコマンドのRMWのデータ読み出しとして利用できる頻度を評価するための情報である。リードコマンドがライトコマンドと比較して多ければ、応答確認処理におけるアンアラインキュー29からのコマンドの掃き出しが多いと評価できる。一方、リードコマンドがライトコマンドと比較して少なければ、応答確認処理におけるアンアラインキュー29からのコマンドの掃き出しが少ないと評価できる。
[ステップS74]ドライバ26は、ライトコマンドがリードコマンドと比較して多ければステップS75にすすみ、ライトコマンドがリードコマンドと比較して多くなければステップS76にすすむ。
[ステップS75]ドライバ26は、アンアラインキュー29からのコマンドの掃き出しが少ないと評価し、評価値に「1」を加点する。
[ステップS76]ドライバ26は、アライン/アンアライン比率を評価する。アライン/アンアライン比率は、着目ディスクにおいてアンアラインコマンドの発行頻度を評価するための情報である。アラインコマンドがアンアラインコマンドと比較して多ければ、アンアラインキュー29へのコマンドの蓄積が少ないと評価できる。一方、アラインコマンドがアンアラインコマンドと比較して少なければ、アンアラインキュー29へのコマンドの蓄積が多いと評価できる。
[ステップS77]ドライバ26は、アラインコマンドがアンアラインコマンドと比較して少なければステップS78にすすみ、アラインコマンドがアンアラインコマンドと比較して少なくなければステップS79にすすむ。
[ステップS78]ドライバ26は、アンアラインキュー29へのコマンドの蓄積が多いと評価し、評価値に「1」を加点する。
[ステップS79]ドライバ26は、ヒット率を評価する。ヒット率は、着目ディスクにおいてアンアラインコマンドをアラインコマンドに変換できた頻度を評価するための情報である。ヒット率が高ければ、アンアラインキュー29からのコマンドの掃き出しが多いと評価できる。一方、ヒット率が低ければ、アンアラインキュー29からのコマンドの掃き出しが少ないと評価できる。なお、アンアラインコマンドの発行頻度、言い換えれば、着目ディスクのRMWの実行頻度(この場合ミス率に相当)を用いるものであってもよい。なお、リード/ライト比率、アライン/アンアライン比率、およびヒット率の大小の比較は、あらかじめ定めた閾値、あるいは稼働状態に応じて設定される閾値との比較によりおこなうことができる。
[ステップS80]ドライバ26は、ヒット率が閾値と比較して小さければステップS81にすすみ、ヒット率が閾値と比較して小さくなければステップS82にすすむ。
[ステップS81]ドライバ26は、アンアラインキュー29からのコマンドの掃き出しが少ないと評価し、評価値に「1」を加点する。
[ステップS82]ドライバ26は、評価値と、あらかじめ設定した閾値「2」とを比較し、評価値が「2」以上であればステップS83にすすみ、評価値が「2」以上でなければステップS84にすすむ。
[ステップS83]ドライバ26は、疑似リードコマンドの発行を有効化、すなわち、疑似リードコマンドの発行の設定を有効にして疑似リード設定処理を終了する。
[ステップS84]ドライバ26は、疑似リードコマンドの発行を無効化、すなわち、疑似リードコマンドの発行の設定を無効にして疑似リード設定処理を終了する。
これにより、ドライバ26は、リード/ライト比率、アライン/アンアライン比率、およびヒット率からアンアラインキュー29の掃けやすさ(キューイング状態)を評価し、疑似リードコマンドの発行の設定を有効/無効のうちいずれにするかを判断することができる。
疑似リードコマンドの発行の設定は、コマンド掃き出し処理のステップS31で参照される。これにより、ドライバ26は、アンアラインキュー29の掃けやすさを調整でき、アンアラインキュー29にアンアラインコマンドが過大に蓄積されるのを防止する。また、アンアラインキュー29にアンアラインコマンドが適度に蓄積されるように制御することで、アンアラインコマンドによるRMWの実行機会を削減することができる。
これにより、ストレージディスクアレイ装置20は、RMWの実行回数削減によるHDD31のアクセス性能低下を抑制できる。
なお、ここまでで説明したアンアラインキュー29からアンアラインコマンドのデキューをおこなう条件を整理すると以下のようになる。
条件1:アンアラインキュー29にキューイング(蓄積)されているアンアラインコマンド(ライトコマンド)の書込領域を含むリードコマンドの応答を受け付けた場合に、アンアラインキュー29からアンアラインコマンドのデキューをおこなう。これは、応答確認処理のステップS55において実行されるデキューである。
条件2:2以上のアンアラインコマンドが同じ4kバウンダリの領域を書込領域としてデータの読み出しを不要とする場合に、アンアラインキュー29からアンアラインコマンドのデキューをおこなう。これは、コマンド振分処理のステップS16において実行されるデキューである。
条件3:アンアラインキュー29にキューイングされているアンアラインコマンドのキャッシュ使用率が大きくなった場合に、アンアラインキュー29からアンアラインコマンドのデキューをおこなう。これは、コマンド振分処理のステップS23において実行されるデキューである。
条件4:通常キュー28が空である場合に、アンアラインキュー29からアンアラインコマンドのデキューをおこなう。これは、デキュー処理のステップS42を経てステップS43を経ないステップS44において実行されるデキューである。
条件5:アンアラインキュー29にアンアラインコマンドが所定時間以上滞留している場合に、アンアラインキュー29からアンアラインコマンドのデキューをおこなう。これは、デキュー処理のステップS43を経てステップS44において実行されるデキューである。
なお、第2の実施形態において、ドライバ26は、受け付けたコマンドを通常キュー28またはアンアラインキュー29に振り分けたが、アラインコマンドとアンアラインコマンドの区別が可能であれば、1つのI/O発行待ちキュー27にキューイングするものであってもよい。この場合、アラインコマンドとアンアラインコマンドとの区別が、受け付けたコマンドの振り分けに相当する。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、ストレージ制御装置1、ストレージディスクアレイ装置20(CM21)が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD、DVD−RAM、CD−ROM/RWなどがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
また、上記の処理機能の少なくとも一部を、DSP、ASIC、PLDなどの電子回路で実現することもできる。
1 ストレージ制御装置
2 記憶装置
3 メモリ
4 コマンド振分部
5 コマンド発行部
6 第1のキュー
7 第2のキュー
10 ストレージシステム
11 サーバ
20 ストレージディスクアレイ装置
21,21a,21b コントローラモジュール
22 プロセッサ
23 メモリ
23a キャッシュメモリ
24 ディスクアダプタ
25 チャネルアダプタ
26 ドライバ
27 I/O発行待ちキュー
28 通常キュー
29 アンアラインキュー
30 ディスクエンクロージャ
31,31a,31b,…,31n HDD

Claims (11)

  1. 第1のデータサイズのデータをアクセス単位とするコマンドを受け付けて、前記第1のデータサイズの所定の整数倍である第2のデータサイズのデータをアクセス単位とする記憶装置の入出力制御をおこなうストレージ制御装置において、
    前記コマンドを格納可能な、第1のキューと第2のキューとを備えるメモリと、
    受け付けた前記コマンドのうちの、前記第2のデータサイズとバウンダリが一致しないライトコマンドである第1のコマンドを前記第2のキューに振り分け、前記第2のデータサイズとバウンダリが一致するライトコマンドを含む第2のコマンドを前記第1のキューに振り分けて、前記メモリに格納するコマンド振分部と、
    前記第1のコマンドに優先して前記第2のコマンドを前記記憶装置に発行するとともに、所定条件成立時に前記第2のキューからデキューした前記第1のコマンドを前記第2のコマンドに変換して前記第1のキューの先頭にキューイングするコマンド発行部と、
    を備えるストレージ制御装置。
  2. 第1のデータサイズのデータをアクセス単位とするコマンドを受け付けて、前記第1のデータサイズの所定の整数倍である第2のデータサイズのデータをアクセス単位とする記憶装置の入出力制御をおこなうストレージ制御装置において、
    前記コマンドを格納可能な、第1のキューと第2のキューとを備えるメモリと、
    受け付けた前記コマンドのうちの、前記第2のデータサイズとバウンダリが一致しないライトコマンドである第1のコマンドを前記第2のキューに振り分け、前記第2のデータサイズとバウンダリが一致するライトコマンドを含む第2のコマンドを前記第1のキューに振り分けて、前記メモリに格納するコマンド振分部と、
    前記第1のコマンドに優先して前記第2のコマンドを前記記憶装置に発行するとともに、所定条件成立時に前記第1のコマンドを前記第2のコマンドに変換するコマンド発行部と、を備え、
    前記コマンド発行部は、
    2以上の前記第1のコマンドの書込領域が同一の物理セクタ内にある場合に、前記2以上の前記第1のコマンドを1つのライトコマンドに変換する、
    ストレージ制御装置。
  3. 第1のデータサイズのデータをアクセス単位とするコマンドを受け付けて、前記第1のデータサイズの所定の整数倍である第2のデータサイズのデータをアクセス単位とする記憶装置の入出力制御をおこなうストレージ制御装置において、
    前記コマンドを格納可能な、第1のキューと第2のキューとを備えるメモリと、
    受け付けた前記コマンドのうちの、前記第2のデータサイズとバウンダリが一致しないライトコマンドである第1のコマンドを前記第2のキューに振り分けリードコマンドまたは前記第2のデータサイズとバウンダリが一致するライトコマンドである第2のコマンドを前記第1のキューに振り分けて、前記メモリに格納するコマンド振分部と、
    前記第1のコマンドに優先して前記第2のコマンドを前記記憶装置に発行するとともに、所定条件成立時に前記第2のキューからデキューした前記第1のコマンドを前記第2のコマンドに変換するコマンド発行部と、を備え、
    前記コマンド発行部は、
    前記リードコマンドの読出領域に隣接して、前記第1のコマンドの書込領域を含む疑似読出領域があるときに、前記リードコマンドを、前記疑似読出領域を含む範囲に前記読出領域を拡張したリードコマンドである拡張リードコマンドに変換する、
    ストレージ制御装置。
  4. 第1のデータサイズのデータをアクセス単位とするコマンドを受け付けて、前記第1のデータサイズの所定の整数倍である第2のデータサイズのデータをアクセス単位とする記憶装置の入出力制御をおこなうストレージ制御装置において、
    前記コマンドを格納可能な、第1のキューと第2のキューとを備えるメモリと、
    受け付けた前記コマンドのうちの、前記第2のデータサイズとバウンダリが一致しないライトコマンドである第1のコマンドを前記第2のキューに振り分けリードコマンドまたは前記第2のデータサイズとバウンダリが一致するライトコマンドである第2のコマンドを前記第1のキューに振り分けて、前記メモリに格納するコマンド振分部と、
    前記第1のコマンドに優先して前記第2のコマンドを前記記憶装置に発行するとともに、所定条件成立時に前記第2のキューからデキューした前記第1のコマンドを前記第2のコマンドに変換するコマンド発行部と、を備え、
    前記コマンド発行部は、
    2以上の前記第1のコマンドの書込領域が所定範囲にある場合に、前記所定範囲を含む領域を読出領域とするリードコマンドである疑似リードコマンドを生成する、
    ストレージ制御装置。
  5. 第1のデータサイズのデータをアクセス単位とするコマンドを受け付けて、前記第1のデータサイズの所定の整数倍である第2のデータサイズのデータをアクセス単位とする記憶装置の入出力制御をおこなうストレージ制御装置において、
    前記コマンドを格納可能な、第1のキューと第2のキューとを備えるメモリと、
    受け付けた前記コマンドのうちの、前記第2のデータサイズとバウンダリが一致しないライトコマンドである第1のコマンドを前記第2のキューに振り分けリードコマンドまたは前記第2のデータサイズとバウンダリが一致するライトコマンドである第2のコマンドを前記第1のキューに振り分けて、前記メモリに格納するコマンド振分部と、
    前記第1のコマンドに優先して前記第2のコマンドを前記記憶装置に発行するとともに、所定条件成立時に前記第2のキューからデキューした前記第1のコマンドを前記第2のコマンドに変換するコマンド発行部と、
    を備えるストレージ制御装置。
  6. 第1のデータサイズのデータをアクセス単位とするコマンドを受け付けて、前記第1のデータサイズの所定の整数倍である第2のデータサイズのデータをアクセス単位とする記憶装置の入出力制御をおこなうストレージ制御装置において、
    前記コマンドを格納可能な、第1のキューと第2のキューとを備えるメモリと、
    受け付けた前記コマンドのうちの、前記第2のデータサイズとバウンダリが一致しないライトコマンドである第1のコマンドを前記第2のキューに振り分けリードコマンドまたは前記第2のデータサイズとバウンダリが一致するライトコマンドである第2のコマンドを前記第1のキューに振り分けて、前記メモリに格納するコマンド振分部と、
    前記第1のコマンドに優先して前記第2のコマンドを前記記憶装置に発行するとともに、受け付けた前記コマンドのうち前記第2のコマンドとして振り分けられたリードコマンドを発行して前記記憶装置から受け付けた応答に含まれる読出データに、前記第2のキューからデキューした前記第1のコマンドの書込データを重畳した重畳データを生成し、前記第1のコマンドを、前記重畳データを書込データとするライトコマンドに変換するコマンド発行部と、
    を備えるストレージ制御装置。
  7. 前記コマンド発行部は、前記物理セクタに書き込まれているデータのすべてを、前記2以上の前記第1のコマンドの書込データで上書きする場合に、前記2以上の前記第1のコマンドを前記第2のコマンドとしてのライトコマンドに変換する、
    ことを特徴とする請求項記載のストレージ制御装置。
  8. 前記コマンド発行部は、前記第2のキューにおける前記第1のコマンドのキューイング状態を評価し、前記評価にもとづいて前記拡張リードコマンドの変換の有効化と無効化とを切り替えることを特徴とする請求項記載のストレージ制御装置。
  9. 前記コマンド発行部は、前記第2のキューにおける前記第1のコマンドのキューイング状態を評価し、前記評価にもとづいて前記疑似リードコマンドの生成の有効化と無効化とを切り替えることを特徴とする請求項記載のストレージ制御装置。
  10. 第1のデータサイズのデータをアクセス単位とするコマンドを受け付けて、前記第1のデータサイズの所定の整数倍である第2のデータサイズのデータをアクセス単位とする記憶装置の入出力制御をおこなうストレージ制御装置のストレージ制御プログラムにおいて、
    受け付けた前記コマンドのうちの、前記第2のデータサイズとバウンダリが一致しないライトコマンドである第1のコマンドを、前記コマンドを格納可能な、第1のキューと第2のキューとを備えるメモリの前記第2のキューに振り分けリードコマンドまたは前記第2のデータサイズとバウンダリが一致するライトコマンドである第2のコマンドを前記第1のキューに振り分けて前記メモリに格納し、
    前記第1のコマンドに優先して前記第2のコマンドを前記記憶装置に発行するとともに、所定条件成立時に前記第2のキューからデキューした前記第1のコマンドを前記第2のコマンドに変換する、
    処理を実行させることを特徴とするストレージ制御プログラム。
  11. 第1のデータサイズのデータをアクセス単位とするコマンドを受け付けて、前記第1のデータサイズの所定の整数倍である第2のデータサイズのデータをアクセス単位とする記憶装置の入出力制御をおこなうストレージ制御装置のストレージ制御プログラムにおいて、
    受け付けた前記コマンドのうちの、前記第2のデータサイズとバウンダリが一致しないライトコマンドである第1のコマンドを、前記コマンドを格納可能な、第1のキューと第2のキューとを備えるメモリの前記第2のキューに振り分けリードコマンドまたは前記第2のデータサイズとバウンダリが一致するライトコマンドである第2のコマンドを前記第1のキューに振り分けて前記メモリに格納し、
    前記第1のコマンドに優先して前記第2のコマンドを前記記憶装置に発行するとともに、受け付けた前記コマンドのうち前記第2のコマンドとして振り分けられたリードコマンドを発行して前記記憶装置から受け付けた応答に含まれる読出データに、前記第2のキューからデキューした前記第1のコマンドの書込データを重畳した重畳データを生成し、前記第1のコマンドを、前記重畳データを書込データとするライトコマンドに変換する
    処理を実行させることを特徴とするストレージ制御プログラム。

JP2013220787A 2013-10-24 2013-10-24 ストレージ制御装置、およびストレージ制御プログラム Expired - Fee Related JP6255893B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013220787A JP6255893B2 (ja) 2013-10-24 2013-10-24 ストレージ制御装置、およびストレージ制御プログラム
US14/510,157 US9529707B2 (en) 2013-10-24 2014-10-09 Apparatus and method for reducing read-modify-write cycles by combining unaligned write commands
EP20140188972 EP2866137A1 (en) 2013-10-24 2014-10-15 Apparatus, program, and method for controlling storage devices

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013220787A JP6255893B2 (ja) 2013-10-24 2013-10-24 ストレージ制御装置、およびストレージ制御プログラム

Publications (2)

Publication Number Publication Date
JP2015082269A JP2015082269A (ja) 2015-04-27
JP6255893B2 true JP6255893B2 (ja) 2018-01-10

Family

ID=51751943

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013220787A Expired - Fee Related JP6255893B2 (ja) 2013-10-24 2013-10-24 ストレージ制御装置、およびストレージ制御プログラム

Country Status (3)

Country Link
US (1) US9529707B2 (ja)
EP (1) EP2866137A1 (ja)
JP (1) JP6255893B2 (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8819208B2 (en) 2010-03-05 2014-08-26 Solidfire, Inc. Data deletion in a distributed data storage system
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US10101943B1 (en) * 2014-09-25 2018-10-16 EMC IP Holding Company LLC Realigning data in replication system
US9910621B1 (en) 2014-09-29 2018-03-06 EMC IP Holding Company LLC Backlogging I/O metadata utilizing counters to monitor write acknowledgements and no acknowledgements
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
JP6540363B2 (ja) * 2015-08-19 2019-07-10 富士通株式会社 ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム
US9830103B2 (en) * 2016-01-05 2017-11-28 Netapp, Inc. Technique for recovery of trapped storage space in an extent store
US9922039B1 (en) * 2016-03-31 2018-03-20 EMC IP Holding Company LLC Techniques for mitigating effects of small unaligned writes
US10768823B2 (en) * 2016-04-12 2020-09-08 Hewlett Packard Enterprise Development Lp Flow control for unaligned writes in network storage device
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US10762000B2 (en) 2017-04-10 2020-09-01 Samsung Electronics Co., Ltd. Techniques to reduce read-modify-write overhead in hybrid DRAM/NAND memory
WO2019075506A1 (en) * 2017-10-17 2019-04-25 Metamako General Pty Ltd In Its Capacity As General Partner Of Metamako Technology Lp SYSTEM FOR REDUCING LATENCY IN NETWORK DEVICES
US10572260B2 (en) * 2017-12-29 2020-02-25 Intel Corporation Spatial and temporal merging of remote atomic operations
JP2019191909A (ja) 2018-04-25 2019-10-31 東芝メモリ株式会社 メモリシステムおよび制御方法
TWI668704B (zh) 2018-10-01 2019-08-11 大陸商深圳大心電子科技有限公司 資料處理方法及使用所述方法的儲存控制器
KR20200057473A (ko) * 2018-11-16 2020-05-26 삼성전자주식회사 스토리지 장치 및 이를 포함하는 스토리지 시스템
CN111290698B (zh) * 2018-12-07 2022-05-03 上海寒武纪信息科技有限公司 数据存取方法、数据处理方法、数据存取电路和运算装置
US11139042B2 (en) * 2019-12-19 2021-10-05 Micron Technology, Inc. Capacitor health check
US11294824B2 (en) * 2020-01-03 2022-04-05 Western Digital Technologies, Inc. System and method for reduced latency of read-modify-write operations
KR20220106307A (ko) 2021-01-22 2022-07-29 삼성전자주식회사 스토리지 장치 및 그 구동 방법
US11513736B2 (en) 2021-03-08 2022-11-29 Western Digital Technologies, Inc. Revised host command generation for unaligned access
CN115344244A (zh) * 2021-05-14 2022-11-15 瑞昱半导体股份有限公司 处理程序语言函数的装置及方法
US11934695B2 (en) * 2021-06-23 2024-03-19 Western Digital Technologies, Inc. Aligned command based firmware architecture for unaligned write handling
US11656797B2 (en) * 2021-07-28 2023-05-23 Western Digital Technologies, Inc. Data storage device executing runt write commands as free commands

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6343343B1 (en) * 1998-07-31 2002-01-29 International Business Machines Corporation Disk arrays using non-standard sector sizes
US6925526B2 (en) * 2002-10-31 2005-08-02 International Business Machines Corporation Method and apparatus for servicing mixed block size data access operations in a disk drive data storage device
US7080200B2 (en) 2003-08-14 2006-07-18 Hitachi Global Storage Technologies Netherlands B.V. System and method for handling writes in HDD using 4K block sizes
US7328317B2 (en) * 2004-10-21 2008-02-05 International Business Machines Corporation Memory controller and method for optimized read/modify/write performance
US8356126B2 (en) * 2005-02-07 2013-01-15 Dot Hill Systems Corporation Command-coalescing RAID controller
JP2010026345A (ja) 2008-07-23 2010-02-04 Yazaki Corp 光コネクタ
JP2010080021A (ja) * 2008-09-29 2010-04-08 Toshiba Storage Device Corp 記録制御方法及び記録制御部、並びに記憶装置
JP2010211888A (ja) 2009-03-12 2010-09-24 Toshiba Storage Device Corp ディスク記憶装置
EP2419817A1 (en) * 2009-10-09 2012-02-22 Hitachi, Ltd. Storage system and control method thereof, implementing data reallocation in case of load bias
JP2012104170A (ja) * 2010-11-08 2012-05-31 Sharp Corp ハードディスク装置
JP2012113789A (ja) 2010-11-26 2012-06-14 Buffalo Inc ハードディスクドライブ装置およびその処理装置
JP2012221350A (ja) 2011-04-12 2012-11-12 Ricoh Co Ltd データ形式変換装置、電子システム、データ形式変換方法及びプログラム
US9898402B2 (en) * 2011-07-01 2018-02-20 Micron Technology, Inc. Unaligned data coalescing
JP6089844B2 (ja) * 2013-03-22 2017-03-08 富士通株式会社 制御装置,ストレージ装置,及び制御プログラム
US9348747B2 (en) * 2013-10-29 2016-05-24 Seagate Technology Llc Solid state memory command queue in hybrid device

Also Published As

Publication number Publication date
JP2015082269A (ja) 2015-04-27
US20150121021A1 (en) 2015-04-30
EP2866137A1 (en) 2015-04-29
US9529707B2 (en) 2016-12-27

Similar Documents

Publication Publication Date Title
JP6255893B2 (ja) ストレージ制御装置、およびストレージ制御プログラム
US6799283B1 (en) Disk array device
JP6093095B2 (ja) ガベージデータを収集するための方法及び記憶装置
US10795599B2 (en) Data migration method, host and solid state disk
US10528424B2 (en) Selectively de-straddling data pages in non-volatile memory
US9400603B2 (en) Implementing enhanced performance flash memory devices
US11436159B2 (en) Using multi-tiered cache to satisfy input/output requests
JP2012128815A (ja) メモリシステム
CN106557428B (zh) 数据存储设备的映射系统选择
Lee et al. OSSD: A case for object-based solid state drives
US11036427B2 (en) Using content addressable memory to perform read-modify-write operations in non-volatile random access memory (NVRAM)
US11016841B2 (en) Methods and apparatuses for proactive ECC failure handling
CN115686385B (zh) 一种数据存储方法、装置、计算机设备及存储介质
US9817583B2 (en) Storage system and method for allocating virtual volumes based on access frequency
TWI544401B (zh) 有效率釋出序列輸人輸出串流的方法、儲存控制器及系統
US10346070B2 (en) Storage control apparatus and storage control method
JP2007501473A (ja) メインメモリとストレージ装置との間のデータ転送を行うための方法及び装置
US8489802B2 (en) Recordable memory device which writes data to reformatted user area of nonvolatile semiconductor memory
JP7170093B2 (ja) 記憶デバイスのための改良された先読み能力
US9639417B2 (en) Storage control apparatus and control method
US20230281121A1 (en) Increased garbage collection granularity for non-volatile memory
KR20230144434A (ko) 호스트 장치의 동작 방법 및 스토리지 장치의 동작 방법
JP4466530B2 (ja) ディスクアレイ装置及び論理アドレス制御方法並びにプログラム
KR100770732B1 (ko) 플래쉬 메모리를 이용한 ide 및 scsi 방식의 데이터 저장장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160705

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170721

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170808

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171006

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: 20171107

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171120

R150 Certificate of patent or registration of utility model

Ref document number: 6255893

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees