図面 (/)

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

出願人 富士通株式会社
発明者 鈴木利彦高橋英憲長絵美
出願日 2012年9月19日 (9年2ヶ月経過) 出願番号 2012-206157
公開日 2014年4月3日 (7年7ヶ月経過) 公開番号 2014-059850
状態 特許登録済
技術分野 メモリシステム 外部記憶装置との入出力 ハードウェアの冗長性
主要キーワード PCIスイッチ ソリッドステートディスク 遅延数 データ長毎 ミラーリング構成 タイマ情報 応答遅延 書き込み量
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2014年4月3日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (20)

課題

複数のSSDで構成されたストレージ装置において、SSDの内部処理による性能の低下を抑制する。

解決手段

ストレージ装置1は、冗長性を備えるようにデータを記憶する複数のSSD4、5と、各SSDに対するデータの読み出し処理および書き込み処理を制御するCPU26とを備える。CPU26は、データの書き込み処理中に発生する内部処理について、いずれかのSSDが所定の条件を満たすタイミングで、各SSDの内部処理を実行する。

概要

背景

近年、ハードディスクドライブ(HDD:Hard Disk Drive)の代わりに複数のSSD(Solid State Drive)を使用した高速ストレージ装置が提案されている。SSDでは、SSDの消去単位であるブロック内の不要なデータを、一定のタイミングで消去すること(以降、「ガベージコレクション」という)が行われている。

例えば、SSDを使用したシステムが、アイドルの間にガベージコレクションを行うように制御するという技術がある(例えば、特許文献1参照)。

概要

複数のSSDで構成されたストレージ装置において、SSDの内部処理による性能の低下を抑制する。ストレージ装置1は、冗長性を備えるようにデータを記憶する複数のSSD4、5と、各SSDに対するデータの読み出し処理および書き込み処理を制御するCPU26とを備える。CPU26は、データの書き込み処理中に発生する内部処理について、いずれかのSSDが所定の条件を満たすタイミングで、各SSDの内部処理を実行する。

目的

また、上記課題は、ガベージコレクションに限らず、SSD固有の内部処理の1つである、データのイメージを保持するスナップショットであっても、同様に生じる課題である

効果

実績

技術文献被引用数
1件
牽制数
1件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

冗長性を備えるようにデータを記憶する複数のソリッドステートディスク(SSD)と、各SSDに対するデータの読み出し処理および書き込み処理を制御する制御部とを備え、前記制御部は、データの書き込み処理中に発生する内部処理について、いずれかのSSDが所定の条件を満たすタイミングで、各SSDの内部処理を実行することを特徴とするストレージ装置

請求項2

データを記憶するキャッシュメモリをさらに備え、前記制御部は、SSDへの書き込みが完了していないデータであるダーティデータの前記キャッシュメモリにおける割合が所定の割合以下であるタイミングで、前記SSDに対して内部処理を実行することを特徴とする請求項1に記載のストレージ装置。

請求項3

前記制御部は、いずれかのSSDにおけるデータの書き込み量が内部処理の実行が開始されると予測されるデータの書き込み量以上となったタイミングで、前記複数のSSDに対して内部処理を実行することを特徴とする請求項1に記載のストレージ装置。

請求項4

前記制御部は、SSDへ書き込みコマンド発行してから応答があるまでの待ち時間について、いずれかのSSDで、内部処理が実行されていないときの待ち時間を超えたタイミングで、当該待ち時間を超えたSSDと異なるSSDに対して内部処理を実行することを特徴とする請求項1に記載のストレージ装置。

請求項5

ストレージ装置が、冗長性を備えるようにデータを記憶する複数のソリッドステートディスク(SSD)に対するデータの読み出し処理および書き込み処理を制御し、前記制御する処理は、データの書き込み処理中に発生する内部処理について、いずれかのSSDが所定の条件を満たすタイミングで、各SSDの内部処理を実行する処理を実行することを特徴とする内部処理制御方法

請求項6

コンピュータに、冗長性を備えるようにデータを記憶する複数のソリッドステートディスク(SSD)に対するデータの読み出し処理および書き込み処理を制御し、前記制御する処理は、データの書き込み処理中に発生する内部処理について、いずれかのSSDが所定の条件を満たすタイミングで、各SSDの内部処理を実行する処理を実行させることを特徴とする内部処理制御プログラム

技術分野

0001

本発明は、ストレージ装置などに関する。

背景技術

0002

近年、ハードディスクドライブ(HDD:Hard Disk Drive)の代わりに複数のSSD(Solid State Drive)を使用した高速のストレージ装置が提案されている。SSDでは、SSDの消去単位であるブロック内の不要なデータを、一定のタイミングで消去すること(以降、「ガベージコレクション」という)が行われている。

0003

例えば、SSDを使用したシステムが、アイドルの間にガベージコレクションを行うように制御するという技術がある(例えば、特許文献1参照)。

先行技術

0004

特開2002−32256号公報
特開2004−178417号公報

発明が解決しようとする課題

0005

しかしながら、複数のSSDで構成されたストレージ装置では、SSDのガベージコレクション等の内部処理により性能が低下する場合があるという問題がある。例えば、複数のSSDでRAID(Redundant Array of Inexpensive Disks)構成のうちRAID1で構成されたストレージ装置の性能の期待値は、SSD単体で構成されたストレージ装置の性能と同等であるところ、実際では、SSD単体で構成されたストレージ装置の性能と比べて低下する場合がある。

0006

一例として、ミラーリングされた複数のSSDで構成されたRAID1(Redundant Arrays of Inexpensive Disks 1)の装置の性能の期待値は、SSD単体で構成された装置の性能と比べて、約70%〜80%に低下する場合がある。これは、RAID1で構成された複数のSSDでは、異なるタイミングで応答遅延することが原因である。この応答遅延は、異なるタイミングにより行われるガベージコレクション等の内部処理により発生する。つまり、複数のSSDがRAID1で構成されたストレージ装置では、一方のSSDが内部処理を行うと、他方のSSDが内部処理の終了を待つこととなり、一方の内部処理の終了後応答できる。そして、一方のSSDと異なるタイミングで他方のSSDが内部処理を行うと、一方のSSDが内部処理の終了を待つこととなり、他方の内部処理の終了後応答できる。結局、SSD単体の場合と比べて応答が遅延してしまい、性能が低下する結果となる。

0007

なお、同一の種類および同一の容量であるディスクで構成されたHDDの場合、HDDの内部処理により性能が低下してしまうという問題は発生しない。したがって、この問題はSSD固有の問題である。

0008

また、上記課題は、ガベージコレクションに限らず、SSD固有の内部処理の1つである、データのイメージを保持するスナップショットであっても、同様に生じる課題である。さらに、上記課題は、複数のSSDがRAID1構成に限らず、RAID5等のRAID構成であっても、同様に生じる課題である。

0009

1つの側面では、本発明は、複数のSSDで構成されたストレージ装置において、SSDの内部処理による性能の低下を抑制することを目的とする。

課題を解決するための手段

0010

本願の開示するストレージ装置は、1つの態様において、冗長性を備えるようにデータを記憶する複数のソリッドステートディスク(SSD)と、各SSDに対するデータの読み出し処理および書き込み処理を制御する制御部とを備える。そして、制御部は、データの書き込み処理中に発生する内部処理について、いずれかのSSDが所定の条件を満たすタイミングで、各SSDの内部処理を実行する。

発明の効果

0011

本願の開示するストレージ装置の1つの態様によれば、複数のSSDで構成されたストレージ装置において、SSDの内部処理による性能の低下を抑制できる。

図面の簡単な説明

0012

図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の応答遅延を説明する図である。

0013

以下に、本願の開示するストレージ装置、内部処理制御方法および内部処理制御プログラムの実施例を図面に基づいて詳細に説明する。なお、本実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容矛盾させない範囲で適宜組み合わせることが可能である。以下では、ストレージ装置に本発明を適用した場合について説明する。

0014

[実施例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構成であっても良い。

0015

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と同様の構成であるため、その説明を省略する。

0016

ここで、内部処理とは、SSD固有の処理であって、例えばガベージコレクションやスナップショットを指す。ガベージコレクションとは、SSD内のデータの消去単位であるブロック内の不要なデータを、一定のタイミングで消去する処理である。スナップショットとは、データのイメージを、一定のタイミングで保持する処理である。内部処理は、必ずしも一定の周期で発生するわけではないが、基本的な傾向として一定の書き込みコマンド(以下、「WtCMD」と記載する場合がある)を実行した後で発生したり、一定量の書き込みが連続した後で発生したりする。また、1回の内部処理の処理時間は必ずしも一定ではない。例えば、内部処理は、約80個の書き込みコマンドを実行した後で発生し、20ms(ミリ秒)の処理時間となったり、30msの処理時間となったりする。

0017

CA21は、ホスト9とのインタフェースである。例えば、CA21は、FC(Fibre Channel)またはiSCSI(Internet SCSI)などのインタフェースを用いてホスト9と接続する。

0018

PCIスイッチ22は、PCI仕様入出力インタフェースを示すスイッチである。ここでは、PCIスイッチ22は、PCIeインタフェースを用いてCA21、CPU26およびIOC23と接続する。また、PCIスイッチ22は、PCIeインタフェースを用いてCM3のPCIスイッチ32と接続する。

0019

IOC23は、ホスト9とSSD4、5との間で行われるデータの入出力を制御する。例えば、IOC23は、PCIeインタフェースを用いて書き込みデータを受け取りSASインタフェースを用いてEXP24に転送する。すなわち、IOC23は、PCIeインタフェースとSASインタフェースのブリッジ役割を担う。

0020

EXP24は、ホスト9とSSD4、5との間で行われるデータの入出力を中継する。

0021

RAM25は、キャッシュ領域251として用いられる。キャッシュ領域251は、一時的にデータの内容を保持する領域である。ここでは、キャッシュ領域251は、SSD4、5への書き込み処理の際、SSD4、5へデータが書き込まれる前に一時的にデータの内容を保持する際に用いられる。すなわち、キャッシュ領域251が空いている場合、書き込みデータはキャッシュ領域251に一時的に書き込まれる。そして、キャッシュ領域251が空いていない場合、書き込みデータはキャッシュ領域251内に保持されたデータがSSD4、5に書き込まれた後、キャッシュ領域251に一時的に書き込まれる。このようなキャッシュ領域251を利用した書き込み処理方式は、「ライトバック方式」という。ライトバック方式の動作については、後述する。

0022

また、RAM25は、ダーティデータ割合記憶テーブル252および第1の管理テーブル253を記憶する。ダーティデータ割合記憶テーブル252は、キャッシュ領域251に保持されたデータのうちSSD4、5への書き込みが完了していないデータ(以降、「ダーティデータ」という)の割合を記憶する。第1の管理テーブル253は、内部処理を管理するために用いられる。なお、第1の管理テーブル253の詳細の説明は、後述する。

0023

CPU26は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。例えば、CPU26は、各SSDに対するデータの読み出し処理および書き込み処理を制御する。一例として、CPU26は、ライトバック方式を利用した書き込み処理を実行する。ここで、ストレージ装置1におけるライトバック方式の書き込み動作を、図2Aおよび図2Bを用いて説明する。図2Aは、キャッシュ領域251に空きがある場合のライトバック方式の書き込み動作を説明する図である。図2Bは、キャッシュ領域251に空きがない場合のライトバック方式の書き込み動作を説明する図である。

0024

図2Aに示すように、CM2では、CA21がホスト9からの書き込みコマンドを受信する。図2Aでは、キャッシュ領域251に空きがあるので、CPU26が、書き込みコマンドを受け取り、書き込みデータをRAM25内のキャッシュ領域251に転送する(ステップS101)。

0025

続いて、CPU26は、PCIスイッチ22を介して、CM2とミラーリング構成であるCM3のキャッシュ領域351に、書き込みデータを転送する(ステップS102)。これにより、ストレージ装置1は、書き込みデータを二重化することができる。そして、CPU26は、書き込みコマンドに対する書き込み完了をホスト9に通知する(ステップS103)。

0026

次に、図2Bに示すように、CM2では、ホスト9からの書き込みコマンドをCA21が受信する。図2Bでは、キャッシュ領域251に空きがないので、CA21が書き込みコマンドをキューに保持する(ステップS201)。なお、CA21は、キューが満杯である場合、後続する書き込みコマンドの受け付けを一旦停止する。

0027

続いて、キャッシュ領域251を解放するために、CPU26は、キャッシュ領域251内のデータを、SSD4、5に書き込む(ステップS202−1、ステップS202−2)。そして、CPU26は、SSD4、5共に書き込みが完了した後、キャッシュ領域251を解放する。

0028

そして、CPU26は、キューに保持された書き込みコマンドを受け取り、書き込みデータを解放したキャッシュ領域251に転送する(ステップS203)。続いて、CPU26は、PCIスイッチ22を介して、CM2とミラーリング構成であるCM3のキャッシュ領域351に、書き込みデータを転送する(ステップS204)。そして、CPU26は、書き込みコマンドに対する書き込み完了をホスト9に通知する(ステップS205)。

0029

図1に戻って、CPU26は、ダーティデータ割合監視部261および第1の実行部262を有する。

0030

ダーティデータ割合監視部261は、キャッシュ領域251内のダーティデータの割合を監視する。例えば、ダーティデータ割合監視部261は、予め定められた一定時間毎に、ダーティデータ割合記憶テーブル252に記憶されたダーティデータの割合を参照することで、キャッシュ領域251内のダーティデータの割合を監視する。なお、ダーティデータ割合記憶テーブル252に記憶されるダーティデータの割合は、例えば、ホスト9から書き込みコマンドが発行される都度、CPU26によって更新される。

0031

第1の実行部262は、ダーティデータのキャッシュ領域251における割合が閾値以下であるタイミングで、複数のSSD4、5に対して内部処理を実行する。すなわち、第1の実行部262は、ダーティデータの割合が閾値以下であれば、ホスト9から書き込みコマンドが発生してもSSD4、5への書き込み(ライトバック)がされるまでに時間的な猶予があると判断し、この猶予時間を利用して内部処理を実行する。

0032

例えば、第1の実行部262は、ダーティデータ割合記憶テーブル252を参照して、ダーティデータの割合が閾値以下であるか否かを判定する。そして、第1の実行部262は、ダーティデータの割合が閾値以下である場合に、ホスト9から書き込みコマンドが発行されたSSDに対して内部処理を実行する。SSDに対して書き込みコマンドが発行されたか否かは、例えば第1の管理テーブル253によって管理される。

0033

ここで、第1の管理テーブル253のデータ構造について、図3を参照して説明する。図3は、実施例1に係る第1の管理テーブルのデータ構造の一例を示す図である。図3に示すように、第1の管理テーブル253は、SSD名253aと内部処理フラグ253bとを対応付けて記憶する。SSD名253aは、SSDの名称である。内部処理フラグ253bは、書き込みコマンドが発行されたか否かを判別するフラグである。例えば、書き込みコマンドが発行されていない場合、「0」が設定される。書き込みコマンドが発行されている場合、「1」が設定される。

0034

一例として、SSD名が「SSD1」である場合、内部処理フラグ253bとして「1」と記憶している。SSD名が「SSD2」である場合、内部処理フラグ253bとして「1」と記憶している。SSD名が「SSD3」である場合、内部処理フラグ253bとして「0」と記憶している。

0035

図1に戻って、第1の実行部262は、書き込みコマンドが発行されたSSD4、5について、書き込みコマンドが発行されたことを示す値(例えば「1」)を、第1の管理テーブル253の内部処理フラグ253bに設定する。また、第1の実行部262は、内部処理が実行されたSSD4、5について、第1の管理テーブル253の内部処理フラグ253bをクリア(例えば「0」)する。

0036

[内部処理実行処理の手順]
次に、実施例1に係る内部処理実行処理の手順について、図4Aおよび図4Bを参照して説明する。図4Aおよび図4Bは、実施例1に係る内部処理実行処理のフローチャートを示す図である。

0037

図4Aに示すように、第1の実行部262は、RAID構成のSSDに書き込みコマンドが発行されたか否かを判定する(ステップS11)。SSDに書き込みコマンドが発行されなかったと判定した場合(ステップS11;No)、第1の実行部262は、SSDに書き込みコマンドが発行されるまで、判定処理を繰り返す。

0038

一方、SSDに書き込みコマンドが発行されたと判定した場合(ステップS11;Yes)、第1の実行部262は、書き込みコマンドが発行されたSSDの内部処理フラグ253bを「1」に設定する(ステップS12)。そして、第1の実行部262は、次の書き込みコマンドの発行を待つべく、ステップS11に移行する。

0039

図4Bに示すように、ダーティデータ割合監視部261は、一定時間待ったか否かを判定する(ステップS21)。一定時間待っていないと判定した場合(ステップS21;No)、ダーティデータ割合監視部261は、一定時間になるまで、判定処理を繰り返す。

0040

一定時間待ったと判定した場合(ステップS21;Yes)、ダーティデータ割合監視部261は、キャッシュ領域251上のダーティデータの割合を検知する(ステップS22)。そして、第1の実行部262は、ダーティデータ割合監視部261により検知されたダーティデータの割合が閾値以上であるか否かを判定する(ステップS23)。

0041

ダーティデータの割合が閾値以上であると判定した場合(ステップS23;Yes)、ダーティデータ割合監視部261は、次の一定時間を待つべく、ステップS21に移行する。一方、ダーティデータの割合が閾値以上でないと判定した場合(ステップS23;No)、第1の実行部262は、第1の管理テーブル253の内部処理フラグ253bが「1」のSSDはあるか否かを判定する(ステップS24)。

0042

内部処理フラグ253bが「1」のSSDはないと判定した場合(ステップS24;No)、第1の実行部262は、次の一定時間を待つべく、ステップS21に移行する。一方、内部処理フラグ253bが「1」のSSDはあると判定した場合(ステップS24;Yes)、第1の実行部262は、SSDの内部処理フラグ253bが「1」であったSSDに対して内部処理を実行すべく、内部処理実行命令を発行する(ステップS25)。

0043

そして、第1の実行部262は、内部処理実行命令を発行したSSDの内部処理フラグ253bを「0」に設定する(ステップS26)。そして、第1の実行部262は、次の一定時間を待つべく、ステップS21に移行する。

0044

[実施例1の効果]
上記実施例1によれば、第1の実行部262は、データの書き込み処理中に発生する内部処理について、以下のタイミングで、RAID構成の複数のSSD4、5の内部処理を実行する。すなわち、第1の実行部262は、ダーティデータのキャッシュ領域251における割合が閾値以下であるタイミングで、複数のSSD4、5に対して内部処理を実行する。かかる構成によれば、第1の実行部262は、データの書き込みコマンドが発生してもダーティデータの割合が閾値以下であれば、SSD4、5へ書き込み(ライトバック)がされるまでに猶予があると判断できる。このため、第1の実行部262は、ライトバックがされない猶予時間を利用して内部処理を実行することで、内部処理による性能低下を抑制できる。

0045

なお、実施例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に猶予があるタイミングで内部処理を実行することができる。

0046

ところで、実施例1に係るストレージ装置1では、データの書き込み処理中に発生する内部処理について、SSD4、5への書き込み(ライトバック)がされるまでの猶予時間を利用して、内部処理を実行する場合を説明した。しかしながら、ストレージ装置1では、これに限定されず、SSD4、5の内部処理のタイミングが一定量の書き込みが連続した後に発生するという傾向を利用して、内部処理を実行するようにしても良い。

0047

そこで、実施例2では、SSD4、5の内部処理のタイミングが一定量の書き込みが連続した後に発生するという傾向を利用して、内部処理を実行するストレージ装置1Aについて説明する。

0048

[実施例2に係るストレージ装置の構成]
図5は、実施例2に係るストレージ装置のハードウェア構成を示す図である。なお、図1に示すストレージ装置1と同一の構成については同一符号を示すことで、その重複する構成および動作の説明については省略する。実施例1と実施例2とが異なるところは、CPU26に内部処理開始書込量算出部263と第2の実行部264を追加した点にある。また、実施例1と実施例2とが異なるところは、RAM25に書込量記憶テーブル254と第2の管理テーブル255を追加した点にある。

0049

書込量記憶テーブル254は、内部処理が完了した後からのSSDへのデータの書き込み量をSSD4、5毎に記憶する。書込量記憶テーブル254に記憶されるSSD4、5毎のデータの書き込み量は、例えば、ホスト9から書き込みコマンドが発行される都度、CPU26によって更新される。

0050

第2の管理テーブル255は、内部処理の実行が開始される際のデータの書き込み量(以降、「内部処理開始書込量」という)を、SSD毎に記憶する。SSD毎に記憶される内部処理開始書込量は、内部処理開始書込量算出部263によって算出される。なお、第2の管理テ—ブル255の詳細の説明は、後述する。

0051

内部処理開始書込量算出部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の詳細については後述する。

0052

ここで、第2の管理テーブル255のデータ構造について、図6を参照して説明する。図6は、実施例2に係る第2の管理テーブルのデータ構造の一例を示す図である。図6に示すように、第2の管理テーブル255は、SSD名255aと内部処理開始書込量255bとを対応付けて記憶する。SSD名255aは、SSDの名称である。内部処理開始書込量255bは、内部処理の実行が開始される際のデータの書き込み量である。一例として、SSD名255aが「SSD1」である場合、内部処理開始書込量255bとして「600」KBと記憶している。

0053

図5に戻って、第2の実行部264は、いずれかのSSDにおけるデータの書き込み量が内部処理の実行が開始されると予測されるデータの書き込み量以上となったタイミングで、複数のSSD4、5に対して内部処理を実行する。すなわち、第2の実行部264は、SSD4、5の内部処理のタイミングが一定量の書き込みが連続した後で発生するという傾向を利用して、内部処理を実行する。

0054

例えば、第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の内部処理の同期をとることができる。

0055

[内部処理実行処理の手順]
次に、実施例2に係る内部処理実行処理の手順について、図7A図7Bおよび図7Cを参照して説明する。図7Aは、実施例2に係る内部処理実行処理のフローチャートを示す図である。図7Bは、実施例2に係る内部処理開始書込量算出処理のフローチャートを示す図である。図7Cは、実施例2に係る第2の実行処理のフローチャートを示す図である。

0056

図7Aでは、内部処理開始書込量算出部263が、SSD4、5について、RAIDのボリュームの作成要求を受け取ったとする。すると、内部処理開始書込量算出部263は、SSD4、5について、RAIDのボリュームを作成する(ステップS31)。そして、内部処理開始書込量算出部263は、作成したボリュームにフォーマットをする際、内部処理のタイミングを取得する(ステップS32)。なお、内部処理のタイミングを取得する処理の詳細は、図7Bで説明する。内部処理開始書込量算出部263は、SSD4、5毎の「内部処理開始書込量」を取得することになる。

0057

続いて、第2の実行部264は、SSD4、5に書き込みコマンド(WtCMD)が発行されたか否かを判定する(ステップS33)。SSD4、5にWtCMDが発行されなかったと判定した場合(ステップS33;No)、第2の実行部264は、判定処理を繰り返す。

0058

一方、SSD4、5にWtCMDが発行されたと判定した場合(ステップS33;Yes)、第2の実行部264は、いずれかのSSD4、5において、総書き込み量が「内部処理開始書込量」以上になったか否かを判定する(ステップS34)。いずれかのSSD4、5において、総書き込み量が「内部処理開始書込量」以上になっていないと判定した場合(ステップS34;No)、第2の実行部264は、次のWtCMDの発行を待つべく、ステップS33に移行する。

0059

一方、いずれかのSSD4、5で、総書き込み量が「内部処理開始書込量」以上になったと判定した場合(ステップS34;Yes)、第2の実行部264は、「内部処理開始書込量」以上書き込んだSSDに「内部処理実行命令」を発行する(ステップS35)。このとき、第2の実行部264は、「内部処理開始書込量」以上書き込んだSSDと同一のRAID構成(RAIDグループ)のSSDに対しても「内部処理実行命令」を発行する。なお、ステップS33〜ステップS35における内部処理を実行する処理の詳細は、図7Cで説明する。

0060

[内部処理開始書込量算出処理の手順]
次に、実施例2に係る内部処理開始書込量算出処理の手順について説明する。

0061

図7Bに示すように、内部処理開始書込量算出部263は、書き込みコマンド(WtCMD)の総発行数n、現在のCMD発行数iをそれぞれ0にリセットする(ステップS41)。ここで、WtCMDの総発行数nとは、WtCMDを発行した総数を示す変数である。また、現在のCMD発行数iとは、現在発行中のWtCMDの発行数を示す変数である。なお、WtCMDによって書き込まれるデータは、全て0であるとか全て1であるとかでないランダムなデータであることが望ましい。そして、内部処理開始書込量算出部263は、WtCMDの総発行数nが最大総発行数MAXn以下であるか否かを判定する(ステップS42)。ここで、最大総発行数MAXnとは、WtCMDを発行する総数の最大値を示す定数である。

0062

WtCMDの総発行数nが最大総発行数MAXn以下である場合(ステップS42;Yes)、内部処理開始書込量算出部263は、ボリュームが作成されたRAID構成のSSD4、5に書き込みサイズ(WtSize)が8キロバイト(KB)のWtCMDを発行する。また、内部処理開始書込量算出部263は、WtCMD発行時、発行したWtCMDに対応するタイマ起動する(ステップS43)。そして、内部処理開始書込量算出部263は、現在のCMD発行数iに1を加算し、WtCMDの総発行数nに1を加算する(ステップS44)。

0063

続いて、内部処理開始書込量算出部263は、XFER_RDYが返ってきているか否かを判定する(ステップS45)。XFER_RDYが返ってきたと判定した場合(ステップS45;Yes)、内部処理開始書込量算出部263は、返ってきたXFER_RDYに対応するタイマを停止し、タイマが起動されてからの時間を示すタイマの情報T[n]を保存する。そして、内部処理開始書込量算出部263は、XFER_RDYに応答し(ステップS46)、ステップS47に移行する。

0064

一方、XFER_RDYが返ってきていないと判定した場合(ステップS45;No)、内部処理開始書込量算出部263は、ステップS47に移行する。

0065

そして、ステップS47において、内部処理開始書込量算出部263は、正常のステータスが返ってきているか否かを判定する(ステップS47)。すなわち、内部処理開始書込量算出部263は、WtCMDに対応する正常の処理結果が返ってきているかを判定する。正常のステータスが返ってきていると判定した場合(ステップS47;Yes)、内部処理開始書込量算出部263は、WtCMDに対応する書き込み処理が1つ終了したので、現在のCMD発行数iを1だけ減算する(ステップS48)。そして、内部処理開始書込量算出部263は、ステップS49に移行する。

0066

一方、正常のステータスが返ってきていないと判定した場合(ステップS47;No)、内部処理開始書込量算出部263は、ステップS49に移行する。

0067

そして、内部処理開始書込量算出部263は、現在のCMD発行数iがドライブあたりの最大CMD発行数MAXi以上であるか否かを判定する(ステップS49)。現在のCMD発行数iが最大CMD発行数MAXi以上であると判定した場合(ステップS49;Yes)、内部処理開始書込量算出部263は、次のWtCMDを発行しないで、ステップS45に移行する。

0068

一方、現在のCMD発行数iが最大CMD発行数MAXi以上でないと判定した場合(ステップS49;No)、内部処理開始書込量算出部263は、次のWtCMDを発行すべく、ステップS42に移行する。

0069

ステップS42では、WtCMDの総発行数nが最大総発行数MAXn以下でない場合(ステップS42;No)、内部処理開始書込量算出部263は、仕掛中のWtCMDを処理する(ステップS50)。

0070

続いて、内部処理開始書込量算出部263は、保存したタイマ情報の値が1ms以上の数(A)を取得する(ステップS51)。すなわち、内部処理開始書込量算出部263は、内部処理が実行されていると推定されるタイマ情報の数を取得する。そして、内部処理開始書込量算出部263は、タイマ情報が1ms以上のものの中で、最後に発行されたCMDの発行番号(B)を取得する(ステップS52)。なお、CMDの発行番号は、WtCMDを発行したときのnの値に対応する。そして、内部処理開始書込量算出部263は、内部処理開始書込量を以下の式(1)のように算出する(ステップS53)。
内部処理開始書込量=(B)×WtSize/(A)・・・(1)

0071

すなわち、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を内部処理開始書込量として算出する。

0072

内部処理開始書込量が算出されると、内部処理開始書込量算出部263は、通常行われるフォーマットを開始する(ステップS54)。

0073

[第2の実行処理の手順]
次に、実施例2に係る第2の実行処理の手順について説明する。

0074

図7Cに示すように、第2の実行部264は、RAID構成(RAIDグループ)のSSD4、5にWtCMDが発行されたか否かを判定する(ステップS61)。RAID構成のSSD4、5にWtCMDが発行されなかったと判定した場合(ステップS61;No)、第2の実行部264は、当該SSDにWtCMDが発行されるまで、判定処理を繰り返す。

0075

一方、RAID構成のSSD4、5にWtCMDが発行されたと判定した場合(ステップS61;Yes)、第2の実行部264は、WtCMDが発行されたRAIDグループの番号xを取得する(ステップS62)。そして、第2の実行部264は、「番号xのRAIDグループへの書込量」にWtCMDの書込量(バイト:Byte)を加算する(ステップS63)。

0076

続いて、第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に移行する。

0077

一方、「番号xのRAIDグループへの書込量」が番号xのRAIDグループに対応する「内部処理開始書込量」以上である場合(ステップS64;Yes)、第2の実行部264は、番号xのRAIDグループのSSD4、5に対して、「内部処理実行命令」を発行する(ステップS65)。その後、第2の実行部264は、「番号xのRAIDグループへの書込量」を0にリセットする(ステップS66)。そして、第2の実行部264は、次のWtCMDを待つべく、ステップS61に移行する。

0078

[実施例2の効果]
上記実施例2によれば、第2の実行部264は、データの書き込み処理中に発生する内部処理について、以下のタイミングで、複数のSSD4、5内の内部処理を実行する。すなわち、第2の実行部264は、いずれかのSSD4、5におけるデータの書き込み量が内部処理の実行が開始されると予測されるデータの書き込み量(内部処理開始書込量)以上となったタイミングで、複数のSSD4、5に対して内部処理を実行する。かかる構成によれば、第2の実行部264は、SSDではある一定量の書き込みが連続した後内部処理が開始されるという傾向を利用して複数のSSD4、5に対して同じタイミングで内部処理を実行することで、内部処理による性能低下を抑制できる。

0079

ところで、実施例1に係るストレージ装置1では、データの書き込み処理中に発生する内部処理について、SSD4、5への書き込み(ライトバック)がされるまでの猶予時間を利用して、内部処理を実行する場合を説明した。実施例2に係るストレージ装置1Aでは、SSD4、5の内部処理のタイミングが一定量の書き込みが連続した後で発生するという傾向を利用して、内部処理を実行する場合を説明した。しかしながら、ストレージ装置1、1Aでは、これに限定されず、RAID構成のいずれかのSSD4、5で内部処理が実行されたタイミングで、他のSSD4、5の内部処理を実行するようにしても良い。

0080

そこで、実施例3では、RAID構成のいずれかのSSD4、5で内部処理が実行されたタイミングで、他のSSD4、5の内部処理を実行するストレージ装置1Bについて説明する。

0081

[実施例3に係るストレージ装置の構成]
図8は、実施例3に係るストレージ装置のハードウェア構成を示す図である。なお、図5に示すストレージ装置1Aと同一の構成については同一符号を示すことで、その重複する構成および動作の説明については省略する。実施例2と実施例3とが異なるところは、CPU26に待ち時間閾値算出部265と第3の実行部266を追加した点にある。また、実施例2と実施例3とが異なるところは、RAM25に待ち時間記憶テーブル256と第3の管理テーブル257を追加した点にある。

0082

待ち時間記憶テーブル256は、待ち時間をSSD4、5毎に記憶する。ここでいう「待ち時間」とは、SSD4、5へ書き込みコマンドを発行してからXFER_RDYがSSD4、5から返ってくるまでの時間をいう。以降で記載される待ち時間も特に説明がない限り、同様の意味であるとする。なお、XFER_RDYとは、データの書き込み準備が整ったことを示すSSD4、5からの通知を示す。

0083

第3の管理テーブル257は、内部処理が実行されていないときの待ち時間をRAID構成(RAIDグループ)毎に記憶する。すなわち、第3の管理テーブル257は、SSD4、5へ書き込みコマンドを発行してからXFER_RDYがSSD4、5から返ってくるまでの待ち時間について、内部処理が実行されていないときの待ち時間を記憶する。なお、第3の管理テーブル257の詳細の説明は、後述する。

0084

待ち時間閾値算出部265は、内部処理が実行されていないときの待ち時間を、内部処理を実行するタイミングの閾値として算出する。なお、待ち時間閾値算出部265は、SSDで構成されたRAIDのボリュームが作成される際に実行される。例えば、待ち時間閾値算出部265は、内部処理が実行されていないときに、データ長が例えば8KBの書き込みコマンドをSSD4、5へ発行する。そして、待ち時間閾値算出部265は、書き込みコマンドを発行してからXFER_RDYが返ってくるまでの待ち時間を算出する。待ち時間閾値算出部265は、これを所定回数分繰り返し、データ長が8KBである場合の待ち時間の平均を算出する。算出された待ち時間の平均が、データ長が8KBである場合の内部処理を実行するタイミングの閾値となる。同様に、待ち時間閾値算出部265は、データ長を8KBから異なるデータ長に代えて、データ長毎の、待ち時間の平均を算出する。そして、待ち時間閾値算出部265は、算出したデータ長毎の待ち時間の平均を、内部処理を実行するタイミングの閾値として第3の管理テーブル257に記憶する。なお、待ち時間閾値算出部265の詳細については後述する。

0085

ここで、第3の管理テーブル257のデータ構造について、図9を参照して説明する。図9は、実施例3に係る第3の管理テーブルのデータ構造の一例を示す図である。図9に示すように、第3の管理テーブル257は、RAIDグループ毎に、データ長257aと待ち時間閾値257bとを対応付けて記憶する。データ長257aは、書き込みコマンドのデータ長である。待ち時間閾値257bは、データ長257aが示すデータ長の書き込みコマンドを発行してからXFER_RDYが返ってくるまでの待ち時間の平均である。すなわち、待ち時間閾値257bは、内部処理を実行するタイミングの閾値である。

0086

一例として、SSDのRAIDグループの番号が「1」である場合、データ長257aとして「8KB」であるとき、待ち時間閾値257bとして「50μs」と記憶している。また、RAIDグループの番号が「1」である場合、データ長257aとして「2MB」であるとき、待ち時間閾値257bとして「1ms」と記憶している。なお、SSDの作りによっては、データ長257a毎に待ち時間閾値257bが変化しない場合がある。このような場合には、1種類のデータ長257aについて算出された待ち時間閾値257bを記憶しておけば良い。

0087

第3の実行部266は、いずれかのSSDで、内部処理が実行されていないときの待ち時間(閾値)を超えたタイミングで、複数のSSD4、5に対して内部処理を実行する。すなわち、第3の実行部266は、いずれかのSSDで書き込みコマンドに対する待ち時間が閾値を超えると、当該SSDで内部処理が実行されたと判断し、当該SSDと同じRAID構成のSSDに対して内部処理を実行する。これにより、第3の実行部266は、RAID構成である複数のSSD4、5の内部処理の同期をとることができる。

0088

[内部処理実行処理の手順]
次に、実施例3に係る内部処理実行処理の手順について、図10Aおよび図10Bを参照して説明する。図10Aは、実施例3に係る待ち時間閾値算出処理のフローチャートを示す図である。図10Bは、実施例3に係る第3の実行処理のフローチャートを示す図である。

0089

[待ち時間閾値算出処理の手順]
図10Aに示すように、待ち時間閾値算出部265が、SSD4、5について、RAIDのボリュームの作成要求を受け取ったとする。すると、待ち時間閾値算出部265は、SSD4、5について、RAIDのボリュームを作成する(ステップS71)。そして、待ち時間閾値算出部265は、データ長の番号jに1を設定するとともに、データ長の番号jに対応する待ち時間合計G[j]に0を設定する(ステップS72)。なお、データ長の番号(j)1は、例えば8KBのデータ長に対応する番号を示し、データ長の番号(j)2は、64KBのデータ長に対応する番号を示す。また、以下で示すLjは、データ長の番号jに対応するデータ長、すなわち8KBや64KBを示すものとする。

0090

続いて、待ち時間閾値算出部265は、データ長の番号jがデータ長サンプル数より大きいか否かを判定する(ステップS73)。データ長の番号jがデータ長サンプル数より大きいと判定した場合(ステップS73;Yes)、待ち時間閾値算出部265は、処理を終了する。

0091

データ長の番号jがデータ長サンプル数より大きくないと判定した場合(ステップS73;No)、待ち時間閾値算出部265は、現在のCMD発行数mが最大CMD発行数より大きいか否かを判定する(ステップS74)。現在のCMD発行数mが最大CMD発行数より大きくないと判定した場合(ステップS74;No)、待ち時間閾値算出部265は、ボリュームが作成されたSSDのRAIDグループに内部処理実行命令を発行する(ステップS75)。これは、予め内部処理実行命令を発行しておくことで、待ち時間閾値を算出する処理を行う際に内部処理が実行されないようにするためである。

0092

続いて、待ち時間閾値算出部265は、内部処理実行命令を発行したSSDから応答が返ってきたら、ボリュームが作成されたSSDのRAIDグループにデータ長がLjKBの書き込みコマンド(WtCMD)を発行する。また、待ち時間閾値算出部265は、書き込みコマンドを発行時、発行したWtCMDに対応するタイマを起動する(ステップS76)。なお、書き込みコマンドによって書き込まれるデータは、全て0であるとか全て1であるとかでないランダムなデータであることが望ましい。そして、待ち時間閾値算出部265は、現在のCMD発行数mに1を加算する(ステップS77)。

0093

そして、待ち時間閾値算出部265は、XFER_RDYが返ってきたら、タイマを停止し、待ち時間合計G[j]にタイマ値を加算する(ステップS78)。そして、待ち時間閾値算出部265は、次の書き込みコマンドを発行すべく、ステップS74に移行する。

0094

ステップS74では、現在のCMD発行数mが最大CMD発行数より大きいと判定した場合(ステップS74;Yes)、待ち時間閾値算出部265は、以下の式(2)に基づいて、データ長Ljの書き込みを実施したときの「待ち時間閾値」を算出する(ステップS79)。
待ち時間閾値=待ち時間合計G[j]÷現在のCMD発行数m・・・式(2)

0095

そして、待ち時間閾値算出部265は、現在のCMD発行数mを0にリセットし、データ長の番号jに1を加算し、待ち時間合計G[j]を0にリセットする(ステップS80)。そして、待ち時間閾値算出部265は、次のデータ長の「待ち時間閾値」を算出すべく、ステップS73に移行する。

0096

[第3の実行処理の手順]
次に、実施例3に係る第3の実行処理の手順について説明する。

0097

図10Bに示すように、第3の実行部266は、RAID構成(RAIDグループ)のSSD4、5にWtCMDが発行されたか否かを判定する(ステップS81)。RAID構成のSSD4、5にWtCMDが発行されなかったと判定した場合(ステップS81;No)、第3の実行部266は、当該SSDにWtCMDが発行されるまで、判定処理を繰り返す。

0098

一方、RAID構成のSSD4、5にWtCMDが発行されたと判定した場合(ステップS81;Yes)、第3の実行部266は、いずれかのSSD4、5で、待ち時間が閾値を超えたか否かを判定する(ステップS82)。いずれかのSSD4、5で、待ち時間が閾値を超えていないと判定した場合(ステップS82;No)、第3の実行部266は、いずれのSSD4、5も内部処理が実行されていないと判断する。そして、第3の実行部266は、次のWtCMDを待つべく、ステップS81に移行する。

0099

一方、いずれかのSSD4、5で、待ち時間が閾値を超えた場合(ステップS82;Yes)、第3の実行部266は、閾値を超えたSSDで内部処理が実行されていると判断する。そして、第3の実行部266は、閾値を超えたSSDと同じRAIDグループのSSDに対して、「内部処理実行命令」を発行する(ステップS83)。そして、第3の実行部266は、次のWtCMDを待つべく、ステップS81に移行する。

0100

ところで、上記では、内部処理実行処理は、第1の実行部262、第2の実行部264および第3の実行部266をそれぞれ実行させて、複数のSSD4、5に対して内部処理を実行した。しかしながら、内部処理実行処理は、これに限定されず、第1の実行部262、第2の実行部264および第3の実行部266を組み合わせて、複数のSSD4、5に対して内部処理を実行するようにしても良い。図11は、実施例3に係る内部処理実行処理の全体のフローチャートを示す図である。

0101

図11に示すように、第1の実行部262は、ホスト9から書き込みコマンド(WtCMD)が発行されたら、ダーティデータのキャッシュ領域251における割合が閾値未満か否かを判定する(ステップS91)。ダーティデータのキャッシュ領域251における割合が閾値未満であると判定した場合(ステップS91;Yes)、第1の実行部262は、ストレージ装置1Bに搭載されているSSD4、5へ「内部処理実行命令」を発行する(ステップS92)。そして、第1の実行部262は、ステップS91に移行する。

0102

一方、ダーティデータのキャッシュ領域251における割合が閾値未満であると判定した場合(ステップS91;No)、第2の実行部264は、RAIDグループへの書き込みが「内部処理開始書込量」以上に達したか否かを判定する(ステップS93)。RAIDグループへの書き込みが「内部処理開始書込量」以上に達したと判定した場合(ステップS93;Yes)、第2の実行部264は、書き込みが「内部処理開始書込量」以上に達したRAIDグループのドライブへ「内部処理実行命令」を発行する(ステップS94)。そして、第2の実行部264は、ステップS91に移行する。

0103

一方、RAIDグループへの書き込みが「内部処理開始書込量」以上に達していないと判定した場合(ステップS93;No)、第3の実行部266は、いずれかのSSDで、待ち時間が閾値を超えたか否かを判定する(ステップS95)。いずれかのSSDで、待ち時間が閾値を超えたと判定した場合(ステップS95;Yes)、第3の実行部266は、閾値を超えたSSDで内部処理が実行されていると判断する。そして、第3の実行部266は、内部処理を実行したSSDと同じRAIDグループのSSDに「内部処理実行命令」を発行する(ステップS96)。そして、第3の実行部266は、ステップS91に移行する。

0104

いずれかのSSDからの応答があるまでの待ち時間が閾値を超えていないと判定した場合(ステップS95;No)、第3の実行部266は、ステップS91に移行する。

0105

ここで、第3の実行部266によってRAID1(1+1)構成のSSDa、bに対して内部処理が実行される場合、ホスト9が応答遅延となる様子を、図12図14を参照して説明する。まず、RAID構成でないSSD単体での応答遅延について、図12を参照して説明する。図12は、SSD単体での応答遅延を説明する図である。図12では、ホストがSSDに対して連続して8KBの書き込みコマンド(WtCMD)を発行したときの例である。

0106

図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への応答遅延が発生する。

0107

このようなSSDでRAID1(1+1)を構成した場合に、ホスト9が応答遅延となる様子を、図13を参照して説明する。図13は、SSDでRAID1(1+1)を構成した場合のSSDの応答遅延を説明する図である。図13でも、図12の場合と同様に、
SSDでは、例えば、内部処理が80個の書き込みコマンド(WtCMD)に1回発生するとする。そして、ホスト9がSSDに対して連続して8KBの書き込みコマンド(WtCMD)を発行したときの例である。

0108

図13に示すように、ホスト9から発行された40個目のWtCMDで、SSDbの待ち時間が閾値を超えたとする。すると、第3の実行部266は、SSDbで内部処理が実行されたと判断し、SSDbと同じRAID構成のSSDaに対して内部処理実行命令を発行する。すると、SSDaでは、内部処理が実行される。その後、40個目のWtCMDについて、SSDaとSSDbの内部処理が完了した後に、ホスト9に対して応答がされる。すなわち、40個目のWtCMDについて、内部処理の処理時間、ここでは30ms分ホスト9への応答遅延が発生する。

0109

続いて、120個目のWtCMDで、SSDbの待ち時間が閾値を超えたとする。すると、第3の実行部266は、SSDaに対して内部処理実行命令を発行し、SSDaでは、内部処理が実行される。その後、120個目のWtCMDについて、SSDaとSSDbの内部処理が完了した後に、ホスト9に対して応答がされる。すなわち、120個目のWtCMDについて、内部処理の処理時間、ここでは20ms分ホスト9への応答遅延が発生する。

0110

続いて、200個目のWtCMDで、SSDbの待ち時間が閾値を超えたとする。すると、第3の実行部266は、SSDaに対して内部処理実行命令を発行し、SSDaでは、内部処理が実行される。その後、200個目のWtCMDについて、SSDaとSSDbの内部処理が完了した後に、ホスト9に対して応答がされる。すなわち、200個目のWtCMDについて、SSDaの内部処理の処理時間が30msであり、SSDbの内部処理の処理時間が20msであるので、SSDaの内部処理の処理時間である30ms分ホスト9への応答遅延が発生する。

0111

続いて、280個目のWtCMDで、SSDaの待ち時間が閾値を超えたとする。すると、第3の実行部266は、SSDaで内部処理が実行されたと判断し、SSDaと同じRAID構成のSSDbに対して内部処理実行命令を発行する。すると、SSDbでは、内部処理が実行される。その後、280個目のWtCMDについて、SSDaとSSDbの内部処理が完了した後に、ホスト9に対して応答がされる。すなわち、280個目のWtCMDについて、内部処理の処理時間、ここでは20ms分ホスト9への応答遅延が発生する。

0112

このように、第3の実行部266は、RAID1(1+1)構成のSSDの内部処理の同期をとることができる。これによって、第3の実行部266は、SSDの内部処理によって応答遅延となるWtCMDの数を減らすことができる。

0113

SSDの内部処理によって応答遅延となるWtCMDの数を減らすことができることについて、図14を参照して説明する。図14は、SSDでRAID1(1+1)を構成した場合の従来におけるSSDの応答遅延を説明する図である。図14でも、図12および図13の場合と同様に、SSDでは、例えば、内部処理が80個の書き込みコマンド(WtCMD)に1回発生しているとする。そして、ホスト9がSSDに対して連続して8KBの書き込みコマンド(WtCMD)を発行したときの例である。

0114

図14に示すように、ホスト9から発行された40個目のWtCMDについて、SSDbで内部処理が実行されたとする。すると、SSDaでは、SSDbで内部処理が実行されている間待ち時間となる。ここでいう待ち時間とは、処理が待機することとなる時間を示す。その後、40個目のWtCMDについて、SSDbの内部処理が完了した後に、ホスト9に対して応答がされる。すなわち、40個目のWtCMDについて、内部処理の処理時間、ここでは30ms分ホスト9への応答遅延が発生する。

0115

そして、80個目のWtCMDについて、他方のSSDaで内部処理が実行される。すると、SSDbでは、SSDaで内部処理が実行されている間待ち時間となる。その後、80個目のWtCMDについて、SSDaの内部処理が完了した後に、ホスト9に対して応答がされる。すなわち、80個目のWtCMDについて、内部処理の処理時間、ここでは20ms分ホスト9への応答遅延が発生する。

0116

同様に、120個目のWtCMDについて、SSDbで内部処理が実行され、ホスト9への応答遅延が発生する。150個目のWtCMDについて、他方のSSDaで内部処理が実行され、ホスト9への応答遅延が発生する。すなわち、図14で示した従来におけるSSDの例では、応答遅延は、40CMDずつ発生している。

0117

これに対して、図13で示したSSDの例では、応答遅延は、80CMDずつ発生している。つまり、第3の実行部266は、SSDの内部処理によって応答遅延となるWtCMDの数を従来よりも1/2に減らすことができる。

0118

なお、上記では、SSDがRAID1(1+1)構成である場合について説明したが、SSDがRAID5(3+1)構成の場合にはさらに効果が顕著になる。図15は、SSDでRAID5(3+1)を構成した場合の従来におけるSSDの応答遅延を説明する図である。図15でも、図12図14の場合と同様に、SSDでは、例えば、内部処理が80個の書き込みコマンド(WtCMD)に1回発生しているとする。そして、ホストがSSDに対して連続して8KBの書き込みコマンド(WtCMD)を発行したときの例である。

0119

図15に示すように、ホスト9から発行された40個目のWtCMDについて、SSDaで内部処理が実行されたとする。すると、SSDb、c、dでは、SSDaで内部処理が実行されている間待ち時間となる。その後、40個目のWtCMDについて、SSDaの内部処理が完了した後に、ホスト9に対して応答がされる。すなわち、40個目のWtCMDについて、内部処理の処理時間、ここでは30ms分ホスト9への応答遅延が発生する。

0120

そして、50個目のWtCMDについて、今度はSSDbで内部処理が実行される。すると、SSDa、c、dでは、SSDbで内部処理が実行されている間待ち時間となる。その後、50個目のWtCMDについて、SSDbの内部処理が完了した後に、ホスト9に対して応答がされる。すなわち、50個目のWtCMDについて、内部処理の処理時間、ここでは20ms分ホスト9への応答遅延が発生する。

0121

同様に、60個目のWtCMDについて、SSDcで内部処理が実行され、ホスト9への応答遅延が発生する。80個目のWtCMDについて、今度はSSDdで内部処理が実行され、ホスト9への応答遅延が発生する。すなわち、図15で示した従来におけるSSDの例では、応答遅延は、10または20CMDずつ発生している。

0122

これに対して、図13で示したSSDの例では、応答遅延は、80CMDずつ発生している。つまり、第3の実行部266は、SSDの内部処理によって応答遅延となるWtCMDの数を従来よりも1/4以下に減らすことができる。

0123

なお、図11図14で説明した第3の実行部266における効果は、第1の実行部262によって内部処理が実行された場合、第2の実行部264によって内部処理が実行された場合でも同様に有する効果である。

0124

[実施例3の効果]
上記実施例3によれば、第3の実行部266は、データの書き込み処理中に発生する内部処理について、以下のタイミングで、複数のSSD4、5内の内部処理を実行する。すなわち、第3の実行部266は、いずれかのSSDで、内部処理が実行されていないときの待ち時間を超えたタイミングで、当該待ち時間を超えたSSDと異なるSSDに対して内部処理を実行する。かかる構成によれば、第3の実行部266は、内部処理が実行されていないときの待ち時間を超えたタイミングで、当該待ち時間を超えたSSDで内部処理が実行されたと判断できる。したがって、第3の実行部266は、内部処理が実行されたと判断できるタイミングで、他のSSDの内部処理のタイミングを合わせることができるので、内部処理による性能低下を抑制できる。すなわち、第3の実行部266は、SSD毎にバラバラに内部処理が実行されたときと比べて、書き込みコマンドを発行するホスト9に対する応答の遅延数を減らすことができる。

0125

[その他]
なお、実施例1−3では、複数のSSDが、RAID1(1+1)やRAID5(3+1)構成等のRAID構成であるとして説明した。しかしながら、複数のSSDは、RAID構成に限定されず、冗長性を備えるようにデータを記憶する構成であれば良い。

0126

また、図示したストレージ装置1の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、ストレージ装置1の分散・統合具体的態様は図示のものに限られず、その全部または一部を、各種の負荷使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、内部処理開始書込量算出部263と待ち時間閾値算出部265とを初期算出部として1個の部に統合しても良い。一方、第1の実行部262を第1の監視部と第1の内部処理実行部とに分散しても良い。第2の実行部264を第2の監視部と第2の内部処理実行部とに分散しても良い。第3の実行部266を第3の監視部と第3の内部処理実行部とに分散しても良い。また、RAM25内のテーブルをストレージ装置1の外部装置に記憶するものとしてネットワーク経由で接続するようにしても良い。

0127

以上説明した実施形態及びその変形例に関し、更に以下の付記を開示する。

0128

(付記1)冗長性を備えるようにデータを記憶する複数のソリッドステートディスク(SSD)と、
各SSDに対するデータの読み出し処理および書き込み処理を制御する制御部とを備え、
前記制御部は、
データの書き込み処理中に発生する内部処理について、いずれかのSSDが所定の条件を満たすタイミングで、各SSDの内部処理を実行する
ことを特徴とするストレージ装置。

0129

(付記2)データを記憶するキャッシュメモリをさらに備え、
前記制御部は、SSDへの書き込みが完了していないデータであるダーティデータの前記キャッシュメモリにおける割合が所定の割合以下であるタイミングで、前記SSDに対して内部処理を実行する
ことを特徴とする付記1に記載のストレージ装置。

0130

(付記3)前記制御部は、いずれかのSSDにおけるデータの書き込み量が内部処理の実行が開始されると予測されるデータの書き込み量以上となったタイミングで、前記複数のSSDに対して内部処理を実行する
ことを特徴とする付記1に記載のストレージ装置。

0131

(付記4)前記制御部は、SSDへ書き込みコマンドを発行してから応答があるまでの待ち時間について、いずれかのSSDで、内部処理が実行されていないときの待ち時間を超えたタイミングで、当該待ち時間を超えたSSDと異なるSSDに対して内部処理を実行する
ことを特徴とする付記1に記載のストレージ装置。

0132

(付記5)複数のSSDは、RAID(Redundant Array of Inexpensive Disks)構成である
ことを特徴とする付記1から付記4のいずれか一つに記載のストレージ装置。

0133

(付記6)ストレージ装置が、
冗長性を備えるようにデータを記憶する複数のソリッドステートディスク(SSD)に対するデータの読み出し処理および書き込み処理を制御し、
前記制御する処理は、データの書き込み処理中に発生する内部処理について、いずれかのSSDが所定の条件を満たすタイミングで、各SSDの内部処理を実行する
処理を実行することを特徴とする内部処理制御方法。

実施例

0134

(付記7)コンピュータに、
冗長性を備えるようにデータを記憶する複数のソリッドステートディスク(SSD)に対するデータの読み出し処理および書き込み処理を制御し、
前記制御する処理は、データの書き込み処理中に発生する内部処理について、いずれかのSSDが所定の条件を満たすタイミングで、各SSDの内部処理を実行する
処理を実行させることを特徴とする内部処理制御プログラム。

0135

1、1A、1Bストレージ装置
2、2A、2B、3、3A、3B CM
4、5SSD
9 ホスト
21、31 CA
22、32PCIスイッチ
23、33IOC
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の実行部

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ