情報処理装置および情報処理方法
【課題】 2台以上のストレージ装置を用いて、データの書き込みおよび読み出し遅延時間を保証する上で、同時にストレージ装置が寿命を迎えることを避けることができる。
【解決手段】情報処理装置は、ストレージ装置状態管理テーブル、監視部、バッファメモリ、コマンド応答部、データ処理部、データ付加部を備える。前記データ処理部は前記コマンド応答部からの書き込み指示により、前記ストレージ装置状態管理テーブルを参照して前記ストレージ装置の中で、前記データを書き込み可能なストレージ装置に前記バッファメモリのデータを送る。前記データ付加部は前記ストレージ装置へ送られるデータにダミーデータを付加して前記ストレージ装置に書き込む。
【解決手段】情報処理装置は、ストレージ装置状態管理テーブル、監視部、バッファメモリ、コマンド応答部、データ処理部、データ付加部を備える。前記データ処理部は前記コマンド応答部からの書き込み指示により、前記ストレージ装置状態管理テーブルを参照して前記ストレージ装置の中で、前記データを書き込み可能なストレージ装置に前記バッファメモリのデータを送る。前記データ付加部は前記ストレージ装置へ送られるデータにダミーデータを付加して前記ストレージ装置に書き込む。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、情報処理装置および情報処理方法に関する。
【背景技術】
【0002】
例えばビデオサーバなどに記憶された映像コンテンツをリアルタイムに配信するような産業用途向けの装置には、例えば大容量のハートディスク装置などのストレージ装置が使用されている。
【0003】
この種の装置は、ストレージ装置に対して、一定の時間内にデータの書き込み処理や読み出し処理を完了する必要がある。なぜなら、データの書き込みや読み出しが定められた時間を超えてしまうと、映像や音声の途切れなどが生じるおそれがあるからである。
【0004】
ハートディスク装置などは、大容量かつ低価格ではあるものの、速度と信頼性の面で難があり、最近は、ソリッド・ステート・ディスク:SSDが高速なストレージ装置として産業用途向けのシステムで利用されるようになってきた。
【0005】
産業用途向けのシステムで利用されるSSDは、容量が大きくなるとそれなりに高価であり、安価な汎用用途のSSD(例えばSATAなどの汎用インターフェースで接続可能なタイプ)の利用が望ましい。
【0006】
しかしながら、汎用のSSDなどのストレージ装置は、データの書き込み処理や読み出し処理の遅延時間が保証されておらず、そのままではデータ処理に遅延が生じることがあり、リアルタイム制御を行う装置には適用できないという問題がある。
【0007】
そこで、近年では、2つのI/Oバッファと2つのディスクを用いミラーリングを行うことで、ディスク書き込みに係る応答時間を保証する技術が開発されている(例えば先行技術文献1参照)。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2006−227923号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
ところで、このような技術の場合、2つのディスクに同じデータを書き込むことになるため、2つのディスクが同じ時期に寿命に近づくことによりミラーリングが機能しなくなるか、ディスク交換の保守作業が複雑になる。
【0010】
本発明が解決しようとする課題は、2台以上のストレージ装置を用いて、データの書き込みおよび読み出し遅延時間を保証する上で、同時にストレージ装置が寿命を迎えることを避けることができる情報処理装置および情報処理方法を提供することにある。
【課題を解決するための手段】
【0011】
実施形態の情報処理装置は、ホスト装置と第1および第2のストレージ装置が接続可能なインターフェースを有し、前記第1および第2のストレージ装置とのデータの共通化を行う情報処理装置において、ストレージ装置状態管理テーブル、監視部、バッファメモリ、コマンド応答部、データ処理部、データ付加部を備える。前記ストレージ装置状態管理テーブルは前記第1および第2のストレージ装置の動作状態が記憶可能である。前記監視部は前記インターフェースを監視し、前記第1および第2のストレージ装置が書き込み中か読み出し中か待機中かの動作状態を前記ストレージ装置状態管理テーブルに設定する。前記バッファメモリは前記インターフェースに接続された前記第1および第2のストレージ装置に書き込むデータを一時保持するためのものである。前記コマンド応答部は前記ホスト装置から書き込みの指示と書き込み対象のデータを受信し、前記バッファメモリに保持すると共に、前記第1および第2のストレージ装置へのデータの書き込みを指示する。前記データ処理部は前記コマンド応答部からの書き込み指示により、前記ストレージ装置状態管理テーブルを参照して前記複数のストレージ装置の中で、前記データを書き込み可能なストレージ装置に対して前記バッファメモリに保持されていたデータを送る。前記データ付加部は前記データ処理部と前記第1および第2のストレージ装置が接続されるいずれか一方の前記インターフェースとの間に介挿され、前記ストレージ装置へ送られるデータにダミーデータを付加して前記ストレージ装置に書き込む。
【図面の簡単な説明】
【0012】
【図1】第1実施形態の遅延保証ユニットの構成を示す図である。
【図2】第1実施形態の遅延保証ユニットにおける状態テーブルの内容を示す図である。
【図3】第1実施形態の遅延保証ユニットの動作を示すフローチャートである。
【図4】第2実施形態の遅延保証ユニットの構成を示す図である。
【図5】第2実施形態の遅延保証ユニットの動作を示すフローチャートである。
【図6】第3実施形態の遅延保証ユニットの構成を示す図である。
【図7】第3実施形態の遅延保証ユニットにおけるダミーデータ管理テーブルの内容を示す図である。
【図8】第3実施形態を拡張し並列数を3台にした構成例を示す図である。
【図9】第4実施形態の遅延保証ユニットの構成を示す図である。
【図10】第4実施形態の遅延保証ユニットにおけるパリティデータ管理テーブルの一例を示す図である。
【図11】第4実施形態の遅延保証ユニットの動作を示すフローチャートである。
【図12】第4実施形態の遅延保証ユニットの動作を説明するための図である。
【発明を実施するための形態】
【0013】
以下、図面を参照して、実施形態を詳細に説明する。図1は情報処理装置の一つの実施の形態の遅延保証ユニット2の構成を示す図である。
【0014】
図1に示すように、第1実施形態の遅延保証ユニット2は、ホスト装置1が接続された外部インターフェース20(以下「外部I/F20」と称す)、タイマー21、コマンド応答部22、バッファメモリ23、データ処理部24、状態テーブル25、監視部26、ディスクインターフェース27,28(以下「ディスクI/F27,28」と称す)、データ処理部24といずれか一方のディスクI/F(この例ではディスクI/F28)との間に介挿されたデータ付加部30などを有している。
【0015】
ホスト装置1は、例えばビデオサーバなどであり、ストレージ装置にデータの書き込みや読み出しに応答時間の保証が求められるマルチメディアシステム、情報処理システム、製造プラントシステムなどの産業用途向けのシステムに適用される。
【0016】
ディスクI/F27,28は、少なくとも一つ以上の外部ストレージ装置、例えばソリッド・ステート・ディスク3,4(以下「SSD3,4」と称す)などと通信するためのインターフェースであり、例えば、シリアルATA(SATA−2.6または3.0)やPCI−eのポートである。この例では、ディスクI/F27,28に、SSD3,4がそれぞれ一台ずつ接続されている。
【0017】
外部I/F20は、ホスト装置1と通信するためのインターフェースであり、例えば、シリアルATA(SATA−2.6または3.0)やPCI−eのポートである。
【0018】
タイマー21は、コマンド応答部22からの指示によりタイマー動作を開始し、カウントされた時間が、予め設定されたタイムアップ時間に達すると、コマンド応答部22にタイムアップを通知する。
【0019】
なお、ホスト装置1は、データの書き込み処理および読み出し処理を、システム仕様で定められた許容応答時間以内に完了する必要がある。許容応答時間から、ホスト装置1とコマンド応答部22間のコマンドの転送時間(インターフェース仕様により決まる一定時間)を差し引いた時間をタイムアップ時間として設定することで遅延時間を一定の時間で納めるようにしている。
【0020】
ホスト装置1へ応答すべき時間は、予めタイマー21に設定されており、適用するシステムにより異なる。例えば、映像を扱うシステムでは33ms、製造プラントで使用するデータロガーなどであれば1〜10msなどである。
【0021】
タイムアップ時間は、ホスト装置1へ応答を返す上で遅延が許容される最大時間であり、予めタイマー21に設定しておいてもよく、タイマー21がタイムアップ時間を参照する書き換え可能なメモリに、外部からアクセスし、扱うシステムに応じてタイムアップ時間を書き換える(変更する)ようにしてもよい。
【0022】
すなわち、タイマー21は、コマンド応答部22からのカウント開始の指示により予め設定されたタイムアップ時間(応答時間)をカウントし、タイムアップすると、タイムアップしたことを指示元のコマンド応答部22へ通知する。
【0023】
コマンド応答部22は、ホスト装置1との間でコマンドおよびデータのやりとりを行う。コマンド応答部22は、ホスト装置1から受信されたコマンドに応じて、データ処理部24に対してデータの書き込みまたは読み出しを指示(制御)する。
【0024】
またコマンド応答部22は、ホスト装置1から書き込み開始コマンド(データの書き込み要求)が受信されることで、複数のSSD3,4の書込先として、どのSSDに書き込むかを示すフラグ(書込先フラグ)を状態テーブル25(図2参照)に設定する。図2は第1実施形態の遅延保証ユニットにおける状態テーブルの内容を示す図である。
【0025】
またコマンド応答部22はホスト装置1から書き込み開始コマンド(データの書き込み要求)が受信された場合、タイマー21へカウント開始を指示すると共に、状態テーブル25を参照してSSD3,4の動作状態(待機中か書込中か)を確認し、動作状態に応じてデータの書込先を選定し、データの書込先を状態テーブル25に設定し、書き込み対象のSSD(SSD3またはSSD4)への書き込みを指示する制御信号を出力し、ホスト装置1からの書き込み要求の後に一定の単位時間以内に順次送られてくる書き込み対象のデータをバッファメモリ23へ保持する。SSD3,4の動作状態が「待機中」であれば、SSD動作状態フラグを「書込中」に変更し、予め設定されている側のSSDを書込先として選定する。
【0026】
一方、タイマー21からタイムアップしたことがコマンド応答部22に通知された時点で、コマンド応答部22は書き込み要求に対する書き込み完了の応答をホスト装置1へ返す。すなわち、コマンド応答部22は、バッファメモリ23へのデータの保持(書き込み)が完了しても直ぐには書き込み完了の応答を返さず、システムの応答時間であるタイムアップ時間を待って応答を返す。これにより、データの受信を完了してからタイムアップ時間までが、SSD3,4の側でデータ書き込みの遅延が生じた際の遅延保証時間として確保されることになる。
【0027】
バッファメモリ23は、データを一時保持可能である。バッファメモリ23には、ホスト装置1から受信されたデータが一時的に保持(キャッシュ)される。
【0028】
データ処理部24は、コマンド応答部22からの制御信号を受信すると、状態テーブル25を参照してSSD3,4の動作状態と書込先の状態から書き込み可能なSSD(SSD3,4のうちのいずれか)を選定し、選定したSSDに対して、バッファメモリ23から読み出したデータを、当該SSDが接続されたディスクI/F(ディスクI/F27またはディスクI/F28)へ送信する。
【0029】
すなわちデータ処理部24は、コマンド応答部22からの書き込み指示により、状態テーブル25を参照してSSD3,4の中で、データを書き込み可能なSSD置に対してバッファメモリ23に保持されていたデータを送る。
【0030】
データ付加部30は、データ処理部24からのデータに固定サイズのダミーデータを付加し、ダミーデータを付加したデータを、ディスクI/F28を通じてSSD4へ送り書き込む。
【0031】
またデータ付加部30は、ホスト装置1からのデータの読み出しの指示により、データ処理部24によりSSD4から読み出されるデータからダミーデータを取り除き(削除し)、データ処理部24に渡す。
【0032】
状態テーブル25には、ディスクI/F27,28に接続されたSSD3,4の動作状態とSSD3,4の書込先が設定可能であり、監視部26によりそれぞれにフラグ(“0”または“1”)が設定される。
【0033】
監視部26は、ディスクI/F27,28へのコマンドまたはデータの入出力を監視する。すなわち監視部26はディスクI/F27,28を介してSSD3,4を監視し、監視結果として、SSD3,4の動作状態と書込先を状態テーブル25に設定する。
【0034】
具体的に、監視部26は、監視結果のSSD3,4の動作状態を「待機中」と「書込中」のいずれかを示すフラグ(動作状態フラグ)を状態テーブル25に設定する。
【0035】
SSD3,4の動作状態フラグは、例えば“0”または“1”のいずれが設定され、“0”のときに待機中(いずれのSSDにも書き込みをしていない状態)、“1”のときにどちらかのSSD3,4にデータを書き込み中であることを示す。
【0036】
また書込先フラグは、例えば“0”または“1”のいずれが設定され、“0”のときにSSD3へデータを書き込む(このときは、SSD4から読み出しを行う)、“1”のときにSSD4へデータを書き込む(このときは、SSD3から読み出しを行う)ことを示す。例えば、書込先フラグ“0”について、SD3にデータの書き込みを許可していることを言い換えると、他のSSD4に対して書き込み禁止の設定をしていることと同じ意味である。
【0037】
データ処理部24は状態テーブル25を参照して、コマンド応答部22からのコマンドで指示されたデータを書き込み可能または読み出すことが可能な側のSSD(SSD3またはSSD4のいずれか)に対してデータを書き込みまたは読み出す。
【0038】
データ処理部24は、ディスクI/F27,28に接続された複数のSSD3,4に対してデータの共通化を行う。具体的には、ホスト装置1から受信され、バッファメモリ23に保持したデータを、あるSSD3に書き込んだ後、そのデータをバッファメモリ23から読み出して他のSSD4に書き込むことで、複数のSSD3,4に対してデータ同期のための処理を行う。
【0039】
続いて、図3のフローチャートを参照してこの第1実施形態の遅延保証ユニット2の動作を説明する。
ホスト装置1からは、常に一定周期、一定データサイズの書き込みと読み出しが行われる。この遅延保証ユニット2では、ホスト装置1への遅延保証を実現するために、2台のSSD3,4のうち常に一方のSSDを読み出し可能な状態で維持しておく。
【0040】
このためには、2つのSSD3,4が同じデータを保持している必要がある。このため書き込み先と読み出し先のSSD3,4を入れ替えながらホスト装置1からの書き込み/読み出し要求にコマンド応答部22が応答してゆく。
【0041】
この遅延保証ユニット2の場合、監視部26がディスクI/F27,28へのコマンドまたはデータの入出力を監視しており(図3のステップS101)、監視結果として、SSD3,4の動作状態と書込先を状態テーブル25に設定する(ステップS102)。
(データ書き込み動作)
外部のホスト装置1がSSD(SSD3またはSSD4のいずれか)へデータを書き込む場合、ホスト装置1はデータの書き込みコマンドをコマンド応答部22へ送信する。
【0042】
ホスト装置1から送信されてきたコマンドをコマンド応答部22が受信すると(ステップS103)、コマンド応答部22は、受信したコマンドが、書き込みコマンドか読み出しコマンドかを識別し(ステップS103)、受信したコマンドが書き込みコマンドであれば、タイマー開始コマンドをタイマー21へ送ると共に、状態テーブル25を参照して、SSD(SSD3、SSD4共に)が待機中であることをチェックし、SSDが待機中のとき、状態テーブル25へ書き込み先変更コマンドを送ることで、状態テーブル25の書込先フラグを設定する。
【0043】
例えば、書込先フラグが“0”でSSDが待機中であった場合に、コマンド応答部22がホスト装置1から送信された書き込みコマンドを受信すると、書込先フラグを“1”に変更し、SSD4へ書き込み許可(SSD3を書き込み禁止)に設定する。
【0044】
タイマー21はタイマー開始コマンドを受けて、カウントを開始する。
【0045】
またコマンド応答部22は、待機中のSSDが存在すると、ホスト装置1へ応答の受信可能コマンドを返し、この受信可能コマンドによりホスト装置1からデータが順次送られる。
【0046】
コマンド応答部22は、ホスト装置1より送信されてきたデータをバッファメモリ23に順次保持しながら(ステップS105)、書込開始を示す制御信号をデータ処理部24へ送る(ステップS106)。
【0047】
データ処理部24は、コマンド応答部22からの書込開始を示す制御信号を受けると、状態テーブル25を参照して書き込み可能なSSDを選定、例えば状態テーブル25の書込先フラグから書き込み先をSSD4に決定し、SSD4が接続されているディスクI/F28へ書込開始コマンドを送信し、書込開始コマンドを受信したSSD4から受信可能コマンドが返されてくると、データ処理部24はバッファメモリ23から固定長のデータを順次読み出し、SSD4が接続されているディスクI/F28へ送信する(ステップS107)。
【0048】
すると、データ処理部24とディスクI/F28との間に設けられているデータ付加部30が、送られるデータに固定長のダミーデータを付加し、そのデータを、ディスクI/F28を通じて書き込み対象のSSD4に書き込む(ステップS108)。
【0049】
一方、タイマー21は、カウントを開始してからタイムアップ時間(応答時間)が経過すると、タイムアップし、タイムアップ通知コマンドをコマンド応答部22へ返す。
【0050】
コマンド応答部22は、一回分の全てのデータがバッファメモリ23に受信されたとしても受信完了の応答を返さず、タイマー21からのタイムアップ通知コマンドが受信されるのを待機する。この待機時間が遅延保証時間となる。
【0051】
そして、タイムアップ通知コマンドを受けると、書込完了コマンドをホスト装置1へ送信する。
【0052】
また、SSD4へのデータの書き込みが完了すると、SSD4からは、書込完了コマンドが返されるので、この書込完了コマンドがディスクI/F28を通じて監視部26およびデータ処理部24に受信される。
【0053】
書込完了コマンドを受けた監視部26は、状態テーブル25の、SSD動作状態フラグを“1”「書き込み中」→“0”「待機中」へ変更する。
【0054】
書込完了コマンドを受けたホスト装置1が次のデータの書き込み開始コマンドを送信し、そのコマンドをコマンド応答部22が受信すると、コマンド応答部22は、状態テーブル25の、書込先フラグの状態を“1”「SSD4へ書込許可」→“0”「SSD3へ書込許可」へ変更する。
【0055】
データ処理部24は、書込完了コマンドが受信されると、状態テーブル25の書き込み先フラグを確認し、書込先フラグが“0”「SSD3へ書込許可」であることから、データ同期のため、SSD3に対してデータの書込開始コマンドを送信する。
【0056】
監視部26は、書込開始コマンドにより状態テーブル25の、SSD動作状態フラグを“1”「書込中」に変更する。
【0057】
この書込開始コマンドを受信したSSD3からは、受信可能コマンドが返されるので、この受信可能コマンドがディスクI/F27および監視部26を通じてデータ処理部24に受信されると、データ処理部24は、バッファメモリ23に保持されているデータを順次読み出し、ディスクI/F27を通じて書き込み対象のSSD3に書き込む。
【0058】
SSD3へのデータの書き込みが完了すると、SSD3からは、書込完了コマンドが返されるので、この書込完了コマンドがディスクI/F27を通じて監視部26およびデータ処理部24に受信される。
【0059】
監視部26は、書込完了コマンドが受信されると、状態テーブル25の、SSD動作状態フラグを“1”「書込中」→“0”「待機中」へ変更する。
(データ読み出し動作)
外部のホスト装置1がSSD3またはSSD4からデータを読み出す場合、ホスト装置1はデータの読み出しコマンドをコマンド応答部22へ送信する。
【0060】
ホスト装置1から送信されたコマンドをコマンド応答部22が受信すると(ステップS103)、コマンド応答部22は、受信したコマンドが、書き込みコマンドか読み出しコマンドかを識別し(ステップS104)、そのコマンドが読み出しコマンドであれば、データを読み出すよう指示する制御信号をデータ処理部24へ送る(ステップS109)。
【0061】
データ処理部24は、コマンド応答部22からの読出開始を指示する制御信号を受けると、状態テーブル25を参照して、書き込み先として設定されているSSDを決定(選定)し、読出開始コマンドをディスクI/F27またはディスクI/F28を通じて対象のSSD(SSD3またはSSD4)へ送信する(ステップS110)。
【0062】
ここでは状態テーブル25を参照した結果、書込先フラグの状態が“0”「SSD3へ書込許可」、つまり「SSD4からの読出許可」と設定されていたものとする。
【0063】
この場合、データ処理部24は、読出開始コマンドを、ディスクI/F28を通じてSSD4へ送信する。
【0064】
読出開始コマンドを受けたSSD4は、データを順次読み出して、ディスクI/F28およびデータ付加部30を通じてデータ処理部24へ送る。
【0065】
SSD4からのデータをデータ付加部30が受けると、そのデータからダミーデータを取り除き(削除し)、データ処理部24に渡す(ステップS110)。
【0066】
データ処理部24は受け取ったデータをホスト装置1へ送る(ステップS111)。この場合、バッファメモリ23は経由しない。
【0067】
ホスト装置1へのデータの送信が完了すると、SSD4は、読出完了コマンドを、ディスクI/F28を通じてコマンド応答部22へ送り、さらにコマンド応答部22からホスト装置1へ読出完了コマンドを送信する。
【0068】
このようにこの第1実施形態によれば、2台のSSD3,4を用いてデータ同期(データの多重化またはデータの共通化)を実現し、待機中のSSDにデータを書き込み、他方を書込禁止にしてデータの読み出しに対応することで、リアルタイム制御におけるデータの読み出しに対応することができる。
【0069】
複数のSSD3,4を用いてデータ同期(データの多重化またはデータの共通化)して遅延保証する上で、一方のSSD(この例ではSSD4)にダミーデータを書き込むことによりSSD4の方が先にデータの上書き回数の制限値に到達するので、それぞれのSSD3,4に書き込むデータサイズが不均一となり、各SSD3,4の寿命も不均一となる。
【0070】
なお、コマンド応答部22、または、データ処理部24は、このダミーデータの書き込み回数もしくはダミーデータ数をカウントしておき、所定のカウント数を超えた場合、図示しないが警報ランプなどを点灯表示させたり、またはスピーカからアラーム音を発することにより、2台のSSD3,4が同時に寿命を迎える前にSSDの交換をオペレータに喚起することができる。
【0071】
この結果、複数のSSD3,4がほぼ同時に寿命を迎えることを防止でき、寿命を迎えた順にSSDを交換・保守することでSSD内部のデータを保護することができる。
【0072】
ホスト装置1からのデータの書き込み要求に対しては、ホスト装置1からのデータをバッファメモリ23に保持しておく一方で、SSD3,4側とは書き込みと読み出しの状態を切り替えながらバッファメモリ23からデータを適宜書き込むことで、SSD3,4で発生する遅延を吸収する。すなわち、遅延保証ユニット2においてSSD3,4への処理とホスト装置1への処理とを分離することで、SSD3,4の応答遅延の影響がホスト装置1側へ及ばなくなり、SSDの遅延を保証することができる。
【0073】
また、ホスト装置1からのデータの書き込みの際に、ホスト装置1から送られたデータのバッファメモリ23への保持が完了しても直ちに書込完了の応答を返さずに、ホスト装置1がデータを送る周期に合わせて、データの書込完了コマンド(書込完了通知)をホスト装置1へ返すようにすることで、SSD3,4の側でデータの書き込みに遅延が生じた場合でも、受信データがバッファメモリ23に溜らなくなり、遅延の影響が吸収されるので、遅延時間が保証されてない汎用のSSD3,4などをリアルタイム制御に用いることができるようになる。
【0074】
また、汎用のストレージ装置の一つであるSSD3,4を接続するユニットを外付けの拡張ユニット(遅延保証ユニット2)とすることで、以下のような効果が得られる。
【0075】
1)外付けの遅延保証ユニット2に汎用のストレージ装置(SSDやHDD)を接続して、データの書き込みおよびデータの読み出しの際に、ストレージ装置に発生する遅延を保証することができる。
2)ディスクI/F27,28の機能を実装変更(ディスクI/F27,28を他のI/Fと置換)するだけで、現在および未来に規格化されるあらゆるストレージ装置に対応可能である。つまりストレージ装置が故障したときや新しい世代のストレージ装置への変更を容易にできる。
3)コンピュータやサーバーなどの拡張機能とすることも可能であり、インデント品の産業機器にも容易に組み込むことができる。
【0076】
次に、図4,図5を参照して第2実施形態を説明する。この第2実施形態は、第1実施形態の変形例であり、第1実施形態と同じ構成には同一の符号を付しその説明は省略する。
【0077】
図4に示すように、第2実施形態の遅延保証ユニット2はデータ付加部30を制御するための手段(計数部31、メモリ32、制御部33など)が設けられている。
【0078】
計数部31は、データ処理部24からのデータにデータ付加部30が付加したダミーデータのデータ量を計数(カウント)し、メモリ32に保持するダミーデータ量計数部である。
【0079】
メモリ32は、例えばフラッシュメモリなどの不揮発性のメモリである。このメモリ32には、計数部31により計数(カウント)されたダミーデータのデータ量が蓄積される。
【0080】
制御部33はメモリ32に保持されたダミーデータを付加したトータルのデータ量(総量)が予め設定された閾値に達した場合、データ付加部30に対して以降のダミーデータの付加を停止させる制御を行う。
【0081】
この第2実施形態の場合、遅延保証のための動作は第1実施形態と同じであり、SSD4にデータを書き込む際、およびSSD4からデータを読み出す際の動作が異なるため、その動作について説明する。
【0082】
SSD4にデータを書き込む場合、データ処理部24からのデータをデータ付加部30が受け取ると、データ付加部30は、受け取った書き込み対象のデータに一定サイズのダミーデータを付加してSSD4へ送り、書き込む。
【0083】
この際、図5に示すように、計数部31は、データ処理部24からのデータにデータ付加部30が付加したダミーデータのデータ量を計数(カウント)し(ステップS201)、メモリ32に保持する。
【0084】
制御部33はメモリ32のデータ量が更新されるたびに、保持されているダミーデータの付加量(トータルのダミーデータ量(総量))と予めメモリ32に設定されている閾値とを比較し(ステップS202)、ダミーデータの付加量(トータルのダミーデータ量(総量))が閾値に達した場合(ステップS202のYes)、データ付加部30に対して、以降のダミーデータの付加を停止させるよう制御する(ステップS203)。
【0085】
言い換えれば、SSD4にはダミーデータ書き込み上限値、例えば、閾値として1GByteと設定しておき、メモリ32は、累積されたダミーデータと閾値を比較し、累積値が1GByteの閾値を越えた場合はダミーデータを付加するのを止める。
【0086】
これにより、一つのSSD4に、ある一定の量以上、ダミーデータが追記される(上書き回数が増える)ことがなくなり、片方のSSD4だけが極端に早く寿命を迎えてしまう、ということがなくなる。
【0087】
このようにこの第2実施形態によれば、それぞれのSSD3,4に書き込むデータサイズが不均一となり、SSD3,4の寿命を不均一にしながらも一方のSSD4だけが極端に早く寿命を迎えることを防止できる。
【0088】
次に、図6,図7、図8を参照して第3実施形態を説明する。この第3実施形態は、第1実施形態の変形例であり、第1実施形態と同様の構成には同一の符号を付しその説明は省略する。
【0089】
図6に示すように、第3実施形態の遅延保証ユニット2は、データ付加部30とダミーデータ管理テーブル34を備える。データ付加部30はデータ処理部24と複数のSSD3,4が接続される少なくとも一つのディスクI/F27,28との間に介挿されている。
【0090】
つまりデータ付加部30は両方のディスクI/F27とディスクI/F28にそれぞれ接続されていてもよく、一方のディスクI/F27またはディスクI/F28に接続されていてもよい。
【0091】
図7に示すように、ダミーデータ管理テーブル34には、各SSD3,4に付加するダミーデータのサイズ(データ量)が記憶されている。例えば、SSD3には、ダミーデータを付加しないでSSD4のみにダミーを付加するとする。その場合、ホスト装置1からのデータに対してSSD3に対してはダミーデータを付加せず、SSD4にはホスト装置1からの1回目の書き込みデータに対して10Kbyte、2回目には5Kbyte、3回目は2Kbyte・・・の様に書き込み回毎に異なった量のダミーデータを付加するように設定されている。この場合、付加するダミーデータ量を、第1の実施形態で書き込む一定のダミーデータ量以下に抑える様にすると、ディスク容量に対して有効なデータをより割り当てることになり、効率を高く取ることが出来る。また、可変長のデータと組み合わせて書き込み毎のダミーデータを増減する様にしても良い。
【0092】
またこのダミーデータ管理テーブル34には、ホスト装置1から指定された情報として、SSD毎に、書き込み位置を示す論理アドレス(LBA(H))とデータのサイズ(データ量)、ダミーデータ付加後の指定情報として、SSD毎に、書き込み位置を示す論理アドレス(LBA(C))とデータのサイズ(データ量)がデータ付加部30により登録される。
【0093】
ここで、ダミーデータ付加後の論理アドレス(LBA(C))とサイズは、ホスト装置1の指定(論理アドレス(LBA(H))とデータのサイズ)に、予めデータ付加部30に設定されているダミーデータのサイズを加算した後の値である。
【0094】
上記第1実施形態では、ホスト装置1から送られてくるデータは一定のサイズ、一定の間隔であったが、この第3実施形態の場合、ダミーデータ管理テーブル34に、ホスト装置1から送られてくるデータの情報とダミーデータ付加後の情報とを登録し管理することで、データサイズは可変長であってもよく、またSSDは2台とは限らず、図8に示すように、3台のSSD3,4,5を並列に接続した構成の場合も対応できる。つまり並列数が2台以上のものにも対応できる。
【0095】
この第3実施形態の場合、データ処理部24は、コマンド応答部22からの書き込み指示により、状態テーブル25を参照して複数のSSD3,4の中で、データを書き込み可能なSSD3またはSSD4に対してバッファメモリ23に保持されていたデータを送る。
データ付加部30はダミーデータ管理テーブル34を参照して書き込み対象のSSD3,4に対応するサイズ(データ量)のダミーデータを、SSD3,4へのデータに付加してSSD3,4に書き込む。図7のダミーデータ管理テーブルの例は、SSD3に付加するダミーデータは0Kbyteであり、第1実施形態と同様にSSD3にはダミーデータを付加しない。
【0096】
この第3実施形態によれば、SSD毎に付加するダミーデータを管理するためのダミーデータテーブル34を設けたことで、2台以上のSSD3,4…に対して、書き込みデータに付加するダミーデータのサイズ(データ量)や読み出すデータからダミーデータを削除する情報(論理アドレスやサイズ)を登録でき、より汎用性の高い遅延保証ユニット2を提供できる。
【0097】
次に、図9乃至図12を参照して第4実施形態を説明する。この第4実施形態は、第3実施形態の変形例であり、第3実施形態と同じ構成には同一の符号を付しその説明は省略する。
【0098】
図9に示すように、第4実施形態の遅延保証ユニット2は、外部I/F20、タイマー21、コマンド応答部22、バッファメモリ23、データ処理部24、状態テーブル25、監視部26、ディスクI/F28、データ処理部24、データ付加部40、このデータ付加部40が生成するパリティデータをどのSSDへ書き込むかを制御する手段(計数部41、メモリ42、制御部43など)、パリティデータ管理テーブル44を有する。
【0099】
計数部41は、データ処理部24からのデータにデータ付加部40が付加したパリティデータのデータ付加量を計数(カウント)し、メモリ42に保持するパリティデータ付加量計数部である。
【0100】
メモリ42は、例えばフラッシュメモリなどの不揮発性のメモリである。このメモリ42には、計数部41により計数(カウント)されたパリティデータのデータ付加量(総量)が蓄積される。
【0101】
メモリ42には予めSSD群毎またはSSD毎に設定したパリティデータの書き込み総量または書き込み比の条件が記憶されている。
【0102】
この条件は、全てのストレージ装置間でパリティデータの書き込み総量または書き込み比が異なるように予め設定されたものである。データ付加部40はこの条件に従って2つの分割データから生成したパリティデータを当該ストレージ装置群へ書き込む。
【0103】
書き込み総量が異なるような条件は、SSD3aへのパリティデータの書き込み量をaとし、SSD3bへのパリティデータの書き込み量をbとし、SSD4aへのパリティデータの書き込み量をcとし、SSD4bへのパリティデータの書き込み量をdとするならば、a≠b≠c≠dであるという条件である。
【0104】
この条件は、パリティデータをどのSSDにどれだけ書き込むかを示す条件であり、SSD3a,3b,4a,4bへのパリティデータの書き込み方と、この書き込み方の切換タイミングを示す閾値である。
【0105】
条件として設定した書き込み方の一例を以下に示す。
パリティデータの書き込み総量が閾値に達するまでは、書き込み可能なストレージ装置群の第1ストレージ装置または第2ストレージ装置のいずれか一方のストレージ装置にパリティデータを書き込む。
【0106】
SSD群3のSSD3aにはパリティデータを書き込まず、SSD3bには分割データを書き込む毎にパリティデータを毎回書き込み、SSD群4のSSD4aには分割データを3回書き込む毎にパリティデータを1回書き込み、SSD群4のSSD4bには分割データを3回書き込む毎にパリティデータを2回書き込む。
【0107】
パリティデータの書き込み総量が閾値に達した場合は、それ以降、各SSDに分割データを書き込んだ後、パリティデータをSSD3aとSSD3bに交互に書き込む。なおSSD群4についてもSSD4aとSSD4bにパリティデータを交互に書き込む。
【0108】
書き込み可能なSSD群(例えばSSD群3)にデータを書き込んだ後、他方のSSD群(例えばSSD群4)が書き込み可能となった場合に、バッファメモリ23のデータをSSD群4へ条件に従って書き込む。
【0109】
書き込み比が異なるような条件は、SSD3aへのパリティデータの書き込み量をaとし、SSD3bへのパリティデータの書き込み量をbとし、SSD4aへのパリティデータの書き込み量をcとし、SSD4bへのパリティデータの書き込み量をdとするならば、a:b≠c:dであるという条件である。
【0110】
制御部43はメモリ42に保持されたパリティデータを付加したトータルのパリティデータ量(総量)が予めSSD群毎またはSSD毎に設定した閾値に達しない場合、データ付加部40に対して一方のSSD3bにだけパリティデータを付加させる制御を行う一方、総量が閾値に達した場合、以降、データ付加部40に対して2つのSSD3a,3bにパリティデータを均等に付加させる制御を行う。
すなわち、制御部43は、予めSSD群毎またはSSD毎に設定された書き込み総量または書き込み比の条件に従ってパリティデータを付加する書込先のSSDを変更するようデータ付加部40を制御する。
【0111】
例えばカウントされたパリティデータの付加量(総量)が予め設定された閾値に達した場合、制御部43は、以降のパリティデータを、SSD3aとSSD3bで交互に付加するようデータ付加部40を制御する。
【0112】
図10に示すように、パリティデータ管理テーブル44には、各SSD群3,4の各SSD3a,3b,4a,4b毎に、付加するパリティデータのデータサイズに応じてSSDのアドレスを変換するためのアドレス変換データが記憶される。この例では、当初は、SSD3aにはパリティデータを付加せず、アドレス変換しない。SSD3bにパリティデータを付加してアドレス変換するものとする。
【0113】
このパリティデータ管理テーブル44には、ホスト装置1から指定された情報として、SSD毎に、書き込み位置を示す論理アドレス(LBA(H))とデータのサイズ(データ量)、パリティデータ付加後の指定情報として、SSD毎に、書き込み位置を示す論理アドレス(LBA(C))とデータのサイズ(データ量)がデータ付加部40により登録される。
【0114】
この場合、ホスト装置1からのデータに対してSSD3aに対してはパリティデータを付加せず、SSD3bにはホスト装置1からの1回目の書き込みデータD1(図12参照)を分割した分割データa,bから、データ付加部40がパリティデータPabを生成し、そのパリティデータPabを書き込み後は、そのパリティデータPabのデータサイズ分だけずらしたアドレスに次のデータを書き込むようにする。
【0115】
なおパリティデータ付加後の論理アドレス(LBA(C))とデータサイズは、ホスト装置1の指定(論理アドレス(LBA(H))とデータのサイズ)に、予めデータ付加部40により生成されたパリティデータのデータサイズを加算した後の値である。
【0116】
つまりこのパリティデータ管理テーブル44は、ホスト装置から指定されたデータ書込み用のアドレスを、パリティデータを含めて書き込むためのアドレス変換テーブルである。
【0117】
データ付加部40は、データ処理部24とディスクI/F28との間に介挿されている。データ付加部40は、書込み対象のデータD1を2つの分割データa,bに分割し、分割した分割データa,bを、書き込み対象のストレージ装置群が例えばSSD群3であれば、SSD群3ヘストライピング動作により書込み、さらに2つの分割データa,bから生成したパリティデータPabを、制御部43により指示された書込先のSSDに書き込む。
【0118】
例えばSSD毎にパリティデータを付加した総量と閾値との比較の結果、総量が閾値に達していない場合、データ付加部40はSSD群3の一方のSSD3bにだけパリティデータを付加してSSD間で使用差を生じさせる。
【0119】
また、SSD毎にパリティデータを付加した総量が閾値に達して、SSDの記憶領域の使用量がある程度不均一になった場合、データ付加部40はSSD群3の双方のSSD3aとSSD3bにパリティデータを交互に書き込むことで、以降、使用差がそれ以上広がらないようにすることができる。
【0120】
その後、他方のストレージ装置群であるSSD群4が書込み可能となった場合に、データ付加部40は、バッファメモリ23に保持されているデータを他方のストレージ装置群であるSSD群4に上記条件を満たすように書き込む。
【0121】
詳細に説明すると、データ付加部40は、書込み対象のデータD1を2つの分割データa,bに分割し、そのうち一方の分割データaを、書き込み対象のストレージ装置群が例えばSSD群3であれば、SSD3a(第1ストレージ装置)に書込み、また残りの分割データbをSSD群3のSSD3b(第2ストレージ装置)に書き込み、2つの分割データa,bから生成したパリティデータPabを予め設定した条件に従ってSSD3aまたはSSD3bのいずれか一方(この例ではSSD3b)に書き込む。
【0122】
その後、SSD群4が書込み可能になると、データ付加部40は、バッファメモリ23の書込み対象のデータD1を2つの分割データa,bに分割し、そのうち一方の分割データaを、書き込み対象のストレージ装置群であるSSD群4のSSD4a(第1ストレージ装置)に書込み、また残りの分割データbをSSD群4のSSD4b(第2ストレージ装置)に書き込み、2つの分割データa,bから生成したパリティデータPabを予め設定した条件に従ってSSD4aまたはSSD4bのいずれか一方(この例ではSSD4a)に書き込む。
【0123】
但し、SSD群4とSSD群3とで使用差を生じさせるため、データ付加部40は、条件に従ってSSD群4のSSD4aには分割データを3回書き込む毎にパリティデータを1回書き込み、SSD群4のSSD4bには分割データを3回書き込む毎にパリティデータを2回書き込む。
【0124】
ここで、条件には、付加したパリティデータの総量の閾値(例えば1Gbyteなど)があり、この閾値に総量が達したか否かによってパリティデータの書込先を変える。
つまりパリティデータを付加した総量が閾値に達するまではパリティデータをSSD3bにだけ書き込み、総量が閾値に達した後は、パリティデータの書込先をSSD3a→SSD3b→SSD3a…というように交互に変えてパリティデータを書き込む。
【0125】
この例では、パリティデータを付加した総量が閾値(例えば1Gbyteなど)以内であれば、次のパリティデータを一方のSSD3bに書き込み、総量が閾値に達した場合は、以降、パリティデータをSSD3aとSSD3bに交互に書き込む。
【0126】
この第4実施形態の場合、遅延保証のための動作は第1乃至第3実施形態と同じであり、ストライピング動作によりデータの書き込みおよび読み出しを高速化するために1つのデータを書き込むためのSSDを多数構成(グループ構成または群構成という)としている。
【0127】
一方のSSD群3を2台のSSD3a,3bで構成し、他方のSSD群4を2台のSSD4a,4bで構成する。
【0128】
またこの第4実施形態では、各SSD群3,4のSSD3a,3b,4a,4bのうちの一方のSSD(この例ではSSD3b,4b)に書き込むデータは単なるダミーデータではなく、他のデータとの関連のある(意味のある)パリティデータとしている。
【0129】
つまり、この第4実施形態では、書込み対象のデータを分割した上で、ストライピングによりSSD群3のSSD3a,3bに書き込み高速化を図ると共に、一方のSSD3bへパリティデータを付加することにより、SSD3a,3b間の使用差を発生させると共にデータの信頼性を向上し、その後、書込み可能になったSSD群4に、バッファメモリ23に保持されていたデータを分割した分割データをSSD4a,4bに書き込み、さらにこれら分割データから生成したパリティデータをSSD4a,4bに不均一に書き込むことで、SSD3a,3b,4a,4b間の使用差を発生させる。
【0130】
以下、図11,図12を参照してこの第4実施形態の動作を説明する。
この第4実施形態では、監視部26がディスクI/F28を監視し、ホスト装置からのコマンドを受けたデータ処理部24が処理対象のSSDを決定し、書き込みコマンドまたは読み出しコマンドをデータ付加部40へ送るまでの動作(図11のステップS201−S207)は第1実施形態(図3のフローチャート)と同様であり、それ以降の動作について説明する。
【0131】
データ処理部24から、書き込み対象のデータ(例えば図12に示すデータD1)をデータ付加部40が受け取ると、データ付加部40は、受け取ったデータD1を2つの分割データa,bに分割し、分割した2つの分割データa,bのうち一方の分割データaをSSD3aに書込み、残りの分割データbをSSD3bに書き込む(図11のステップS208)。
【0132】
続いて、データ付加部40は、2つの分割データa,bからパリティデータを生成し、生成したパリティデータを、制御部43により指定された書込先のSSDへ書き込む。
この際、計数部41は、データ付加部40により生成されたパリティデータのデータ量を計数(カウント)し、メモリ42に保持する。
【0133】
制御部43はメモリ42のデータ量が更新されるたびに、メモリ42に保持されているパリティデータの付加量(トータルのパリティデータ量(総量))が閾値Sに達したか否かを確認し(ステップS209)、確認結果に応じて書込先をデータ付加部40に指示(制御)する。
【0134】
例えばパリティデータの総量が閾値Sに達していない場合(ステップS209のNo)、制御部43はパリティデータをSSD3bにだけ書き込むようデータ付加部40を制御する。
【0135】
この制御により、データ付加部40は分割データa,bから生成したパリティデータを一方のSSD3bにだけ書き込む(ステップS210)。
【0136】
この後、コマンド応答部22が状態テーブル25を参照した結果、SSD群4が書込み可能になると、データ付加部40は、バッファメモリ23に保持されていた書込み対象のデータとこのデータから生成したパリティデータとをディスクI/F28を通じて書き込み対象のSSD群4に書き込む(ステップS211)。
【0137】
SSD群4の各SSD4a,4bへデータを書き込むにあたり、図12に示すように、SSD群4のSSD4aには、データを3回書き込むうちの1回だけパリティデータを書込み、SSD群4のSSD4bにはデータを3回書き込むうちの残りの2回だけパリティデータを書込むことで、各SSD4a,4bへ書き込むデータ量を不均一にすることができる。
【0138】
このようにすることで、SSD群3,4および各SSD3a〜4bの記憶領域の使用量を不均一にすることができる。
【0139】
また、SSD群へのデータの書き込みが進み、例えば図12のデータD5を書き込む際に、付加するパリティデータの総量が閾値Sに達していた場合(ステップS209のYes)、制御部43は、以降、書き込むデータに付加するパリティデータをSSD3aとSSD3bに交互に書き込むようデータ付加部40を制御する。
【0140】
この制御により、データ付加部40は、書込み対象のデータがデータD5であれば、その分割デーi,jから生成したパリティデータPijをSSD3aに書き込み、次のデータD6のパリティデータPmnについてはSSD3bに書き込むようになる(ステップS212)。
【0141】
言い換えると、SSD群3,4のうちパリティデータ書込み回数が一番多いSSD、例えばSSD3bに、予めパリティデータ書き込みの上限値、例えば閾値Sとして1GByteなどと設定しておき、制御部43は、累積(カウント)されたパリティデータの付加総量(累積値)と閾値Sとを比較し、累積値が例えば1GByteの閾値Sを越えた場合は、以降、パリティデータをSSD3aとSSD3bで交互に書き込ませるようにする。
【0142】
なお、ステップS213−S216の、読み出しコマンドに対するデータの読み出し処理については、第1実施形態(図3のフローチャート)で説明したダミーデータをパリティデータへ変更、およびSSDをSSD群へ変更したものである。
【0143】
この第4実施形態では、ステップS215の処理が第1実施形態とは異なるためその処理を説明する。
【0144】
ステップS215の処理の場合、データ付加部40は、データの読み出しが可能なSSD群の2つのSSDから、読み出し対象のデータの分割データとパリティデータを読み出し、分割データのパリティチェックを行った上で、2つの分割データを1つのデータに結合してデータ処理部24へ渡す。
【0145】
これにより、SSD3a,3b間(およびSSD4a,4b間)で、ある一定の使用量の差が生じれば、それ以上は差が広がらないようになり、各SSD群3,4の片側のSSD3b,4bだけが極端に早く寿命を迎えてしまう、ということがなくなる。
【0146】
このようにこの第4実施形態によれば、4台のSSD3a,3b,4a,4bを利用して、そのうちSSD3a,3bをSSD群3(第1のストレージ装置群)とし、他のSSD4a,4bを、応答時間を保証するためのSSD群4(第2のストレージ装置群)とし、SSD群3の各SSD3a,3bを利用してストライピングを行いながら、2つのSSD群3,4のうちの一方のSSD群を常にデータ読み出し可能な状態としておくことで、個々のSSD3a,3b,4a,4bの寿命の不均一化はもとより、データの書込時間の高速化と応答時間の保証を同時に実現することができる。
【0147】
この結果、各SSDの寿命の不均一化と、データ書み出しおよびデータ読み出しの際のストライピングによる高速化と、応答時間の保証とを同時に実現することができる。
【0148】
以上のように本発明の各実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【0149】
また上記実施形態に示した各構成要素を、コンピュータのハードディスク装置などのストレージにインストールしたプログラムで実現してもよく、また上記プログラムを、コンピュータ読取可能な電子媒体:electronic mediaに記憶しておき、プログラムを電子媒体からコンピュータに読み取らせることで本発明の機能をコンピュータが実現するようにしてもよい。電子媒体としては、例えばCD−ROM等の記録媒体やフラッシュメモリ、リムーバブルメディア:Removable media等が含まれる。さらに、ネットワークを介して接続した異なるコンピュータに構成要素を分散して記憶し、各構成要素を機能させたコンピュータ間で通信することで実現してもよい。
【符号の説明】
【0150】
1…ホスト装置、3,4…ソリッド・ステート・ディスク(SSD)、20…外部インターフェース(外部I/F)、21…タイマー、22…コマンド応答部、23…バッファメモリ、24…データ処理部、25…状態テーブル、26…監視部、27,28…ディスクインターフェース(ディスクI/F)、30,40…データ付加部、31,41…計数部、32,42…メモリ、33,43…制御部、34…ダミーデータ管理テーブル、44…パリティデータ管理テーブル。
【技術分野】
【0001】
本発明の実施形態は、情報処理装置および情報処理方法に関する。
【背景技術】
【0002】
例えばビデオサーバなどに記憶された映像コンテンツをリアルタイムに配信するような産業用途向けの装置には、例えば大容量のハートディスク装置などのストレージ装置が使用されている。
【0003】
この種の装置は、ストレージ装置に対して、一定の時間内にデータの書き込み処理や読み出し処理を完了する必要がある。なぜなら、データの書き込みや読み出しが定められた時間を超えてしまうと、映像や音声の途切れなどが生じるおそれがあるからである。
【0004】
ハートディスク装置などは、大容量かつ低価格ではあるものの、速度と信頼性の面で難があり、最近は、ソリッド・ステート・ディスク:SSDが高速なストレージ装置として産業用途向けのシステムで利用されるようになってきた。
【0005】
産業用途向けのシステムで利用されるSSDは、容量が大きくなるとそれなりに高価であり、安価な汎用用途のSSD(例えばSATAなどの汎用インターフェースで接続可能なタイプ)の利用が望ましい。
【0006】
しかしながら、汎用のSSDなどのストレージ装置は、データの書き込み処理や読み出し処理の遅延時間が保証されておらず、そのままではデータ処理に遅延が生じることがあり、リアルタイム制御を行う装置には適用できないという問題がある。
【0007】
そこで、近年では、2つのI/Oバッファと2つのディスクを用いミラーリングを行うことで、ディスク書き込みに係る応答時間を保証する技術が開発されている(例えば先行技術文献1参照)。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2006−227923号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
ところで、このような技術の場合、2つのディスクに同じデータを書き込むことになるため、2つのディスクが同じ時期に寿命に近づくことによりミラーリングが機能しなくなるか、ディスク交換の保守作業が複雑になる。
【0010】
本発明が解決しようとする課題は、2台以上のストレージ装置を用いて、データの書き込みおよび読み出し遅延時間を保証する上で、同時にストレージ装置が寿命を迎えることを避けることができる情報処理装置および情報処理方法を提供することにある。
【課題を解決するための手段】
【0011】
実施形態の情報処理装置は、ホスト装置と第1および第2のストレージ装置が接続可能なインターフェースを有し、前記第1および第2のストレージ装置とのデータの共通化を行う情報処理装置において、ストレージ装置状態管理テーブル、監視部、バッファメモリ、コマンド応答部、データ処理部、データ付加部を備える。前記ストレージ装置状態管理テーブルは前記第1および第2のストレージ装置の動作状態が記憶可能である。前記監視部は前記インターフェースを監視し、前記第1および第2のストレージ装置が書き込み中か読み出し中か待機中かの動作状態を前記ストレージ装置状態管理テーブルに設定する。前記バッファメモリは前記インターフェースに接続された前記第1および第2のストレージ装置に書き込むデータを一時保持するためのものである。前記コマンド応答部は前記ホスト装置から書き込みの指示と書き込み対象のデータを受信し、前記バッファメモリに保持すると共に、前記第1および第2のストレージ装置へのデータの書き込みを指示する。前記データ処理部は前記コマンド応答部からの書き込み指示により、前記ストレージ装置状態管理テーブルを参照して前記複数のストレージ装置の中で、前記データを書き込み可能なストレージ装置に対して前記バッファメモリに保持されていたデータを送る。前記データ付加部は前記データ処理部と前記第1および第2のストレージ装置が接続されるいずれか一方の前記インターフェースとの間に介挿され、前記ストレージ装置へ送られるデータにダミーデータを付加して前記ストレージ装置に書き込む。
【図面の簡単な説明】
【0012】
【図1】第1実施形態の遅延保証ユニットの構成を示す図である。
【図2】第1実施形態の遅延保証ユニットにおける状態テーブルの内容を示す図である。
【図3】第1実施形態の遅延保証ユニットの動作を示すフローチャートである。
【図4】第2実施形態の遅延保証ユニットの構成を示す図である。
【図5】第2実施形態の遅延保証ユニットの動作を示すフローチャートである。
【図6】第3実施形態の遅延保証ユニットの構成を示す図である。
【図7】第3実施形態の遅延保証ユニットにおけるダミーデータ管理テーブルの内容を示す図である。
【図8】第3実施形態を拡張し並列数を3台にした構成例を示す図である。
【図9】第4実施形態の遅延保証ユニットの構成を示す図である。
【図10】第4実施形態の遅延保証ユニットにおけるパリティデータ管理テーブルの一例を示す図である。
【図11】第4実施形態の遅延保証ユニットの動作を示すフローチャートである。
【図12】第4実施形態の遅延保証ユニットの動作を説明するための図である。
【発明を実施するための形態】
【0013】
以下、図面を参照して、実施形態を詳細に説明する。図1は情報処理装置の一つの実施の形態の遅延保証ユニット2の構成を示す図である。
【0014】
図1に示すように、第1実施形態の遅延保証ユニット2は、ホスト装置1が接続された外部インターフェース20(以下「外部I/F20」と称す)、タイマー21、コマンド応答部22、バッファメモリ23、データ処理部24、状態テーブル25、監視部26、ディスクインターフェース27,28(以下「ディスクI/F27,28」と称す)、データ処理部24といずれか一方のディスクI/F(この例ではディスクI/F28)との間に介挿されたデータ付加部30などを有している。
【0015】
ホスト装置1は、例えばビデオサーバなどであり、ストレージ装置にデータの書き込みや読み出しに応答時間の保証が求められるマルチメディアシステム、情報処理システム、製造プラントシステムなどの産業用途向けのシステムに適用される。
【0016】
ディスクI/F27,28は、少なくとも一つ以上の外部ストレージ装置、例えばソリッド・ステート・ディスク3,4(以下「SSD3,4」と称す)などと通信するためのインターフェースであり、例えば、シリアルATA(SATA−2.6または3.0)やPCI−eのポートである。この例では、ディスクI/F27,28に、SSD3,4がそれぞれ一台ずつ接続されている。
【0017】
外部I/F20は、ホスト装置1と通信するためのインターフェースであり、例えば、シリアルATA(SATA−2.6または3.0)やPCI−eのポートである。
【0018】
タイマー21は、コマンド応答部22からの指示によりタイマー動作を開始し、カウントされた時間が、予め設定されたタイムアップ時間に達すると、コマンド応答部22にタイムアップを通知する。
【0019】
なお、ホスト装置1は、データの書き込み処理および読み出し処理を、システム仕様で定められた許容応答時間以内に完了する必要がある。許容応答時間から、ホスト装置1とコマンド応答部22間のコマンドの転送時間(インターフェース仕様により決まる一定時間)を差し引いた時間をタイムアップ時間として設定することで遅延時間を一定の時間で納めるようにしている。
【0020】
ホスト装置1へ応答すべき時間は、予めタイマー21に設定されており、適用するシステムにより異なる。例えば、映像を扱うシステムでは33ms、製造プラントで使用するデータロガーなどであれば1〜10msなどである。
【0021】
タイムアップ時間は、ホスト装置1へ応答を返す上で遅延が許容される最大時間であり、予めタイマー21に設定しておいてもよく、タイマー21がタイムアップ時間を参照する書き換え可能なメモリに、外部からアクセスし、扱うシステムに応じてタイムアップ時間を書き換える(変更する)ようにしてもよい。
【0022】
すなわち、タイマー21は、コマンド応答部22からのカウント開始の指示により予め設定されたタイムアップ時間(応答時間)をカウントし、タイムアップすると、タイムアップしたことを指示元のコマンド応答部22へ通知する。
【0023】
コマンド応答部22は、ホスト装置1との間でコマンドおよびデータのやりとりを行う。コマンド応答部22は、ホスト装置1から受信されたコマンドに応じて、データ処理部24に対してデータの書き込みまたは読み出しを指示(制御)する。
【0024】
またコマンド応答部22は、ホスト装置1から書き込み開始コマンド(データの書き込み要求)が受信されることで、複数のSSD3,4の書込先として、どのSSDに書き込むかを示すフラグ(書込先フラグ)を状態テーブル25(図2参照)に設定する。図2は第1実施形態の遅延保証ユニットにおける状態テーブルの内容を示す図である。
【0025】
またコマンド応答部22はホスト装置1から書き込み開始コマンド(データの書き込み要求)が受信された場合、タイマー21へカウント開始を指示すると共に、状態テーブル25を参照してSSD3,4の動作状態(待機中か書込中か)を確認し、動作状態に応じてデータの書込先を選定し、データの書込先を状態テーブル25に設定し、書き込み対象のSSD(SSD3またはSSD4)への書き込みを指示する制御信号を出力し、ホスト装置1からの書き込み要求の後に一定の単位時間以内に順次送られてくる書き込み対象のデータをバッファメモリ23へ保持する。SSD3,4の動作状態が「待機中」であれば、SSD動作状態フラグを「書込中」に変更し、予め設定されている側のSSDを書込先として選定する。
【0026】
一方、タイマー21からタイムアップしたことがコマンド応答部22に通知された時点で、コマンド応答部22は書き込み要求に対する書き込み完了の応答をホスト装置1へ返す。すなわち、コマンド応答部22は、バッファメモリ23へのデータの保持(書き込み)が完了しても直ぐには書き込み完了の応答を返さず、システムの応答時間であるタイムアップ時間を待って応答を返す。これにより、データの受信を完了してからタイムアップ時間までが、SSD3,4の側でデータ書き込みの遅延が生じた際の遅延保証時間として確保されることになる。
【0027】
バッファメモリ23は、データを一時保持可能である。バッファメモリ23には、ホスト装置1から受信されたデータが一時的に保持(キャッシュ)される。
【0028】
データ処理部24は、コマンド応答部22からの制御信号を受信すると、状態テーブル25を参照してSSD3,4の動作状態と書込先の状態から書き込み可能なSSD(SSD3,4のうちのいずれか)を選定し、選定したSSDに対して、バッファメモリ23から読み出したデータを、当該SSDが接続されたディスクI/F(ディスクI/F27またはディスクI/F28)へ送信する。
【0029】
すなわちデータ処理部24は、コマンド応答部22からの書き込み指示により、状態テーブル25を参照してSSD3,4の中で、データを書き込み可能なSSD置に対してバッファメモリ23に保持されていたデータを送る。
【0030】
データ付加部30は、データ処理部24からのデータに固定サイズのダミーデータを付加し、ダミーデータを付加したデータを、ディスクI/F28を通じてSSD4へ送り書き込む。
【0031】
またデータ付加部30は、ホスト装置1からのデータの読み出しの指示により、データ処理部24によりSSD4から読み出されるデータからダミーデータを取り除き(削除し)、データ処理部24に渡す。
【0032】
状態テーブル25には、ディスクI/F27,28に接続されたSSD3,4の動作状態とSSD3,4の書込先が設定可能であり、監視部26によりそれぞれにフラグ(“0”または“1”)が設定される。
【0033】
監視部26は、ディスクI/F27,28へのコマンドまたはデータの入出力を監視する。すなわち監視部26はディスクI/F27,28を介してSSD3,4を監視し、監視結果として、SSD3,4の動作状態と書込先を状態テーブル25に設定する。
【0034】
具体的に、監視部26は、監視結果のSSD3,4の動作状態を「待機中」と「書込中」のいずれかを示すフラグ(動作状態フラグ)を状態テーブル25に設定する。
【0035】
SSD3,4の動作状態フラグは、例えば“0”または“1”のいずれが設定され、“0”のときに待機中(いずれのSSDにも書き込みをしていない状態)、“1”のときにどちらかのSSD3,4にデータを書き込み中であることを示す。
【0036】
また書込先フラグは、例えば“0”または“1”のいずれが設定され、“0”のときにSSD3へデータを書き込む(このときは、SSD4から読み出しを行う)、“1”のときにSSD4へデータを書き込む(このときは、SSD3から読み出しを行う)ことを示す。例えば、書込先フラグ“0”について、SD3にデータの書き込みを許可していることを言い換えると、他のSSD4に対して書き込み禁止の設定をしていることと同じ意味である。
【0037】
データ処理部24は状態テーブル25を参照して、コマンド応答部22からのコマンドで指示されたデータを書き込み可能または読み出すことが可能な側のSSD(SSD3またはSSD4のいずれか)に対してデータを書き込みまたは読み出す。
【0038】
データ処理部24は、ディスクI/F27,28に接続された複数のSSD3,4に対してデータの共通化を行う。具体的には、ホスト装置1から受信され、バッファメモリ23に保持したデータを、あるSSD3に書き込んだ後、そのデータをバッファメモリ23から読み出して他のSSD4に書き込むことで、複数のSSD3,4に対してデータ同期のための処理を行う。
【0039】
続いて、図3のフローチャートを参照してこの第1実施形態の遅延保証ユニット2の動作を説明する。
ホスト装置1からは、常に一定周期、一定データサイズの書き込みと読み出しが行われる。この遅延保証ユニット2では、ホスト装置1への遅延保証を実現するために、2台のSSD3,4のうち常に一方のSSDを読み出し可能な状態で維持しておく。
【0040】
このためには、2つのSSD3,4が同じデータを保持している必要がある。このため書き込み先と読み出し先のSSD3,4を入れ替えながらホスト装置1からの書き込み/読み出し要求にコマンド応答部22が応答してゆく。
【0041】
この遅延保証ユニット2の場合、監視部26がディスクI/F27,28へのコマンドまたはデータの入出力を監視しており(図3のステップS101)、監視結果として、SSD3,4の動作状態と書込先を状態テーブル25に設定する(ステップS102)。
(データ書き込み動作)
外部のホスト装置1がSSD(SSD3またはSSD4のいずれか)へデータを書き込む場合、ホスト装置1はデータの書き込みコマンドをコマンド応答部22へ送信する。
【0042】
ホスト装置1から送信されてきたコマンドをコマンド応答部22が受信すると(ステップS103)、コマンド応答部22は、受信したコマンドが、書き込みコマンドか読み出しコマンドかを識別し(ステップS103)、受信したコマンドが書き込みコマンドであれば、タイマー開始コマンドをタイマー21へ送ると共に、状態テーブル25を参照して、SSD(SSD3、SSD4共に)が待機中であることをチェックし、SSDが待機中のとき、状態テーブル25へ書き込み先変更コマンドを送ることで、状態テーブル25の書込先フラグを設定する。
【0043】
例えば、書込先フラグが“0”でSSDが待機中であった場合に、コマンド応答部22がホスト装置1から送信された書き込みコマンドを受信すると、書込先フラグを“1”に変更し、SSD4へ書き込み許可(SSD3を書き込み禁止)に設定する。
【0044】
タイマー21はタイマー開始コマンドを受けて、カウントを開始する。
【0045】
またコマンド応答部22は、待機中のSSDが存在すると、ホスト装置1へ応答の受信可能コマンドを返し、この受信可能コマンドによりホスト装置1からデータが順次送られる。
【0046】
コマンド応答部22は、ホスト装置1より送信されてきたデータをバッファメモリ23に順次保持しながら(ステップS105)、書込開始を示す制御信号をデータ処理部24へ送る(ステップS106)。
【0047】
データ処理部24は、コマンド応答部22からの書込開始を示す制御信号を受けると、状態テーブル25を参照して書き込み可能なSSDを選定、例えば状態テーブル25の書込先フラグから書き込み先をSSD4に決定し、SSD4が接続されているディスクI/F28へ書込開始コマンドを送信し、書込開始コマンドを受信したSSD4から受信可能コマンドが返されてくると、データ処理部24はバッファメモリ23から固定長のデータを順次読み出し、SSD4が接続されているディスクI/F28へ送信する(ステップS107)。
【0048】
すると、データ処理部24とディスクI/F28との間に設けられているデータ付加部30が、送られるデータに固定長のダミーデータを付加し、そのデータを、ディスクI/F28を通じて書き込み対象のSSD4に書き込む(ステップS108)。
【0049】
一方、タイマー21は、カウントを開始してからタイムアップ時間(応答時間)が経過すると、タイムアップし、タイムアップ通知コマンドをコマンド応答部22へ返す。
【0050】
コマンド応答部22は、一回分の全てのデータがバッファメモリ23に受信されたとしても受信完了の応答を返さず、タイマー21からのタイムアップ通知コマンドが受信されるのを待機する。この待機時間が遅延保証時間となる。
【0051】
そして、タイムアップ通知コマンドを受けると、書込完了コマンドをホスト装置1へ送信する。
【0052】
また、SSD4へのデータの書き込みが完了すると、SSD4からは、書込完了コマンドが返されるので、この書込完了コマンドがディスクI/F28を通じて監視部26およびデータ処理部24に受信される。
【0053】
書込完了コマンドを受けた監視部26は、状態テーブル25の、SSD動作状態フラグを“1”「書き込み中」→“0”「待機中」へ変更する。
【0054】
書込完了コマンドを受けたホスト装置1が次のデータの書き込み開始コマンドを送信し、そのコマンドをコマンド応答部22が受信すると、コマンド応答部22は、状態テーブル25の、書込先フラグの状態を“1”「SSD4へ書込許可」→“0”「SSD3へ書込許可」へ変更する。
【0055】
データ処理部24は、書込完了コマンドが受信されると、状態テーブル25の書き込み先フラグを確認し、書込先フラグが“0”「SSD3へ書込許可」であることから、データ同期のため、SSD3に対してデータの書込開始コマンドを送信する。
【0056】
監視部26は、書込開始コマンドにより状態テーブル25の、SSD動作状態フラグを“1”「書込中」に変更する。
【0057】
この書込開始コマンドを受信したSSD3からは、受信可能コマンドが返されるので、この受信可能コマンドがディスクI/F27および監視部26を通じてデータ処理部24に受信されると、データ処理部24は、バッファメモリ23に保持されているデータを順次読み出し、ディスクI/F27を通じて書き込み対象のSSD3に書き込む。
【0058】
SSD3へのデータの書き込みが完了すると、SSD3からは、書込完了コマンドが返されるので、この書込完了コマンドがディスクI/F27を通じて監視部26およびデータ処理部24に受信される。
【0059】
監視部26は、書込完了コマンドが受信されると、状態テーブル25の、SSD動作状態フラグを“1”「書込中」→“0”「待機中」へ変更する。
(データ読み出し動作)
外部のホスト装置1がSSD3またはSSD4からデータを読み出す場合、ホスト装置1はデータの読み出しコマンドをコマンド応答部22へ送信する。
【0060】
ホスト装置1から送信されたコマンドをコマンド応答部22が受信すると(ステップS103)、コマンド応答部22は、受信したコマンドが、書き込みコマンドか読み出しコマンドかを識別し(ステップS104)、そのコマンドが読み出しコマンドであれば、データを読み出すよう指示する制御信号をデータ処理部24へ送る(ステップS109)。
【0061】
データ処理部24は、コマンド応答部22からの読出開始を指示する制御信号を受けると、状態テーブル25を参照して、書き込み先として設定されているSSDを決定(選定)し、読出開始コマンドをディスクI/F27またはディスクI/F28を通じて対象のSSD(SSD3またはSSD4)へ送信する(ステップS110)。
【0062】
ここでは状態テーブル25を参照した結果、書込先フラグの状態が“0”「SSD3へ書込許可」、つまり「SSD4からの読出許可」と設定されていたものとする。
【0063】
この場合、データ処理部24は、読出開始コマンドを、ディスクI/F28を通じてSSD4へ送信する。
【0064】
読出開始コマンドを受けたSSD4は、データを順次読み出して、ディスクI/F28およびデータ付加部30を通じてデータ処理部24へ送る。
【0065】
SSD4からのデータをデータ付加部30が受けると、そのデータからダミーデータを取り除き(削除し)、データ処理部24に渡す(ステップS110)。
【0066】
データ処理部24は受け取ったデータをホスト装置1へ送る(ステップS111)。この場合、バッファメモリ23は経由しない。
【0067】
ホスト装置1へのデータの送信が完了すると、SSD4は、読出完了コマンドを、ディスクI/F28を通じてコマンド応答部22へ送り、さらにコマンド応答部22からホスト装置1へ読出完了コマンドを送信する。
【0068】
このようにこの第1実施形態によれば、2台のSSD3,4を用いてデータ同期(データの多重化またはデータの共通化)を実現し、待機中のSSDにデータを書き込み、他方を書込禁止にしてデータの読み出しに対応することで、リアルタイム制御におけるデータの読み出しに対応することができる。
【0069】
複数のSSD3,4を用いてデータ同期(データの多重化またはデータの共通化)して遅延保証する上で、一方のSSD(この例ではSSD4)にダミーデータを書き込むことによりSSD4の方が先にデータの上書き回数の制限値に到達するので、それぞれのSSD3,4に書き込むデータサイズが不均一となり、各SSD3,4の寿命も不均一となる。
【0070】
なお、コマンド応答部22、または、データ処理部24は、このダミーデータの書き込み回数もしくはダミーデータ数をカウントしておき、所定のカウント数を超えた場合、図示しないが警報ランプなどを点灯表示させたり、またはスピーカからアラーム音を発することにより、2台のSSD3,4が同時に寿命を迎える前にSSDの交換をオペレータに喚起することができる。
【0071】
この結果、複数のSSD3,4がほぼ同時に寿命を迎えることを防止でき、寿命を迎えた順にSSDを交換・保守することでSSD内部のデータを保護することができる。
【0072】
ホスト装置1からのデータの書き込み要求に対しては、ホスト装置1からのデータをバッファメモリ23に保持しておく一方で、SSD3,4側とは書き込みと読み出しの状態を切り替えながらバッファメモリ23からデータを適宜書き込むことで、SSD3,4で発生する遅延を吸収する。すなわち、遅延保証ユニット2においてSSD3,4への処理とホスト装置1への処理とを分離することで、SSD3,4の応答遅延の影響がホスト装置1側へ及ばなくなり、SSDの遅延を保証することができる。
【0073】
また、ホスト装置1からのデータの書き込みの際に、ホスト装置1から送られたデータのバッファメモリ23への保持が完了しても直ちに書込完了の応答を返さずに、ホスト装置1がデータを送る周期に合わせて、データの書込完了コマンド(書込完了通知)をホスト装置1へ返すようにすることで、SSD3,4の側でデータの書き込みに遅延が生じた場合でも、受信データがバッファメモリ23に溜らなくなり、遅延の影響が吸収されるので、遅延時間が保証されてない汎用のSSD3,4などをリアルタイム制御に用いることができるようになる。
【0074】
また、汎用のストレージ装置の一つであるSSD3,4を接続するユニットを外付けの拡張ユニット(遅延保証ユニット2)とすることで、以下のような効果が得られる。
【0075】
1)外付けの遅延保証ユニット2に汎用のストレージ装置(SSDやHDD)を接続して、データの書き込みおよびデータの読み出しの際に、ストレージ装置に発生する遅延を保証することができる。
2)ディスクI/F27,28の機能を実装変更(ディスクI/F27,28を他のI/Fと置換)するだけで、現在および未来に規格化されるあらゆるストレージ装置に対応可能である。つまりストレージ装置が故障したときや新しい世代のストレージ装置への変更を容易にできる。
3)コンピュータやサーバーなどの拡張機能とすることも可能であり、インデント品の産業機器にも容易に組み込むことができる。
【0076】
次に、図4,図5を参照して第2実施形態を説明する。この第2実施形態は、第1実施形態の変形例であり、第1実施形態と同じ構成には同一の符号を付しその説明は省略する。
【0077】
図4に示すように、第2実施形態の遅延保証ユニット2はデータ付加部30を制御するための手段(計数部31、メモリ32、制御部33など)が設けられている。
【0078】
計数部31は、データ処理部24からのデータにデータ付加部30が付加したダミーデータのデータ量を計数(カウント)し、メモリ32に保持するダミーデータ量計数部である。
【0079】
メモリ32は、例えばフラッシュメモリなどの不揮発性のメモリである。このメモリ32には、計数部31により計数(カウント)されたダミーデータのデータ量が蓄積される。
【0080】
制御部33はメモリ32に保持されたダミーデータを付加したトータルのデータ量(総量)が予め設定された閾値に達した場合、データ付加部30に対して以降のダミーデータの付加を停止させる制御を行う。
【0081】
この第2実施形態の場合、遅延保証のための動作は第1実施形態と同じであり、SSD4にデータを書き込む際、およびSSD4からデータを読み出す際の動作が異なるため、その動作について説明する。
【0082】
SSD4にデータを書き込む場合、データ処理部24からのデータをデータ付加部30が受け取ると、データ付加部30は、受け取った書き込み対象のデータに一定サイズのダミーデータを付加してSSD4へ送り、書き込む。
【0083】
この際、図5に示すように、計数部31は、データ処理部24からのデータにデータ付加部30が付加したダミーデータのデータ量を計数(カウント)し(ステップS201)、メモリ32に保持する。
【0084】
制御部33はメモリ32のデータ量が更新されるたびに、保持されているダミーデータの付加量(トータルのダミーデータ量(総量))と予めメモリ32に設定されている閾値とを比較し(ステップS202)、ダミーデータの付加量(トータルのダミーデータ量(総量))が閾値に達した場合(ステップS202のYes)、データ付加部30に対して、以降のダミーデータの付加を停止させるよう制御する(ステップS203)。
【0085】
言い換えれば、SSD4にはダミーデータ書き込み上限値、例えば、閾値として1GByteと設定しておき、メモリ32は、累積されたダミーデータと閾値を比較し、累積値が1GByteの閾値を越えた場合はダミーデータを付加するのを止める。
【0086】
これにより、一つのSSD4に、ある一定の量以上、ダミーデータが追記される(上書き回数が増える)ことがなくなり、片方のSSD4だけが極端に早く寿命を迎えてしまう、ということがなくなる。
【0087】
このようにこの第2実施形態によれば、それぞれのSSD3,4に書き込むデータサイズが不均一となり、SSD3,4の寿命を不均一にしながらも一方のSSD4だけが極端に早く寿命を迎えることを防止できる。
【0088】
次に、図6,図7、図8を参照して第3実施形態を説明する。この第3実施形態は、第1実施形態の変形例であり、第1実施形態と同様の構成には同一の符号を付しその説明は省略する。
【0089】
図6に示すように、第3実施形態の遅延保証ユニット2は、データ付加部30とダミーデータ管理テーブル34を備える。データ付加部30はデータ処理部24と複数のSSD3,4が接続される少なくとも一つのディスクI/F27,28との間に介挿されている。
【0090】
つまりデータ付加部30は両方のディスクI/F27とディスクI/F28にそれぞれ接続されていてもよく、一方のディスクI/F27またはディスクI/F28に接続されていてもよい。
【0091】
図7に示すように、ダミーデータ管理テーブル34には、各SSD3,4に付加するダミーデータのサイズ(データ量)が記憶されている。例えば、SSD3には、ダミーデータを付加しないでSSD4のみにダミーを付加するとする。その場合、ホスト装置1からのデータに対してSSD3に対してはダミーデータを付加せず、SSD4にはホスト装置1からの1回目の書き込みデータに対して10Kbyte、2回目には5Kbyte、3回目は2Kbyte・・・の様に書き込み回毎に異なった量のダミーデータを付加するように設定されている。この場合、付加するダミーデータ量を、第1の実施形態で書き込む一定のダミーデータ量以下に抑える様にすると、ディスク容量に対して有効なデータをより割り当てることになり、効率を高く取ることが出来る。また、可変長のデータと組み合わせて書き込み毎のダミーデータを増減する様にしても良い。
【0092】
またこのダミーデータ管理テーブル34には、ホスト装置1から指定された情報として、SSD毎に、書き込み位置を示す論理アドレス(LBA(H))とデータのサイズ(データ量)、ダミーデータ付加後の指定情報として、SSD毎に、書き込み位置を示す論理アドレス(LBA(C))とデータのサイズ(データ量)がデータ付加部30により登録される。
【0093】
ここで、ダミーデータ付加後の論理アドレス(LBA(C))とサイズは、ホスト装置1の指定(論理アドレス(LBA(H))とデータのサイズ)に、予めデータ付加部30に設定されているダミーデータのサイズを加算した後の値である。
【0094】
上記第1実施形態では、ホスト装置1から送られてくるデータは一定のサイズ、一定の間隔であったが、この第3実施形態の場合、ダミーデータ管理テーブル34に、ホスト装置1から送られてくるデータの情報とダミーデータ付加後の情報とを登録し管理することで、データサイズは可変長であってもよく、またSSDは2台とは限らず、図8に示すように、3台のSSD3,4,5を並列に接続した構成の場合も対応できる。つまり並列数が2台以上のものにも対応できる。
【0095】
この第3実施形態の場合、データ処理部24は、コマンド応答部22からの書き込み指示により、状態テーブル25を参照して複数のSSD3,4の中で、データを書き込み可能なSSD3またはSSD4に対してバッファメモリ23に保持されていたデータを送る。
データ付加部30はダミーデータ管理テーブル34を参照して書き込み対象のSSD3,4に対応するサイズ(データ量)のダミーデータを、SSD3,4へのデータに付加してSSD3,4に書き込む。図7のダミーデータ管理テーブルの例は、SSD3に付加するダミーデータは0Kbyteであり、第1実施形態と同様にSSD3にはダミーデータを付加しない。
【0096】
この第3実施形態によれば、SSD毎に付加するダミーデータを管理するためのダミーデータテーブル34を設けたことで、2台以上のSSD3,4…に対して、書き込みデータに付加するダミーデータのサイズ(データ量)や読み出すデータからダミーデータを削除する情報(論理アドレスやサイズ)を登録でき、より汎用性の高い遅延保証ユニット2を提供できる。
【0097】
次に、図9乃至図12を参照して第4実施形態を説明する。この第4実施形態は、第3実施形態の変形例であり、第3実施形態と同じ構成には同一の符号を付しその説明は省略する。
【0098】
図9に示すように、第4実施形態の遅延保証ユニット2は、外部I/F20、タイマー21、コマンド応答部22、バッファメモリ23、データ処理部24、状態テーブル25、監視部26、ディスクI/F28、データ処理部24、データ付加部40、このデータ付加部40が生成するパリティデータをどのSSDへ書き込むかを制御する手段(計数部41、メモリ42、制御部43など)、パリティデータ管理テーブル44を有する。
【0099】
計数部41は、データ処理部24からのデータにデータ付加部40が付加したパリティデータのデータ付加量を計数(カウント)し、メモリ42に保持するパリティデータ付加量計数部である。
【0100】
メモリ42は、例えばフラッシュメモリなどの不揮発性のメモリである。このメモリ42には、計数部41により計数(カウント)されたパリティデータのデータ付加量(総量)が蓄積される。
【0101】
メモリ42には予めSSD群毎またはSSD毎に設定したパリティデータの書き込み総量または書き込み比の条件が記憶されている。
【0102】
この条件は、全てのストレージ装置間でパリティデータの書き込み総量または書き込み比が異なるように予め設定されたものである。データ付加部40はこの条件に従って2つの分割データから生成したパリティデータを当該ストレージ装置群へ書き込む。
【0103】
書き込み総量が異なるような条件は、SSD3aへのパリティデータの書き込み量をaとし、SSD3bへのパリティデータの書き込み量をbとし、SSD4aへのパリティデータの書き込み量をcとし、SSD4bへのパリティデータの書き込み量をdとするならば、a≠b≠c≠dであるという条件である。
【0104】
この条件は、パリティデータをどのSSDにどれだけ書き込むかを示す条件であり、SSD3a,3b,4a,4bへのパリティデータの書き込み方と、この書き込み方の切換タイミングを示す閾値である。
【0105】
条件として設定した書き込み方の一例を以下に示す。
パリティデータの書き込み総量が閾値に達するまでは、書き込み可能なストレージ装置群の第1ストレージ装置または第2ストレージ装置のいずれか一方のストレージ装置にパリティデータを書き込む。
【0106】
SSD群3のSSD3aにはパリティデータを書き込まず、SSD3bには分割データを書き込む毎にパリティデータを毎回書き込み、SSD群4のSSD4aには分割データを3回書き込む毎にパリティデータを1回書き込み、SSD群4のSSD4bには分割データを3回書き込む毎にパリティデータを2回書き込む。
【0107】
パリティデータの書き込み総量が閾値に達した場合は、それ以降、各SSDに分割データを書き込んだ後、パリティデータをSSD3aとSSD3bに交互に書き込む。なおSSD群4についてもSSD4aとSSD4bにパリティデータを交互に書き込む。
【0108】
書き込み可能なSSD群(例えばSSD群3)にデータを書き込んだ後、他方のSSD群(例えばSSD群4)が書き込み可能となった場合に、バッファメモリ23のデータをSSD群4へ条件に従って書き込む。
【0109】
書き込み比が異なるような条件は、SSD3aへのパリティデータの書き込み量をaとし、SSD3bへのパリティデータの書き込み量をbとし、SSD4aへのパリティデータの書き込み量をcとし、SSD4bへのパリティデータの書き込み量をdとするならば、a:b≠c:dであるという条件である。
【0110】
制御部43はメモリ42に保持されたパリティデータを付加したトータルのパリティデータ量(総量)が予めSSD群毎またはSSD毎に設定した閾値に達しない場合、データ付加部40に対して一方のSSD3bにだけパリティデータを付加させる制御を行う一方、総量が閾値に達した場合、以降、データ付加部40に対して2つのSSD3a,3bにパリティデータを均等に付加させる制御を行う。
すなわち、制御部43は、予めSSD群毎またはSSD毎に設定された書き込み総量または書き込み比の条件に従ってパリティデータを付加する書込先のSSDを変更するようデータ付加部40を制御する。
【0111】
例えばカウントされたパリティデータの付加量(総量)が予め設定された閾値に達した場合、制御部43は、以降のパリティデータを、SSD3aとSSD3bで交互に付加するようデータ付加部40を制御する。
【0112】
図10に示すように、パリティデータ管理テーブル44には、各SSD群3,4の各SSD3a,3b,4a,4b毎に、付加するパリティデータのデータサイズに応じてSSDのアドレスを変換するためのアドレス変換データが記憶される。この例では、当初は、SSD3aにはパリティデータを付加せず、アドレス変換しない。SSD3bにパリティデータを付加してアドレス変換するものとする。
【0113】
このパリティデータ管理テーブル44には、ホスト装置1から指定された情報として、SSD毎に、書き込み位置を示す論理アドレス(LBA(H))とデータのサイズ(データ量)、パリティデータ付加後の指定情報として、SSD毎に、書き込み位置を示す論理アドレス(LBA(C))とデータのサイズ(データ量)がデータ付加部40により登録される。
【0114】
この場合、ホスト装置1からのデータに対してSSD3aに対してはパリティデータを付加せず、SSD3bにはホスト装置1からの1回目の書き込みデータD1(図12参照)を分割した分割データa,bから、データ付加部40がパリティデータPabを生成し、そのパリティデータPabを書き込み後は、そのパリティデータPabのデータサイズ分だけずらしたアドレスに次のデータを書き込むようにする。
【0115】
なおパリティデータ付加後の論理アドレス(LBA(C))とデータサイズは、ホスト装置1の指定(論理アドレス(LBA(H))とデータのサイズ)に、予めデータ付加部40により生成されたパリティデータのデータサイズを加算した後の値である。
【0116】
つまりこのパリティデータ管理テーブル44は、ホスト装置から指定されたデータ書込み用のアドレスを、パリティデータを含めて書き込むためのアドレス変換テーブルである。
【0117】
データ付加部40は、データ処理部24とディスクI/F28との間に介挿されている。データ付加部40は、書込み対象のデータD1を2つの分割データa,bに分割し、分割した分割データa,bを、書き込み対象のストレージ装置群が例えばSSD群3であれば、SSD群3ヘストライピング動作により書込み、さらに2つの分割データa,bから生成したパリティデータPabを、制御部43により指示された書込先のSSDに書き込む。
【0118】
例えばSSD毎にパリティデータを付加した総量と閾値との比較の結果、総量が閾値に達していない場合、データ付加部40はSSD群3の一方のSSD3bにだけパリティデータを付加してSSD間で使用差を生じさせる。
【0119】
また、SSD毎にパリティデータを付加した総量が閾値に達して、SSDの記憶領域の使用量がある程度不均一になった場合、データ付加部40はSSD群3の双方のSSD3aとSSD3bにパリティデータを交互に書き込むことで、以降、使用差がそれ以上広がらないようにすることができる。
【0120】
その後、他方のストレージ装置群であるSSD群4が書込み可能となった場合に、データ付加部40は、バッファメモリ23に保持されているデータを他方のストレージ装置群であるSSD群4に上記条件を満たすように書き込む。
【0121】
詳細に説明すると、データ付加部40は、書込み対象のデータD1を2つの分割データa,bに分割し、そのうち一方の分割データaを、書き込み対象のストレージ装置群が例えばSSD群3であれば、SSD3a(第1ストレージ装置)に書込み、また残りの分割データbをSSD群3のSSD3b(第2ストレージ装置)に書き込み、2つの分割データa,bから生成したパリティデータPabを予め設定した条件に従ってSSD3aまたはSSD3bのいずれか一方(この例ではSSD3b)に書き込む。
【0122】
その後、SSD群4が書込み可能になると、データ付加部40は、バッファメモリ23の書込み対象のデータD1を2つの分割データa,bに分割し、そのうち一方の分割データaを、書き込み対象のストレージ装置群であるSSD群4のSSD4a(第1ストレージ装置)に書込み、また残りの分割データbをSSD群4のSSD4b(第2ストレージ装置)に書き込み、2つの分割データa,bから生成したパリティデータPabを予め設定した条件に従ってSSD4aまたはSSD4bのいずれか一方(この例ではSSD4a)に書き込む。
【0123】
但し、SSD群4とSSD群3とで使用差を生じさせるため、データ付加部40は、条件に従ってSSD群4のSSD4aには分割データを3回書き込む毎にパリティデータを1回書き込み、SSD群4のSSD4bには分割データを3回書き込む毎にパリティデータを2回書き込む。
【0124】
ここで、条件には、付加したパリティデータの総量の閾値(例えば1Gbyteなど)があり、この閾値に総量が達したか否かによってパリティデータの書込先を変える。
つまりパリティデータを付加した総量が閾値に達するまではパリティデータをSSD3bにだけ書き込み、総量が閾値に達した後は、パリティデータの書込先をSSD3a→SSD3b→SSD3a…というように交互に変えてパリティデータを書き込む。
【0125】
この例では、パリティデータを付加した総量が閾値(例えば1Gbyteなど)以内であれば、次のパリティデータを一方のSSD3bに書き込み、総量が閾値に達した場合は、以降、パリティデータをSSD3aとSSD3bに交互に書き込む。
【0126】
この第4実施形態の場合、遅延保証のための動作は第1乃至第3実施形態と同じであり、ストライピング動作によりデータの書き込みおよび読み出しを高速化するために1つのデータを書き込むためのSSDを多数構成(グループ構成または群構成という)としている。
【0127】
一方のSSD群3を2台のSSD3a,3bで構成し、他方のSSD群4を2台のSSD4a,4bで構成する。
【0128】
またこの第4実施形態では、各SSD群3,4のSSD3a,3b,4a,4bのうちの一方のSSD(この例ではSSD3b,4b)に書き込むデータは単なるダミーデータではなく、他のデータとの関連のある(意味のある)パリティデータとしている。
【0129】
つまり、この第4実施形態では、書込み対象のデータを分割した上で、ストライピングによりSSD群3のSSD3a,3bに書き込み高速化を図ると共に、一方のSSD3bへパリティデータを付加することにより、SSD3a,3b間の使用差を発生させると共にデータの信頼性を向上し、その後、書込み可能になったSSD群4に、バッファメモリ23に保持されていたデータを分割した分割データをSSD4a,4bに書き込み、さらにこれら分割データから生成したパリティデータをSSD4a,4bに不均一に書き込むことで、SSD3a,3b,4a,4b間の使用差を発生させる。
【0130】
以下、図11,図12を参照してこの第4実施形態の動作を説明する。
この第4実施形態では、監視部26がディスクI/F28を監視し、ホスト装置からのコマンドを受けたデータ処理部24が処理対象のSSDを決定し、書き込みコマンドまたは読み出しコマンドをデータ付加部40へ送るまでの動作(図11のステップS201−S207)は第1実施形態(図3のフローチャート)と同様であり、それ以降の動作について説明する。
【0131】
データ処理部24から、書き込み対象のデータ(例えば図12に示すデータD1)をデータ付加部40が受け取ると、データ付加部40は、受け取ったデータD1を2つの分割データa,bに分割し、分割した2つの分割データa,bのうち一方の分割データaをSSD3aに書込み、残りの分割データbをSSD3bに書き込む(図11のステップS208)。
【0132】
続いて、データ付加部40は、2つの分割データa,bからパリティデータを生成し、生成したパリティデータを、制御部43により指定された書込先のSSDへ書き込む。
この際、計数部41は、データ付加部40により生成されたパリティデータのデータ量を計数(カウント)し、メモリ42に保持する。
【0133】
制御部43はメモリ42のデータ量が更新されるたびに、メモリ42に保持されているパリティデータの付加量(トータルのパリティデータ量(総量))が閾値Sに達したか否かを確認し(ステップS209)、確認結果に応じて書込先をデータ付加部40に指示(制御)する。
【0134】
例えばパリティデータの総量が閾値Sに達していない場合(ステップS209のNo)、制御部43はパリティデータをSSD3bにだけ書き込むようデータ付加部40を制御する。
【0135】
この制御により、データ付加部40は分割データa,bから生成したパリティデータを一方のSSD3bにだけ書き込む(ステップS210)。
【0136】
この後、コマンド応答部22が状態テーブル25を参照した結果、SSD群4が書込み可能になると、データ付加部40は、バッファメモリ23に保持されていた書込み対象のデータとこのデータから生成したパリティデータとをディスクI/F28を通じて書き込み対象のSSD群4に書き込む(ステップS211)。
【0137】
SSD群4の各SSD4a,4bへデータを書き込むにあたり、図12に示すように、SSD群4のSSD4aには、データを3回書き込むうちの1回だけパリティデータを書込み、SSD群4のSSD4bにはデータを3回書き込むうちの残りの2回だけパリティデータを書込むことで、各SSD4a,4bへ書き込むデータ量を不均一にすることができる。
【0138】
このようにすることで、SSD群3,4および各SSD3a〜4bの記憶領域の使用量を不均一にすることができる。
【0139】
また、SSD群へのデータの書き込みが進み、例えば図12のデータD5を書き込む際に、付加するパリティデータの総量が閾値Sに達していた場合(ステップS209のYes)、制御部43は、以降、書き込むデータに付加するパリティデータをSSD3aとSSD3bに交互に書き込むようデータ付加部40を制御する。
【0140】
この制御により、データ付加部40は、書込み対象のデータがデータD5であれば、その分割デーi,jから生成したパリティデータPijをSSD3aに書き込み、次のデータD6のパリティデータPmnについてはSSD3bに書き込むようになる(ステップS212)。
【0141】
言い換えると、SSD群3,4のうちパリティデータ書込み回数が一番多いSSD、例えばSSD3bに、予めパリティデータ書き込みの上限値、例えば閾値Sとして1GByteなどと設定しておき、制御部43は、累積(カウント)されたパリティデータの付加総量(累積値)と閾値Sとを比較し、累積値が例えば1GByteの閾値Sを越えた場合は、以降、パリティデータをSSD3aとSSD3bで交互に書き込ませるようにする。
【0142】
なお、ステップS213−S216の、読み出しコマンドに対するデータの読み出し処理については、第1実施形態(図3のフローチャート)で説明したダミーデータをパリティデータへ変更、およびSSDをSSD群へ変更したものである。
【0143】
この第4実施形態では、ステップS215の処理が第1実施形態とは異なるためその処理を説明する。
【0144】
ステップS215の処理の場合、データ付加部40は、データの読み出しが可能なSSD群の2つのSSDから、読み出し対象のデータの分割データとパリティデータを読み出し、分割データのパリティチェックを行った上で、2つの分割データを1つのデータに結合してデータ処理部24へ渡す。
【0145】
これにより、SSD3a,3b間(およびSSD4a,4b間)で、ある一定の使用量の差が生じれば、それ以上は差が広がらないようになり、各SSD群3,4の片側のSSD3b,4bだけが極端に早く寿命を迎えてしまう、ということがなくなる。
【0146】
このようにこの第4実施形態によれば、4台のSSD3a,3b,4a,4bを利用して、そのうちSSD3a,3bをSSD群3(第1のストレージ装置群)とし、他のSSD4a,4bを、応答時間を保証するためのSSD群4(第2のストレージ装置群)とし、SSD群3の各SSD3a,3bを利用してストライピングを行いながら、2つのSSD群3,4のうちの一方のSSD群を常にデータ読み出し可能な状態としておくことで、個々のSSD3a,3b,4a,4bの寿命の不均一化はもとより、データの書込時間の高速化と応答時間の保証を同時に実現することができる。
【0147】
この結果、各SSDの寿命の不均一化と、データ書み出しおよびデータ読み出しの際のストライピングによる高速化と、応答時間の保証とを同時に実現することができる。
【0148】
以上のように本発明の各実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【0149】
また上記実施形態に示した各構成要素を、コンピュータのハードディスク装置などのストレージにインストールしたプログラムで実現してもよく、また上記プログラムを、コンピュータ読取可能な電子媒体:electronic mediaに記憶しておき、プログラムを電子媒体からコンピュータに読み取らせることで本発明の機能をコンピュータが実現するようにしてもよい。電子媒体としては、例えばCD−ROM等の記録媒体やフラッシュメモリ、リムーバブルメディア:Removable media等が含まれる。さらに、ネットワークを介して接続した異なるコンピュータに構成要素を分散して記憶し、各構成要素を機能させたコンピュータ間で通信することで実現してもよい。
【符号の説明】
【0150】
1…ホスト装置、3,4…ソリッド・ステート・ディスク(SSD)、20…外部インターフェース(外部I/F)、21…タイマー、22…コマンド応答部、23…バッファメモリ、24…データ処理部、25…状態テーブル、26…監視部、27,28…ディスクインターフェース(ディスクI/F)、30,40…データ付加部、31,41…計数部、32,42…メモリ、33,43…制御部、34…ダミーデータ管理テーブル、44…パリティデータ管理テーブル。
【特許請求の範囲】
【請求項1】
ホスト装置と第1および第2のストレージ装置が接続可能なインターフェースを有し、前記第1および第2のストレージ装置とのデータの共通化を行う情報処理装置において、
前記第1および第2のストレージ装置の動作状態が記憶可能なストレージ装置状態管理テーブルと、
前記インターフェースを監視し、前記第1および第2のストレージ装置が書き込み中か読み出し中か待機中かの動作状態を前記ストレージ装置状態管理テーブルに設定する監視部と、
前記インターフェースに接続された前記第1および第2のストレージ装置に書き込むデータを一時保持するためのバッファメモリと、
前記ホスト装置から書き込みの指示と書き込み対象のデータを受信し、前記バッファメモリに保持すると共に、前記第1および第2のストレージ装置へのデータの書き込みを指示するコマンド応答部と、
前記コマンド応答部からの書き込み指示により、前記ストレージ装置状態管理テーブルを参照して前記ストレージ装置の中で、前記データを書き込み可能なストレージ装置に対して前記バッファメモリに保持されていたデータを送るデータ処理部と、
前記データ処理部と前記第1および第2のストレージ装置が接続されるいずれか一方の前記インターフェースとの間に介挿され、前記ストレージ装置へ送られるデータにダミーデータを付加して前記ストレージ装置に書き込むデータ付加部と
を具備する情報処理装置。
【請求項2】
ホスト装置と複数のストレージ装置が接続可能なインターフェースを有し、前記複数のストレージ装置とのデータの共通化を行う情報処理装置において、
前記複数のストレージ装置の動作状態が記憶可能なストレージ装置状態管理テーブルと、
前記インターフェースを監視し、前記複数のストレージ装置が書き込み中か読み出し中か待機中かの動作状態を前記ストレージ装置状態管理テーブルに設定する監視部と、
前記インターフェースに接続された前記複数のストレージ装置に書き込むデータを一時保持するためのバッファメモリと、
前記ホスト装置から書き込みの指示と書き込み対象のデータを受信し、前記バッファメモリに保持すると共に、前記複数のストレージ装置へのデータの書き込みを指示するコマンド応答部と、
前記コマンド応答部からの書き込み指示により、前記ストレージ装置状態管理テーブルを参照して前記複数のストレージ装置の中で、前記データを書き込み可能なストレージ装置に対して前記バッファメモリに保持されていたデータを送るデータ処理部と、
各ストレージ装置毎に付加するダミーデータの異なるデータ量が記憶されたダミーデータ管理テーブルと、
前記データ処理部と前記複数のストレージ装置が接続される少なくとも一つの前記インターフェースとの間に介挿され、前記ダミーデータ管理テーブルを参照して書き込み対象のストレージ装置に対応するデータ量のダミーデータを、当該ストレージ装置へのデータに付加して前記ストレージ装置に書き込むデータ付加部と
を具備する情報処理装置。
【請求項3】
前記データ付加部は、
前記ホスト装置からのデータの読み出しの指示により、前記データ処理部が前記ストレージ装置から読み出するデータから前記ダミーデータを取り除き、前記データ処理部に渡す請求項1または2いずれか記載の情報処理装置。
【請求項4】
メモリと、
前記データに付加した前記ダミーデータのデータ量を計数し前記メモリに保持するダミーデータ量計数部と、
前記メモリに保持された前記ダミーデータのデータ量が予め設定された閾値に達した場合、前記データ付加部に対して以降の前記ダミーデータの付加を停止させる制御部と
を具備する請求項1乃至3いずれか1記載の情報処理装置。
【請求項5】
ホスト装置と第1および第2のストレージ装置が接続可能なインターフェースを有し、前記第1および第2のストレージ装置とのデータの共通化を行う情報処理装置における情報処理方法において、
前記インターフェースを監視し、前記第1および第2のストレージ装置が書き込み中か読み出し中か待機中かの動作状態を、前記第1および第2のストレージ装置の動作状態が記憶可能なストレージ装置状態管理テーブルに設定するステップと、
前記ホスト装置から書き込みの指示と書き込み対象のデータを受信し、バッファメモリに保持すると共に、前記第1および第2のストレージ装置へのデータの書き込みを指示するステップと、
前記書き込み指示により、前記ストレージ装置状態管理テーブルを参照して前記複数のストレージ装置の中で、前記データを書き込み可能なストレージ装置に対して前記バッファメモリに保持されていたデータを送るステップと、
前記第1および第2のストレージ装置のうちの一方のストレージ装置へ送られるデータにダミーデータを付加して前記ストレージ装置に書き込むステップと
を有する情報処理方法。
【請求項6】
ホスト装置と第1ストレージ装置および第2ストレージ装置を有する第1のストレージ装置群とこの第1のストレージ装置群と同じ構成の第2のストレージ装置群とが接続可能なインターフェースを有し、前記第1および第2のストレージ装置群とのデータの共通化を行う情報処理装置において、
前記第1および第2のストレージ装置群の動作状態が記憶可能なストレージ装置状態管理テーブルと、
前記インターフェースを監視し、前記第1および第2のストレージ装置群が書き込み中か読み出し中か待機中かの動作状態を前記ストレージ装置状態管理テーブルに設定する監視部と、
前記インターフェースに接続された前記第1および第2のストレージ装置群に書き込むデータを一時保持するためのバッファメモリと、
前記ホスト装置から書き込みの指示と書き込み対象のデータを受信し、前記バッファメモリに保持すると共に、前記第1および第2のストレージ装置群へのデータの書き込みを指示するコマンド応答部と、
前記コマンド応答部からの書き込み指示により、前記ストレージ装置状態管理テーブルを参照して前記ストレージ装置群の中で、前記データを書き込み可能なストレージ装置群に対して前記バッファメモリに保持されていたデータを送るデータ処理部と、
前記データを2つの分割データに分割し、分割した一方の分割データを当該ストレージ装置群の前記第1ストレージ装置に書込み、分割した残りの分割データを当該ストレージ装置群の前記第2ストレージ装置に書き込み、全てのストレージ装置間でパリティデータの書き込み総量または書き込み比が異なるように予め設定した条件に従って、前記2つの分割データから生成したパリティデータを、書き込み可能なストレージ装置群へ書き込むデータ付加部と
を具備する情報処理装置。
【請求項7】
前記データ付加部は、
前記条件に従って、書き込み可能なストレージ装置群の前記第1ストレージ装置または前記第2ストレージ装置のいずれか一方のストレージ装置にパリティデータを書き込む請求項6記載の情報処理装置。
【請求項8】
前記データ付加部は、
前記第1のストレージ装置群の前記第1ストレージ装置にはパリティデータを書き込まず、前記第2ストレージ装置には前記分割データを書き込む毎に前記パリティデータを毎回書き込み、前記第2のストレージ装置群の第1ストレージ装置には前記分割データを3回書き込む毎に前記パリティデータを1回書き込み、前記第2のストレージ装置群の第2ストレージ装置には前記分割データを3回書き込む毎に前記パリティデータを2回書き込む請求項6記載の情報処理装置。
【請求項9】
書き込み可能な前記ストレージ装置群にデータを書き込んだ後、他方のストレージ装置群が書き込み可能となった場合に、前記バッファメモリのデータを前記他方のストレージ装置群へ前記条件に従って書き込む請求項7または8記載の情報処理装置。
【請求項10】
メモリと、
前記データに付加した前記パリティデータのデータ量を計数し前記メモリに保持するパリティデータ量計数部と、
前記メモリに保持された前記パリティデータのデータ量が予め設定された閾値に達した場合、以降の前記パリティデータを、前記第1ストレージ装置および前記第2ストレージ装置で交互に付加するよう前記データ付加部を制御する制御部と
を具備する請求項6記載の情報処理装置。
【請求項11】
ホスト装置と第1ストレージ装置および第2ストレージ装置を有する第1のストレージ装置群とこの第1のストレージ装置群と同じ構成の第2のストレージ装置群とが接続可能なインターフェースを有し、前記第1および第2のストレージ装置群とのデータの共通化を行う情報処理装置における情報処理方法において、
前記インターフェースを監視し、前記第1および第2のストレージ装置群が書き込み中か読み出し中か待機中かの動作状態を、前記第1および第2のストレージ装置群の動作状態が記憶可能なストレージ装置状態管理テーブルに設定するステップと、
前記ホスト装置から書き込みの指示と書き込み対象のデータを受信し、バッファメモリに保持すると共に、前記第1および第2のストレージ装置群へのデータの書き込みを指示するステップと、
前記書き込み指示により、前記ストレージ装置状態管理テーブルを参照して前記第1および第2ストレージ装置群の中で、前記データを書き込み可能なストレージ装置群に対して前記バッファメモリに保持されていたデータを送るステップと、
前記データを2つに分割した一方の分割データを当該ストレージ装置群の前記第1ストレージ装置に書込み、分割した残りの分割データを当該ストレージ装置群の前記第2ストレージ装置に書き込み、全てのストレージ装置間でパリティデータの書き込み総量または書き込み比が異なるように予め設定した条件に従って、前記2つの分割データから生成したパリティデータを、書き込み可能なストレージ装置群へ書き込むステップと
を有する情報処理方法。
【請求項1】
ホスト装置と第1および第2のストレージ装置が接続可能なインターフェースを有し、前記第1および第2のストレージ装置とのデータの共通化を行う情報処理装置において、
前記第1および第2のストレージ装置の動作状態が記憶可能なストレージ装置状態管理テーブルと、
前記インターフェースを監視し、前記第1および第2のストレージ装置が書き込み中か読み出し中か待機中かの動作状態を前記ストレージ装置状態管理テーブルに設定する監視部と、
前記インターフェースに接続された前記第1および第2のストレージ装置に書き込むデータを一時保持するためのバッファメモリと、
前記ホスト装置から書き込みの指示と書き込み対象のデータを受信し、前記バッファメモリに保持すると共に、前記第1および第2のストレージ装置へのデータの書き込みを指示するコマンド応答部と、
前記コマンド応答部からの書き込み指示により、前記ストレージ装置状態管理テーブルを参照して前記ストレージ装置の中で、前記データを書き込み可能なストレージ装置に対して前記バッファメモリに保持されていたデータを送るデータ処理部と、
前記データ処理部と前記第1および第2のストレージ装置が接続されるいずれか一方の前記インターフェースとの間に介挿され、前記ストレージ装置へ送られるデータにダミーデータを付加して前記ストレージ装置に書き込むデータ付加部と
を具備する情報処理装置。
【請求項2】
ホスト装置と複数のストレージ装置が接続可能なインターフェースを有し、前記複数のストレージ装置とのデータの共通化を行う情報処理装置において、
前記複数のストレージ装置の動作状態が記憶可能なストレージ装置状態管理テーブルと、
前記インターフェースを監視し、前記複数のストレージ装置が書き込み中か読み出し中か待機中かの動作状態を前記ストレージ装置状態管理テーブルに設定する監視部と、
前記インターフェースに接続された前記複数のストレージ装置に書き込むデータを一時保持するためのバッファメモリと、
前記ホスト装置から書き込みの指示と書き込み対象のデータを受信し、前記バッファメモリに保持すると共に、前記複数のストレージ装置へのデータの書き込みを指示するコマンド応答部と、
前記コマンド応答部からの書き込み指示により、前記ストレージ装置状態管理テーブルを参照して前記複数のストレージ装置の中で、前記データを書き込み可能なストレージ装置に対して前記バッファメモリに保持されていたデータを送るデータ処理部と、
各ストレージ装置毎に付加するダミーデータの異なるデータ量が記憶されたダミーデータ管理テーブルと、
前記データ処理部と前記複数のストレージ装置が接続される少なくとも一つの前記インターフェースとの間に介挿され、前記ダミーデータ管理テーブルを参照して書き込み対象のストレージ装置に対応するデータ量のダミーデータを、当該ストレージ装置へのデータに付加して前記ストレージ装置に書き込むデータ付加部と
を具備する情報処理装置。
【請求項3】
前記データ付加部は、
前記ホスト装置からのデータの読み出しの指示により、前記データ処理部が前記ストレージ装置から読み出するデータから前記ダミーデータを取り除き、前記データ処理部に渡す請求項1または2いずれか記載の情報処理装置。
【請求項4】
メモリと、
前記データに付加した前記ダミーデータのデータ量を計数し前記メモリに保持するダミーデータ量計数部と、
前記メモリに保持された前記ダミーデータのデータ量が予め設定された閾値に達した場合、前記データ付加部に対して以降の前記ダミーデータの付加を停止させる制御部と
を具備する請求項1乃至3いずれか1記載の情報処理装置。
【請求項5】
ホスト装置と第1および第2のストレージ装置が接続可能なインターフェースを有し、前記第1および第2のストレージ装置とのデータの共通化を行う情報処理装置における情報処理方法において、
前記インターフェースを監視し、前記第1および第2のストレージ装置が書き込み中か読み出し中か待機中かの動作状態を、前記第1および第2のストレージ装置の動作状態が記憶可能なストレージ装置状態管理テーブルに設定するステップと、
前記ホスト装置から書き込みの指示と書き込み対象のデータを受信し、バッファメモリに保持すると共に、前記第1および第2のストレージ装置へのデータの書き込みを指示するステップと、
前記書き込み指示により、前記ストレージ装置状態管理テーブルを参照して前記複数のストレージ装置の中で、前記データを書き込み可能なストレージ装置に対して前記バッファメモリに保持されていたデータを送るステップと、
前記第1および第2のストレージ装置のうちの一方のストレージ装置へ送られるデータにダミーデータを付加して前記ストレージ装置に書き込むステップと
を有する情報処理方法。
【請求項6】
ホスト装置と第1ストレージ装置および第2ストレージ装置を有する第1のストレージ装置群とこの第1のストレージ装置群と同じ構成の第2のストレージ装置群とが接続可能なインターフェースを有し、前記第1および第2のストレージ装置群とのデータの共通化を行う情報処理装置において、
前記第1および第2のストレージ装置群の動作状態が記憶可能なストレージ装置状態管理テーブルと、
前記インターフェースを監視し、前記第1および第2のストレージ装置群が書き込み中か読み出し中か待機中かの動作状態を前記ストレージ装置状態管理テーブルに設定する監視部と、
前記インターフェースに接続された前記第1および第2のストレージ装置群に書き込むデータを一時保持するためのバッファメモリと、
前記ホスト装置から書き込みの指示と書き込み対象のデータを受信し、前記バッファメモリに保持すると共に、前記第1および第2のストレージ装置群へのデータの書き込みを指示するコマンド応答部と、
前記コマンド応答部からの書き込み指示により、前記ストレージ装置状態管理テーブルを参照して前記ストレージ装置群の中で、前記データを書き込み可能なストレージ装置群に対して前記バッファメモリに保持されていたデータを送るデータ処理部と、
前記データを2つの分割データに分割し、分割した一方の分割データを当該ストレージ装置群の前記第1ストレージ装置に書込み、分割した残りの分割データを当該ストレージ装置群の前記第2ストレージ装置に書き込み、全てのストレージ装置間でパリティデータの書き込み総量または書き込み比が異なるように予め設定した条件に従って、前記2つの分割データから生成したパリティデータを、書き込み可能なストレージ装置群へ書き込むデータ付加部と
を具備する情報処理装置。
【請求項7】
前記データ付加部は、
前記条件に従って、書き込み可能なストレージ装置群の前記第1ストレージ装置または前記第2ストレージ装置のいずれか一方のストレージ装置にパリティデータを書き込む請求項6記載の情報処理装置。
【請求項8】
前記データ付加部は、
前記第1のストレージ装置群の前記第1ストレージ装置にはパリティデータを書き込まず、前記第2ストレージ装置には前記分割データを書き込む毎に前記パリティデータを毎回書き込み、前記第2のストレージ装置群の第1ストレージ装置には前記分割データを3回書き込む毎に前記パリティデータを1回書き込み、前記第2のストレージ装置群の第2ストレージ装置には前記分割データを3回書き込む毎に前記パリティデータを2回書き込む請求項6記載の情報処理装置。
【請求項9】
書き込み可能な前記ストレージ装置群にデータを書き込んだ後、他方のストレージ装置群が書き込み可能となった場合に、前記バッファメモリのデータを前記他方のストレージ装置群へ前記条件に従って書き込む請求項7または8記載の情報処理装置。
【請求項10】
メモリと、
前記データに付加した前記パリティデータのデータ量を計数し前記メモリに保持するパリティデータ量計数部と、
前記メモリに保持された前記パリティデータのデータ量が予め設定された閾値に達した場合、以降の前記パリティデータを、前記第1ストレージ装置および前記第2ストレージ装置で交互に付加するよう前記データ付加部を制御する制御部と
を具備する請求項6記載の情報処理装置。
【請求項11】
ホスト装置と第1ストレージ装置および第2ストレージ装置を有する第1のストレージ装置群とこの第1のストレージ装置群と同じ構成の第2のストレージ装置群とが接続可能なインターフェースを有し、前記第1および第2のストレージ装置群とのデータの共通化を行う情報処理装置における情報処理方法において、
前記インターフェースを監視し、前記第1および第2のストレージ装置群が書き込み中か読み出し中か待機中かの動作状態を、前記第1および第2のストレージ装置群の動作状態が記憶可能なストレージ装置状態管理テーブルに設定するステップと、
前記ホスト装置から書き込みの指示と書き込み対象のデータを受信し、バッファメモリに保持すると共に、前記第1および第2のストレージ装置群へのデータの書き込みを指示するステップと、
前記書き込み指示により、前記ストレージ装置状態管理テーブルを参照して前記第1および第2ストレージ装置群の中で、前記データを書き込み可能なストレージ装置群に対して前記バッファメモリに保持されていたデータを送るステップと、
前記データを2つに分割した一方の分割データを当該ストレージ装置群の前記第1ストレージ装置に書込み、分割した残りの分割データを当該ストレージ装置群の前記第2ストレージ装置に書き込み、全てのストレージ装置間でパリティデータの書き込み総量または書き込み比が異なるように予め設定した条件に従って、前記2つの分割データから生成したパリティデータを、書き込み可能なストレージ装置群へ書き込むステップと
を有する情報処理方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2013−77283(P2013−77283A)
【公開日】平成25年4月25日(2013.4.25)
【国際特許分類】
【出願番号】特願2012−131351(P2012−131351)
【出願日】平成24年6月8日(2012.6.8)
【出願人】(000003078)株式会社東芝 (54,554)
【公開日】平成25年4月25日(2013.4.25)
【国際特許分類】
【出願日】平成24年6月8日(2012.6.8)
【出願人】(000003078)株式会社東芝 (54,554)
[ Back to top ]