JP6111575B2 - ストレージ装置、内部処理制御方法および内部処理制御プログラム - Google Patents

ストレージ装置、内部処理制御方法および内部処理制御プログラム Download PDF

Info

Publication number
JP6111575B2
JP6111575B2 JP2012206157A JP2012206157A JP6111575B2 JP 6111575 B2 JP6111575 B2 JP 6111575B2 JP 2012206157 A JP2012206157 A JP 2012206157A JP 2012206157 A JP2012206157 A JP 2012206157A JP 6111575 B2 JP6111575 B2 JP 6111575B2
Authority
JP
Japan
Prior art keywords
ssd
internal processing
internal
data
waiting time
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
JP2012206157A
Other languages
English (en)
Other versions
JP2014059850A (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 JP2012206157A priority Critical patent/JP6111575B2/ja
Priority to US13/946,510 priority patent/US9323683B2/en
Publication of JP2014059850A publication Critical patent/JP2014059850A/ja
Application granted granted Critical
Publication of JP6111575B2 publication Critical patent/JP6111575B2/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2071Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3485Performance evaluation by tracing or monitoring for I/O devices
    • 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
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • 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
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • G06F2212/284Plural cache memories being distributed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System (AREA)

Description

本発明は、ストレージ装置などに関する。
近年、ハードディスクドライブ(HDD:Hard Disk Drive)の代わりに複数のSSD(Solid State Drive)を使用した高速のストレージ装置が提案されている。SSDでは、SSDの消去単位であるブロック内の不要なデータを、一定のタイミングで消去すること(以降、「ガベージコレクション」という)が行われている。
例えば、SSDを使用したシステムが、アイドルの間にガベージコレクションを行うように制御するという技術がある(例えば、特許文献1参照)。
特開2002−32256号公報 特開2004−178417号公報
しかしながら、複数のSSDで構成されたストレージ装置では、SSDのガベージコレクション等の内部処理により性能が低下する場合があるという問題がある。例えば、複数のSSDでRAID(Redundant Array of Inexpensive Disks)構成のうちRAID1で構成されたストレージ装置の性能の期待値は、SSD単体で構成されたストレージ装置の性能と同等であるところ、実際では、SSD単体で構成されたストレージ装置の性能と比べて低下する場合がある。
一例として、ミラーリングされた複数のSSDで構成されたRAID1(Redundant Arrays of Inexpensive Disks 1)の装置の性能の期待値は、SSD単体で構成された装置の性能と比べて、約70%〜80%に低下する場合がある。これは、RAID1で構成された複数のSSDでは、異なるタイミングで応答遅延することが原因である。この応答遅延は、異なるタイミングにより行われるガベージコレクション等の内部処理により発生する。つまり、複数のSSDがRAID1で構成されたストレージ装置では、一方のSSDが内部処理を行うと、他方のSSDが内部処理の終了を待つこととなり、一方の内部処理の終了後応答できる。そして、一方のSSDと異なるタイミングで他方のSSDが内部処理を行うと、一方のSSDが内部処理の終了を待つこととなり、他方の内部処理の終了後応答できる。結局、SSD単体の場合と比べて応答が遅延してしまい、性能が低下する結果となる。
なお、同一の種類および同一の容量であるディスクで構成されたHDDの場合、HDDの内部処理により性能が低下してしまうという問題は発生しない。したがって、この問題はSSD固有の問題である。
また、上記課題は、ガベージコレクションに限らず、SSD固有の内部処理の1つである、データのイメージを保持するスナップショットであっても、同様に生じる課題である。さらに、上記課題は、複数のSSDがRAID1構成に限らず、RAID5等のRAID構成であっても、同様に生じる課題である。
1つの側面では、本発明は、複数のSSDで構成されたストレージ装置において、SSDの内部処理による性能の低下を抑制することを目的とする。
本願の開示するストレージ装置は、1つの態様において、冗長性を備えるようにデータを記憶する複数のソリッドステートディスク(SSD)と、各SSDに対するデータの読み出し処理および書き込み処理を制御する制御部とを備える。そして、制御部は、データの書き込み処理中に発生する内部処理について、いずれかのSSDが所定の条件を満たすタイミングで、各SSDの内部処理を実行する。
本願の開示するストレージ装置の1つの態様によれば、複数のSSDで構成されたストレージ装置において、SSDの内部処理による性能の低下を抑制できる。
図1は、実施例1に係るストレージ装置のハードウェア構成を示す図である。 図2Aは、ライトバック方式の書き込み動作を説明する図(1)である。 図2Bは、ライトバック方式の書き込み動作を説明する図(2)である。 図3は、実施例1に係る第1の管理テーブルのデータ構造の一例を示す図である。 図4Aは、実施例1に係る内部処理実行処理のフローチャートを示す図(1)である。 図4Bは、実施例1に係る内部処理実行処理のフローチャートを示す図(2)である。 図5は、実施例2に係るストレージ装置のハードウェア構成を示す図である。 図6は、実施例2に係る第2の管理テーブルのデータ構造の一例を示す図である。 図7Aは、実施例2に係る内部処理実行処理のフローチャートを示す図である。 図7Bは、実施例2に係る内部処理開始書込量算出処理のフローチャートを示す図である。 図7Cは、実施例2に係る第2の実行処理のフローチャートを示す図である。 図8は、実施例3に係るストレージ装置のハードウェア構成を示す図である。 図9は、実施例3に係る第3の管理テーブルのデータ構造の一例を示す図である。 図10Aは、実施例3に係る待ち時間閾値算出処理のフローチャートを示す図である。 図10Bは、実施例3に係る第3の実行処理のフローチャートを示す図である。 図11は、実施例3に係る内部処理実行処理の全体のフローチャートを示す図である。 図12は、SSD単体での応答遅延を説明する図である。 図13は、SSDでRAID1(1+1)を構成した場合のSSDの応答遅延を説明する図である。 図14は、SSDでRAID1(1+1)を構成した場合の従来におけるSSDの応答遅延を説明する図である。 図15は、SSDでRAID5(3+1)を構成した場合の従来におけるSSDの応答遅延を説明する図である。
以下に、本願の開示するストレージ装置、内部処理制御方法および内部処理制御プログラムの実施例を図面に基づいて詳細に説明する。なお、本実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。以下では、ストレージ装置に本発明を適用した場合について説明する。
[実施例1に係るストレージ装置の構成]
図1は、実施例1に係るストレージ装置のハードウェア構成を示す図である。図1に示すように、ストレージ装置1は、複数のCM(Controller Module)2、3と複数のソリッドステートディスク(SSD)4、5とを有する。CM2、3は、それぞれSSD4、5と接続し、冗長性を備えるようにデータを記憶する。ここでは、SSD4、5は、ミラーリング構成であることを示すRAID(Redundant Array of Inexpensive Disks)1(1+1)であるとする。なお、複数のSSDは、RAID1(1+1)であるとしたが、これに限定されず、RAID5(3+1)であっても良く、他のRAID構成であっても良い。
CM2は、CA(Cannel Adapter)21と、PCIスイッチ22と、IOC(IO Controller)23と、EXP(Expander)24と、RAM(Random Access Memory)25と、CPU(Central Processing Unit)26とを有する。CM2は、サーバなどのホストコンピュータを示すホスト9と接続する。以下では、CM2が、ホスト9から転送される書き込みデータを受け取って、書き込み処理中に発生する内部処理を制御することについて説明する。なお、CM3は、CM2と同様の構成であるため、その説明を省略する。
ここで、内部処理とは、SSD固有の処理であって、例えばガベージコレクションやスナップショットを指す。ガベージコレクションとは、SSD内のデータの消去単位であるブロック内の不要なデータを、一定のタイミングで消去する処理である。スナップショットとは、データのイメージを、一定のタイミングで保持する処理である。内部処理は、必ずしも一定の周期で発生するわけではないが、基本的な傾向として一定の書き込みコマンド(以下、「WtCMD」と記載する場合がある)を実行した後で発生したり、一定量の書き込みが連続した後で発生したりする。また、1回の内部処理の処理時間は必ずしも一定ではない。例えば、内部処理は、約80個の書き込みコマンドを実行した後で発生し、20ms(ミリ秒)の処理時間となったり、30msの処理時間となったりする。
CA21は、ホスト9とのインタフェースである。例えば、CA21は、FC(Fibre Channel)またはiSCSI(Internet SCSI)などのインタフェースを用いてホスト9と接続する。
PCIスイッチ22は、PCIe仕様の入出力インタフェースを示すスイッチである。ここでは、PCIスイッチ22は、PCIeインタフェースを用いてCA21、CPU26およびIOC23と接続する。また、PCIスイッチ22は、PCIeインタフェースを用いてCM3のPCIスイッチ32と接続する。
IOC23は、ホスト9とSSD4、5との間で行われるデータの入出力を制御する。例えば、IOC23は、PCIeインタフェースを用いて書き込みデータを受け取り、SASインタフェースを用いてEXP24に転送する。すなわち、IOC23は、PCIeインタフェースとSASインタフェースのブリッジの役割を担う。
EXP24は、ホスト9とSSD4、5との間で行われるデータの入出力を中継する。
RAM25は、キャッシュ領域251として用いられる。キャッシュ領域251は、一時的にデータの内容を保持する領域である。ここでは、キャッシュ領域251は、SSD4、5への書き込み処理の際、SSD4、5へデータが書き込まれる前に一時的にデータの内容を保持する際に用いられる。すなわち、キャッシュ領域251が空いている場合、書き込みデータはキャッシュ領域251に一時的に書き込まれる。そして、キャッシュ領域251が空いていない場合、書き込みデータはキャッシュ領域251内に保持されたデータがSSD4、5に書き込まれた後、キャッシュ領域251に一時的に書き込まれる。このようなキャッシュ領域251を利用した書き込み処理方式は、「ライトバック方式」という。ライトバック方式の動作については、後述する。
また、RAM25は、ダーティデータ割合記憶テーブル252および第1の管理テーブル253を記憶する。ダーティデータ割合記憶テーブル252は、キャッシュ領域251に保持されたデータのうちSSD4、5への書き込みが完了していないデータ(以降、「ダーティデータ」という)の割合を記憶する。第1の管理テーブル253は、内部処理を管理するために用いられる。なお、第1の管理テーブル253の詳細の説明は、後述する。
CPU26は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。例えば、CPU26は、各SSDに対するデータの読み出し処理および書き込み処理を制御する。一例として、CPU26は、ライトバック方式を利用した書き込み処理を実行する。ここで、ストレージ装置1におけるライトバック方式の書き込み動作を、図2Aおよび図2Bを用いて説明する。図2Aは、キャッシュ領域251に空きがある場合のライトバック方式の書き込み動作を説明する図である。図2Bは、キャッシュ領域251に空きがない場合のライトバック方式の書き込み動作を説明する図である。
図2Aに示すように、CM2では、CA21がホスト9からの書き込みコマンドを受信する。図2Aでは、キャッシュ領域251に空きがあるので、CPU26が、書き込みコマンドを受け取り、書き込みデータをRAM25内のキャッシュ領域251に転送する(ステップS101)。
続いて、CPU26は、PCIスイッチ22を介して、CM2とミラーリング構成であるCM3のキャッシュ領域351に、書き込みデータを転送する(ステップS102)。これにより、ストレージ装置1は、書き込みデータを二重化することができる。そして、CPU26は、書き込みコマンドに対する書き込み完了をホスト9に通知する(ステップS103)。
次に、図2Bに示すように、CM2では、ホスト9からの書き込みコマンドをCA21が受信する。図2Bでは、キャッシュ領域251に空きがないので、CA21が書き込みコマンドをキューに保持する(ステップS201)。なお、CA21は、キューが満杯である場合、後続する書き込みコマンドの受け付けを一旦停止する。
続いて、キャッシュ領域251を解放するために、CPU26は、キャッシュ領域251内のデータを、SSD4、5に書き込む(ステップS202−1、ステップS202−2)。そして、CPU26は、SSD4、5共に書き込みが完了した後、キャッシュ領域251を解放する。
そして、CPU26は、キューに保持された書き込みコマンドを受け取り、書き込みデータを解放したキャッシュ領域251に転送する(ステップS203)。続いて、CPU26は、PCIスイッチ22を介して、CM2とミラーリング構成であるCM3のキャッシュ領域351に、書き込みデータを転送する(ステップS204)。そして、CPU26は、書き込みコマンドに対する書き込み完了をホスト9に通知する(ステップS205)。
図1に戻って、CPU26は、ダーティデータ割合監視部261および第1の実行部262を有する。
ダーティデータ割合監視部261は、キャッシュ領域251内のダーティデータの割合を監視する。例えば、ダーティデータ割合監視部261は、予め定められた一定時間毎に、ダーティデータ割合記憶テーブル252に記憶されたダーティデータの割合を参照することで、キャッシュ領域251内のダーティデータの割合を監視する。なお、ダーティデータ割合記憶テーブル252に記憶されるダーティデータの割合は、例えば、ホスト9から書き込みコマンドが発行される都度、CPU26によって更新される。
第1の実行部262は、ダーティデータのキャッシュ領域251における割合が閾値以下であるタイミングで、複数のSSD4、5に対して内部処理を実行する。すなわち、第1の実行部262は、ダーティデータの割合が閾値以下であれば、ホスト9から書き込みコマンドが発生してもSSD4、5への書き込み(ライトバック)がされるまでに時間的な猶予があると判断し、この猶予時間を利用して内部処理を実行する。
例えば、第1の実行部262は、ダーティデータ割合記憶テーブル252を参照して、ダーティデータの割合が閾値以下であるか否かを判定する。そして、第1の実行部262は、ダーティデータの割合が閾値以下である場合に、ホスト9から書き込みコマンドが発行されたSSDに対して内部処理を実行する。SSDに対して書き込みコマンドが発行されたか否かは、例えば第1の管理テーブル253によって管理される。
ここで、第1の管理テーブル253のデータ構造について、図3を参照して説明する。図3は、実施例1に係る第1の管理テーブルのデータ構造の一例を示す図である。図3に示すように、第1の管理テーブル253は、SSD名253aと内部処理フラグ253bとを対応付けて記憶する。SSD名253aは、SSDの名称である。内部処理フラグ253bは、書き込みコマンドが発行されたか否かを判別するフラグである。例えば、書き込みコマンドが発行されていない場合、「0」が設定される。書き込みコマンドが発行されている場合、「1」が設定される。
一例として、SSD名が「SSD1」である場合、内部処理フラグ253bとして「1」と記憶している。SSD名が「SSD2」である場合、内部処理フラグ253bとして「1」と記憶している。SSD名が「SSD3」である場合、内部処理フラグ253bとして「0」と記憶している。
図1に戻って、第1の実行部262は、書き込みコマンドが発行されたSSD4、5について、書き込みコマンドが発行されたことを示す値(例えば「1」)を、第1の管理テーブル253の内部処理フラグ253bに設定する。また、第1の実行部262は、内部処理が実行されたSSD4、5について、第1の管理テーブル253の内部処理フラグ253bをクリア(例えば「0」)する。
[内部処理実行処理の手順]
次に、実施例1に係る内部処理実行処理の手順について、図4Aおよび図4Bを参照して説明する。図4Aおよび図4Bは、実施例1に係る内部処理実行処理のフローチャートを示す図である。
図4Aに示すように、第1の実行部262は、RAID構成のSSDに書き込みコマンドが発行されたか否かを判定する(ステップS11)。SSDに書き込みコマンドが発行されなかったと判定した場合(ステップS11;No)、第1の実行部262は、SSDに書き込みコマンドが発行されるまで、判定処理を繰り返す。
一方、SSDに書き込みコマンドが発行されたと判定した場合(ステップS11;Yes)、第1の実行部262は、書き込みコマンドが発行されたSSDの内部処理フラグ253bを「1」に設定する(ステップS12)。そして、第1の実行部262は、次の書き込みコマンドの発行を待つべく、ステップS11に移行する。
図4Bに示すように、ダーティデータ割合監視部261は、一定時間待ったか否かを判定する(ステップS21)。一定時間待っていないと判定した場合(ステップS21;No)、ダーティデータ割合監視部261は、一定時間になるまで、判定処理を繰り返す。
一定時間待ったと判定した場合(ステップS21;Yes)、ダーティデータ割合監視部261は、キャッシュ領域251上のダーティデータの割合を検知する(ステップS22)。そして、第1の実行部262は、ダーティデータ割合監視部261により検知されたダーティデータの割合が閾値以上であるか否かを判定する(ステップS23)。
ダーティデータの割合が閾値以上であると判定した場合(ステップS23;Yes)、ダーティデータ割合監視部261は、次の一定時間を待つべく、ステップS21に移行する。一方、ダーティデータの割合が閾値以上でないと判定した場合(ステップS23;No)、第1の実行部262は、第1の管理テーブル253の内部処理フラグ253bが「1」のSSDはあるか否かを判定する(ステップS24)。
内部処理フラグ253bが「1」のSSDはないと判定した場合(ステップS24;No)、第1の実行部262は、次の一定時間を待つべく、ステップS21に移行する。一方、内部処理フラグ253bが「1」のSSDはあると判定した場合(ステップS24;Yes)、第1の実行部262は、SSDの内部処理フラグ253bが「1」であったSSDに対して内部処理を実行すべく、内部処理実行命令を発行する(ステップS25)。
そして、第1の実行部262は、内部処理実行命令を発行したSSDの内部処理フラグ253bを「0」に設定する(ステップS26)。そして、第1の実行部262は、次の一定時間を待つべく、ステップS21に移行する。
[実施例1の効果]
上記実施例1によれば、第1の実行部262は、データの書き込み処理中に発生する内部処理について、以下のタイミングで、RAID構成の複数のSSD4、5の内部処理を実行する。すなわち、第1の実行部262は、ダーティデータのキャッシュ領域251における割合が閾値以下であるタイミングで、複数のSSD4、5に対して内部処理を実行する。かかる構成によれば、第1の実行部262は、データの書き込みコマンドが発生してもダーティデータの割合が閾値以下であれば、SSD4、5へ書き込み(ライトバック)がされるまでに猶予があると判断できる。このため、第1の実行部262は、ライトバックがされない猶予時間を利用して内部処理を実行することで、内部処理による性能低下を抑制できる。
なお、実施例1では、ダーティデータ割合監視部261が、キャッシュ領域251内のダーティデータの割合を監視する。そして、第1の実行部262が、ダーティデータのキャッシュ領域251における割合が閾値以下であるタイミングで、複数のSSD4、5に対して内部処理を実行すると説明した。しかしながら、ダーティデータ割合監視部261は、キャッシュ領域251内のダーティデータの割合とキャッシュ領域351内のダーティデータの割合を監視するようにしても良い。かかる場合、第1の実行部262は、ダーティデータのキャッシュ領域251における割合が閾値以下であるタイミングで、SSD4に対して内部処理を実行する。そして、第1の実行部262は、ダーティデータのキャッシュ領域351における割合が閾値以下であるタイミングで、SSD5に対して内部処理を実行するようにする。これにより、仮にSSD5、6がRAID構成でない場合であっても、第1の実行部262は、それぞれのSSDに猶予があるタイミングで内部処理を実行することができる。
ところで、実施例1に係るストレージ装置1では、データの書き込み処理中に発生する内部処理について、SSD4、5への書き込み(ライトバック)がされるまでの猶予時間を利用して、内部処理を実行する場合を説明した。しかしながら、ストレージ装置1では、これに限定されず、SSD4、5の内部処理のタイミングが一定量の書き込みが連続した後に発生するという傾向を利用して、内部処理を実行するようにしても良い。
そこで、実施例2では、SSD4、5の内部処理のタイミングが一定量の書き込みが連続した後に発生するという傾向を利用して、内部処理を実行するストレージ装置1Aについて説明する。
[実施例2に係るストレージ装置の構成]
図5は、実施例2に係るストレージ装置のハードウェア構成を示す図である。なお、図1に示すストレージ装置1と同一の構成については同一符号を示すことで、その重複する構成および動作の説明については省略する。実施例1と実施例2とが異なるところは、CPU26に内部処理開始書込量算出部263と第2の実行部264を追加した点にある。また、実施例1と実施例2とが異なるところは、RAM25に書込量記憶テーブル254と第2の管理テーブル255を追加した点にある。
書込量記憶テーブル254は、内部処理が完了した後からのSSDへのデータの書き込み量をSSD4、5毎に記憶する。書込量記憶テーブル254に記憶されるSSD4、5毎のデータの書き込み量は、例えば、ホスト9から書き込みコマンドが発行される都度、CPU26によって更新される。
第2の管理テーブル255は、内部処理の実行が開始される際のデータの書き込み量(以降、「内部処理開始書込量」という)を、SSD毎に記憶する。SSD毎に記憶される内部処理開始書込量は、内部処理開始書込量算出部263によって算出される。なお、第2の管理テ―ブル255の詳細の説明は、後述する。
内部処理開始書込量算出部263は、内部処理を実行するタイミングとして、予めSSD毎の内部処理開始書込量を算出する。なお、内部処理開始書込量算出部263は、SSDで構成されるRAIDのボリュームが作成される際に実行される。例えば、内部処理開始書込量算出部263は、書き込みサイズが一定量の書き込みコマンドを連続してSSD4、5へ発行する。一定量は、例えば8キロバイト(KB)である。その際、SSDがSCSIコマンドをサポートしているディスク(SAS−SSDやFC−SSDなど)の場合、SSDは、データの書き込み準備が整ったことを示すXFER_RDYのコマンドを返す。したがって、内部処理開始書込量算出部263は、SSDがSCSIコマンドをサポートしている場合、SSD4、5へ書き込みコマンドを発行してからXFER_RDYがSSD4、5から返ってくるまでの待ち時間を測定する。ここで、SSD4、5では、書き込みコマンドが発行されてからXFER_RDYが返ってくるまでの待ち時間は、内部処理が実行されていない場合数マイクロ秒(μs)オーダであるが、内部処理が実行されている場合数ミリ秒(ms)オーダとなる。そこで、内部処理開始書込量算出部263は、この待ち時間を検出することで内部処理の有無を検出し、内部処理の開始に至るまでの書き込み量(内部処理開始書込量)を推定する。そして、内部処理開始書込量算出部263は、SSD4、5毎の内部処理開始書込量を第2の管理テーブル255に記憶する。なお、内部処理開始書込量算出部263の詳細については後述する。
ここで、第2の管理テーブル255のデータ構造について、図6を参照して説明する。図6は、実施例2に係る第2の管理テーブルのデータ構造の一例を示す図である。図6に示すように、第2の管理テーブル255は、SSD名255aと内部処理開始書込量255bとを対応付けて記憶する。SSD名255aは、SSDの名称である。内部処理開始書込量255bは、内部処理の実行が開始される際のデータの書き込み量である。一例として、SSD名255aが「SSD1」である場合、内部処理開始書込量255bとして「600」KBと記憶している。
図5に戻って、第2の実行部264は、いずれかのSSDにおけるデータの書き込み量が内部処理の実行が開始されると予測されるデータの書き込み量以上となったタイミングで、複数のSSD4、5に対して内部処理を実行する。すなわち、第2の実行部264は、SSD4、5の内部処理のタイミングが一定量の書き込みが連続した後で発生するという傾向を利用して、内部処理を実行する。
例えば、第2の実行部264は、書込量記憶テーブル254を参照して、RAID構成(RAIDグループ)のSSD4、5について、書き込み量が第2の管理テーブル254に記憶された内部処理開始書込量以上であるか否かを判定する。そして、第2の実行部264は、いずれかのSSDで書き込み量が内部処理開始書込量以上である場合に、RAID構成の複数のSSD4、5に内部処理を実行する。すなわち、第2の実行部264は、統計的に求められた内部処理のタイミングで、RAID構成の複数のSSD4、5の内部処理を揃えて実行するようにする。これにより、第2の実行部264は、RAID構成である複数のSSD4、5の内部処理の同期をとることができる。
[内部処理実行処理の手順]
次に、実施例2に係る内部処理実行処理の手順について、図7A、図7Bおよび図7Cを参照して説明する。図7Aは、実施例2に係る内部処理実行処理のフローチャートを示す図である。図7Bは、実施例2に係る内部処理開始書込量算出処理のフローチャートを示す図である。図7Cは、実施例2に係る第2の実行処理のフローチャートを示す図である。
図7Aでは、内部処理開始書込量算出部263が、SSD4、5について、RAIDのボリュームの作成要求を受け取ったとする。すると、内部処理開始書込量算出部263は、SSD4、5について、RAIDのボリュームを作成する(ステップS31)。そして、内部処理開始書込量算出部263は、作成したボリュームにフォーマットをする際、内部処理のタイミングを取得する(ステップS32)。なお、内部処理のタイミングを取得する処理の詳細は、図7Bで説明する。内部処理開始書込量算出部263は、SSD4、5毎の「内部処理開始書込量」を取得することになる。
続いて、第2の実行部264は、SSD4、5に書き込みコマンド(WtCMD)が発行されたか否かを判定する(ステップS33)。SSD4、5にWtCMDが発行されなかったと判定した場合(ステップS33;No)、第2の実行部264は、判定処理を繰り返す。
一方、SSD4、5にWtCMDが発行されたと判定した場合(ステップS33;Yes)、第2の実行部264は、いずれかのSSD4、5において、総書き込み量が「内部処理開始書込量」以上になったか否かを判定する(ステップS34)。いずれかのSSD4、5において、総書き込み量が「内部処理開始書込量」以上になっていないと判定した場合(ステップS34;No)、第2の実行部264は、次のWtCMDの発行を待つべく、ステップS33に移行する。
一方、いずれかのSSD4、5で、総書き込み量が「内部処理開始書込量」以上になったと判定した場合(ステップS34;Yes)、第2の実行部264は、「内部処理開始書込量」以上書き込んだSSDに「内部処理実行命令」を発行する(ステップS35)。このとき、第2の実行部264は、「内部処理開始書込量」以上書き込んだSSDと同一のRAID構成(RAIDグループ)のSSDに対しても「内部処理実行命令」を発行する。なお、ステップS33〜ステップS35における内部処理を実行する処理の詳細は、図7Cで説明する。
[内部処理開始書込量算出処理の手順]
次に、実施例2に係る内部処理開始書込量算出処理の手順について説明する。
図7Bに示すように、内部処理開始書込量算出部263は、書き込みコマンド(WtCMD)の総発行数n、現在のCMD発行数iをそれぞれ0にリセットする(ステップS41)。ここで、WtCMDの総発行数nとは、WtCMDを発行した総数を示す変数である。また、現在のCMD発行数iとは、現在発行中のWtCMDの発行数を示す変数である。なお、WtCMDによって書き込まれるデータは、全て0であるとか全て1であるとかでないランダムなデータであることが望ましい。そして、内部処理開始書込量算出部263は、WtCMDの総発行数nが最大総発行数MAX以下であるか否かを判定する(ステップS42)。ここで、最大総発行数MAXとは、WtCMDを発行する総数の最大値を示す定数である。
WtCMDの総発行数nが最大総発行数MAX以下である場合(ステップS42;Yes)、内部処理開始書込量算出部263は、ボリュームが作成されたRAID構成のSSD4、5に書き込みサイズ(WtSize)が8キロバイト(KB)のWtCMDを発行する。また、内部処理開始書込量算出部263は、WtCMD発行時、発行したWtCMDに対応するタイマを起動する(ステップS43)。そして、内部処理開始書込量算出部263は、現在のCMD発行数iに1を加算し、WtCMDの総発行数nに1を加算する(ステップS44)。
続いて、内部処理開始書込量算出部263は、XFER_RDYが返ってきているか否かを判定する(ステップS45)。XFER_RDYが返ってきたと判定した場合(ステップS45;Yes)、内部処理開始書込量算出部263は、返ってきたXFER_RDYに対応するタイマを停止し、タイマが起動されてからの時間を示すタイマの情報T[n]を保存する。そして、内部処理開始書込量算出部263は、XFER_RDYに応答し(ステップS46)、ステップS47に移行する。
一方、XFER_RDYが返ってきていないと判定した場合(ステップS45;No)、内部処理開始書込量算出部263は、ステップS47に移行する。
そして、ステップS47において、内部処理開始書込量算出部263は、正常のステータスが返ってきているか否かを判定する(ステップS47)。すなわち、内部処理開始書込量算出部263は、WtCMDに対応する正常の処理結果が返ってきているかを判定する。正常のステータスが返ってきていると判定した場合(ステップS47;Yes)、内部処理開始書込量算出部263は、WtCMDに対応する書き込み処理が1つ終了したので、現在のCMD発行数iを1だけ減算する(ステップS48)。そして、内部処理開始書込量算出部263は、ステップS49に移行する。
一方、正常のステータスが返ってきていないと判定した場合(ステップS47;No)、内部処理開始書込量算出部263は、ステップS49に移行する。
そして、内部処理開始書込量算出部263は、現在のCMD発行数iがドライブあたりの最大CMD発行数MAX以上であるか否かを判定する(ステップS49)。現在のCMD発行数iが最大CMD発行数MAX以上であると判定した場合(ステップS49;Yes)、内部処理開始書込量算出部263は、次のWtCMDを発行しないで、ステップS45に移行する。
一方、現在のCMD発行数iが最大CMD発行数MAX以上でないと判定した場合(ステップS49;No)、内部処理開始書込量算出部263は、次のWtCMDを発行すべく、ステップS42に移行する。
ステップS42では、WtCMDの総発行数nが最大総発行数MAX以下でない場合(ステップS42;No)、内部処理開始書込量算出部263は、仕掛中のWtCMDを処理する(ステップS50)。
続いて、内部処理開始書込量算出部263は、保存したタイマ情報の値が1ms以上の数(A)を取得する(ステップS51)。すなわち、内部処理開始書込量算出部263は、内部処理が実行されていると推定されるタイマ情報の数を取得する。そして、内部処理開始書込量算出部263は、タイマ情報が1ms以上のものの中で、最後に発行されたCMDの発行番号(B)を取得する(ステップS52)。なお、CMDの発行番号は、WtCMDを発行したときのnの値に対応する。そして、内部処理開始書込量算出部263は、内部処理開始書込量を以下の式(1)のように算出する(ステップS53)。
内部処理開始書込量=(B)×WtSize/(A)・・・(1)
すなわち、SSD4、5では、WtCMDが発行されてからXFER_RDYが返ってくるまでの待ち時間は、内部処理が実行されていない場合、数μsオーダであるが、内部処理が実行されている場合、数msオーダとなる。そこで、内部処理開始書込量算出部263は、この数msオーダの待ち時間を検出することで内部処理の有無を検出し、内部処理の開始に至るまでの内部処理開始書込量を推定する。なお、かかる待ち時間とは、タイマ情報T[n]に対応する。一例として、タイマ情報が1ms以上のWtCMDが4個あったとする。すると、(A)は4となる。そして、タイマ情報が1ms以上のWtCMDの中で、最後に発行されたCMDの発行番号が140であったとする。すると、(B)は140となる。そして、WtSizeが8KBであるとする。すると、内部処理開始書込量算出部263は、140×8/4を算出して得られる280KBを内部処理開始書込量として算出する。
内部処理開始書込量が算出されると、内部処理開始書込量算出部263は、通常行われるフォーマットを開始する(ステップS54)。
[第2の実行処理の手順]
次に、実施例2に係る第2の実行処理の手順について説明する。
図7Cに示すように、第2の実行部264は、RAID構成(RAIDグループ)のSSD4、5にWtCMDが発行されたか否かを判定する(ステップS61)。RAID構成のSSD4、5にWtCMDが発行されなかったと判定した場合(ステップS61;No)、第2の実行部264は、当該SSDにWtCMDが発行されるまで、判定処理を繰り返す。
一方、RAID構成のSSD4、5にWtCMDが発行されたと判定した場合(ステップS61;Yes)、第2の実行部264は、WtCMDが発行されたRAIDグループの番号xを取得する(ステップS62)。そして、第2の実行部264は、「番号xのRAIDグループへの書込量」にWtCMDの書込量(バイト:Byte)を加算する(ステップS63)。
続いて、第2の実行部264は、「番号xのRAIDグループへの書込量」が当該RAIDグループに対応する「内部処理開始書込量」以上であるか否かを判定する(ステップS64)。例えば、第2の実行部264は、書込量記憶テーブル254を参照して、番号xのRAIDグループに対応するSSDの内部処理開始書込量255bを取得する。そして、第2の実行部264は、「番号xのRAIDグループへの書込量」が取得された内部処理開始書込量255b以上であるか否かを判定する。ここで、「番号xのRAIDグループへの書込量」が番号xのRAIDグループに対応する「内部処理開始書込量」以上でない場合(ステップS64;No)、第2の実行部264は、次のWtCMDを待つべく、ステップS61に移行する。
一方、「番号xのRAIDグループへの書込量」が番号xのRAIDグループに対応する「内部処理開始書込量」以上である場合(ステップS64;Yes)、第2の実行部264は、番号xのRAIDグループのSSD4、5に対して、「内部処理実行命令」を発行する(ステップS65)。その後、第2の実行部264は、「番号xのRAIDグループへの書込量」を0にリセットする(ステップS66)。そして、第2の実行部264は、次のWtCMDを待つべく、ステップS61に移行する。
[実施例2の効果]
上記実施例2によれば、第2の実行部264は、データの書き込み処理中に発生する内部処理について、以下のタイミングで、複数のSSD4、5内の内部処理を実行する。すなわち、第2の実行部264は、いずれかのSSD4、5におけるデータの書き込み量が内部処理の実行が開始されると予測されるデータの書き込み量(内部処理開始書込量)以上となったタイミングで、複数のSSD4、5に対して内部処理を実行する。かかる構成によれば、第2の実行部264は、SSDではある一定量の書き込みが連続した後内部処理が開始されるという傾向を利用して複数のSSD4、5に対して同じタイミングで内部処理を実行することで、内部処理による性能低下を抑制できる。
ところで、実施例1に係るストレージ装置1では、データの書き込み処理中に発生する内部処理について、SSD4、5への書き込み(ライトバック)がされるまでの猶予時間を利用して、内部処理を実行する場合を説明した。実施例2に係るストレージ装置1Aでは、SSD4、5の内部処理のタイミングが一定量の書き込みが連続した後で発生するという傾向を利用して、内部処理を実行する場合を説明した。しかしながら、ストレージ装置1、1Aでは、これに限定されず、RAID構成のいずれかのSSD4、5で内部処理が実行されたタイミングで、他のSSD4、5の内部処理を実行するようにしても良い。
そこで、実施例3では、RAID構成のいずれかのSSD4、5で内部処理が実行されたタイミングで、他のSSD4、5の内部処理を実行するストレージ装置1Bについて説明する。
[実施例3に係るストレージ装置の構成]
図8は、実施例3に係るストレージ装置のハードウェア構成を示す図である。なお、図5に示すストレージ装置1Aと同一の構成については同一符号を示すことで、その重複する構成および動作の説明については省略する。実施例2と実施例3とが異なるところは、CPU26に待ち時間閾値算出部265と第3の実行部266を追加した点にある。また、実施例2と実施例3とが異なるところは、RAM25に待ち時間記憶テーブル256と第3の管理テーブル257を追加した点にある。
待ち時間記憶テーブル256は、待ち時間をSSD4、5毎に記憶する。ここでいう「待ち時間」とは、SSD4、5へ書き込みコマンドを発行してからXFER_RDYがSSD4、5から返ってくるまでの時間をいう。以降で記載される待ち時間も特に説明がない限り、同様の意味であるとする。なお、XFER_RDYとは、データの書き込み準備が整ったことを示すSSD4、5からの通知を示す。
第3の管理テーブル257は、内部処理が実行されていないときの待ち時間をRAID構成(RAIDグループ)毎に記憶する。すなわち、第3の管理テーブル257は、SSD4、5へ書き込みコマンドを発行してからXFER_RDYがSSD4、5から返ってくるまでの待ち時間について、内部処理が実行されていないときの待ち時間を記憶する。なお、第3の管理テーブル257の詳細の説明は、後述する。
待ち時間閾値算出部265は、内部処理が実行されていないときの待ち時間を、内部処理を実行するタイミングの閾値として算出する。なお、待ち時間閾値算出部265は、SSDで構成されたRAIDのボリュームが作成される際に実行される。例えば、待ち時間閾値算出部265は、内部処理が実行されていないときに、データ長が例えば8KBの書き込みコマンドをSSD4、5へ発行する。そして、待ち時間閾値算出部265は、書き込みコマンドを発行してからXFER_RDYが返ってくるまでの待ち時間を算出する。待ち時間閾値算出部265は、これを所定回数分繰り返し、データ長が8KBである場合の待ち時間の平均を算出する。算出された待ち時間の平均が、データ長が8KBである場合の内部処理を実行するタイミングの閾値となる。同様に、待ち時間閾値算出部265は、データ長を8KBから異なるデータ長に代えて、データ長毎の、待ち時間の平均を算出する。そして、待ち時間閾値算出部265は、算出したデータ長毎の待ち時間の平均を、内部処理を実行するタイミングの閾値として第3の管理テーブル257に記憶する。なお、待ち時間閾値算出部265の詳細については後述する。
ここで、第3の管理テーブル257のデータ構造について、図9を参照して説明する。図9は、実施例3に係る第3の管理テーブルのデータ構造の一例を示す図である。図9に示すように、第3の管理テーブル257は、RAIDグループ毎に、データ長257aと待ち時間閾値257bとを対応付けて記憶する。データ長257aは、書き込みコマンドのデータ長である。待ち時間閾値257bは、データ長257aが示すデータ長の書き込みコマンドを発行してからXFER_RDYが返ってくるまでの待ち時間の平均である。すなわち、待ち時間閾値257bは、内部処理を実行するタイミングの閾値である。
一例として、SSDのRAIDグループの番号が「1」である場合、データ長257aとして「8KB」であるとき、待ち時間閾値257bとして「50μs」と記憶している。また、RAIDグループの番号が「1」である場合、データ長257aとして「2MB」であるとき、待ち時間閾値257bとして「1ms」と記憶している。なお、SSDの作りによっては、データ長257a毎に待ち時間閾値257bが変化しない場合がある。このような場合には、1種類のデータ長257aについて算出された待ち時間閾値257bを記憶しておけば良い。
第3の実行部266は、いずれかのSSDで、内部処理が実行されていないときの待ち時間(閾値)を超えたタイミングで、複数のSSD4、5に対して内部処理を実行する。すなわち、第3の実行部266は、いずれかのSSDで書き込みコマンドに対する待ち時間が閾値を超えると、当該SSDで内部処理が実行されたと判断し、当該SSDと同じRAID構成のSSDに対して内部処理を実行する。これにより、第3の実行部266は、RAID構成である複数のSSD4、5の内部処理の同期をとることができる。
[内部処理実行処理の手順]
次に、実施例3に係る内部処理実行処理の手順について、図10Aおよび図10Bを参照して説明する。図10Aは、実施例3に係る待ち時間閾値算出処理のフローチャートを示す図である。図10Bは、実施例3に係る第3の実行処理のフローチャートを示す図である。
[待ち時間閾値算出処理の手順]
図10Aに示すように、待ち時間閾値算出部265が、SSD4、5について、RAIDのボリュームの作成要求を受け取ったとする。すると、待ち時間閾値算出部265は、SSD4、5について、RAIDのボリュームを作成する(ステップS71)。そして、待ち時間閾値算出部265は、データ長の番号jに1を設定するとともに、データ長の番号jに対応する待ち時間合計G[j]に0を設定する(ステップS72)。なお、データ長の番号(j)1は、例えば8KBのデータ長に対応する番号を示し、データ長の番号(j)2は、64KBのデータ長に対応する番号を示す。また、以下で示すLは、データ長の番号jに対応するデータ長、すなわち8KBや64KBを示すものとする。
続いて、待ち時間閾値算出部265は、データ長の番号jがデータ長サンプル数より大きいか否かを判定する(ステップS73)。データ長の番号jがデータ長サンプル数より大きいと判定した場合(ステップS73;Yes)、待ち時間閾値算出部265は、処理を終了する。
データ長の番号jがデータ長サンプル数より大きくないと判定した場合(ステップS73;No)、待ち時間閾値算出部265は、現在のCMD発行数mが最大CMD発行数より大きいか否かを判定する(ステップS74)。現在のCMD発行数mが最大CMD発行数より大きくないと判定した場合(ステップS74;No)、待ち時間閾値算出部265は、ボリュームが作成されたSSDのRAIDグループに内部処理実行命令を発行する(ステップS75)。これは、予め内部処理実行命令を発行しておくことで、待ち時間閾値を算出する処理を行う際に内部処理が実行されないようにするためである。
続いて、待ち時間閾値算出部265は、内部処理実行命令を発行したSSDから応答が返ってきたら、ボリュームが作成されたSSDのRAIDグループにデータ長がLKBの書き込みコマンド(WtCMD)を発行する。また、待ち時間閾値算出部265は、書き込みコマンドを発行時、発行したWtCMDに対応するタイマを起動する(ステップS76)。なお、書き込みコマンドによって書き込まれるデータは、全て0であるとか全て1であるとかでないランダムなデータであることが望ましい。そして、待ち時間閾値算出部265は、現在のCMD発行数mに1を加算する(ステップS77)。
そして、待ち時間閾値算出部265は、XFER_RDYが返ってきたら、タイマを停止し、待ち時間合計G[j]にタイマ値を加算する(ステップS78)。そして、待ち時間閾値算出部265は、次の書き込みコマンドを発行すべく、ステップS74に移行する。
ステップS74では、現在のCMD発行数mが最大CMD発行数より大きいと判定した場合(ステップS74;Yes)、待ち時間閾値算出部265は、以下の式(2)に基づいて、データ長Lの書き込みを実施したときの「待ち時間閾値」を算出する(ステップS79)。
待ち時間閾値=待ち時間合計G[j]÷現在のCMD発行数m・・・式(2)
そして、待ち時間閾値算出部265は、現在のCMD発行数mを0にリセットし、データ長の番号jに1を加算し、待ち時間合計G[j]を0にリセットする(ステップS80)。そして、待ち時間閾値算出部265は、次のデータ長の「待ち時間閾値」を算出すべく、ステップS73に移行する。
[第3の実行処理の手順]
次に、実施例3に係る第3の実行処理の手順について説明する。
図10Bに示すように、第3の実行部266は、RAID構成(RAIDグループ)のSSD4、5にWtCMDが発行されたか否かを判定する(ステップS81)。RAID構成のSSD4、5にWtCMDが発行されなかったと判定した場合(ステップS81;No)、第3の実行部266は、当該SSDにWtCMDが発行されるまで、判定処理を繰り返す。
一方、RAID構成のSSD4、5にWtCMDが発行されたと判定した場合(ステップS81;Yes)、第3の実行部266は、いずれかのSSD4、5で、待ち時間が閾値を超えたか否かを判定する(ステップS82)。いずれかのSSD4、5で、待ち時間が閾値を超えていないと判定した場合(ステップS82;No)、第3の実行部266は、いずれのSSD4、5も内部処理が実行されていないと判断する。そして、第3の実行部266は、次のWtCMDを待つべく、ステップS81に移行する。
一方、いずれかのSSD4、5で、待ち時間が閾値を超えた場合(ステップS82;Yes)、第3の実行部266は、閾値を超えたSSDで内部処理が実行されていると判断する。そして、第3の実行部266は、閾値を超えたSSDと同じRAIDグループのSSDに対して、「内部処理実行命令」を発行する(ステップS83)。そして、第3の実行部266は、次のWtCMDを待つべく、ステップS81に移行する。
ところで、上記では、内部処理実行処理は、第1の実行部262、第2の実行部264および第3の実行部266をそれぞれ実行させて、複数のSSD4、5に対して内部処理を実行した。しかしながら、内部処理実行処理は、これに限定されず、第1の実行部262、第2の実行部264および第3の実行部266を組み合わせて、複数のSSD4、5に対して内部処理を実行するようにしても良い。図11は、実施例3に係る内部処理実行処理の全体のフローチャートを示す図である。
図11に示すように、第1の実行部262は、ホスト9から書き込みコマンド(WtCMD)が発行されたら、ダーティデータのキャッシュ領域251における割合が閾値未満か否かを判定する(ステップS91)。ダーティデータのキャッシュ領域251における割合が閾値未満であると判定した場合(ステップS91;Yes)、第1の実行部262は、ストレージ装置1Bに搭載されているSSD4、5へ「内部処理実行命令」を発行する(ステップS92)。そして、第1の実行部262は、ステップS91に移行する。
一方、ダーティデータのキャッシュ領域251における割合が閾値未満であると判定した場合(ステップS91;No)、第2の実行部264は、RAIDグループへの書き込みが「内部処理開始書込量」以上に達したか否かを判定する(ステップS93)。RAIDグループへの書き込みが「内部処理開始書込量」以上に達したと判定した場合(ステップS93;Yes)、第2の実行部264は、書き込みが「内部処理開始書込量」以上に達したRAIDグループのドライブへ「内部処理実行命令」を発行する(ステップS94)。そして、第2の実行部264は、ステップS91に移行する。
一方、RAIDグループへの書き込みが「内部処理開始書込量」以上に達していないと判定した場合(ステップS93;No)、第3の実行部266は、いずれかのSSDで、待ち時間が閾値を超えたか否かを判定する(ステップS95)。いずれかのSSDで、待ち時間が閾値を超えたと判定した場合(ステップS95;Yes)、第3の実行部266は、閾値を超えたSSDで内部処理が実行されていると判断する。そして、第3の実行部266は、内部処理を実行したSSDと同じRAIDグループのSSDに「内部処理実行命令」を発行する(ステップS96)。そして、第3の実行部266は、ステップS91に移行する。
いずれかのSSDからの応答があるまでの待ち時間が閾値を超えていないと判定した場合(ステップS95;No)、第3の実行部266は、ステップS91に移行する。
ここで、第3の実行部266によってRAID1(1+1)構成のSSDa、bに対して内部処理が実行される場合、ホスト9が応答遅延となる様子を、図12〜図14を参照して説明する。まず、RAID構成でないSSD単体での応答遅延について、図12を参照して説明する。図12は、SSD単体での応答遅延を説明する図である。図12では、ホストがSSDに対して連続して8KBの書き込みコマンド(WtCMD)を発行したときの例である。
図12に示すように、SSD単体では、例えば、内部処理は、1個当たり8KBの書き込みコマンド(WtCMC)の場合、80個の書き込みコマンドに1回発生している。ここでは、SSDは、0〜79の80個のWtCMDに対して、0〜78の79個のWtCMDについては処理が完了すると即ホスト9に対して応答を行う。しかし、SSDは、80個目のWtCMDについては内部処理が実行されているので、即ホスト9に対して応答を行えず、内部処理が完了した後にホスト9に対して応答を行う。すなわち、80個目のWtCMDについて、内部処理の処理時間分、ホスト9への応答遅延が発生する。
このようなSSDでRAID1(1+1)を構成した場合に、ホスト9が応答遅延となる様子を、図13を参照して説明する。図13は、SSDでRAID1(1+1)を構成した場合のSSDの応答遅延を説明する図である。図13でも、図12の場合と同様に、
SSDでは、例えば、内部処理が80個の書き込みコマンド(WtCMD)に1回発生するとする。そして、ホスト9がSSDに対して連続して8KBの書き込みコマンド(WtCMD)を発行したときの例である。
図13に示すように、ホスト9から発行された40個目のWtCMDで、SSDbの待ち時間が閾値を超えたとする。すると、第3の実行部266は、SSDbで内部処理が実行されたと判断し、SSDbと同じRAID構成のSSDaに対して内部処理実行命令を発行する。すると、SSDaでは、内部処理が実行される。その後、40個目のWtCMDについて、SSDaとSSDbの内部処理が完了した後に、ホスト9に対して応答がされる。すなわち、40個目のWtCMDについて、内部処理の処理時間、ここでは30ms分ホスト9への応答遅延が発生する。
続いて、120個目のWtCMDで、SSDbの待ち時間が閾値を超えたとする。すると、第3の実行部266は、SSDaに対して内部処理実行命令を発行し、SSDaでは、内部処理が実行される。その後、120個目のWtCMDについて、SSDaとSSDbの内部処理が完了した後に、ホスト9に対して応答がされる。すなわち、120個目のWtCMDについて、内部処理の処理時間、ここでは20ms分ホスト9への応答遅延が発生する。
続いて、200個目のWtCMDで、SSDbの待ち時間が閾値を超えたとする。すると、第3の実行部266は、SSDaに対して内部処理実行命令を発行し、SSDaでは、内部処理が実行される。その後、200個目のWtCMDについて、SSDaとSSDbの内部処理が完了した後に、ホスト9に対して応答がされる。すなわち、200個目のWtCMDについて、SSDaの内部処理の処理時間が30msであり、SSDbの内部処理の処理時間が20msであるので、SSDaの内部処理の処理時間である30ms分ホスト9への応答遅延が発生する。
続いて、280個目のWtCMDで、SSDaの待ち時間が閾値を超えたとする。すると、第3の実行部266は、SSDaで内部処理が実行されたと判断し、SSDaと同じRAID構成のSSDbに対して内部処理実行命令を発行する。すると、SSDbでは、内部処理が実行される。その後、280個目のWtCMDについて、SSDaとSSDbの内部処理が完了した後に、ホスト9に対して応答がされる。すなわち、280個目のWtCMDについて、内部処理の処理時間、ここでは20ms分ホスト9への応答遅延が発生する。
このように、第3の実行部266は、RAID1(1+1)構成のSSDの内部処理の同期をとることができる。これによって、第3の実行部266は、SSDの内部処理によって応答遅延となるWtCMDの数を減らすことができる。
SSDの内部処理によって応答遅延となるWtCMDの数を減らすことができることについて、図14を参照して説明する。図14は、SSDでRAID1(1+1)を構成した場合の従来におけるSSDの応答遅延を説明する図である。図14でも、図12および図13の場合と同様に、SSDでは、例えば、内部処理が80個の書き込みコマンド(WtCMD)に1回発生しているとする。そして、ホスト9がSSDに対して連続して8KBの書き込みコマンド(WtCMD)を発行したときの例である。
図14に示すように、ホスト9から発行された40個目のWtCMDについて、SSDbで内部処理が実行されたとする。すると、SSDaでは、SSDbで内部処理が実行されている間待ち時間となる。ここでいう待ち時間とは、処理が待機することとなる時間を示す。その後、40個目のWtCMDについて、SSDbの内部処理が完了した後に、ホスト9に対して応答がされる。すなわち、40個目のWtCMDについて、内部処理の処理時間、ここでは30ms分ホスト9への応答遅延が発生する。
そして、80個目のWtCMDについて、他方のSSDaで内部処理が実行される。すると、SSDbでは、SSDaで内部処理が実行されている間待ち時間となる。その後、80個目のWtCMDについて、SSDaの内部処理が完了した後に、ホスト9に対して応答がされる。すなわち、80個目のWtCMDについて、内部処理の処理時間、ここでは20ms分ホスト9への応答遅延が発生する。
同様に、120個目のWtCMDについて、SSDbで内部処理が実行され、ホスト9への応答遅延が発生する。150個目のWtCMDについて、他方のSSDaで内部処理が実行され、ホスト9への応答遅延が発生する。すなわち、図14で示した従来におけるSSDの例では、応答遅延は、40CMDずつ発生している。
これに対して、図13で示したSSDの例では、応答遅延は、80CMDずつ発生している。つまり、第3の実行部266は、SSDの内部処理によって応答遅延となるWtCMDの数を従来よりも1/2に減らすことができる。
なお、上記では、SSDがRAID1(1+1)構成である場合について説明したが、SSDがRAID5(3+1)構成の場合にはさらに効果が顕著になる。図15は、SSDでRAID5(3+1)を構成した場合の従来におけるSSDの応答遅延を説明する図である。図15でも、図12〜図14の場合と同様に、SSDでは、例えば、内部処理が80個の書き込みコマンド(WtCMD)に1回発生しているとする。そして、ホストがSSDに対して連続して8KBの書き込みコマンド(WtCMD)を発行したときの例である。
図15に示すように、ホスト9から発行された40個目のWtCMDについて、SSDaで内部処理が実行されたとする。すると、SSDb、c、dでは、SSDaで内部処理が実行されている間待ち時間となる。その後、40個目のWtCMDについて、SSDaの内部処理が完了した後に、ホスト9に対して応答がされる。すなわち、40個目のWtCMDについて、内部処理の処理時間、ここでは30ms分ホスト9への応答遅延が発生する。
そして、50個目のWtCMDについて、今度はSSDbで内部処理が実行される。すると、SSDa、c、dでは、SSDbで内部処理が実行されている間待ち時間となる。その後、50個目のWtCMDについて、SSDbの内部処理が完了した後に、ホスト9に対して応答がされる。すなわち、50個目のWtCMDについて、内部処理の処理時間、ここでは20ms分ホスト9への応答遅延が発生する。
同様に、60個目のWtCMDについて、SSDcで内部処理が実行され、ホスト9への応答遅延が発生する。80個目のWtCMDについて、今度はSSDdで内部処理が実行され、ホスト9への応答遅延が発生する。すなわち、図15で示した従来におけるSSDの例では、応答遅延は、10または20CMDずつ発生している。
これに対して、図13で示したSSDの例では、応答遅延は、80CMDずつ発生している。つまり、第3の実行部266は、SSDの内部処理によって応答遅延となるWtCMDの数を従来よりも1/4以下に減らすことができる。
なお、図11〜図14で説明した第3の実行部266における効果は、第1の実行部262によって内部処理が実行された場合、第2の実行部264によって内部処理が実行された場合でも同様に有する効果である。
[実施例3の効果]
上記実施例3によれば、第3の実行部266は、データの書き込み処理中に発生する内部処理について、以下のタイミングで、複数のSSD4、5内の内部処理を実行する。すなわち、第3の実行部266は、いずれかのSSDで、内部処理が実行されていないときの待ち時間を超えたタイミングで、当該待ち時間を超えたSSDと異なるSSDに対して内部処理を実行する。かかる構成によれば、第3の実行部266は、内部処理が実行されていないときの待ち時間を超えたタイミングで、当該待ち時間を超えたSSDで内部処理が実行されたと判断できる。したがって、第3の実行部266は、内部処理が実行されたと判断できるタイミングで、他のSSDの内部処理のタイミングを合わせることができるので、内部処理による性能低下を抑制できる。すなわち、第3の実行部266は、SSD毎にバラバラに内部処理が実行されたときと比べて、書き込みコマンドを発行するホスト9に対する応答の遅延数を減らすことができる。
[その他]
なお、実施例1−3では、複数のSSDが、RAID1(1+1)やRAID5(3+1)構成等のRAID構成であるとして説明した。しかしながら、複数のSSDは、RAID構成に限定されず、冗長性を備えるようにデータを記憶する構成であれば良い。
また、図示したストレージ装置1の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、ストレージ装置1の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、内部処理開始書込量算出部263と待ち時間閾値算出部265とを初期算出部として1個の部に統合しても良い。一方、第1の実行部262を第1の監視部と第1の内部処理実行部とに分散しても良い。第2の実行部264を第2の監視部と第2の内部処理実行部とに分散しても良い。第3の実行部266を第3の監視部と第3の内部処理実行部とに分散しても良い。また、RAM25内のテーブルをストレージ装置1の外部装置に記憶するものとしてネットワーク経由で接続するようにしても良い。
以上説明した実施形態及びその変形例に関し、更に以下の付記を開示する。
(付記1)冗長性を備えるようにデータを記憶する複数のソリッドステートディスク(SSD)と、
各SSDに対するデータの読み出し処理および書き込み処理を制御する制御部とを備え、
前記制御部は、
データの書き込み処理中に発生する内部処理について、いずれかのSSDが所定の条件を満たすタイミングで、各SSDの内部処理を実行する
ことを特徴とするストレージ装置。
(付記2)データを記憶するキャッシュメモリをさらに備え、
前記制御部は、SSDへの書き込みが完了していないデータであるダーティデータの前記キャッシュメモリにおける割合が所定の割合以下であるタイミングで、前記SSDに対して内部処理を実行する
ことを特徴とする付記1に記載のストレージ装置。
(付記3)前記制御部は、いずれかのSSDにおけるデータの書き込み量が内部処理の実行が開始されると予測されるデータの書き込み量以上となったタイミングで、前記複数のSSDに対して内部処理を実行する
ことを特徴とする付記1に記載のストレージ装置。
(付記4)前記制御部は、SSDへ書き込みコマンドを発行してから応答があるまでの待ち時間について、いずれかのSSDで、内部処理が実行されていないときの待ち時間を超えたタイミングで、当該待ち時間を超えたSSDと異なるSSDに対して内部処理を実行する
ことを特徴とする付記1に記載のストレージ装置。
(付記5)複数のSSDは、RAID(Redundant Array of Inexpensive Disks)構成である
ことを特徴とする付記1から付記4のいずれか一つに記載のストレージ装置。
(付記6)ストレージ装置が、
冗長性を備えるようにデータを記憶する複数のソリッドステートディスク(SSD)に対するデータの読み出し処理および書き込み処理を制御し、
前記制御する処理は、データの書き込み処理中に発生する内部処理について、いずれかのSSDが所定の条件を満たすタイミングで、各SSDの内部処理を実行する
処理を実行することを特徴とする内部処理制御方法。
(付記7)コンピュータに、
冗長性を備えるようにデータを記憶する複数のソリッドステートディスク(SSD)に対するデータの読み出し処理および書き込み処理を制御し、
前記制御する処理は、データの書き込み処理中に発生する内部処理について、いずれかのSSDが所定の条件を満たすタイミングで、各SSDの内部処理を実行する
処理を実行させることを特徴とする内部処理制御プログラム。
1、1A、1B ストレージ装置
2、2A、2B、3、3A、3B CM
4、5 SSD
9 ホスト
21、31 CA
22、32 PCIスイッチ
23、33 IOC
24、34 EXP
25、35 RAM
26、36 CPU
251、351 キャッシュ領域
252 ダーティデータ割合記憶テーブル
253 第1の管理テーブル
254 書込量記憶テーブル
255 第2の管理テーブル
256 待ち時間記憶テーブル
257 第3の管理テーブル
261 ダーティデータ割合監視部
262 第1の実行部
263 内部処理開始書込量算出部
264 第2の実行部
265 待ち時間閾値算出部
266 第3の実行部

Claims (3)

  1. 冗長性を備えるようにデータを記憶する複数のソリッドステートディスク(SSD)と、
    各SSDに対するデータの読み出し処理および書き込み処理を制御する制御部とを備え、
    前記制御部は、
    ホストからデータの書き込みコマンドを受け付けると、受け付けたデータの書き込み処理中に、SSDへ前記書き込みコマンドを発行してから応答があるまでの待ち時間について、いずれかのSSDで内部処理が実行されていないときの待ち時間を超えたタイミングで、当該待ち時間を超えたSSDと異なるSSDに対して内部処理を実行する
    ことを特徴とするストレージ装置。
  2. ストレージ装置が、
    冗長性を備えるようにデータを記憶する複数のソリッドステートディスク(SSD)に対するデータの読み出し処理および書き込み処理を制御し、
    前記制御する処理は、ホストからデータの書き込みコマンドを受け付けると、受け付けたデータの書き込み処理中に、SSDへ前記書き込みコマンドを発行してから応答があるまでの待ち時間について、いずれかのSSDで内部処理が実行されていないときの待ち時間を超えたタイミングで、当該待ち時間を超えたSSDと異なるSSDに対して内部処理を実行する
    処理を実行することを特徴とする内部処理制御方法。
  3. コンピュータに、
    冗長性を備えるようにデータを記憶する複数のソリッドステートディスク(SSD)に対するデータの読み出し処理および書き込み処理を制御し、
    前記制御する処理は、ホストからデータの書き込みコマンドを受け付けると、受け付けたデータの書き込み処理中に、SSDへ前記書き込みコマンドを発行してから応答があるまでの待ち時間について、いずれかのSSDで内部処理が実行されていないときの待ち時間を超えたタイミングで、当該待ち時間を超えたSSDと異なるSSDに対して内部処理を実行する
    処理を実行させることを特徴とする内部処理制御プログラム。
JP2012206157A 2012-09-19 2012-09-19 ストレージ装置、内部処理制御方法および内部処理制御プログラム Expired - Fee Related JP6111575B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012206157A JP6111575B2 (ja) 2012-09-19 2012-09-19 ストレージ装置、内部処理制御方法および内部処理制御プログラム
US13/946,510 US9323683B2 (en) 2012-09-19 2013-07-19 Storage apparatus and method for controlling internal process

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012206157A JP6111575B2 (ja) 2012-09-19 2012-09-19 ストレージ装置、内部処理制御方法および内部処理制御プログラム

Publications (2)

Publication Number Publication Date
JP2014059850A JP2014059850A (ja) 2014-04-03
JP6111575B2 true JP6111575B2 (ja) 2017-04-12

Family

ID=50275702

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012206157A Expired - Fee Related JP6111575B2 (ja) 2012-09-19 2012-09-19 ストレージ装置、内部処理制御方法および内部処理制御プログラム

Country Status (2)

Country Link
US (1) US9323683B2 (ja)
JP (1) JP6111575B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9383926B2 (en) * 2014-05-27 2016-07-05 Kabushiki Kaisha Toshiba Host-controlled garbage collection
TWI530785B (zh) * 2015-07-30 2016-04-21 宏碁股份有限公司 電腦系統及非揮發性記憶體的控制方法
CN106445400B (zh) * 2015-08-05 2019-05-24 宏碁股份有限公司 计算机系统及非挥发性存储器的控制方法
US10031670B2 (en) 2015-09-04 2018-07-24 Toshiba Memory Corporation Control unit and control method for controlling writes and background operations of multiple semiconductor storage devices
US10645164B1 (en) * 2015-10-27 2020-05-05 Pavilion Data Systems, Inc. Consistent latency for solid state drives
KR102387973B1 (ko) 2015-12-01 2022-04-19 삼성전자주식회사 이중화 저장 장치, 그것을 포함한 서버 시스템 및 그것의 동작 방법
JP6517684B2 (ja) * 2015-12-22 2019-05-22 東芝メモリ株式会社 メモリシステムおよび制御方法
JP6517685B2 (ja) 2015-12-22 2019-05-22 東芝メモリ株式会社 メモリシステムおよび制御方法
US9971545B1 (en) * 2016-03-23 2018-05-15 Crossbar, Inc. Non-volatile write and read cache for storage media
JP6855704B2 (ja) 2016-08-22 2021-04-07 富士通株式会社 ストレージシステム、ストレージ制御装置及びデータ格納方法
US11803468B2 (en) * 2018-09-19 2023-10-31 Seagate Technology Llc Data storage system with write back cache
JP7305340B2 (ja) * 2018-12-11 2023-07-10 キヤノン株式会社 情報処理装置
US11093143B2 (en) 2019-07-12 2021-08-17 Samsung Electronics Co., Ltd. Methods and systems for managing key-value solid state drives (KV SSDS)

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002032256A (ja) 2000-07-19 2002-01-31 Matsushita Electric Ind Co Ltd 端末装置
JP2004178417A (ja) 2002-11-28 2004-06-24 Hitachi Ltd 不揮発性メモリ手段を備える処理装置および不揮発性メモリ制御方法
JP2005242897A (ja) * 2004-02-27 2005-09-08 Oki Electric Ind Co Ltd フラッシュディスク装置
JP2007193883A (ja) * 2006-01-18 2007-08-02 Sony Corp データ記録装置及び方法、及びデータ再生装置及び方法、並びにデータ記録再生装置及び方法
JP5349897B2 (ja) * 2008-10-21 2013-11-20 株式会社日立製作所 ストレージシステム
WO2011121590A1 (en) * 2010-03-31 2011-10-06 Kaminario Technologies Ltd. Log structure array
JP5070315B2 (ja) * 2010-04-28 2012-11-14 株式会社日立製作所 ストレージ装置及びストレージ装置におけるデータ階層管理方法
US8843724B2 (en) * 2010-04-30 2014-09-23 Hitachi, Ltd. Computer system and storage control method of the same
US8713268B2 (en) * 2010-08-05 2014-04-29 Ut-Battelle, Llc Coordinated garbage collection for raid array of solid state disks
JP5535128B2 (ja) * 2010-12-16 2014-07-02 株式会社東芝 メモリシステム
US8819328B2 (en) * 2010-12-30 2014-08-26 Sandisk Technologies Inc. Controller and method for performing background operations
JP5514169B2 (ja) * 2011-08-15 2014-06-04 株式会社東芝 情報処理装置および情報処理方法
US9021231B2 (en) * 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Storage control system with write amplification control mechanism and method of operation thereof

Also Published As

Publication number Publication date
US20140082276A1 (en) 2014-03-20
US9323683B2 (en) 2016-04-26
JP2014059850A (ja) 2014-04-03

Similar Documents

Publication Publication Date Title
JP6111575B2 (ja) ストレージ装置、内部処理制御方法および内部処理制御プログラム
US9081690B2 (en) Storage system and management method of control information therein
JP5958020B2 (ja) ストレージシステム
US8930746B1 (en) System and method for LUN adjustment
US10649667B2 (en) Mitigating GC effect in a RAID configuration
JP4788528B2 (ja) ディスク制御装置、ディスク制御方法、ディスク制御プログラム
US20100274933A1 (en) Method and apparatus for reducing memory size and bandwidth
JP2013257801A (ja) サーバコンピュータおよびドライブ制御装置
JP2009075759A (ja) ストレージ装置及びストレージ装置におけるデータの管理方法
JP2006227688A (ja) ストレージシステム
EP2927779B1 (en) Disk writing method for disk arrays and disk writing device for disk arrays
JP2007156597A (ja) ストレージ装置
EP2784683B1 (en) Storage control program, storage control method, storage system and hierarchy control apparatus thereof
KR20140042458A (ko) 스토리지 시스템의 파일 관리 장치, 파일 관리 방법
CN111356991B (zh) 逻辑块寻址范围冲突爬虫
JP6088837B2 (ja) ストレージ制御装置、ストレージ制御方法、ストレージシステムおよびプログラム
JP7500991B2 (ja) ストレージ制御装置及びストレージ制御プログラム
JP2015052853A (ja) ストレージ制御装置、制御方法及びプログラム
JP4373450B2 (ja) Raid制御装置及びその制御方法
US9438688B1 (en) System and method for LUN and cache management
JP5691227B2 (ja) ストレージ装置及びその制御方法
JP6926595B2 (ja) ストレージアレイ装置、ストレージシステム、ストレージアレイ制御方法、及び、プログラム
JP6919277B2 (ja) ストレージシステム、ストレージ管理装置、ストレージ管理方法、及びプログラム
JP2016035687A (ja) ディスクアレイ装置およびディスクアレイ装置の制御方法
JP6617741B2 (ja) 記憶装置、記憶装置の制御方法、プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150604

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160420

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160426

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160622

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170130

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170227

R150 Certificate of patent or registration of utility model

Ref document number: 6111575

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees