以下、本発明の実施の形態を図面に基づいて詳細に説明する。
(実施の形態1)
本発明の実施の形態1におけるディスクアレイ装置について説明する。まず、本発明の各実施の形態で共通となるハードウェア構成を説明し、その後、ハードウェア上で行う特徴的な処理などを説明する。
<ハードウェア構成>
図1(a),(b)は、本発明の各実施の形態のディスクアレイ装置で共通となるディスクアレイ装置のハードウェア構成においてその外観構成を示す図である。(a)は装置正面を、(b)は装置背面を示す。本ディスクアレイ装置100は、ラックフレーム111をベースとして、ラックフレーム111の内側の上下方向に複数段にわたってマウントフレーム112が形成されており、マウントフレーム112に沿って基本筐体120(ディスクアレイ制御筐体)及び増設筐体130(HDD筐体)が引き出し式に装着される構成である。本装置100では、下段に1つの基本筐体120が装着され、上段に複数の増設筐体130が装着可能となっている。各筐体には、本装置100の各種機能を提供するボード(回路基板)やユニットが装備される。基本筐体120は、ディスクアレイ装置のコントローラ10を構成するコントローラボード59等を収容する筐体である。増設筐体130は、HDD30を収容する筐体であり、必要に応じて増設が可能となっている。
本装置100では、基本筐体120と増設筐体130との間の接続部分及び増設筐体130間の接続部分、すなわち電源コントローラボード(56)の部分に対して、後述のエクスパンダ(20)を適用した構成である。このようにエクスパンダを適用することで拡張性の有るディスクアレイ装置が構成できる。
装置正面では、基本筐体120及び増設筐体130において、HDD30が装填されたユニットが複数台並べて装着可能な領域が配されている。各装着位置において、HDD30の装着/取り外しが可能となっている。また基本筐体正面では、バックアップ電源として機能するバッテリーユニット、装置状態を表示する表示パネル、プログラムロード用のフレキシブルディスクドライブ等が配置されている。
装置背面では、基本筐体120及び増設筐体130において電源コントローラボード56や電源ユニット等が配置されている。また基本筐体背面においてコントローラボード59や冷却ファンユニット等が配置されている。
各筐体内には各部間を接続するバックボードが設けられており、バックボードに対して各ボードやユニットや複数のHDD30などが接続される。バックボードでの配線を通じて各部が通信する。
コントローラボード59は、ホストとなる情報処理装置300からの命令に基づきHDD30に対するデータの記憶の制御を行う。コントローラボード59には、ホストとの通信インタフェース、キャッシュメモリ、共有メモリ、HDD30との通信インタフェース、例えばRAID方式による制御や、HDD30の状態監視などの機能を有する回路などが実装されている。なお通信インタフェースやキャッシュメモリ等の各機能をコントローラボードとは別のボードとして実装する形態としてもよい。なお、基本筐体120のHDD30の制御に関するセキュリティを確保するために、2枚のコントローラボード59を冗長に装着させる形態である。
コントローラの有するホストとの通信インタフェースには、ホストと接続するための外部コネクタとして、ファイバチャネルプロトコルで構築されたSAN(Storage Area Network)や、Ethernet(登録商標)などのプロトコルで構築されたLAN(Local Area
Network)、あるいはSCSIなどの所定の規格に準拠したものが設けられている。ディスクアレイ装置は、この外部コネクタに接続される通信ケーブルを介して情報処理装置300と接続される。
電源コントローラボード56は、各筐体間を接続し、筐体間での電源供給等のシステム制御やHDD30に対する制御等を行う。電源コントローラボード56の有するコネクタに外部SASケーブル91が接続され、電源コントローラボード56間が外部SASケーブル91を通じて接続される。電源コントローラボード56は、各筐体における複数のHDD30と、内蔵のSASエクスパンダによりSASやSATA等のプロトコルで通信を行う通信経路によって、通信可能に接続される。電源コントローラボード56は、SASエクスパンダを構成する回路の他にAC/DC電源の状態監視やHDD30の状態監視、HDD30への電源供給の制御などを行う回路が実装されている。なお、電源コントローラボード56の有する電源供給制御機能等の各機能をコントローラボード56側に有する形態としてもよい。
電源ユニットは、AC/DC電源等を備え、HDD30やボード等の筐体内各部にDC電源を供給する。電源ユニットは、電源コントローラボード56と接続され、電源コントローラボード56からの信号により各HDD30に対し電源を供給する。なお、各筐体の電源供給に関するセキュリティを確保するために、各筐体に対し電源コントローラボード56と電源ユニットとを各2台ずつ冗長に装着させる形態である。
筐体に装着・接続されるHDD30として、2.5インチサイズの磁気ディスクと3.5インチサイズの磁気ディスクとは、通信インタフェースが異なるだけではなく、I/O性能、消費電力、寿命の点などで異なっている。2.5インチサイズの磁気ディスクは、3.5インチサイズの磁気ディスクに比べ、I/O性能が優れておらず寿命が短いが、消費電力が少ないという点で優れている。
<システム構成(1)>
図2は、ディスクアレイ装置100に関するシステム構成についての全体の機能ブロック図である。ディスクアレイ装置100を含んで構成される全体のコンピュータシステムは、ディスクアレイ装置100とそのホストとなる情報処理装置300とが、SAN(ストレージ・エリア・ネットワーク)200を介してFC(ファイバチャネル)インタフェースで接続される構成である。なおホスト側との接続はSAN200及びFCに限らず可能である。ディスクアレイ装置100は、コントローラ10、エクスパンダ20、HDD30、及びこれらを接続するバスや物理ポート等の接続部分を有する。コントローラ10−エクスパンダ20のSASの物理リンク(40)において3.0Gbpsのレートを有する。エクスパンダ20−HDD30のSASの物理リンク(50)において1.5Gbpsのレートを有する。
情報処理装置300は、ユーザの使用するパーソナルコンピュータ、ワークステーション、メインフレームコンピュータなどである。情報処理装置300は、ディスクアレイ装置100を利用するためのプログラムやFCに対応してディスクアレイ装置100と通信する通信インタフェース等を備える。情報処理装置300は、ディスクアレイ装置100に対し、HDD30が提供する記憶領域に対するデータのリードやライト等を行うための命令を発行する。ディスクアレイ装置100は、情報処理装置300からの命令の受領に基づきデータのリードやライト等を処理する。
ディスクアレイ装置100において、コントローラ10とHDD30の間の通信接続においてエクスパンダ20を介してSASに従った通信を行う機能を有する。コントローラ10とHDD30がSASエンドデバイスとなる。基本筐体120と増設筐体130の間及び複数の増設筐体130の間における接続部分である電源コントローラボード56に対してSASエクスパンダデバイスを適用した構成である。ディスクアレイ装置100において、エクスパンダ20を備えた増設筐体130を必要に応じて多段に接続することで性能が拡張される。
コントローラ10は、基本筐体120におけるコントローラボード59などに実装される。また本図ではわかりやすくするためにコントローラ10とHDD30の部分とを別筐体に分けて示している。コントローラ10は、エクスパンダ20側と物理リンク(40)で接続する物理ポート(PHY)を複数有する。
エクスパンダ20は、コントローラ10と複数のHDD30の間を相互に接続し、データ転送を中継すると共に、多重化転送等の特殊動作を担う。エクスパンダ20は、各筐体の電源コントローラボード56のうちディスク制御部の部分にSASエクスパンダデバイス及び本実施の形態に特徴的な機能が実装されることで構成された装置である。本図に示すのは各増設筐体130内のディスク制御部に対してSASエクスパンダデバイスを実装した場合の形態であるが、コントローラ10−エクスパンダ20−HDD30の間の接続構成は当該形態に限定されない。エクスパンダ20は、コントローラ10側及び別の増設筐体130内の他エクスパンダ20側と物理リンク(40)で接続し、HDD30側と物理リンク(50)で接続するための、複数の物理ポート(PHY)を有する。コントローラ10−エクスパンダ20−HDD30の間、及び複数のエクスパンダ20間は、SASに基づく通信インタフェースで接続され相互に通信可能である。
HDD30は、SASに対応したHDD(SAS−HDD)、あるいは、SATAに対応したHDD(SATA−HDD)である。低速なSAS−HDDの場合、エクスパンダ20−HDD30のSASの物理リンク(50)において例えば1.5Gbpsのレートであり、コントローラ10側のレートより低速となる。高速なSAS−HDDの場合、エクスパンダ20−HDD30のSASの物理リンク(50)において例えば3.0Gbpsのレートであり、コントローラ10側のレートと同速となる。HDD30は、エクスパンダ20側の物理ポートに対応した図示しない物理ポートを備え、物理リンク(50)で受信したコマンドやデータに基づきディスクに対しブロックやセクタ等の単位でデータをリード/ライトする。HDD30は、システム内においてユニークなアドレス、特にSAS−HDDの場合にはSASアドレスが付与されている。なおSAS−HDDとの通信ではSASプロトコルが、SATA−HDDとの通信ではSATAプロトコルが使用される。
SASシステムはSATAデバイスとの接続性も有し、エクスパンダ10は、SAS−HDD、SATA−HDDのいずれの接続にも対応する。SASプロトコルは、物理層、リンク層、ポート層、トランスポート層などを有する。各層がSASポートに含まれる。物理ポート(図中「Phy」で示す)には、物理層、リンク層が含まれる。トランスポート層は、コマンド、データ、ステータス等をSASフレームにカプセル化しポート層に割り当てる処理などを行う。ポート層は、パケット(フレーム)を送信する物理ポートの選択や、接続が確立後のパケット(フレーム)転送処理などを行う。リンク層は、接続管理のために物理層を制御する。物理層は、ポートライン(バス)上に信号を送出するハードウェアが含まれる。
コントローラ10は、CPU11、メモリ12、チャネル制御部13、データコントローラ14、キャッシュメモリ15、ディスク制御部16、複数の物理ポート(「Phy」)を有する。コントローラ10は、SASアドレス(コントローラアドレス)で識別される。なお、チャネル制御部13やディスク制御部16などが多重化された構成も可能である。
CPU11は、メモリ12を用いて制御プログラムを実行し、コントローラ10の各種機能を実現する。チャネル制御部13は、SAN200に対して接続され、FCプロトコルに従った通信機能(FCインタフェース)を提供する通信処理部である。チャネル制御部13は、ホスト側の通信処理部や他のディスクアレイ装置などとの間で通信を行う。またチャネル制御部13は、データコントローラ14に接続され、キャッシュメモリ15に対してデータをリード/ライトする。
データコントローラ14は、データ分離/統合回路17を有するLSIである。データコントローラ14は、CPU11、チャネル制御部13、キャッシュメモリ15、ディスク制御部16に接続され、各部間でのデータ通信及びデータ処理を行う。データコントローラ14は、キャッシュメモリ15に対して処理データ、特にホストとの転送データのリード/ライトを行う。
キャッシュメモリ15は、ユーザデータやコマンドなどの処理データを記憶するのに使用され、特に多重化転送機能などに係わる転送データが一時的に保持される。例えば、通常アクセス時には、ホストからのリードやライトなどのデータ入出力要求に対応して、チャネル制御部13によりデータコントローラ14を介してキャッシュメモリ15にライトデータ等が格納される。ディスク制御部16は、CPU11からの指示でデータコントローラ14を介してキャッシュメモリ15にコマンドに対応した入出力処理を実行する。
ディスク制御部16は、データコントローラ14及び複数の物理ポートにバスで接続され、エクスパンダ20及びHDD30に対するデータの入出力を処理する。またディスク制御部16は、データコントローラ14を介してキャッシュメモリ15に対してデータをリード/ライトする。ディスク制御部16は、SASに従った通信機能を有する。
データ分離/統合回路17は、多重化転送機能などに係わるデータ分離/統合処理を行う。データ分離/統合回路17では、特殊動作のタイプに応じて、ホスト側からの転送データを統合し、またエクスパンダ20側からの転送データを分離する処理を行う。データ分離/統合回路17による処理については後述する。
コントローラ10及びエクスパンダ20において、複数の物理ポートによりポートグループが構成される。例として8つの物理ポートで2つのポートグループA,Bが構成された形態である。図中、ポートグループAに含まれるバスを実線で、ポートグループBに含まれるバスを点線で示す。コントローラ10側の各物理ポートとエクスパンダ20側の各物理ポートがポートグループで対応する。コントローラ10−HDD30の接続において各物理ポートやポートグループを用いてデータ転送等が可能である。データパス中に障害が有る場合などは、他の物理ポートを選択して切り替えることが可能である。また物理ポート間の1つのポートライン(バス)を用いて多重化転送等が可能である。
エクスパンダ20は、HDD30を制御するディスク制御部としての機能の他、データ分離/統合回路27を有する。エクスパンダ20は、コントローラ10側のディスク制御部16、増設筐体130内に装着・接続されるHDD30、及び他のエクスパンダ20と、それぞれ物理ポート及びバスを通じてSASの物理リンク(40,50)で接続される。例として、前記2系統のポートグループA,Bに対応した物理ポートを有する。図中、エクスパンダ20が有するコントローラ10側との物理ポートは、前記ポートグループに対応した4つの物理ポートをまとめて1つに表わしている。また各物理リンクに関して、細線は1つのポートライン(バス)を、太線は4つのポートラインをまとめたものを表わす。エクスパンダ20間を接続する物理リンクは、例えばコントローラ10側と同様に3.0Gbpsのレートである。エクスパンダ20には、エクスパンダ20の有する2系統のポートグループを通じて増設筐体130内の複数のHDD30すべてがポートライン(バス)を通じて接続される。各HDD30は、2系統のポートグループに対応した2つの物理ポートに対し接続される。
なお物理ポート数、接続可能HDD数などについては本構成に限らず増減可能である。各実施の形態では、コントローラ10−エクスパンダ20−HDD30の通信接続において、物理リンクレートとして、高速の3.0Gbps(コントローラ10側)と低速の1.5Gbps(HDD30側)の組み合わせを基本として記載している。これに限らず、6.0Gbpsと3.0Gbpsの組み合わせや、更にそれらに1.5Gbpsを組み合わせた場合等、他のレートの場合も同様である。
<システム構成(2)>
図3は、ディスクアレイ装置100に関する他のシステム構成についての機能ブロック図である。本構成は、コントローラ10やエクスパンダ20等、ホストからHDD30までのデータパス上の各部を二重化した構成である。一方のパス上で障害が発生した場合等においても他方のパスに切り替えて処理を継続するフェイルオーバや、負荷分散などが可能である。コントローラ10やエクスパンダ20内に備える各部は、前記システム構成と略同様である。本構成の場合でも多重化転送機能などを同様に実行可能である。
各コントローラ10及び各エクスパンダ20は、複数の物理ポートを備えて2系統のポートグループA,Bに対応している。コントローラ10−エクスパンダ20−HDD30の間で、各物理ポートを組み合わせて冗長性を持つように接続される。基本筐体120においてコントローラ#0、#1の2つが接続される。各コントローラ10はチャネル制御部13でSAN200に接続される。各コントローラ10はディスク制御部16に2つのポートグループA,Bが接続される。増設筐体130においてエクスパンダ#0、#1の2つが接続される。各エクスパンダ20は、両方のコントローラ10に接続される。すなわち、コントローラ#0のポートグループAと、コントローラ#1のポートグループAとが、エクスパンダ#0に接続される。コントローラ#0のポートグループBと、コントローラ#1のポートグループBとが、エクスパンダ#1に接続される。一方のポートグループでの接続が不良な場合でも他方のポートグループでの接続に切り替えて継続可能である。また、各エクスパンダ20には、エクスパンダ20の有する複数の物理ポートを通じて増設筐体130内の複数のHDD30すべてがバスを通じて接続される。またエクスパンダ20は、別の増設筐体130内のエクスパンダ20に接続する2系統の物理ポートを有する。図中、4つの物理ポート及び4つのポートラインをまとめて1つで示す。
エクスパンダ20は、エクスパンダ20内で物理ポート間のパスを切り替えるスイッチを有し、データ転送先に応じて切り替えされる。
<コントローラ−エクスパンダの接続>
図4は、ディスクアレイ装置100においてコントローラ10−エクスパンダ20間の接続におけるより詳細な機能ブロック構成を示す。特にデータコントローラ14、ディスク制御部16、エクスパンダ20についての構成を示している。
コントローラ10中のデータコントローラ14は、バッファ141とデータコントロール回路142を有する。データ分離/統合回路17は、バッファ141とデータコントロール回路142の持つ機能により構成される。データコントロール回路142は、バッファ141にデータをバッファリングしながらデータ分離/統合等のデータ処理を行う。
コントローラ10中のディスク制御部16は、2系統のポートグループA,Bに対応したSASプロトコル制御部161と複数の物理ポートとを有する。SASプロトコル制御部161は、データコントロール回路142及びポートグループにバスで接続され、SASプロトコルに従った処理を行う。
エクスパンダ20は、データ分離/統合回路27と、ダイレクタ回路28と、複数の物理ポートとを有する。データ分離/統合回路27は、バッファ271と、XOR回路273を含むデータコントロール回路272とを有する。エクスパンダ20の有する各物理ポートは、ダイレクタ回路28を通じてバスで接続される。またエクスパンダ20の有する物理ポートを通じて別のコントローラ(冗長コントローラ)10または別の増設筐体130のエクスパンダ20に接続される。
ダイレクタ回路28は、エクスパンダ20内の物理ポート間のパスを切り替える。多重化転送等の特殊動作を行わない通常アクセスの場合は、一方の物理ポートからダイレクタ回路28でデータ分離/統合回路27を経由せずにそのまま他方の物理ポートに繋げるパスにする。多重化転送等の特殊動作を行うアクセスの場合は、一方の物理ポートからダイレクタ回路28でデータ分離/統合回路27を経由させてデータ処理を行ってから他方の物理ポートに繋げるパスにする。
データ分離/統合回路27は、特殊動作のためにコントローラ10側と対応した処理を行う。データコントロール回路272は、バッファ271にデータをバッファリングしながらデータ分離/統合等のデータ処理を行う。またデータコントロール回路272は、パリティを用いた処理等の場合にXOR回路273を利用して処理を行う。
<特殊処理>
図5は、本発明の各実施の形態のディスクアレイ装置で行う特殊処理(多重化転送)についての代表的な処理の概要を示す説明図である。本図に示す代表的な処理は特に後述する実施の形態2での処理に対応している。本図では特に二重化転送の場合を示しているが、それ以上の多重化についても同様である。
エンドデバイスとなるコントローラ10とHDD30の間の接続及びそのデータパスにおいて、エクスパンダ20が介在し、エクスパンダ20での処理を通じて特殊動作を実行する。コントローラ10−HDD30のデータパスにおいて、コントローラ10とエクスパンダ20の間の物理リンク40と、エクスパンダ20とHDD30の間の物理リンク50(50a,50b)が存在する。本構成は、コントローラ10側の物理リンクレート(3.0Gbps)に比べて低速な物理リンクレート(1.5Gbps)となるSAS−HDDをHDD30として使用した場合である。
コントローラ10とエクスパンダ20でのデータ分離/統合処理により、特殊動作として多重化転送を行う。多重化転送として、複数のHDD側物理リンク50で転送するデータについて対象として、コントローラ側物理リンク40で多重化して転送を行う。特に二重化転送として、2つのHDD30に対するHDD側物理リンク50で転送するデータについて、コントローラ側物理リンク40で二重化して転送を行う。
図中、多重化対象となるHDD30のセット(グループ)の例として、SAS−HDD#A(30a)、SAS−HDD#B(30b)の2つのHDD30が有る。例えば、HDD30からの読み出し動作により、エクスパンダ20−HDD30aの物理リンク50aにおいて、HDD30aに対して入出力するデータA{A0,A1,……}が転送される。同様にエクスパンダ20−HDD30bの物理リンク50bにおいて、HDD30bに対して入出力するデータB{B0,B1,……}が転送される。A0、B0等を1ワード単位のデータとする。
高速側である物理リンク40において、コントローラ10及びエクスパンダ20は、2つのHDD30a,30bに対して並列的に転送するデータについて、所定データサイズ例えばワード単位で、多重化して転送する。多重化データにおいて、複数系統のデータ(A,B)がワード単位で交互に配置される。例えば、物理リンク40で、多重化データ{A0,B0,A1,B1,……}が転送される。
HDD30への書き込み動作の場合は、コントローラ10は、2つのHDD30に対して転送する2系統のデータA,Bについて、データ分離/統合回路17により統合して、物理リンク40において二重化データとして転送する。エクスパンダ20は、物理リンク40においてコントローラ10側から受信した二重化データを、データ分離/統合回路27により分離して、低速側の2つの物理リンク50において並列的に転送する。
また、エクスパンダ20は、同様にHDD30からコントローラ10方向へは、低速側の2つの物理リンク50においてHDD30側から受信した2系統のデータA,Bを、データ分離/統合回路27により統合して、高速側の物理リンク40において二重化データとして転送する。コントローラ10は、高速側の物理リンク40においてエクスパンダ20側から受信した二重化データを、データ分離/統合回路17により分離して、2つのHDD30からの2系統のデータA,Bとして取得する。
本処理例の場合、低速側の2つの物理リンク50a,50bで略同タイミングで転送されるデータA,Bについて、先頭から1ワード単位で取り出して2つを統合して交互に並べることにより、二重化データは、{A0,B0,A1,B1,……}のようなデータシーケンスになる。なお多重化転送において複数のHDD30との間でデータを並列的に転送するタイミングは、完全に同時である必要はない。
高速側の物理リンク40のレートが低速側のレートの2倍であるので、物理リンク40における二重化転送により、2つの物理リンク50a,50bのデータ転送処理とバランスされる。物理リンクレートの調整のためにALIGN挿入を行わないので、その分、コントローラ10−HDD30の接続及びデータパスにおけるデータ転送効率及びバス使用効率が向上する。
<コマンド>
コントローラ10とエクスパンダ20の間でのデータ通信や制御情報通信のために使用されるコマンドの例について説明する。多重化転送等の特殊動作を行わせる場合、コントローラ10は、エクスパンダ20に対してSASに従ったコマンド(以下、特殊コマンドと称する)を送出し、エクスパンダ20で受領コマンドを解釈して、対応する特殊動作を実行する。各実施の形態では、特殊動作を行わせる場合に、HDD30に対するアクセスに際してエクスパンダアドレスを用いる。エクスパンダアドレスは、システム内でエクスパンダ20をユニークに識別する情報である。特殊動作を行わせる際、コントローラ10は、対象のエクスパンダ20に対して、そのエクスパンダアドレスを宛先アドレスとして用いて、特殊コマンドを送信する。特殊コマンドとしてSASに従ったコマンドである、SSP(Serial SCSI Protocol)コマンドを利用する。エクスパンダ20はコントローラ10から特殊コマンドを受領すると、自分宛てのアドレスである場合に特殊動作を実行する。またエクスパンダ20は、受領コマンドが他のエクスパンダ20宛てである場合は物理リンクを通じて他のエクスパンダ20へ転送する。また、コントローラ10は、エクスパンダ20及びHDD30への通常アクセスは、前記エクスパンダアドレスを用いずにSASプロトコルに従ってそのまま行う。
エクスパンダ20では、基本的にコマンド変換すなわちコントローラ10が実行するようなコマンド処理は行わず、以下の変換動作などを行う。エクスパンダ20は、第一に、コマンド複製及びSASアドレス変換を行う。コマンド複製は、複数の転送先(ターゲット)となるHDD30に対するコマンドの送信のための処理であり、コントローラ10側から受信した特殊コマンドを複製することでHDD30側に送信するコマンドを作成する。SASアドレス変換は、受領コマンド中のエクスパンダアドレスをもとに、エクスパンダ20の持つアドレステーブルを参照しつつ、転送先となるHDD30のSASアドレス(HDDアドレス)に変換する処理である。
エクスパンダ20は、第二に、多重化転送に係わるデータ操作(複製/分離/統合/XOR)及びデータ長の変換を行う。データ操作は、複数のHDD30に対するデータ転送のための転送データの複製、多重化データの分離、複数のデータの統合、パリティ処理のためのXOR演算処理などである。
エクスパンダ20は、第三に、実行時間監視及びエラーコードデータの管理を行う。実行時間監視は、各コマンドに関して設定されている処理制限時間内に、要求されている処理を完了するための管理である。エラーコードデータの管理は、HDD30からのデータリードがエラーの場合などに対応したエラーコードを生成してメモリに保存し、コントローラ10側に報告する等の処理である。
<全体の処理手順>
ディスクアレイ装置100における全体の処理手順について説明する。基本的に下記手順(1)〜(4)に従って処理を行う。ディスクアレイ装置100では、コントローラ10での判断や設定などに基づき、通常アクセスと特殊動作を選択的に実行可能である。
手順(1): ディスクアレイ装置100の起動時に、エクスパンダ20が、接続状態の個々のHDD30及びコントローラ10に対し、レート交渉(ネゴシエーション)を行う。レート交渉により、各物理リンク(40,50)におけるデータ転送速度(物理リンクレート)が確保される。例えば、物理リンク40が3.0Gbps、物理リンク50が1.5Gbpsと定まる。なおこのレート交渉は、前記物理リンクレート間の調整のためのレート・マッチングとは異なる処理であることに注意しておく。またレート交渉を含む処理により、エクスパンダ20内に各部間の相互接続のためのアドレステーブルが作成される。アドレステーブルにおいて、エクスパンダ20の有する物理ポートに対するコントローラ10やHDD30や他エクスパンダ20の間での接続構成がマッピングされる。アドレステーブルは接続構成の変化に伴い更新される。
手順(2): コントローラ10が、個々のHDD30に対する速度情報を通常アクセスにより調査する。調査により、各物理リンクにおける実データ転送速度が認識される。
手順(3): コントローラ10は、コントローラ10側とHDD30側とのレート比率を計算し、計算した比率に従って、実行対象となる特殊動作のタイプや、多重化転送の対象となるHDD30のセット(グループ)化、多重化の度合いなどの処理属性を決定する。コントローラ10は、最大で前記計算したレート比率までの多重化を行うように決定する。例えば、コントローラ10と2つのHDD30の接続において物理リンクレートが3.0Gbpsと1.5Gbpsの組み合わせである場合に、レート比率が2倍であることから、前記2つのHDD30を対象として二重化転送を行うことを決定する。また例えば、コントローラ10側とHDD30側のレートが同速の場合に、当該HDD30に対して通常アクセスを行うことを決定する。また多重化転送の対象は、HDD単位としてもよいし、データ単位としてもよい。
手順(4): コントローラ10は、実行対象となる多重化転送等の特殊動作についての指示を、エクスパンダ20に対して特殊コマンドにより行う。特殊コマンドの発行は、例えば、図6に示す既存のSSPフレームヘッダ内のSASアドレス指定領域を加工することで行う。SASアドレス指定領域に特殊動作の指示を記述する。エクスパンダ20に特殊コマンドを解釈させて各種特殊動作を実現する。エクスパンダ20−HDD30でのコマンド送信では、エクスパンダ20内に持つアドレステーブルにより変換された通常のSASアドレス(ハッシュ処理済)が使用される。
図6は、SASにおけるSSPフレーム及びSASアドレスのフォーマットを示す。SSPフレームヘッダ(24バイト)で、バイト1〜9におけるSASアドレス指定領域(9バイト)は、宛先SASアドレス領域(Hashed Destination SAS address Fields)、ソースSASアドレス領域(Hashed Source
SAS address Fields)、リザーブ領域(Reserved Field)を有する。また、SASアドレスファーマットにおいて、8バイトのSASアドレスを有するが、SSPフレームでは、ハッシュ処理により短縮化されたデータ(24ビットハッシュ値)となる。
特殊コマンドの発行は、前記SASアドレス指定領域において、リザーブ領域への値の設定や、本システム内でのみ有効かつユニークなプライベートSASアドレスの使用などにより可能である。例えば、SASの規格に基づいて、実際には通常アクセスで使用されないSASアドレス(例えば24ビットハッシュ値「000000h」など)の中からいくつかを用いて特殊コマンドとして使用することが可能である。SASアドレス及びハッシュ処理などについては、前記非特許文献1の項4.2.2などに記載されている。
図7は、各実施の形態で使用する特殊コマンドの形式例を示す。前記SSPコマンドフレームのSASアドレス指定領域を加工して特殊コマンド領域とした場合である。例として、前記SASアドレス指定領域内のリザーブ領域を使用して、特殊動作の処理属性や物理ポートの指定などを行う。特殊動作及び関連処理としては、各実施の形態で示す、多重化転送、二重書き、パリティ処理、情報報告、データ圧縮/伸張など、及びそれらの組み合わせがある。特殊コマンドでこれら各処理を指定可能とする。
特殊コマンドにおけるバイト1〜3は、前記宛先SASアドレス領域であり、当該領域を前記エクスパンダアドレスの指定に用いる。バイト5〜7は、前記ソースSASアドレス領域である。バイト4における2ビットのフラグ領域は、特殊動作に関するモードやパターンを指定するために用いる。バイト4における6ビットのコマンド領域は、リード/ライト等の動作の指定に用いる。バイト8,9の物理ポート指定領域は、エクスパンダ20−HDD30の物理リンク50において使用対象となる物理ポートの指定などに用いる。例として4×4ビットを用いて4つの物理ポート情報(物理ポートNo.1〜No.4)を指定可能な形式である。当該物理ポート情報の指定は、物理ポート番号や物理ポート範囲等により行う。
コントローラ10は、前記フラグ領域及びコマンド領域を使用して各種特殊動作を指定する。前記フラグ領域の使用に関して、図中右側にフラグ例を示す。例えば、フラグ値“00”で二重化転送処理を指定する。同様に、“01”で四重化転送処理、“10”で二重書き処理、“11”で二重化かつ二重書き処理などのように処理のモードやパターンを指定する。例えば、いくつかの特殊処理の組み合わせをパターンとして設定しておいて使用する。
前記コマンド領域の使用に関しては、例えば、内部データコピー(実施の形態2)、ライト時のパリティ自動生成(実施の形態5)、リード時のパリティによる自動データ復元(実施の形態5)、スペアHDD(スペアディスク)へのパリティによるデータ復元(実施の形態5)、リード時のミラーHDDによる自動データ復元(実施の形態6、実施の形態7)、スペアHDDへのミラーHDDによるデータ復元(実施の形態6、実施の形態7)、物理ポート組み合わせ可否の問い合わせ(実施の形態9)などの処理も値で指定可能とする。
<ALIGNプリミティブの挿入を行う場合>
図8は、本発明の各実施の形態との比較のために、本発明の前提技術として、ディスクアレイ装置に単純にSASを適用した構成において、SASの標準に従ってALIGNプリミティブの挿入を行う場合の処理のモデルを表わす説明図である。コントローラ、エクスパンダ、及びHDDの間における、処理及びデータ(コマンド及び記憶対象データ)の流れを示している。また特に、ホストとなる情報処理装置からのライト命令に応じてディスクアレイ装置においてHDD{ドライブA,ドライブB}に対するデータのライトを行う場合について示す。
前提技術では、ディスクアレイ装置に対して、コントローラ−HDDにおけるデータ転送のインタフェースとしてSASが適用され、物理リンクを介してエクスパンダを接続する形態で、コントローラ−エクスパンダ−HDDの接続及びそのデータパスにおいて、SASの標準に従ってデータのリード/ライト等のためのデータ転送が行われる。また、エクスパンダに対して、コントローラ−エクスパンダの物理リンクレートよりも低速な物理リンクレートで、SASに対応した複数のHDD(SAS−HDD)が接続される場合が考えられる。本図に示す構成は、コントローラ−エクスパンダの物理リンクのレートは3.0Gbps、エクスパンダ−HDDの物理リンクのレートは1.5Gbpsであり、レート比率が2倍の場合の例である。
上記のように単純にSASを適用した構成において、コントローラ側の物理リンクよりもHDD側の物理リンクの方が低速のレートになる場合では、コントローラ−HDDの接続でのデータ転送において前記SASにおけるALIGNプリミティブの挿入が行われることになる。通常アクセスにおいて、SASの標準に従って物理リンク間のレート・マッチング等により、高速側となるコントローラ側の物理リンクにおいて転送データにALIGNプリミティブの挿入が行われる。
図8で、コントローラは、キャッシュメモリに、ホストやHDDからのデータを一時的に保持する。例として、ホストから受領した、2つのHDD{ドライブA,ドライブB}に対するライトデータ{データA(ドライブA用データ)、データB(ドライブB用データ)}をそのままの状態でキャッシュメモリに一時的に保持する様子を示す。
コントローラは、処理のターゲットとなるHDDごとにコマンドを発行する。コントローラは、ドライブAへライトコマンド及びデータAを、ドライブBへライトコマンド及びデータBを、順に発行する。コントローラは、この際、コントローラ側の物理リンクレートとターゲットHDD側の物理リンクレートが異なる場合に、コントローラ側物理リンクで、1ワードの転送データ(前記ライトコマンドやライトデータなど)ごとにALIGNプリミティブを挿入して転送する。ワード(dword)はSASにおけるデータ処理単位である。前記ALIGNプリミティブ挿入により、コントローラ−HDDの接続におけるレート(接続レート)が調整されることとなる。すなわち、高速側のコントローラ側物理リンクのレートを低速側のHDD側物理リンクのレートに合わせた接続レートとなる。例えば本構成の場合はレート比率が2倍なので、1ワードの転送データに対し1ワード分に相当するALIGNが挿入される。コントローラは、エクスパンダ側への物理ポートに、前記ライトコマンド及びライトデータを送出する。以下、1ワード単位のデータに対応する転送処理時間をtとする。コントローラ側物理リンクにおいて、ALIGNプリミティブを含めた2ワード分のデータが2tの転送処理時間で転送される。
エクスパンダは、コントローラからHDDへの前記コマンド及びデータの中継・配信を行う。エクスパンダは、コントローラ側物理リンクを通じて前記転送データを順に受け取り、エクスパンダ内に有するSASアドレステーブルによりアドレス変換を行って、ターゲットの各HDD{ドライブA,ドライブB}に対して対応する各物理ポートを通じて転送データ(ライトコマンド及びライトデータ)を送信する。この際、エクスパンダは、前記ALIGNプリミティブを取り除いたデータを低速側の物理リンクで転送する。このデータ転送では1ワード単位のデータに対応して2tの処理時間を要する。エクスパンダは、ドライブAへライトコマンド及びデータAを順に転送し、ドライブBへライトコマンド及びデータBを順に転送する。各HDDは、受信したライトコマンドに基づきライトデータをディスクに記憶する。
ホストからのHDDに対するデータのリード時は、上記ライト時と逆の流れの処理になる。すなわち、エクスパンダは、HDDからのリードデータにALIGNプリミティブを挿入してコントローラ側に転送する。コントローラは、エクスパンダからの転送データからALIGNプリミティブを取り除いてホストに対するデータとする。
以上のように、コントローラ−HDDの接続においてALIGN挿入を行う場合、その分、コントローラ側物理リンクにおいてデータ転送効率が低下する。例えば本構成の場合、コントローラ側物理リンクにおいてHDD側のレートに合わせて3.0Gbpsから1.5Gbpsに低下する。
<多重化転送>
図9は、実施の形態1におけるディスクアレイ装置での特殊処理(多重化転送)のモデルを表わす説明図である。コントローラ10、エクスパンダ20、及びHDD30の間における、処理及びデータ(コマンド及び記憶対象データ)の流れを示している。コントローラ側物理リンク40のレートは3.0Gbps、HDD側物理リンク50のレートは1.5Gbpsであり、レート比率が2倍である。また、ホストとなる情報処理装置300からのライト命令に応じて、ディスクアレイ装置において特に2つのHDD30{ドライブA,ドライブB}に対するデータのライトを行う場合について示す。
実施の形態1では、特殊動作として、コントローラ側物理リンク40において、複数(特に2台)のHDD30に対する転送データを対象として、前記ALIGNプリミティブの挿入は行わずに、多重化して転送し、複数のHDD側物理リンク50において分散、すなわち並列的なデータ転送を行う。特に、エクスパンダ20に接続された、物理リンクレートが同じになるHDD30を多重化転送の対象とする。実施の形態1での多重化転送は、コントローラ側物理リンク40において単純に単一あるいは複数の系統のデータを順に送信するものである。当該特殊動作に関して、コントローラ10は特別なデータ操作を行わず、エクスパンダ20はデータ操作として複数(2台)のHDD30へのデータの分散のためのデータ分離/統合処理を行う。特にエクスパンダ20は、複数(2台)のHDD30との間で、ストライプ単位でデータを分離して分散する。本図は特に2台のHDD30を組にしてそれを対象に二重化転送を行う場合を示すもので、HDD30の組に対しデータをストライピング(分割)して記憶するRAID方式に対応したものである。
図9で、ホストからのライト要求時、コントローラ10(特にチャネル制御部13及びデータコントローラ14)は、キャッシュメモリ15に、ホストからのライトデータ{データA、データB}をそのままの状態で一時的に保持する。例えば、データA、データBは、各HDD30へのストライピングデータである。
コントローラ10(特にデータコントローラ14)は、二重化転送対象とする、2台のHDD30に対するライトデータ(A,B)に関して、各HDD30にライトコマンドを発行するのではなく、エクスパンダ20に対して二重化転送を指示するライトコマンドを特殊コマンドとして発行する。当該特殊コマンドは、ターゲットの各HDD30へ発行されるライトコマンドを作成するための複製元となる。コントローラ10は、当該特殊コマンドを、その宛先にエクスパンダアドレスを指定して発行する。コントローラ10は、エクスパンダ20に対し、物理リンク40の物理ポートで、前記特殊コマンド、データA,Bを、順に転送する。例えばデータAがnワードからなるとき、その転送処理時間がntである。なおコマンドは複数ワードから成るが、図中では簡単のために1ワードの大きさで略して示す。
エクスパンダ20は、コントローラ10側からの特殊コマンドに基づき、コントローラ10とHDD30との間の接続において特殊動作を行う。エクスパンダ20は、コントローラ10側から前記特殊コマンド及びデータA,Bを順に受信する。この際、エクスパンダ20は、バッファに前記特殊コマンド及びデータA,Bをバッファリングする。エクスパンダ20は、データ分離/統合回路27での処理を通じて、前記特殊コマンドを複製して、エクスパンダ20内に有するアドレステーブルにより宛先等のアドレスの変換を行って、ターゲットとなる各HDD30にライトコマンド及びライトデータを配信する。エクスパンダ20は、前記特殊コマンドを複製して、前記アドレス変換により宛先アドレスをターゲットHDDのSASアドレスに変えることにより、各HDD30に対するライトコマンドを作成する。エクスパンダ20は、2つのHDD側物理リンク50で、前記ライトコマンド及びライトデータをHDD30に対して転送する。HDD側物理リンク50では1ワード単位のデータに対応して2tの転送処理時間を要する。各HDD30は、HDD側物理リンク50で受信したライトコマンドに基づきライトデータをディスクに記憶する。
ホストからのHDD30に対するデータのリード時は、上記ライト時と逆の流れの処理になる。すなわち、エクスパンダ20は、二重化転送対象である2台のHDD30から並列的にデータをストライプ単位でリードし、データ分離/統合回路27での処理を通じて各リードデータを統合して多重化データとしてコントローラ側物理リンク40で転送する。コントローラ10は、エクスパンダ20からの転送データをデータ分離/統合回路17により分離してホストに対するデータとする。
なお図中に示すように、上記特殊動作において、エクスパンダ20は、前記各HDD30にコマンド及びデータを送出する際、前記特殊コマンドの複製により、ドライブBに対するコマンドの送信については、ドライブAに対するコマンドの送信と同時に実行できる。しかしながら、エクスパンダ20において、ドライブAに対するデータAの転送が終了するまでの時間(nt)は、コントローラ10側からデータBが到達しないため、ドライブBへのデータ転送の処理を待たせることとなる。
また本構成ではコントローラ10側のレートがHDD30側より高速であるため、エクスパンダ20にデータを一時的に蓄積するための比較的大きな容量のバッファが必要となる。但しコントローラ側物理リンク40におけるバス占有時間は前提技術に対して単純比較で1/2(半分)となり、トラフィックが軽減され処理効率が向上する。これはライト時だけでなくリード時も同様である。コントローラ10でディスクのベリファイや読み捨て動作をホストのコマンド要求に対する応答動作と同時に実行しているような場合において、トラフィック軽減が可能なことから、前提技術に比べてホスト要求の実行性能を著しく改善することが可能である。なお前記読み捨て動作は、コントローラ10がHDD30からデータをリードしてチェックし、ホストにはデータを返さない動作である。
(実施の形態2)
次に、図10(a),(b)は、実施の形態2におけるディスクアレイ装置での特殊処理のモデルを表わす説明図である。(a)は、コントローラ10、エクスパンダ20、及びHDD30の間における、処理及びデータの流れを示している。(b)は、コントローラ10と各HDD30における入出力データと時間の関係を示している。コントローラ側物理リンク40のレートは3.0Gbps、HDD側物理リンク50のレートは1.5Gbpsであり、レート比率が2倍の場合である。また、ホストからのライト命令に応じてディスクアレイ装置においてHDD30{ドライブA,ドライブB}に対するデータのライトを行う場合について示す。
実施の形態2は、実施の形態1を変形したものであり、特殊動作として、複数(特に2台)のHDD30をセットにしたRAID方式に対応した多重化転送を行う。コントローラ側物理リンク40で転送データを多重化して転送する。エクスパンダ20に接続された物理リンクレートが同じになる複数のHDD30を多重化転送対象として、エクスパンダ20により1ワード単位で複数のHDD側物理リンク50における分散を行う。実施の形態2での多重化転送は、コントローラ側物理リンク40において単純にデータを順に送信するものである。当該特殊動作に関して、コントローラ10は特別なデータ操作を行わず、エクスパンダ20はデータ操作として複数(2台)のHDD30へのワード単位でのデータの分散を行う。本図は特に二重化転送を行う場合を示し、低速側の2台のHDD30を組にしてデータを分散して記憶するRAID方式に対応した処理である。
図10(a)で、ライト要求時、コントローラ10は、キャッシュメモリ15に、ホストからのライトデータをそのままの状態で一時的に保持する。当該ライトデータは、ライト先となるHDD30のセットに1ワード単位で交互に分散して記録されるもので、どちらか一方のHDD30のデータとしては特に定めない。
コントローラ10は、多重化(二重化)対象とするライトデータに関して、エクスパンダ20に対して多重化転送を指示する特殊コマンドを発行する。当該特殊コマンドは、複数のHDD30に配信するコマンドを作成するための複製元となる。コントローラ10は、当該特殊コマンドを、宛先にエクスパンダアドレスを指定して発行する。また、コントローラ10は、特殊コマンドの物理ポート領域で、多重化転送の対象となる物理ポート番号などを指定する。コントローラ10は、高速側物理リンク40で、エクスパンダ20に対し、前記特殊コマンド及び多重化データを、順に転送する。本図では、多重化データについて、1ワード単位のデータシーケンス{A,B,C,D,E,F,G,H,……,X,Y,……}として示す。
エクスパンダ20は、コントローラ10側から前記特殊コマンド及び多重化データを順に受信して、データ分離/統合回路27により多重化データの分離を行う。エクスパンダ20は、特殊コマンドを複製し、アドレステーブルによりアドレス変換を行って、ターゲットとなる各HDD30にライトコマンド及び1ワード単位に分離されたライトデータを配信する。また、エクスパンダ20は、特殊コマンド内に含まれる物理ポート情報に対応して指定の物理ポートで分散を行う。エクスパンダ20は、複数(2つ)の低速側の物理リンク50で、前記ライトコマンド及び分離されたライトデータをHDD30に対して転送する。例えば、ドライブAにコマンドデータ、ライトデータ{A,C,……}が順に送信され、ドライブBにコマンドデータ、ライトデータ{B,D,……}が順に送信される。各HDD30は、受信したライトコマンドに基づき、前記分離されたライトデータをディスクに記憶する。
ホストからのHDD30に対するデータのリード時は、上記ライト時と逆の流れの処理になる。すなわち、エクスパンダ20は、多重化対象である複数(2台)のHDD30からデータをワード単位でリードし、リードデータを統合して多重化データとしてコントローラ10側に転送する。コントローラ10は、エクスパンダ20からの転送データを分離してホストに対するデータとする。
図10(b)に示すように、入出力データと時間の関係は、コントローラ10側からエクスパンダ20に対して前記ワード単位のデータ{A,B,C,D,……}が順に送信された場合において、転送遅延時間を除いて、同タイミングでドライブAにデータ{A,C,E,G,……}のように対応して記憶される。この処理とtの時間の遅れのタイミングでドライブBにデータ{B,D,F,H,……}のように対応して記憶される。
実施の形態2では、実施の形態1とは異なり、HDD30へのデータ転送に伴う処理待ち時間(前記nt)が不要となるため、その分効率がよい。また「コントローラ側のデータ転送速度(3.0Gbps)=ドライブA側のデータ転送速度(1.5Gbps)+ドライブB側のデータ転送速度(1.5Gbps)」の関係となり、速度調節用バッファが原理的には不要となるため、必要最小限の構成で済む利点がある。なお対象とする複数のHDD30側のレートがそれぞれ異なる場合は、エクスパンダ20に速度調節用バッファ等が必要になる。また、リード/ライトデータに限らず各HDD30へのコマンドについても本実施の形態2での処理で分離/統合して多重化転送することが可能である。
また物理リンクレートにおける3.0Gbpsと1.5Gbpsの組み合わせによる二重化転送に限らず、コントローラ10側のレートが6.0Gbpsの場合にHDD30側のレートとして4台の1.5GbpsのレートのHDD30に対する四重化転送などが同様に可能である。この場合、特殊コマンドの物理ポート指定領域で、四重化転送の対象となる4つの物理ポートを指定する。
実施の形態2での特殊処理は、すべてのRAIDタイプに適用可能で、RAIDレベルとして特に{0,3,4,5}で適用可能である。この各RAIDレベルに適用した場合のコントローラ10の負荷は{中,小,中,中}となる。RAID3のとき特に負荷が小さい。実施の形態2でHDD30側のレートが低速(1.5Gbps)で二重化転送を行う場合において、前提技術(ALIGN挿入を行う構成)と比較した性能比は、HDDが高速(3.0Gbps)の場合と単純比較した場合に1.0(同一性能)、HDDが同速(1.5Gbps)の場合と単純比較した場合に2.0(2倍の性能)である。同様に、実施の形態2でHDD30側のレートが低速で四重化転送を行う場合において、前提技術との性能比は、HDDが高速の場合と比較して1.0、HDDが同速の場合と比較して4.0である。
次に、図11(a),(b)は、実施の形態2での特殊動作を実際のRAID方式に応用する場合の設定について示す説明図である。(a)は、実施の形態2での特殊動作に対応したRAIDグループについて示す。(b)は、前記RAIDグループについての設定画面及び設定例について示す。
図11(a)で、上側に示すように、ディスクアレイ装置において、まず単純に物理的なHDD30を複数台、例えば2台組み合わせて、この物理HDDセット(組)により、容量およびデータ転送速度が複数倍(2倍)となる仮想HDDを作成(設定)する。仮想HDDを構成する物理HDDセットのHDD台数は、コントローラ10側とHDD30側との物理リンクのレート比などのシステム構成に基づき決定する。必要に応じて複数の仮想HDDを作成する。そして、下側に示すように、作成した1つ以上の仮想HDD上にRAIDグループを構築する。例えば複数の仮想HDD{#0〜#n}上に1つのRAIDグループを設定する。この仮想HDDを用いた設定方式により、すべてのRAID方式に対応することが可能である。上記設定方式を用いた処理形態はシンプルなため、エクスパンダ20側のみ回路追加すればよく、小規模回路で実現が可能である。またコントローラ10側では特別なデータ操作は必要無く、データ位置および対象HDD30の管理をソフトウェア的に行うだけでよい。
図11(b)で、ディスクアレイ装置のユーザは、ディスクアレイ装置に接続される情報処理装置300や保守装置などに備えたソフトウェア上で入力操作を行うことで、前記RAIDグループ等についての設定を行う。上側は、エクスパンダ20に接続されている複数の物理的なHDD30により物理HDDセットを構成した例を示す。下側は、物理HDDセットの構成に対応して仮想HDDを構成した例を示す。RAIDグループ等についての設定手順は、以下のようになる。ユーザは、まず、利用可能な複数のHDD30のうち、物理リンクレート比などに応じて任意の複数台のHDD30を選択して仮想HDDへの割り当てを行う。例えば物理HDD#0と#1によるセットで1つの仮想HDD#0が構成される。同様に、必要な分だけ仮想HDDの設定を繰り返して、複数の仮想HDDを構成する。例えば物理HDD#0〜#11の中から任意に用いて同様に仮想HDDへの割り当てを行い、全部で6つの仮想HDD#0〜#5が構成される。次に、構成済みの仮想HDDから任意に組み合わせてその上にRAIDグループを設定する。またあるいは、構成済みの仮想HDDから任意をスペア(スペアHDD)として割り当てる。例えば5つの仮想HDD#0〜#4を用いてその上にRAIDグループを作成し、また1つの仮想HDD#5をスペアHDDに割り当てる。次に、上記手順で設定したRAIDグループを、論理ユニット(LU)や論理ボリューム等へ割り当てる。例えば前記仮想HDD#0〜#4上のRAIDグループについて、RAIDレベルをRAID5、LU番号をLU0として論理ユニットへの割り当てを行う。
ディスクアレイ装置は、上記設定で作成されたRAIDグループを対象として実施の形態2の特殊動作を実行する。前記図10に示すドライブA,Bに対する多重化転送処理例が1つの仮想HDDに対する処理に対応する。また例えば、コントローラ10側の物理リンクレートが6.0Gbpsの場合には、HDD30側の物理リンクレートが1.5Gbpsの4台を組み合わせて仮想HDDを構成する。なお、前記RAIDグループを構成するHDD数が奇数の場合など、前記仮想HDDとなる物理HDDセットが組めない最後の1台のHDD30については、従来方式で処理するか、あるいはダミーデータとの混合を行って仮想HDDを構成する処理形態などとする。この場合に関しては、前述したような性能向上効果よりは低い効果となる。
図12は、実施の形態2での特殊動作を、ディスクアレイ装置の内部でのデータコピー動作へ応用する場合の処理について示す説明図である。データバックアップ等のために行われる、ホストを介さないディスクアレイ装置内部でのデータコピー動作(以下、内部データコピーと称する)に、実施の形態2の特殊動作を使用可能である。
内部データコピー実行時、コントローラ10は、前記多重化転送を使用して、エクスパンダ20を介してコピー元データを有するHDDグループ(例えばHDDグループA)からコピー元データである複数のデータ(例えばA〜D)をリードする。そして、コントローラ10は、前記多重化転送を使用して、エクスパンダ20を介してコピー先データを格納するHDDグループ(例えばHDDグループB)へ、前記リードした複数のデータ(A〜D)をライトする。コントローラ側物理リンク40においてコピーデータが多重化転送され、複数のHDD側物理リンク50において分散される。これにより、内部データコピーにおいてもそのリード/ライトの動作ごとに高速化が実現される。
実施の形態2での特殊処理を内部データコピーに使用した処理は、RAIDレベルとして{0,1,3,4,5,0+1,3+1,4+1,5+1}で適用可能である。この各RAIDレベルに適用した場合のコントローラ10の負荷は小となる。実施の形態2でHDD30側のレートが低速で二重化転送を使用して内部データコピーを行う場合において、前提技術との性能比は、HDDが高速の場合と比較して1.0、HDDが同速の場合と比較して2.0である。
(実施の形態3)
次に、図13(a),(b)は、実施の形態3におけるディスクアレイ装置での特殊処理のモデルを表わす説明図である。(a)は、コントローラ10、エクスパンダ20、及びHDD30の間における、処理及びデータの流れを示している。(b)は、コントローラ10と各HDD30における入出力データと時間の関係を示している。コントローラ側物理リンク40のレートは3.0Gbps、HDD側物理リンク50のレートは1.5Gbpsであり、レート比率が2倍の場合である。また、ホストからのライト命令に応じてディスクアレイ装置においてHDD30{ドライブA,ドライブB}に対するデータのライトを行う場合について示す。
実施の形態3は、実施の形態2を応用したものであり、特殊動作として、コントローラ10側で複数系統のデータをあらかじめ整列・並び替え等することで、物理的なHDD30単位でのRAID構成及び制御を行う。同一RAIDグループ内の任意のHDD30をセットにして多重化転送を行う。コントローラ側物理リンク40で転送データを多重化して転送する。実施の形態3での多重化転送は、コントローラ側物理リンク40において整列データを送信するものである。エクスパンダ20により1ワード単位で複数のHDD側物理リンク50における分散を行う。当該特殊動作に関して、コントローラ10はデータ操作としてRAID構成に対応したデータ整列を行い、エクスパンダ20はデータ操作として複数(2台)のHDD30へのワード単位でのデータの分散を行う。本図は特に二重化転送を行う場合を示す。
図13(a)で、ライト要求時、コントローラ10は、キャッシュメモリ15に、ホストからのライトデータ{データA、データB}をそのままの状態で一時的に保持する。データAのライト先はドライブA、データBのライト先はドライブBである。データA,Bのワード単位のデータシーケンスは、それぞれ{A0,A1,……,An}、{B0,B1,……,Bn}とする。
コントローラ10は、データ分離/統合回路17により、多重化(二重化)対象とする複数(2つ)のライトデータ(A,B)に関して、対象HDD30のRAIDグループの構成に対応してワード単位でデータA,Bを整列する。整列したデータが{A0,B0,A1,B1,……,An,Bn}となる。コントローラ10は、前記実施の形態と同様に、エクスパンダ20に対して多重化転送を指示する特殊コマンドを発行する。コントローラ10は、高速側物理リンク40で、エクスパンダ20に対し、前記特殊コマンド及び多重化データを、順に転送する。多重化データは、整列データ{A0,B0,A1,B1,……,An,Bn,……}である。
エクスパンダ20は、コントローラ10側から前記特殊コマンド及び多重化データを順に受信して、データ分離/統合回路27により多重化データの分離を行う。エクスパンダ20は、特殊コマンドを複製し、アドレステーブルによりアドレス変換を行って、ターゲットとなる各HDD30にライトコマンド及び1ワード単位で分離されたライトデータを配信する。エクスパンダ20は、複数(2つ)の低速側の物理リンク50で、前記ライトコマンド及び分離されたライトデータをHDD30に対して転送する。エクスパンダ20での分散時、転送データはコントローラ10側で整列済みであるので、そのまま指定の物理ポートで順に転送すればよい。ドライブAに対してデータA、ドライブBに対してデータBが転送される。各HDD30は、受信したライトコマンドに基づき前記分離されたライトデータをディスクに記憶する。
ホストからのHDD30に対するデータのリード時は、上記ライト時と逆の流れの処理になる。すなわち、エクスパンダ20は、多重化対象であるRAIDグループに対応した複数(2台)のHDD30からデータをワード単位でリードし、統合してコントローラ10側に転送する。コントローラ10は、エクスパンダ20からの転送データを整列してホストに対するデータとする。
図13(b)に示すように、入出力データと時間の関係は、例えばコントローラ10側から整列データ{A0,B0,A1,B1,……}が送信された場合において、転送遅延時間を除いて、同タイミングでドライブAにデータ{A0,A1,……}が対応して記憶される。この処理とtの時間の遅れでドライブBにデータ{B0,B1,……}が対応して記憶される。
実施の形態3では、前記仮想HDDを用いずに1台のHDD30単位でRAID構成を組むことが可能であり、細かな調整が可能である。代わりに、コントローラ10側にもハードウェア的な回路追加を要する。またRAID1のような二重書きを行う場合については本実施の形態3の処理を利用することでも可能であるが、より効率のよい方式については実施の形態6で述べる。
次に、実施の形態3での特殊動作を実際のRAID方式に応用する場合について以下に示す。この場合、最初にRAIDグループに対応して複数のHDD30を割り当て、そのうちの任意の2台をセットにして、コントローラ10が多重化転送を実行する。この処理は、小さなサイズのデータを多く扱う{RAID4,5,0}の方式に向いている。
図14(a)は、実施の形態3の特殊動作をRAID5に適用した場合の処理手順例を示す。HDD30として5つのHDD#0〜#4があり、これによりRAIDグループを構成しているとする。HDD#4が、パリティが格納される位置であるとする。まず、ホスト側からHDD#0の位置にライト要求が発生したとする(手順1)。コントローラ10は、HDD#1と#2をセットにして前記多重化転送を使用して対応データをリードし(手順2)、次に、HDD#3を単体で対応データをリードする(手順3)。次に、コントローラ10は、HDD#1〜#3からリードした各データと前記HDD#0へのライト前データとからXOR演算により新パリティ(データP)を生成する(手順4)。次に、コントローラ10は、HDD#0(データライト位置)と#4(パリティライト位置)をセットにして前記多重化転送を使用して前記ライト前データとデータPをライトする。上記手順によりデータ及びパリティのライトが完了する。
図14(b)は、実施の形態3の特殊動作をRAID0に適用した場合の処理例を示す。HDD30として5つのHDD#0〜#4が有り、これによりRAIDグループを構成しているとする。まず、ホスト側からHDD#0と#1に跨ってライト要求が発生したとする(手順1)。コントローラ10は、HDD#1と#2をセットにして前記多重化転送を使用して対応データをリードする(手順2)。次に、コントローラ10は、HDD#0,#1からリードしたデータと前記HDD#0,#1へのライトデータとをマージする(手順3)。次に、コントローラ10は、前記マージしたデータを、HDD#0と#1をセットにして前記多重化転送を使用してライトする(手順4)。上記手順によりデータのライトが完了する。なお、ライト対象のデータサイズがストライプサイズよりも小さい場合は、多重化転送を用いずに各HDD30に直接ライトする。
また、図15は、実施の形態3の特殊動作に対応したRAIDグループについての設定画面を示す。ディスクアレイ装置において、利用可能な複数の物理的なHDD30から任意を組み合わせてRAIDグループを作成する。必要な分だけRAIDグループを作成する。そして、設定したRAIDグループについてLU等への割り当てを行う。例えばHDD#0〜#5のセットでRAIDグループが構成され、RAIDレベルをRAID5、LU番号をLU0とする。またHDD#6〜#11のセットでRAIDグループが構成され、RAIDレベルをRAID0、LU番号をLU1とする。
実施の形態3で、前記設定に基づきRAID制御を行う場合、RAID制御に対応して実行される多重化転送処理は、ディスクアレイ装置内部での自動的な処理なので、ユーザによる操作上は通常の利用時と変わらない。
(実施の形態4)
次に、図16(a),(b)は、実施の形態4におけるディスクアレイ装置での特殊処理のモデルを表わす説明図である。(a)は、コントローラ10、エクスパンダ20、及びHDD30の間における、処理及びデータの流れを示している。(b)は、コントローラ10と各HDD30における入出力データと時間の関係を示している。コントローラ側物理リンク40のレートは3.0Gbps、HDD側物理リンク50のレートは1.5Gbpsであり、レート比率が2倍の場合である。また、ホストからのライト命令に応じてディスクアレイ装置において3台のHDD30{ドライブA,ドライブB,ドライブC}に対するデータのライトを行う場合について示す。
実施の形態4は、実施の形態2を応用したものであり、実施の形態3の変形である。1台のHDD30単位で構成を組むことが可能で、細かな調整が可能であるのは実施の形態3と同様である。実施の形態4では、特殊動作として、RAID3に特化した方式で、3台以上のHDD30をセットにして多重化転送を行い、コントローラ10側でデータ整列は行わないが一定間隔でのパリティ挿入処理などのパリティ処理を行う。コントローラ側物理リンク40でパリティデータを含む転送データを多重化して転送する。実施の形態4での多重化転送は、コントローラ側物理リンク40においてパリティ付きデータを順に送信するものである。エクスパンダ20により1ワード単位で3つ以上のHDD側物理リンク50における分散を行う。当該特殊動作に関して、コントローラ10はデータ操作としてパリティ処理(ライト時のパリティ生成・挿入、リード時のパリティデータによるベリファイ・自動データ復元やパリティ除去など)を行い、エクスパンダ20はデータ操作として3台以上のHDD30へのワード単位でのデータの分散を行う。本図は特に、「2台のデータ格納用HDD+1台のパリティ格納用HDD」を対象として三重化転送を行う場合を示し、低速側のRAIDグループを構成する3台のHDD30をセットにしてデータ及びパリティを分散して記憶する。
図16(a)で、ライト要求時、コントローラ10は、キャッシュメモリ15に、ホストからのライトデータをそのままの状態で一時的に保持する。当該ライトデータは、ライト先となるHDD30のセットに分散して記録されるもので、いずれかのHDD30のデータとしては特に定めない。
コントローラ10は、データ分離/統合回路17の処理を通じて、多重化対象とするライトデータに関して、対象のRAIDグループの構成に対応してパリティ生成・挿入処理を行う。例えば、対象ライトデータにおいてワード単位のデータシーケンスが{A,B,C,D,……}とする。コントローラ10は、3台のHDD30に対するRAID3の制御に対応して、例えば2ワード(データA,B)に対して1ワード(P0)の間隔でパリティを生成・挿入する演算を行う。
コントローラ10は、前記実施の形態と同様に、エクスパンダ20に対して多重化転送を指示する特殊コマンドを発行する。コントローラ10は、高速側の物理リンク40で、エクスパンダ20に対し、前記特殊コマンド及び多重化データを、順に転送する。多重化データは、パリティ付きデータであり、例えば{A,B,P0,C,D,P1,E,F,P2,……}のようになる。
エクスパンダ20は、コントローラ10側から前記特殊コマンド及び多重化データを順に受信して、データ分離/統合回路27により多重化データの分離を行う。エクスパンダ20は、コントローラ10側から物理ポートを通じて特殊コマンド及びパリティ付きデータを速度調節用バッファに受信する。エクスパンダ20は、特殊コマンドを複製し、アドレステーブルによりアドレス変換を行って、ターゲットとなる各HDD30にライトコマンド及び1ワード単位で分離されたライトデータを配信する。エクスパンダ20は、3つの低速側の物理リンク50で、前記ライトコマンド及び分離されたライトデータをHDD30に対して転送する。エクスパンダ20での分散時、転送データは分散に対応してコントローラ10側でパリティ処理済みであるので、そのまま指定の物理ポートで順に転送すればよい。例えばデータ格納用となるドライブA,Bに対してデータ(非パリティデータ)が、パリティ格納用となるドライブCに対してパリティデータがそれぞれ転送される。各HDD30は、受信したライトコマンドに基づき前記分離されたライトデータをディスクに記憶する。
ホストからのHDD30に対するデータのリード時は、上記ライト時と逆の流れの処理になる。すなわち、エクスパンダ20は、多重化対象であるRAIDグループに対応した3台以上のHDD30からデータをワード単位でリードし、統合してコントローラ10側に転送する。コントローラ10は、エクスパンダ20からの転送データについて、パリティデータを用いてベリファイ・自動データ復元やパリティ除去処理などしてからホストに対するデータとする。
例えばリード時におけるパリティデータを用いた自動データ復元処理では、コントローラ10は、前記RAIDグループ内のHDD30において障害データがある場合に、前記RAIDグループ内の他HDD30のデータを用いてXOR演算処理してデータ復元する。また例えば、パリティデータを用いたスペアHDDへの自動データ復元処理では、コントローラ10は、前記RAIDグループ内のHDD30において障害データがある場合に、同様に前記RAIDグループ内の他データを用いてデータ復元し、復元したデータをエクスパンダ20を介してスペアHDDにライトする。
図16(b)に示すように、入出力データと時間の関係は、コントローラ10側からエクスパンダ20に対して前記データ{A,B,P0,C,D,P1,……}が順に送信された場合において、転送遅延時間を除いて、同タイミングでドライブAにデータ{A,C,E,……}のように対応して記憶される。この処理とtの時間の遅れのタイミングでドライブBにデータ{B,D,F,……}のように対応して記憶される。また更にtの時間の遅れのタイミングでドライブCにパリティデータ{P0,P1,P2,……}のように対応して記憶される。
実施の形態4では、コントローラ10側でパリティの生成を行うので、RAIDグループ等の選択の自由度が大きい。またエクスパンダ20の回路構成が比較的シンプルになる。また、コントローラ10の負荷を小さくできるが、コントローラ10側のレートよりも3台以上のHDD30側におけるレートの総和の方が大きくなるため、前記速度調節用バッファが必要となる。データ転送効率の観点からは、コントローラ側の物理リンク40におけるパスを増やす等の構成により、コントローラ10側のレートと、HDD30側のレートの総和とが同速になるように構成すると、前記速度調節用バッファの容量を小さくできるのでより望ましい。また、「3台のデータ格納用HDD+1台のパリティ格納用HDD」を対象として四重化転送を行う場合なども同様に可能である。また、パリティデータを格納するHDD30(ドライブC)として、高速の3.0Gbpsのレートに対応したHDDを混在させる構成も可能である。
(実施の形態5)
次に、図17(a),(b)は、実施の形態5におけるディスクアレイ装置での特殊処理のモデルを表わす説明図である。(a)は、コントローラ10、エクスパンダ20、及びHDD30の間における、処理及びデータの流れを示している。(b)は、コントローラ10と各HDD30における入出力データと時間の関係を示している。コントローラ側物理リンク40のレートは3.0Gbps、HDD側物理リンク50のレートは1.5Gbpsであり、レート比率が2倍の場合である。また、ホストからのライト命令に応じてディスクアレイ装置において3台のHDD30{ドライブA,ドライブB,ドライブC}に対するデータのライトを行う場合について示す。
実施の形態5は、実施の形態2の応用で実施の形態4の変形であり、実施の形態4でのコントローラ10側でのパリティ処理をエクスパンダ20側で行うようにしたものである。実施の形態5では、特殊動作として、同一RAIDグループを構成する3台以上のHDD30をセットにして多重化転送を行い、エクスパンダ20でパリティ処理を行う。コントローラ側物理リンク40で転送データを多重化して転送する。実施の形態5での多重化転送は、コントローラ側物理リンク40において単純にデータを順に送信するものである。エクスパンダ20により1ワード単位で3つ以上のHDD側物理リンク50における分散を行う。当該特殊動作に関して、コントローラ10は特別なデータ操作を行わず、エクスパンダ20はデータ操作としてパリティ処理(前記ライト時のパリティ生成・挿入など)を行い、3台以上のHDD30へのデータの分散を行う。本図は特にコントローラ側物理リンク40では二重化転送を行い、HDD側物理リンク50で3台のHDD30に並列して転送を行う場合を示し、低速側の3台のHDD30をセットにしてデータとパリティを分散して記憶する。
図17(a)で、ライト要求時、コントローラ10は、キャッシュメモリ15に、ホストからのライトデータをそのままの状態で一時的に保持する。当該ライトデータは、ライト先となるHDD30のセットに分散して記録されるもので、いずれかのHDD30のデータとしては特に定めない。コントローラ10は、多重化対象とするライトデータに関して、前記実施の形態と同様に、エクスパンダ20に対して多重化転送を指示する特殊コマンドを発行する。コントローラ10は、高速側の物理リンク40で、エクスパンダ20に対し、前記特殊コマンド及び多重化データを、順に転送する。多重化データについて、1ワード単位のデータシーケンス{A,B,C,D,……}として示す。
エクスパンダ20は、コントローラ10側から前記特殊コマンド及び多重化データを速度調節用バッファに順に受信して、データ分離/統合回路27により多重化データの分離を行う。エクスパンダ20は、特殊コマンドを複製し、アドレステーブルによりアドレス変換を行って、ターゲットとなる各HDD30にライトコマンド及び1ワード単位で分離されたライトデータを配信する。この際、エクスパンダ20は、データ分離/統合回路27により、対象ライトデータに関して、対象のRAIDグループの構成に対応してパリティ生成・挿入処理を行う。エクスパンダ20は、例えば3台のHDD30に対するRAID3の制御に対応して、例えば2ワード(データA,B)に対して1ワード(P(A−B))の間隔でパリティを生成・挿入する演算を行う。
エクスパンダ20は、3つの低速側の物理リンク50で、前記ライトコマンド及び分離されたライトデータをHDD30に対して転送する。例えばデータ格納用となるドライブA,Bに対してデータ(非パリティデータ)が、パリティ格納用となるドライブCに対してパリティデータがそれぞれ転送される。各HDD30は、受信したライトコマンドに基づき前記分離されたライトデータをディスクに記憶する。
ホストからのHDD30に対するデータのリード時は、上記ライト時と逆の流れの処理になる。すなわち、エクスパンダ20は、多重化対象であるRAIDグループに対応した3台のHDD30からデータをワード単位でリードしてパリティ処理し、統合してコントローラ10側に転送する。コントローラ10は、エクスパンダ20からの転送データをホストに対するデータとする。実施の形態5では、エクスパンダ20が主体でリード時の自動データ復元などを行う。
図17(b)に示すように、入出力データと時間の関係は、コントローラ10側からエクスパンダ20に対してワード単位のデータ{A,B,C,D,……}が順に送信された場合において、転送遅延時間を除いて、同タイミングでドライブAにデータ{A,C,E,G,……}のように対応して記憶される。この処理とtの時間の遅れのタイミングでドライブBにデータ{B,D,F,……}のように対応して記憶される。また更にtの時間の遅れのタイミングでドライブCにパリティデータ{P(A−B),P(C−D),P(E−F),……}のように対応して記憶される。
実施の形態5では、図17に示すHDD数とレートの構成例の場合では、「コントローラ側のレート(3.0Gbps)=データ格納HDDのレートの総和(1.5Gbps+1.5Gbps)」となる。RAID3に対応した多重化転送を行う場合、コントローラ10側では特別なデータ操作は行わないため、コントローラ10の負荷は小さい。また、コントローラ10側でデータ操作を行う方式(実施の形態3)と組み合わせれば、RAID4を実現可能である。
更に、エクスパンダ20側での複数のHDD30に対するパリティ分散機能の追加、もしくはコントローラ10側でパリティディスクを切り替えるごとにライト対象HDD30の指定順を物理ポート指定により変更しながら前記特殊コマンドを発行する機能の追加などにより、その分処理は複雑になるがRAID5も実現可能である。但しRAIDグループ内のHDD数などに関する設定の自由度はあまり高くできない。当該設定に関しては構成に応じていくつかのパターンの中から選択して使用する等の形態となる。使用可能なパターンは限定されるが、最適化が容易なため高速となる。
実施の形態5に関して、コントローラ10側でのデータ操作との組み合わせによりRAID4やRAID5に対応した処理を行う場合について説明する。エクスパンダ20の有する4つの物理ポート#0〜#3に対応して低速レート(1.5Gbps)のHDD#0〜#3が接続される場合を例にする。HDD30に対するライト対象データとしてデータA,B,Cがあるとする。データA,B,Cのワード単位のシーケンスは、それぞれ、{A0,A1,A2,……}、{B0,B1,B2,……}、{C0,C1,C2,……}とする。
コントローラ10は、ライト要求時、ターゲットのHDDグループ(HDD#0〜#3)に接続されるエクスパンダ20に対し、転送先となる物理ポート番号を含む特殊コマンドを送信する。すなわち、宛先としてエクスパンダアドレス、物理ポート情報としてエクスパンダ20の物理ポート番号#0〜#3の指定を含むライトコマンドを高速側の物理リンク40に送出する。コントローラ10は、物理リンク40において、ターゲットのHDDグループに対するライトデータA,B,Cを、{A0,B0,C0,A1,B1,C1,A2,B2,C2,……}のような並びに整列して転送する。前記整列では、各データをストライピング単位(ワード単位)で交互に並べる。
エクスパンダ20は、前記コントローラ10側からの転送データについて、受領コマンドにおける物理ポートの指定順に従って、各HDD30に対する物理ポートへとデータ(例えばA0,B0,C0)を分散する。そして、エクスパンダ20は、前記受領コマンドで最後に指定された物理ポートに接続されるHDD30(パリティディスク)に対しては、前記転送データから生成したパリティデータ(例えばP(A0−C0))を転送する。
エクスパンダ20での前記HDD30へのデータ転送の際、各系統のデータ(A,B,C)ごとに転送対象となる物理ポート指定順序を変更しなければRAID4方式で、各系統のデータのストライピング単位ごとに物理ポート指定順序を変更(シフト)すればRAID5方式で記録が可能である。RAID5の場合の処理例としては、最初のタイミングで、4台のHDD(#0,#1,#2,#3)に対応してデータ(A0,B0,C0,P(A0−C0))が分散してライトされる。次のタイミングで、前記物理ポート指定のシフトにより、前記HDD(#0〜#3)に対応してデータ(P(A1−C1),A1,B1,C1)が分散してライトされる。同様に次のタイミングでデータ(C2,P(A2−C2),A2,B2)が分散してライトされる。
なお実施の形態5でのRAID制御では、RAIDグループを構成するすべてのHDD30にデータを書き込むようにする必要があるため、ストライプサイズを小さくすることや、RAIDグループで余りが生じる部分については一旦データを読み出して新データを上書きした後に書き戻す処理などが必要になる。また、RAID3方式であれば、前記コントローラ10でのデータ整列は不要で、かつ前記コマンドにおける物理ポート指定順序を一定にすることで容易に実現可能である。
また、実施の形態5では、エクスパンダ20側でパリティ生成することにより、「コントローラ側のレート(3.0Gbps)<HDD側のレートの和(1.5Gbps×3=4.5Gbps)」となる。よって、RAIDグループを構成するHDD30(前記ドライブA〜C)として、コントローラ側のレートと同速(3.0Gbps)のものを使用した場合でも性能向上の効果を得ることができる。
実施の形態5に関して、リード時における、パリティを利用した自動データ復元について説明する。図18は、リード時における、パリティを利用した自動データ復元及びスペアHDD等へのデータ復元についての説明図である。データリード時においては、コントローラ10からエクスパンダ20へのコマンドによりパリティディスク(パリティデータを格納する領域)の位置が明示されるので、RAIDグループにおける1台のHDD30に障害が発生している状態であっても、エクスパンダ20内で復元したデータをコントローラ10にリードデータとして送出可能である。このデータ復元には、ホストからのリード要求データの復元と、スペアHDDや交換後HDD等のHDD30へのコピーバックデータの復元との二通りの使用方法がある。なおコピーバックは、故障等により障害状態となったHDD30や交換対象となるHDD30のデータを他のHDD30へ移動して、その後にスペアHDDや交換後HDD等のHDD30へとデータを戻す処理である。コントローラ10は、データのリード/ライトのみ実行するだけでよいため、負荷が非常に小さい。
例として、元データ(リード対象データ)のシーケンスを{A0,B0,C0,A1,B1,C1,A2,B2,C2,……}とする。ライト時の処理により、RAIDグループを構成するHDD30(#0〜#3)に対して、データが{A0,B0,C0,P0}のように分散して記憶されている。前記RAID4の場合で、HDD#0にデータA{A0,A1,A2,……}が記憶されている。他HDD#1〜#3にも同様に各データB,C,P(パリティデータ)が記憶されている。
ホストからのリード要求の場合、コントローラ10からエクスパンダ20に特殊コマンド(リードコマンド)が送信される。エクスパンダ20は、受領コマンドを解釈して、HDD#0〜#3からデータを並列的にリードする。このとき例えばHDD#1が障害状態でありデータB{B0,B1,B2,……}がエラーとする。エクスパンダ20は、障害状態でないHDD(#0,#2,#3)のデータを用いてXOR演算することでデータB{B0,B1,B2,……}を復元する。例えば「A0xorC0xorP0=B0」である。エクスパンダ20は、復元したデータ(データB)を前記リードしたデータと合わせて正常な元データにしてコントローラ10に転送し、コントローラ10はホストに応答として送信する。
また、コピーバックデータの復元の場合、コントローラ10は、前記エクスパンダ20により復元したデータ(データB{B0,B1,B2,……})をリードして、スペアHDDや交換後HDD等の1台のHDD#nへコピーバックデータとしてライトする。コピーバックデータのライト先が1台のHDD#nなので通常アクセスによりライトする。この場合、コントローラ10側のレートの方がHDD30側のレートより大きいため、例えばコマンドの発行間隔をコントローラ10側で調節してHDD30側の性能に合わせた転送処理を行う。コントローラ10での調節によりホスト要求処理に対する余力を振り分けやすくなる。
実施の形態5での特殊処理は、RAIDレベルとして{3,4,5}で適用可能である。この各RAIDレベルに適用した場合の、ライト時のパリティ処理におけるコントローラ10の負荷は{小,中,中}となる。本実施の形態でHDD30のレートが低速(1.5Gbps)で「3台のデータ格納用HDD+1台のパリティ格納用HDD」を対象として四重化転送を行う場合において、前提技術と比較した性能比は、HDDが高速の場合と比較して0.75、HDDが同速の場合と比較して2.67程度である。また、前記各RAIDレベルに適用した場合の、リード時のパリティ処理におけるコントローラ10の負荷は極小となる。また、前記四重化転送でリード時のパリティによる自動データ復元を行う場合において、前提技術と比較した性能比は、HDDが高速の場合と比較して3.0、HDDが同速の場合と比較して6.0である。また、前記スペアHDD(1台)へのデータ復元を行う場合は、通常アクセスとなり、前提技術と比較した性能比は、HDDが高速の場合と比較して0.5、HDDが同速の場合と比較して1.0である。
(実施の形態6)
次に、図19(a),(b)は、実施の形態6におけるディスクアレイ装置での特殊処理のモデルを表わす説明図である。(a)は、コントローラ10、エクスパンダ20、及びHDD30の間における、処理及びデータの流れを示している。(b)は、コントローラ10と各HDD30における入出力データと時間の関係を示している。コントローラ側物理リンク40のレートは3.0Gbps、HDD側物理リンク50のレートは1.5Gbpsであり、レート比率が2倍の場合である。また、ホストからのライト命令に応じてディスクアレイ装置において2台のHDD30{ドライブA,ドライブB}に対するデータのライトを行う場合について示す。
実施の形態6では、特殊動作として、複数(特に2台)のHDD30をセットにしてそれぞれに同一データをライトする多重書き(二重書き)を行う。コントローラ10から発行する1回のコマンドでエクスパンダ20により複数のHDD30に同一データをライトする。同一RAIDグループ内の、任意の2台以上のHDD30をセットにして多重書き対象とし、複数の低速側の物理リンク50で多重書きのためのデータの分散を行う。エクスパンダ20に接続された物理リンクレートが同じになる複数のHDD30を多重書き対象とする。エクスパンダ20により例えば1ワード単位で複数のHDD側物理リンク50における多重書きを行う。実施の形態2での多重化転送は、コントローラ側物理リンク40において単純にデータを順に送信するものである。当該特殊動作に関して、コントローラ10は特別なデータ操作を行わず、エクスパンダ20はデータ操作として複数(2台)のHDD30への多重書きのためのデータ複製を行う。本図は特に低速側の2台のHDD30を組にして二重書きを行う場合を示す。
図19(a)で、ライト要求時、コントローラ10は、キャッシュメモリ15に、ホストからのライトデータをそのままの状態で一時的に保持する。コントローラ10は、二重書き対象とするライトデータに関して、エクスパンダ20に対して二重書きを指示する特殊コマンドを発行する。コントローラ10は、高速側の物理リンク40で、エクスパンダ20に対し、前記特殊コマンド及びライトデータを、順に転送する。本図では、二重書き対象のライトデータについて、1ワード単位のデータシーケンス{A,B,C,D,……}として示す。
エクスパンダ20は、コントローラ10側から前記特殊コマンド及びライトデータを速度調節用バッファに順に受信して、データ分離/統合回路27により二重書きのためのデータの分離を行う。エクスパンダ20は、受領コマンド及びライトデータを必要な分複製する。エクスパンダ20は、アドレステーブルによりアドレスの変換を行って、2つの低速側の物理リンク50で、ターゲットとなる各HDD30にライトコマンド及び1ワード単位のライトデータを配信する。例えば、ドライブA,Bにそれぞれコマンドデータ、ライトデータ{A,B,C,D,……}が順に送信される。各HDD30は、受信したライトコマンドに基づきライトデータをディスクに記憶する。
ホストからのHDD30に対するデータのリード時は、上記ライト時と逆の流れの処理になる。すなわち、エクスパンダ20は、前記二重書き対象である2台のHDD30からデータをリードし、正常なリードデータをコントローラ10側に転送する。コントローラ10は、エクスパンダ20からの転送データをホストに対するデータとする。
図19(b)に示すように、入出力データと時間の関係は、コントローラ10側からエクスパンダ20に対して前記ワード単位のデータ{A,B,C,D,……}が順に送信された場合において、転送遅延時間を除いて、同タイミングでドライブA,Bにそれぞれデータ{A,B,C,D,……}のように対応して記憶される。
実施の形態6では、自動的にRAID1構成を実現でき、RAID1方式におけるライト時のオーバヘッドを略ゼロにできるため、コントローラ10の負担は通常のRAID1構成時よりも低い。コントローラ10は、データのリード/ライトのみ実行するだけでよいため、負荷を非常に小さくできる。また、「コントローラ側のレート(3.0Gbps)=HDD側のレートの総和(1.5Gbps+1.5Gbps)」であるが、データ単位で比較すると、コントローラ側のレートの方が大きくなるため、エクスパンダ20に速度調節用バッファが必要となる。あるいは当該レートの調節のためにコントローラ10側でALIGNプリミティブを挿入する処理方法を採ってもよい。この場合はエクスパンダ20に設けるバッファを小さくできるが、コントローラ10側のデータ転送効率は低下する。また、多重書き対象のHDD30としてコントローラ10側と対応して高速のレート(3.0Gbps)のものを使用可能である。コントローラ10側とHDD30側が同速になる場合は、エクスパンダ20に設けるバッファを必要最小限にすることができる。
また、二重書き対象となる2台のHDD30は完全に等価のディスクとなるので、ディスクのセクタ毎にアドレスチェックのための冗長コード(チェックコード)を付加している場合において、どちら側のディスクかを確実に判別したいような場合には、以下の方法で対応可能である。まず、実施の形態2での処理を用いて、各ディスク用のデータを混合する方法がある。もしくは、エクスパンダ20側で前記二重書き対象のディスク毎のチェックコードを生成し、ディスクへのデータへ一定間隔で挿入を行う方法がある。
実施の形態6に関して、リード時における、前記多重書きを利用した自動データ復元について説明する。図20は、リード時における、二重書きを利用した自動データ復元及びスペアHDD等へのデータ復元についての説明図である。
データリード時においては、二重書きされているHDD30における一方のHDD30が障害状態であっても他方のHDD30のデータにより、コントローラ10へ応答のデータ転送が可能である。エクスパンダ20で2台のHDD30に対してアクセスされるため、コントローラ10側では、ミラーHDDへのアクセスを再実行する必要がなく、効率がよい。また、エクスパンダ20側で2台のHDD30からのデータの比較によるチェックも可能である。このデータ復元には、ホストからのリード要求データの復元と、スペアHDDや交換後HDD等のHDD30へのコピーバックデータの復元との二通りの使用方法がある。
例として、元データ(リード対象データ)をA{A0,A1,A2,A3,A4,……}とする。ライト時の二重書き処理により、ミラーを構成する2台のHDD30(#0,#1)に対してそれぞれデータAが記憶されている。
ホストからのリード要求の場合、コントローラ10からエクスパンダ20に特殊コマンド(リードコマンド)が送信される。エクスパンダ20は、受領コマンドを解釈して、HDD#0,#1からデータを並列的にリードする。このとき例えばHDD#0が障害状態でありそのデータAがエラーとする。エクスパンダ20は、障害状態でない他方のHDD#1からのリードデータをそのまま復元データとする。エクスパンダ20は、復元データをコントローラ10に転送し、コントローラ10はホストに応答として送信する。
また、コピーバックデータの復元の場合、コントローラ10は、前記エクスパンダ20により復元したデータ(データA)をリードして、スペアHDDや交換後HDD等の1台のHDD#nへコピーバックデータとしてライトする。コピーバックデータのライト先が1台のHDD#nなので通常アクセスによりライトする。前記実施の形態5の場合と同様に、コントローラ10側で調節してHDD30側の性能に合わせた転送処理を行う。
実施の形態6での特殊処理は、RAIDレベルとしてRAID1で適用可能である。ライト時の二重書き処理におけるコントローラ10の負荷は極小となる。実施の形態6でHDD30のレートが低速(1.5Gbps)で2台のHDD30を対象として二重書きを行う場合において、前提技術と比較した性能比は、HDDが高速の場合と比較して1.0、HDDが同速の場合と比較して2.0である。また、ミラーHDDによる自動データ復元を行う場合は、コントローラ10の負荷は通常アクセスと同等であり、前提技術と比較した性能比は、HDDが高速の場合と比較して0.5、HDDが同速の場合と比較して1.0である。
(実施の形態7)
図21(a),(b)は、実施の形態7におけるディスクアレイ装置での特殊処理のモデルを表わす説明図である。(a)は、コントローラ10、エクスパンダ20、及びHDD30の間における、処理及びデータの流れを示している。(b)は、コントローラ10と各HDD30における入出力データと時間の関係を示している。コントローラ側物理リンク40のレートは3.0Gbps、HDD側物理リンク50のレートは1.5Gbpsであり、レート比率が2倍の場合である。また、ホストからのライト命令に応じてディスクアレイ装置において4台のHDD30{ドライブA,B,C,D}に対するデータのライトを行う場合について示す。
実施の形態7は、実施の形態6と実施の形態2を組み合わせた形態であり、それぞれの形態の特長を双方ともに有している。実施の形態7では、特殊動作として、複数のHDD30をセットにしてデータを分離、分散して多重化転送を行うと共に、更にこの多重化転送で分散されるデータについて複数(特に2台)のHDD30をセットにして多重書きを行う。実施の形態7での多重化転送は、コントローラ側物理リンク40において単純にデータを順に送信するものである。当該特殊動作に関して、コントローラ10は特別なデータ操作を行わず、エクスパンダ20はデータ操作として多重書きのためのデータ複製と複数のHDD30へのワード単位でのデータの分散を行う。本図は特に低速側の2台のHDD30を組にして二重書きを行い、更に2台ずつのHDD30の組に対して二重化転送を行う場合を示す。
図21(a)で、ライト要求時、コントローラ10は、キャッシュメモリ15に、ホストからのライトデータをそのままの状態で一時的に保持する。コントローラ10は、特殊動作対象とするライトデータに関して、エクスパンダ20に対して特殊コマンドを発行する。コントローラ10は、高速側の物理リンク40で、エクスパンダ20に対し、前記特殊コマンド及びライトデータを、順に転送する。本図では、処理対象ライトデータについて、1ワード単位のデータシーケンス{A,B,C,D,……}として示す。
エクスパンダ20は、コントローラ10側から前記特殊コマンド及びライトデータを速度調節用バッファに順に受信して、データ分離/統合回路27により二重書き及び二重化転送に対応したデータ分離を行う。エクスパンダ20は、受領コマンド及びライトデータを必要な分複製する。エクスパンダ20は、アドレステーブルによりアドレス変換を行って、4つの低速側の物理リンク50で、ターゲットとなる各HDD30にライトコマンド及び1ワード単位のライトデータを配信する。例えば、ドライブA,Bにそれぞれコマンドデータ、ライトデータ{A,C,E,G,……}が順に送信され、ドライブC,Dにそれぞれコマンドデータ、ライトデータ{B,D,F,……}が順に送信される。各HDD30は、受信したライトコマンドに基づきライトデータをディスクに記憶する。
ホストからのHDD30に対するデータのリード時は、上記ライト時と逆の流れの処理になる。すなわち、エクスパンダ20は、前記二重書き及び二重化転送の対象である4台のHDD30からデータをリードし、正常なリードデータを統合して多重化データとしてコントローラ10側に転送する。コントローラ10は、エクスパンダ20からの転送データをホストに対するデータとする。
図21(b)に示すように、入出力データと時間の関係は、コントローラ10側からエクスパンダ20に対してワード単位のデータ{A,B,C,D,……}が順に送信された場合において、転送遅延時間を除いて、同タイミングでドライブA,Bにそれぞれデータ{A,C,E,G,……}のように対応して記憶され、これとtの時間の遅れのタイミングでドライブC,Dにそれぞれデータ{B,D,F,……}のように対応して記憶される。
実施の形態7に関して、リード時における自動データ復元について説明する。図22は、リード時における自動データ復元及びスペアHDD等へのデータ復元についての説明図である。
データリード時においては、二重書きされているHDD30における一方のHDD30が障害状態であっても他方のHDD30のデータにより、コントローラ10へ応答のデータ転送が可能である。コントローラ10側では、ミラーHDD(ミラーディスク)へのアクセスを再実行する必要がなく、効率がよい。また、エクスパンダ20側で2台のHDD30からのデータの比較によるチェックも可能である。このデータ復元には、ホストからのリード要求データの復元と、スペアHDDや交換後HDD等のHDD30へのコピーバックデータの復元との二通りの使用方法がある。
例として、元データ(リード対象データ)を、データA,Bの多重化データであるワード単位のデータシーケンス{A0,B0,A1,B1,A2,B2,……}とする。ライト時の二重化転送及び二重書き処理により、2系統のミラーHDDを構成する4台のHDD30(#0〜#3)に対し、ミラーHDD(#0,#1)にデータA、ミラーHDD(#2,#3)にデータBが記憶されている。
ホストからのリード要求の場合、コントローラ10からエクスパンダ20に特殊コマンド(リードコマンド)が送信される。エクスパンダ20は、受領コマンドを解釈して、HDD(#0〜#3)からデータを並列的にリードする。このとき例えばHDD#2が障害状態でありそのデータBがエラーとする。エクスパンダ20は、データBに関しては障害状態でない他方のHDD#3からのリードデータをそのまま復元データとする。エクスパンダ20は、復元データをコントローラ10に転送し、コントローラ10はホストに応答として送信する。
また、コピーバックデータの復元の場合、コントローラ10は、前記エクスパンダ20により復元したデータ(データB)をリードして、スペアHDDや交換後HDD等の1台のHDD#nへコピーバックデータとしてライトする。コピーバックデータのライト先が1台のHDD#nなので通常アクセスによりライトする。前記実施の形態5の場合と同様に、コントローラ10側で調節してHDD30側の性能に合わせた転送処理を行う。
実施の形態7での特殊処理は、RAIDレベルとして{0+1,3+1,4+1,5+1}で適用可能である。この各RAIDレベルに適用した場合の、ライト時の二重化転送かつ二重書き処理におけるコントローラ10の負荷は小となる。本実施の形態でHDD30のレートが低速(1.5Gbps)で4台のHDD30を対象として二重化転送かつ二重書きを行う場合において、前提技術と比較した性能比は、HDDが高速の場合と比較して2.0、HDDが同速の場合と比較して4.0である。また、前記各RAIDレベルで、リード時における自動データ復元を行う場合は、コントローラ10の負荷は極小となり、前提技術と比較した性能比は、HDDが高速の場合と比較して1.0、HDDが同速の場合と比較して2.0である。また、前記スペアHDD(1台)へのデータ復元を行う場合、復元データのリード及びライトは通常アクセスと同等で、前記各RAIDレベルでコントローラ10の負荷は小となり、前提技術と比較した性能比は、HDDが高速の場合と比較して0.5、HDDが同速の場合と比較して2.0である。
(実施の形態8)
次に、図23(a),(b)は、実施の形態8におけるディスクアレイ装置での特殊処理のモデルを表わす説明図である。(a)は、コントローラ10、エクスパンダ20、及びHDD30の間における、処理及びデータの流れを示している。(b)は、コントローラ10と各HDD30における入出力データと時間の関係を示している。コントローラ側物理リンク40のレートは3.0Gbps、HDD側物理リンク50のレートは1.5Gbpsであり、レート比率が2倍の場合である。また、ホストからのライト命令に応じてディスクアレイ装置において6台のHDD30{ドライブA,B,C,D,E,F}に対するデータのライトを行う場合について示す。
実施の形態8は、実施の形態5と実施の形態6を組み合わせた形態であり、それぞれの形態の特長を双方ともに有している。実施の形態8では、特殊動作として、複数のHDD30を対象にして、エクスパンダ20により、実施の形態5で示したパリティ処理と共に、実施の形態6で示した多重書き(特に二重書き)を行う。すなわち、同一RAIDグループを構成する物理リンクレートが同一の6台以上のHDD30を対象にして多重化転送を行い、データとパリティがそれぞれ多重書きされる。コントローラ10から発行する1回のコマンドで、エクスパンダ20により、転送データについて低速側の物理リンク50で、パリティ処理を含めた複数(例えば3つ)のデータへの分離、分散を行うと共に、分散される各データについて多重書き(特に二重書き)を行う。コントローラ側物理リンク40で転送データが多重化転送され、エクスパンダ20により例えば1ワード単位で複数のHDD側物理リンク50におけるデータの分散を行う。実施の形態8での多重化転送は、コントローラ側物理リンク40において単純にデータを順に送信するものである。当該特殊動作に関して、コントローラ10は特別なデータ操作を行わず、エクスパンダ20はデータ操作としてデータの分散、パリティ処理、及びデータ複製を行い、合計で6台以上のHDD30へのデータの分散を行う。本図は特に、HDD側物理リンク50で転送データを1ワード単位で2つに分離して更にパリティデータの挿入を合わせて3つに分散する三重化転送(二重化転送+パリティ処理)と、各分散データを二重書きすることとを組み合わせた場合であり、合計で低速側の6台のHDD30をセットにしてデータを分散して記憶する。
実施の形態8では、特殊動作で使用される物理ポートが6つ以上必要となるため、前記図7に示す特殊コマンドの物理ポート指定領域で例えば6つの物理ポートを指定するために例えば以下のような形式を用いて指定を行う。コントローラ10は、特殊コマンドで、当該「三重化転送+二重書き」の処理を行うモードを指定すると共に、前記物理ポート指定領域における4つの物理ポート情報(物理ポートNo.)の領域を用いて、特殊動作で使用対象となる6つの物理ポートのうち、3つの物理ポートを物理ポート番号で指定する。1つの物理ポート番号の指定により、その次の物理ポート番号も自動的に指定される形式とする。例えば、エクスパンダ20において6つのドライブA〜Fに対応して6つの物理ポート#0〜#5を対象として指定したい場合、特殊コマンドで3つの物理ポート番号でドライブA,C,Eに対応した物理ポート#0,#2,#4を指定する。物理ポート番号#0の指定により、その次の物理ポート番号#1に対応したドライブBが自動的に指定される。その他にも、設定済みの物理ポートグループの番号を指定する形式や、連続する物理ポート範囲(例えば物理ポート#0〜#5)を2つの物理ポート番号で指定する形式などとしてもよい。
図23(a)で、ライト要求時、コントローラ10は、キャッシュメモリ15に、ホストからのライトデータをそのままの状態で一時的に保持する。コントローラ10は、処理対象ライトデータに関して、エクスパンダ20に対して当該処理の指示に対応した特殊コマンドを発行する。コントローラ10は、高速側の物理リンク40で、エクスパンダ20に対し、前記特殊コマンド及びライトデータを、順に転送する。本図では、処理対象のライトデータについて、1ワード単位のデータシーケンス{A,B,C,D,……}として示す。
エクスパンダ20は、コントローラ10側から前記特殊コマンド及びライトデータを速度調節用バッファに順に受信して、データ分離/統合回路27により、2つのデータ及び1つのパリティデータを単位とした3つのデータへの分離と、それら各データの二重書きのためのデータ複製とで、合わせて6つのデータを単位としたデータの分散を行う。パリティ処理では例えば2ワードのデータA,BからXOR演算により1ワードのパリティデータP1=P(A−B)が生成される。エクスパンダ20は、受領コマンド及びライトデータを必要な分複製する。エクスパンダ20は、アドレステーブルによりアドレス変換を行って、6つの低速側の物理リンク50で、ターゲットとなる各HDD30にライトコマンド及び1ワード単位のライトデータを配信する。例えば、ドライブA,Bに、コマンド及びライトデータ{A,C,……}が、ドライブC,Dに、コマンド及びライトデータ{B,D,……}が、ドライブE,Fに、コマンド及びライトデータ{P1,P2,……}が、それぞれ順に送信される。各HDD30は、受信したライトコマンドに基づきライトデータをディスクに記憶する。
ホストからのHDD30に対するデータのリード時は、上記ライト時と逆の流れの処理になる。すなわち、エクスパンダ20は、処理対象である6台のHDD30からデータをリードしてパリティ処理し、正常なリードデータを統合して多重化データとしてコントローラ10側に転送する。コントローラ10は、エクスパンダ20からの転送データをホストに対するデータとする。
図23(b)に示すように、入出力データと時間の関係は、コントローラ10側からエクスパンダ20に対して前記データシーケンス{A,B,C,D,……}が順に送信された場合において、転送遅延時間を除いて、同タイミングでドライブA,Bにそれぞれデータ{A,C,E,G,……}のように対応して記憶される。これとtの時間の遅れでドライブC,Dにそれぞれデータ{B,D,F,……}のように対応して記憶される。更にこれとtの時間の遅れでドライブE,Fにそれぞれデータ{P(A−B)P(C−D),P(E−F),……}のように対応して記憶される。なお、パリティを格納するHDD30(ドライブE,F)については、コントローラ側物理リンク40に合わせて高速(3.0Gbps)に対応したものを使用可能である。
実施の形態8に関して、リード時における自動データ復元について説明する。図24(a),(b)は、リード時における自動データ復元及びスペアHDD等へのデータ復元についての説明図である。
データリード時においては、RAIDグループ中の2台のHDD30が障害状態等によりデータリードがエラーの場合であってもコントローラ10側へデータ転送が可能である。コントローラ10側では、ミラーHDDへの再アクセスやパリティによるデータ復元を処理する必要がなく、効率がよい。このデータ復元には、ホストからのリード要求データの復元と、スペアHDDや交換後HDD等のHDD30へのコピーバックデータの復元との二通りの使用方法がある。
例として、元データ(リード対象データ)を、2系統のデータA,Bの多重化データであるワード単位のデータシーケンス{A0,B0,A1,B1,A2,B2,……}とする。ライト時の三重化転送及び二重書き処理により、3系統のミラーHDDを構成する6台のHDD30(#0〜#5)に対し、HDD(#0,#1)にデータA、HDD(#2,#3)にデータB、HDD(#4,#5)にパリティデータPが記憶されている。
図24(a)に示すように、ホストからのリード要求の場合、前記実施の形態7等と同様に、エクスパンダ20は、特殊コマンドを基づき、HDD(#0〜#5)からデータを並列的にリードする。このとき、二重書きされている2台のHDD30、例えばHDD(#2,#3)が障害状態でありそのデータB{B0,B1,B2,……}がエラーとする。この場合、エクスパンダ20は、データBに関してミラーデータを利用したデータ復元が不可能なので、RAIDグループ中の他のHDD30(#0,#4)のデータ(A,P)を用いてXOR演算によりデータBを復元する。エクスパンダ20は、復元したデータBを合わせた正常なリードデータをコントローラ10に転送し、コントローラ10はホストに応答として送信する。
また、コピーバックデータの復元の場合、コントローラ10は、前記エクスパンダ20により復元したデータ(データB)をリードして、スペアHDDや交換後HDD等の2台のHDD(#m,#n)へ同一データをコピーバックデータとしてライトする。コピーバックデータのライト先が2台のHDD30なので実施の形態7等と同様に特殊動作によりライトする。前記実施の形態5の場合と同様に、コントローラ10側で調節してHDD30側の性能に合わせた転送処理を行う。
また、図24(b)に示すように、前記HDD(#0〜#5)からのデータリードの際、前記二重書きされている2台のHDD30ではなく、異なるデータを格納している2台のHDD30、例えばHDD(#1,#2)が障害状態でありその各データA,Bがエラーとする。この場合、エクスパンダ20は、データA,Bに関してそれぞれのミラーHDDのデータをそのままリードすることでデータ復元が可能である。すなわち、HDD(#0,#3)からのリードデータ(A,B)を復元データとする。エクスパンダ20は、正常なリードデータA,Bをコントローラ10に転送し、コントローラ10はホストに応答として送信する。また、コピーバックデータの復元の場合、コントローラ10は、前記エクスパンダ20により復元したデータ(データA,B)をリードして、スペアHDDや交換後HDD等の2台のHDD(#m,#n)へ異なるデータをコピーバックデータとしてライトする。コピーバックデータのライト先が2台のHDD30なので実施の形態2等と同様に特殊動作によりライトする。前記実施の形態5の場合と同様に、コントローラ10側で調節してHDD30側の性能に合わせた転送処理を行う。また、パリティデータPがエラーの場合も上記処理と同様に、RAIDグループ中の他のHDD30を用いてデータの復元が可能である。
(実施の形態9)
次に、図25(a),(b)は、実施の形態9におけるディスクアレイ装置で備えるHDD情報報告機能による処理のモデルを表わす説明図である。(a)は、コントローラ10、エクスパンダ20、及びHDD30の間における、HDD情報の報告の例を示す説明図である。(b)は、HDD情報報告処理における特殊コマンドでの物理ポートの指定例を示す。
実施の形態9では、前述した各実施の形態の有する機能を効率良く実現するために、前記各実施の形態の構成及び機能に加えて、エクスパンダ20の配下のHDD30に関するHDD情報を報告する機能(HDD情報報告機能)を備える。HDD情報報告機能では、HDD情報として、HDD30の接続の状態(接続の有無など)、接続済み状態のHDD30のデータ転送速度(HDD側物理リンク50における物理リンクレート)を含むHDD状態を調べてコントローラ10に報告する。本機能により、前記各特殊動作を実行する際に、指定の物理ポートの物理リンクが目的の動作に使用可能かどうか、あるいは適しているかどうか等を調べることが行われる。主にエクスパンダ20により、低速側の物理リンク50でHDD情報の認識が行われる。認識されたHDD情報はコントローラ10側に報告される。
各物理ポートには、システム内でユニークな識別情報として物理ポート番号が付与されている。SASプロトコルに従った処理では、ディスクアレイ装置の起動時、各デバイス間で相互の接続が確立され、各デバイスのIDを交換することで、接続デバイス数やタイプが判定される。動作中にデバイスの接続や取り外しが発生した場合も、そのイベントが報告される。コントローラ10及びエクスパンダ20は、SASプロトコルに従ったレート交渉を含む処理及びHDD情報報告処理によりHDD状態を含むシステム構成を把握して、システム構成に合わせて前記各特殊動作を選択して実行する。
まず、HDD情報報告機能によるHDD情報報告処理について説明する。以下に示す手順(1)〜(5)に従って処理が行われる。
手順(1): まず、ディスクアレイ装置の起動時(電源投入時)に、通常動作として、エクスパンダ20とHDD30とのレート交渉により、HDD30側の物理ポートごとのデータ転送速度(物理リンクレート)を認識する。当該動作は、従来構成に従った動作である。例えば、図25(a)に示すように、HDD側物理リンク50において、物理ポート#1,#2の物理リンクでは1.5GbpsのHDD30(#A,#B)、物理ポート#3の物理リンクでは3.0GbpsのHDD30(#C)が接続状態であり、物理ポート#4にはHDD30が非接続状態であることが認識される。
手順(2): そしてエクスパンダ20は、自装置に接続されている各HDD30のSASアドレス、及び接続されている別のエクスパンダ20のエクスパンダアドレスを収集して、自装置内部に各部相互接続のルーティングのためのアドレステーブルを作成する。当該動作も従来構成に従った動作である。アドレステーブルにおいて、例えばエクスパンダ20の有する物理ポート(#1〜#3)に対してHDD30(#A〜#C)のアドレスがマッピングされる。
手順(3): コントローラ10は、起動時にエクスパンダ20との間でコントローラ側物理リンク40についてのレート交渉を実行する。当該動作も従来構成に従った動作である。例えばコントローラ側物理リンク40のレートが3.0Gbpsと認識される。
手順(4): そしてコントローラ10は、エクスパンダ20に対し、HDD情報についての報告の要求を行う。エクスパンダ20は、コントローラ10からの要求に応じて、前記レート交渉により認識したHDD状態を報告する。報告によりコントローラ10は各HDD側物理リンク50の状態を認識する。この報告処理は、SMP(Serial Management Protocol)の使用によるプライベートMIB(Management Information
Base)により実行してもよいし、前述した特殊コマンド発行の機能により実行してもよい。
手順(5): コントローラ10は、接続済み状態のHDD30との間でHDD30のディスカバリを実行する。当該処理は、エクスパンダ20が、前記手順(4)に示す報告の機能に対応していれば、接続済み状態であると報告された物理ポートに対応するHDD30のみを対象で実行すればよい。
以上のような手順でコントローラ10及びエクスパンダ20は、HDD情報を認識する。コントローラ10やユーザは、HDD情報の認識に基づき、前記コントローラ側物理リンク40とHDD側物理リンク50とのレート比率なども考慮して、実行対象となる特殊動作やその処理属性を決定し、設定やコマンド実行などを行う。例えばコントローラ10は、HDD情報報告処理によりHDD#A,#Bのレートが1.5Gbpsであることを認識し、コントローラ側物理リンクのレートが3.0Gbpsでレート比率が2倍であることを考慮して、このHDD30の組を対象として前記二重化転送等の特殊動作を実行するように設定や特殊コマンド実行を行う。
前記手順(4)において、例えば、コントローラ10からの特殊コマンドの発行によりHDD情報報告処理を行う場合は、図25(b)に示すように、前記特殊コマンドのヘッダ内のSASアドレス領域におけるバイト8,9を使用して物理ポート情報の指定とそれに対するHDD情報の報告とを行う。図25(a)に示すHDD状態において、コントローラ10は、HDD情報報告の要求として、エクスパンダ20に対して、前記SASアドレス領域を使用して、調査対象となる物理ポート番号などを指定する。コントローラ10は、例えば物理ポート#1,#2を指定して、この組におけるレートが低速(1.5Gbps)で、特殊動作で使用可能かどうかを問い合わせる。エクスパンダ20は、コントローラ10側からの物理ポートの指定に応じて、対応するHDD状態を報告する。例えば、物理ポート#1,#2は低速(1.5Gbps)であり、使用可能であることを報告する。
また図25(b)に示すように、物理ポートの指定の仕方として、前記物理ポート情報を指定する領域における各ビットを物理ポートと対応させてもよい。図中の形式は、1ビットを1つの物理ポートに対応させた場合であり、バイト8の16ビットに物理ポート#31〜#16を、バイト9の16ビットに物理ポート#15〜#0を対応させている。この場合なら一度に32個の物理ポートまでは1つのコマンドのみで報告可能となる。
エクスパンダ20からコントローラ10への報告の内容としては、特殊動作のためのRAIDグループの構成が可能となる低速(1.5Gbps)のHDD30が接続されている物理ポートについてのみ報告することや、またHDD接続部の物理ポートについて報告することとしてもよい。また使用可能な物理ポートをビット等で報告するのではなく、各物理ポートのレートや状態などを識別できる数値データを報告するようにしてもよい。前記SMPで報告する場合は、コントローラ10及びエクスパンダ20のいずれもコマンドのヘッダに操作は行わない。この時の報告内容は任意に設定できる。
次に、実施の形態9に関して、上記HDD情報報告機能を用いた、HDD障害時の場合の報告処理について説明する。コントローラ10からの各種のコマンド要求に対する応答は、一定時間以内に行う必要がある。そのため、特殊動作の対象となるHDDグループにおいて一方のHDD30が障害等によりエラー状態になった場合に、前述した自動データ復元機能(パリティやミラーを利用した復元)の有無により部分的に動作が異なる。HDD情報報告機能を用いて、HDD障害時における情報の報告をエクスパンダ20からコントローラ10に対して行い、エクスパンダ20で各状態に対応した動作を行う。
図26は、2つのHDD30{ドライブA,ドライブB}の状態の組み合わせ(a〜g)について、各データについてのエクスパンダ20での自動データ復元の可否と、対応する前述の実施の形態と、エクスパンダ20で実行する動作との対応を示す表である。HDD30の状態として、「無応答」、「エラー報告」、「正常」がある。「無応答」は、HDD30からコマンドに対する応答が無い状態、「エラー報告」は、HDD30から応答として所定のエラー報告がなされた状態である。
前記各実施の形態に共通の場合として、ドライブA−Bの状態の組み合わせで、a:「無応答」−「無応答」、b:「無応答」−「エラー報告」、c:「エラー報告」−「エラー報告」、d:「正常」−「無応答」、f:「正常」−「エラー報告」の5つの場合では、データ復元が不可能である。実施の形態5から実施の形態8までの場合で、ドライブA−Bの状態の組み合わせで、e:「正常」−「無応答」、g:「正常」−「エラー報告」の2つの場合では、自動データ復元が可能な場合がある。以下、a〜gの各場合に応じて、エクスパンダ20は、HDD情報報告機能を用いて、コントローラ10側に報告及び関連の動作を行う。
aの場合、エクスパンダ20は、処理時間の閾値まで待った後に、無応答エラーをコントローラ10に報告する。bの場合、エクスパンダ20は、上記aと同様に処理時間の閾値まで待った後に、ドライブBのエラーコードと無応答エラーをコントローラ10に報告する。cの場合、エクスパンダは、ドライブA,Bのエラーコードをコントローラ10に報告する。なお、前記a〜cの場合には、エクスパンダ20は、報告の際、エラーコード(エラー内容を示す値)を転送データに混合して転送する。無応答エラー情報についてはエクスパンダ20が生成する。
dの場合、エクスパンダ20は、処理時間の閾値まで待った後に、正常側のデータと無応答エラーを報告する。なおこの際、エクスパンダ20は、転送においてデータとエラーコードを混合して、残りの部分はダミーデータでパディングして転送する。またコントローラ20に対して正常側データのみ単体でアクセスするようにエラー報告するようにしてもよい。eの場合、エクスパンダ20は、処理時間の閾値まで待った後に、エクスパンダ20での復元データをコントローラ10に報告する。また、エクスパンダ20は、データ復元の旨を通知する。
fの場合、エクスパンダ20は、正常側データとドライブBのエラーコードをコントローラ10に報告する。この際、前記dの場合と同様に、データとエラーコードの混合などの処理を行う。gの場合、エクスパンダ20は、エクスパンダ20での復元データをコントローラ10に報告する。また復元の旨を通知して、エラーコードはエクスパンダ20で保持する。前記gの場合で、自動データ復元時のエラー情報の報告をコントローラ10に対し行うようにしてもよい。コントローラ10は、エクスパンダ20からデータ復元の旨を通知された場合に、対象のHDD30のエラーが深刻なものか、あるいは一時的なものかについて分けるために、エラー情報(エラーコード)についての調査を行う。前記エクスパンダ20での自動データ復元が行われた場合は正常シーケンスとなるのでコントローラ10に対してエラー情報の報告は行われない。そのため、エクスパンダ20側でこのエラー情報をメモリに一時的に保持しておき、コントローラ10からの要求の発生に応じて当該保持しておいたエラー情報について報告(送信)する。
以上のように、実施の形態9では、HDD情報報告機能を使用することで、前述した各実施の形態の有する機能を効率良く実行できる。HDD情報報告機能により、ディスクアレイ装置に接続される個々のHDD30へ直接アクセスする回数を軽減でき、トラフィックの改善がなされる。
(実施の形態10)
次に、図27は、実施の形態10におけるディスクアレイ装置での特殊処理のモデルを表わす説明図である。コントローラ10、エクスパンダ20、及びHDD30の間における、処理及びデータの流れを示している。コントローラ側物理リンク40のレートは3.0Gbps、HDD側物理リンク50のレートも3.0Gbpsであり、レート比率が1である。また、ホストからのライト命令に応じて、ディスクアレイ装置において特に2台のHDD30{ドライブA,ドライブB}に対するデータのライトを行う場合について示す。
実施の形態10では、前記各実施の形態の機能に加え、更に、コントローラ10とエクスパンダ20の間でのデータの圧縮/伸張機能を有する。実施の形態10では、特殊動作として、コントローラ側物理リンク40において、複数のHDD30を対象とする転送データを圧縮して多重化転送し、複数のHDD側物理リンク50において、前記転送データを伸張して分散を行う。実施の形態10での多重化転送は、コントローラ側物理リンク40において複数系統のデータを圧縮して送信するものである。当該特殊動作に関して、コントローラ10はデータ操作として複数のデータについての圧縮/伸張処理を行い、エクスパンダ20はデータ操作として複数のデータについての圧縮/伸張処理と複数のHDD30へのデータの分散を行う。コントローラ10とエクスパンダ20はそれぞれデータ分離/統合回路(17,27)内において更にデータ圧縮/伸張回路を備える。本図は特に2台の高速のレート(3.0Gbps)のHDD30を組にしてそれを対象に二重化転送+圧縮/伸張処理を行う場合を示す。
図27(a)で、ライト要求時、コントローラ10は、二重化対象とする2台のHDD30に対するライトデータに関して、エクスパンダ20に対して二重化転送+圧縮/伸張処理を指示する特殊コマンド(ライトコマンド)を発行する。コントローラ10は、ライトデータとなるユーザデータ及び冗長コード(チェックコード)を、データ圧縮/伸張回路により圧縮処理する。コントローラ10は、高速側の物理リンク40で、エクスパンダ20に対し、前記特殊コマンド、圧縮データを、順に転送する。例えば元データのシーケンスが{A,A’,B,B’,C,C’,……}で、その圧縮データのシーケンスが{Ac,Bc,Cc,……}とする。データAとA’が圧縮によりデータAcとなる。データ圧縮/伸張処理による圧縮率を例として50%とする。圧縮データ単位(Ac等)においてその転送処理時間がtとする。なおここではコマンドについて圧縮対象としない場合を示す。
エクスパンダ20は、コントローラ10側から前記特殊コマンド及び圧縮データを順に受信して、データ圧縮/伸張回路により受信データを伸張処理して複数のHDD側物理リンク50へのデータの分散を行う。エクスパンダ20は、ターゲットとなる各HDD30にライトコマンド及びライトデータ(伸張データ)を配信する。低速側の物理リンク50では、レート及び前記圧縮率に応じて、1つの圧縮データ単位のデータに対応して2倍のデータに伸張されるため2tの転送処理時間を要する。各HDD30は、受信したライトコマンドに基づきライトデータをディスクに記憶する。
ホストからのHDD30に対するデータのリード時は、上記ライト時と逆の流れの処理になる。すなわち、エクスパンダ20は、二重化対象である2台のHDD30からデータをリードし、各リードデータを圧縮処理して統合して多重化データとしてコントローラ10側に転送する。コントローラ10は、エクスパンダ20からの転送データを伸張処理してホストに対するデータとする。
図(b)に示すように、データと時間の関係は、例えばコントローラ10側から前記圧縮データのシーケンス{Ac,Bc,Cc,……}が順に送信された場合において、エクスパンダ20での各圧縮データについての伸張処理時間分の遅れで、ドライブAでデータ{A,A’,C,C’,E,E’,……}が、ドライブBでデータ{B,B’,D,D’,F,F’,……}が、それぞれ対応して記憶される。
実施の形態10の場合、本図の構成に示すようにコントローラ側物理リンク40とHDD側物理リンク50のレートが同速(3.0Gbps)であっても、多重化転送による性能向上の効果を得ることができる。例えば、圧縮率が50%の場合は、実施の形態1と同様の処理で、コントローラ側物理リンク40のバスにおけるトラフィックを1/2にすることが可能である。また例えば、ディスクアレイ装置のフォーマット処理時は、ユーザデータ部分は同一データパターンとなるため、データ圧縮/伸張機能による大きな圧縮効果を得やすい。従って、コントローラ10側のトラフィックが改善されることにより、装置のフォーマット時間の短縮が可能である。
(実施の形態11)
次に、図28は、実施の形態11におけるディスクアレイ装置の構成を示すブロック図である。実施の形態11のディスクアレイ装置は、基本筐体120、増設筐体130において、コントローラ10、エクスパンダ20B、データ分離/統合エンドデバイス400、及びHDD30を有する。本図では、ホスト(300)、コントローラ10、エクスパンダ20B、データ分離/統合エンドデバイス400、及びHDD30の間における、ホストからのライト要求時のデータの流れを示している。
実施の形態11では、前述した各実施の形態での特殊動作を含む処理を制御する機能を前記エクスパンダ20内の回路に実装するのではなく、エクスパンダ20Bに接続される別のエンドデバイスであるデータ分離/統合エンドデバイス400に実装して同等の機能を持たせた形態である。本図に示すのは、増設筐体130内において、前記データ分離/統合回路27を有さないエクスパンダ20Bに対して、前記データ分離/統合回路27に相当する機能を有するデータ分離/統合エンドデバイス400がバス等を介して外付け接続された構成である。ホスト、コントローラ10、HDD30等は、前記実施の形態と同様の構成である。エクスパンダ20Bは、前記各実施の形態における特殊動作を含む機能以外のSASに従った処理等を行う。
データ分離/統合エンドデバイス400は、前記各実施の形態における特殊動作を含む機能を実現するソフトウェア及びハードウェアを備えるLSI等のデバイスである。データ分離/統合エンドデバイス400をエクスパンダ20Bに対して接続/非接続が自由な形態とすることでディスクアレイ装置の拡張性が実現される。
コントローラ10は、前記特殊動作等の機能を実行する際、エクスパンダ20Bとの物理リンク40で、データ分離/統合エンドデバイス400に対応して設定されるSASアドレスを指定して特殊コマンドを発行、送信する。これにより、コントローラ10は、データ分離/統合エンドデバイス400との間でデータ転送を行う。
データ分離/統合エンドデバイス400は、コントローラ10との最低1本以上の通信用のパス401を有する。当該パス401は、コントローラ10−エクスパンダ20Bのレートに対応して高速(3.0Gbps)とする。また、データ分離/統合エンドデバイス400は、HDD30との通信用に、別の複数のパス402を有する。なおHDD30側とのパス402のうちの1本をコントローラ10側とのパス401として共有する構成としてもよい。
データ分離/統合エンドデバイス400は、自装置と対応して接続されるエクスパンダ20Bに接続されるHDD30のSASアドレスを調査してアドレステーブルを作成して保持する機能を有する。データ分離/統合エンドデバイス400は、コントローラ10が自装置宛てに送信したコマンドにおけるSASアドレス(宛先SASアドレス)を、前記アドレステーブルにより、ターゲットとなる各HDD30のSASアドレスに変換した上で、転送データを分離/統合処理して送信する。また前記受領コマンドにおけるコントローラ10のSASアドレス(ソースSASアドレス)を自装置のSASアドレスに変換する。データ分離/統合エンドデバイス400でのデータ分離/統合処理は、前記各実施の形態で示した、多重化転送のためのデータの分散、多重書きのためのデータ複製、パリティ処理等の各種データ操作に対応した処理である。またリード要求時など、HDD30からコントローラ10へのデータ転送時は、上記と逆の流れで同様にデータ転送される。
なおデータ分離/統合エンドデバイス400をエクスパンダ20Bに外付けする形態以外にも、エクスパンダ20B内の点線枠(400B)に示すようにエクスパンダ20B内に必要に応じて接続可能な形態としてもよい。
次に、本発明の一実施の形態のディスクアレイ装置での処理フローについて説明する。図29、図30は、前述した各実施の形態のディスクアレイ装置での処理に対応するフロー図であり、特に、一実施の形態として、前記各実施の形態での機能を総合的に備えた形態のディスクアレイ装置での処理フローを示す。本装置において、HDD状態・接続レート状態や処理対象データのタイプや特殊動作実行に関する設定などに応じて、特殊動作が選択的に実行される。
図29は、エクスパンダ20の動作として、コントローラ10からのコマンドに基づきHDD30へデータを転送する処理(データライト等)を行う場合の手順を示すフロー図である。
エクスパンダ20は、コントローラ10側からコントローラ側物理リンク40によりフレームを受領すると(ステップS101)、受領フレームのヘッダを参照してその宛先が自装置宛てのアドレス(エクスパンダアドレス)かどうかを確認する(S102)。
エクスパンダ20は、前記宛先が自装置宛てのアドレスでない場合は(S102−NO)、当該フレーム内における指定アドレスに対応した物理ポートへ当該フレームを配信して(S103)、処理を終了する。エクスパンダ20は、前記宛先が自装置宛てのアドレスである場合は(S102−YES)、前記フレームのヘッダのフラグ領域及びコマンド領域を参照してチェックする(S104)。前記チェックにより、フラグとコマンドの組み合わせが正しいかどうかを判断する(S105)。エクスパンダ20は、前記組み合わせが正しくない場合(S105−NO)、エラー処理及び報告をコントローラ10に行って(S106)、終了する。
エクスパンダ20は、前記組み合わせが正しい場合(S105−YES)、前記フレームのヘッダの物理ポート指定領域をチェックする(S107)。エクスパンダ20は、当該チェックにより、データ転送等の処理の対象となる指定物理ポートを認識する。特に特殊動作の場合は、複数の物理ポートが指定物理ポートとなる。
次に、エクスパンダ20は、データ分離/統合回路27により、前記指定物理ポートごとに、前記受領フレームのヘッダすなわちコマンドを複製する(S108)。当該複製により、処理対象となる複数のHDD30に対して送信されるコマンドの元が作成される。
次に、エクスパンダ20は、前記複製で作成された複数のフレームについて、そのヘッダのSASアドレス領域においてアドレス変換を行う(S109)。アドレス変換は前記アドレステーブルの参照により行われる。エクスパンダ20は、当該領域において、ソースアドレスを自装置アドレス(エクスパンダアドレス)に置き換える。このとき前記リザーブ領域についてはクリアする。また、エクスパンダ20は、当該領域において、宛先アドレスを前記指定物理ポートに対応したHDDアドレスに置き換える。
次に、エクスパンダ20は、対象データ(コントローラ10側からの転送データ)が、多重化データかどうかを判断する(S110)。対象データが多重化データの場合は、データ分離/統合回路27で、対象データを前記指定物理ポートごとに分離する処理を行う(S111)。当該分離は前記特殊動作のタイプに応じた処理である。例えば実施の形態1等のように二重化転送の場合は、2つの物理ポートへとデータの分離が行われる。
次に、エクスパンダ20は、対象データについてデータフレーム(DATAフレーム)とパリティの自動生成を行うかどうかを判断する(S112)。パリティ生成を行う場合は、実施の形態5等のように、対象データを基にXOR演算して、指定物理ポート用にパリティデータを生成する(S113)。
次に、エクスパンダ20は、対象データについて二重書き(多重書き)を行うかどうかを判断する(S114)。二重書きを行う場合は、二重書き対象となるデータを指定ポートごとに複製する処理を行う(S115)。
次に、エクスパンダ20は、上記各処理で変換/生成したフレームを指定ポートに対し発行して(S116)、終了する。
また図30は、エクスパンダ20の動作として、コントローラ10からのコマンドに基づきHDD30からデータを転送する処理(データリード等)を行う場合の手順を示すフロー図である。
エクスパンダ20は、HDD30側からHDD側物理リンク50によりフレームを受領すると(S201)、当該フレームのヘッダを参照してその宛先アドレスが自装置宛てのアドレス(エクスパンダアドレス)かどうかを確認する(S202)。エクスパンダ20は、前記宛先が自装置宛てのアドレスでない場合は(S202−NO)、フレーム内の指定アドレスの物理ポートへ当該フレームを配信して(S203)、処理を終了する。
前記宛先が自装置宛てのアドレスである場合は(S202−YES)、フレームの送信元のHDD30がエラーであるかを判断する(S204)。エクスパンダ20は、HDD30がエラーでない場合は(S204−NO)、HDD30から転送されたデータをメモリ(バッファ)上に整列して統合する(S205)。HDD30がエラーである場合は当該処理を行わない。
次に、エクスパンダ20は、対象HDD30(前記特殊動作の対象となるHDDグループの場合を含む)の応答が完了かどうかを判断する(S206)。応答が完了していない場合(S206−NO)、待ち時間が許容時間内であるかどうかを判断し(S207)、許容時間内である場合は(S207−YES)、終了する。許容時間を超える場合(S207−NO)及び対象HDD30の応答が完了している場合(S206−YES)、次にエクスパンダ20は、対象HDD30からのすべてのデータは正常かどうかを判断する(S208)。
HDD30からのすべてのデータが正常の場合は(S208−YES)、データ復元を行う必要はない。データにエラーがある場合は(S208−NO)、エクスパンダ20で前記パリティやミラーなどを利用したデータ復元が可能かどうかを判断する(S209)。データ復元可能でない場合は(S209−NO)、エラー処理及び報告を行って(S210)、終了する。データ復元可能な場合は(S209−YES)、データ復元処理(S211)を行う。
次に、エクスパンダ20は、前記受領フレームについて、そのヘッダのSASアドレス領域においてアドレス変換を行う(S212)。アドレス変換はアドレステーブルの参照により行う。エクスパンダ20は、当該領域で、ソースアドレスを自装置アドレス(エクスパンダアドレス)に置き換える。また、当該領域で、宛先アドレスをコントローラアドレス(コントローラ10のSASアドレス)に置き換える。また、エクスパンダ20は、当該領域で、前記エラー情報や復元情報(エクスパンダ20でデータ復元したことを表わす情報など)がある場合は前記リザーブ領域にセットする。
次に、エクスパンダ20は、上記処理で変換/生成したフレームをコントローラ10側への物理ポートに発行して(S213)、終了する。処理フローは以上である。
以上の他、複数のHDD30に対する転送データ長が異なる場合に、データ長の長い方と短い方の差分についてALIGNプリミティブ等を挿入するようにしてもよい。また、ダミーデータでパディングしてもよい。また、前記特殊動作の実行に関して、例えば、トラフィックに影響の大きいデータの転送時のみ前記多重化転送を実行する等の制御を行ってもよい。また、データ(ユーザデータ)のみ多重化転送するようにしてもよいし、コマンドやステータス等もすべてデータと合わせて多重化転送するようにしてもよい。また、状況によって多重化対象となるデータを選択する等の制御を行ってもよい。
以上のように、本発明の各実施の形態のディスクアレイ装置では、複数のHDD側物理リンク50における転送データをセットとして扱ってコントローラ側物理リンク40で多重化することで、コントローラ10−HDD30の接続及びデータパスにおける物理リンクレート間の違いがある場合でも、コントローラ側物理リンク40でALIGNプリミティブの挿入がされず、コントローラ10側の性能を引き出して効率的なデータ転送が可能である。またコントローラ10側の性能を引き出すと共にHDD側物理リンク50に対してもバス使用効率の向上がなされ、データ転送系全体のトラフィックの改善による性能向上が図れる。
なお、複数のHDD30に対しデータを分散して格納するRAID方式では、その格納処理に際して複数のデータを揃える必要がある。これに対して本発明の実施の形態の場合、低速側の物理リンク50でのデータ分散のために複数のデータを揃えるためのオーバヘッドは装置全体の特殊動作でのオーバヘッドの内数となるので、性能への影響はほとんど無い。また、多重化転送の対象となるHDD30のセットにおける個々のHDD30の転送データもコントローラ10へと集中するため、高速側の物理リンク40でのバス占有回数及び占有時間が減少することでデータが流れやすくなり、データ転送系のトラフィックが改善される。
また、データ転送性能を低下させずに記憶装置として安価な低速(1.5Gbpsなど)のHDD30を使用可能であることによるシステム全体のコスト低減効果もある。HDD30側は、コントローラ10側のレートに合わせて高速(3.0Gbpsなど)のタイプとしなくても良いことから、技術的な安定性が確保できる利点も有している。
本発明の各実施の形態で説明したディスクアレイ装置の構成及び機能やコマンド等については、エクスパンダ20を介してコントローラ10側とHDD30(SAS−HDDやSATA−HDD)側とのデータ転送速度が異なる場合に限らず同一(同程度)の場合にも同様に適用できる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
10…コントローラ、11…CPU、12…メモリ、13…チャネル制御部、14…データコントローラ、15…キャッシュメモリ、16…ディスク制御部、17…データ分離/統合回路、20,20B…エクスパンダ、27…データ分離/統合回路、28…ダイレクタ回路、30,30a,30b…ハードディスクドライブ、40,50,50a,50b…物理リンク、56…電源コントローラボード、59…コントローラボード、91…外部SASケーブル、92…通信ケーブル、100…ディスクアレイ装置、111…ラックフレーム、112…マウントフレーム、120…基本筐体、130…増設筐体、141…バッファ、142…データコントロール回路、161…SASプロトコル制御部、200…SAN、271…バッファ、272…データコントロール回路、273…XOR回路、300…情報処理装置、400,400B…データ分離/統合エンドデバイス、401,402…パス。