説明

制御装置及び制御装置の制御方法

【課題】記憶装置が交換された場合に、新たな記憶装置における複数のパーティション領域に適切にアクセスする。
【解決手段】HC200と、HC200からの要求に応じてHDD300,301へのアクセスを制御するディスクアレイ装置100とを有するコンピュータシステムは、HCの複数のパーティション領域の開始アドレスを示す情報として、複数種類の記憶容量の各々に対応する複数のフォーマット情報を管理し、HDD300,301の何れかが新たなHDDに交換された場合に、前記新たなHDDの記憶容量に対応するフォーマット情報を前記管理される複数のフォーマット情報の中から選択し、前記新たな記憶装置の複数のパーティションへアクセスする際のアドレスを、前記選択されたフォーマット情報に基づいてアドレス算出部104が算出し、前記算出されたアドレスに基づいて前記新たなHDDへのアクセスをRAID制御部102が制御する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御装置及び制御装置の制御方法に関する。
【背景技術】
【0002】
ハードディスク(以下、HDD(Hard Disk Drive))等の記録装置の信頼性向上、高速化を実現する技術としてRAID(Redundant Arrays of Inexpensive Disks)がある。このRAIDは、ストライピング、パリティチェック、ECC(Error Check and Correct)、データとパリティ、ECCの分散書き込み等の機能を含む。また、採用している機能やその組み合わせの違いにより、RAID0〜RAID6等の様々な種類が存在する。
【0003】
例えば、RAID1は、ミラーリングとも呼ばれ、複数のHDDに同じデータを書き込む技術であり、一つのHDDに障害が起こっても、他のHDDに障害が無ければデータの消失を防ぐことができる。
【0004】
ここで、複数の同容量のHDDでRAID1を構築している状態を考える。一つのHDDに障害が起きた場合、この障害が起きたHDDを、障害発生前の容量よりも大きな容量のHDDに交換し、交換されなかったHDDのデータを複製するリビルド処理を実行したとする。しかし、交換した大きな容量のHDDのRAID1としての使用領域は、障害発生前と同様の容量のみであった。また、リビルド処理の後に、例えもう一方の小さい容量のHDDを大きな容量のHDDと交換して、リビルド処理を実行したとしても、上記と同様にRAID1としての使用領域は小さな容量のHDDと同様の領域のみとなる。即ち、RAIDの再構築及びオペレーティングシステム(OS)の再インストールを伴わない限り、リビルドのみでのRAID1の使用領域は変わらないという問題があった。
【0005】
特許文献1には、上記のような、いわゆる余ったHDDの容量を有効に利用する提案がなされている。また、特許文献2には、アレイを構成する全てのHDDの容量が拡張された場合において、RAIDの再構築及びOSの再インストールを行わなくてもRAIDアレイの容量拡張を実現する提案がなされている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開平11−126137号公報
【特許文献2】特開2006−178823号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかし、特許文献1の技術を用いたとしても、RAIDアレイ装置自体の容量は最初にRAIDアレイを組んだときの容量で動作してしまうため、リビルド処理の対象となるHDDの領域は、最初にRAIDアレイを組んだときの容量しかRAID1としての使用領域とならない。
【0008】
また、特許文献2では、HDDに保持されている連続するパーティション領域を拡張する構成が含まれていないため、拡張可能なパーティションは限定され、連続する全てのパーティション領域を自由に拡張することはできない。
【0009】
本発明は、上記の問題点を解決するためになされたものである。本発明の目的は、複数の記憶装置に含まれるいずれかの記憶装置が新たな記憶装置に交換された場合に、新たな記憶装置の記憶容量に対応するフォーマット情報に従って、新たな記憶装置における複数のパーティション領域にアクセスする制御装置及びその制御方法を提供することである。
【課題を解決するための手段】
【0010】
本発明は、情報処理装置及び複数の記憶装置と接続可能であり、前記情報処理装置からの要求に応じて前記複数の記憶装置へのアクセスを制御する制御装置であって、前記制御装置に接続される前記記憶装置における複数のパーティション領域の開始アドレスを示す情報として、複数種類の記憶容量の各々に対応する複数のフォーマット情報を管理する管理手段と、前記複数の記憶装置に含まれる何れかの記憶装置が新たな記憶装置に交換された場合に、前記新たな記憶装置の記憶容量に対応するフォーマット情報を前記管理手段により管理される複数のフォーマット情報の中から選択する選択手段と、前記新たな記憶装置の複数のパーティションへアクセスする際のアドレスを、前記選択手段により選択されたフォーマット情報に基づいて算出するアドレス算出手段と、前記アドレス算出手段により算出されたアドレスに基づいて前記新たな記憶装置へのアクセスを制御する制御手段とを有することを特徴とする。
【発明の効果】
【0011】
本発明によれば、複数の記憶装置に含まれるいずれかの記憶装置が新たな記憶装置に交換された場合に、新たな記憶装置の記憶容量に対応するフォーマット情報に従って、新たな記憶装置における複数のパーティション領域にアクセスする制御装置及びその制御方法を提供することが可能となる。
【図面の簡単な説明】
【0012】
【図1】ディスクアレイ装置を含むコンピュータシステムの構成図である。
【図2】ホストコンピュータ200の処理を示すフローチャートである。
【図3】ディスクアレイ装置100の基本処理を示すフローチャートである。
【図4】新HDD接続処理を示すフローチャートである。
【図5】制御コマンドのフォーマットを示す図である。
【図6】ディスクアレイ装置100のフォーマット情報の構成を示す図である。
【図7】フォーマット管理テーブルの構成を示す図である。
【図8】RAID1ディスクアレイ状態1を示す図である。
【図9】RAID1ディスクアレイ状態2を示す図である。
【図10】RAID1ディスクアレイ状態3を示す図である。
【図11】RAID5ディスクアレイ状態を示す図である。
【発明を実施するための形態】
【0013】
以下、本発明を実施するための形態について図面を用いて説明する。
【実施例1】
【0014】
図1は、本発明の実施例1に係る制御装置を適用したディスクアレイ装置を含むコンピュータシステムの構成を示す図である。図1において、100はディスクアレイ装置、200は情報処理装置としてのホストコンピュータ(以下、HC)、300及び301は記憶装置であるハードディスク(HDD)である。HC200は、ディスクアレイ装置100の上位装置で、具体的には、パーソナルコンピュータ等の本体や、複合機(MFP)等の画像処理装置のコントローラ部等に対応し、CPU、ROM、RAM、各種インタフェース等を有する。
【0015】
HC200は、HDD300,301に対して、ディスクアレイ装置100を介して書き込み及び読み出しを行う。このように、ディスクアレイ装置100は、上位装置であるHC200及び複数の記憶装置(HDD,301)と接続可能である。なお、本発明は、記憶装置をHDDに限定するものではなく、他の記憶装置、例えば、フラッシュメモリ等の半導体を使用した記憶装置等でも同様の結果を得ることが出来る。また、ディスクアレイ装置100に接続される記憶装置の台数も2台に限定されるものではなく、3台以上接続されていてもよい。
【0016】
HC200とディスクアレイ装置100、ディスクアレイ装置100とHDD300,301は、それぞれシリアルATAインタフェース(SATA I/F)400により接続されている。なお、本実施例では、HC200、ディスクアレイ装置100、及び、HDD300,301の接続をシリアルATAインタフェースに限定するものではない。他のインタフェース、例えば、SAS(Serial Attached SCSI)インタフェース等でも同様の結果を得ることが出来る。
【0017】
ディスクアレイ装置100において、デバイス制御部101は、HC200からシリアルATAインタフェース900を介して受信する書き込み要求及び読み出し要求に従い、RAID制御部102に対して指示を行う。
【0018】
RAID制御部102は、デバイス制御部101からの指示を受けて、RAIDと呼ばれる制御(RAID制御)を行う。このRAID制御とは、背景技術で示したように、1台のHDDが故障した場合でも故障したHDDに記憶されていたデータを復元可能な技術である。RAID制御部102は、RAID制御を実行する際、マスターとなるHDD(マスターHDD)のID及びマスターHDDのアクセスLBAを、フォーマット管理部103に送信する。なお、フォーマット管理部103は、HDD300内及びHDD301内の連続するパーティション領域の管理情報を示すフォーマット情報(後述する図6に示す)を記憶管理している。また、LBAは、論理ブロックアドレス(Logical Block Addressing)を示す。さらに、マスターHDDのアクセスLBAは、HC200からのアクセス要求(例えば、書込要求、読出要求)等から抽出される。
【0019】
フォーマット管理部103は、RAID制御部102から受信した情報からマスターHDD及びバックアップとなるHDD(バックアップHDD)におけるアクセスの対象となるパーティションの開始LBA(アクセスパーティション開始LBA)を算出する。次に、フォーマット管理部103は、マスターHDDのアクセスLBA、マスターHDD及びバックアップHDDのアクセスパーティション開始LBAをアドレス算出部104に送信する。
【0020】
アドレス算出部104は、フォーマット管理部103から受信した情報からバックアップHDDのアクセスすべきアドレス(アクセスLBA)を算出し、RAID制御部102に送信する。なお、ここでは、フォーマット管理部103が、マスターHDD及びバックアップHDDにおけるアクセスパーティション開始LBAを算出し、アドレス算出部104が、バックアップHDDのアクセスLBAを算出する構成を説明した。しかし、フォーマット管理部103は、フォーマット情報を記憶管理するのみとしてもよい。そして、アドレス算出部104が、フォーマット管理部103で管理されるフォーマット情報に基づきマスターHDD及びバックアップHDDにおけるアクセスパーティション開始LBAを算出し、バックアップHDDのアクセスLBAを算出してもよい。
【0021】
次に、RAID制御部102は、マスターHDDのアクセスLBAと、アドレス算出部104から得たバックアップHDDのアクセスLBAを用いて、デバイス制御部101からの指示に対応する処理をホスト制御部105に指示する。ホスト制御部105は、RAID制御部102からの指示に従い、シリアルATAインタフェース900を介してHDD300,301に書き込み要求及び読み出し要求を行う。
【0022】
HDD300,301は、ホスト制御部105からの書き込み要求及び読み出し要求に従い、受信したデータの磁気ディスク(図示せず)への書込み及び磁気ディスクからのデータの読み出しを行う。なお、RAID制御部102は、ホスト制御部105のいずれのチャネルに接続されたHDDがマスターであるかの情報等を保持する。
【0023】
状態保持部106は、ディスクアレイ装置100の電源停止前の状態を保持する。状態保持部106が保持する状態には、接続されているHDDの種類、個数、内部ブロックであるデバイス制御部101、RAID制御部102、フォーマット管理部103、アドレス算出部104、ホスト制御部105の初期設定値等が含まれる。また、状態保持部106は、RAID制御状態(RAID制御の有効/無効の設定状態)も保持する。なお、RAID制御状態は、ユーザの指示によりHC200から設定されるものである。また、リビルド処理中に電源が停止された場合、状態保持部106は、リビルド処理の処理状態(何%終了)等の情報も保持する。なお、状態保持部106は、FLASH ROMやボタン型電池でデータが保持されるSRAM等が使用される。
【0024】
図2は、本発明の実施例1に係るHC200の処理を示すフローチャートである。このフローチャートに示す処理は、HC200のCPUがROM又はHDD300,301に記録されたプログラムをRAMにロードして実行することにより実現されるものである。
【0025】
HC200は、電源が投入されるとHC200自身の初期化処理を実行する(S100)。S100の初期化処理には、HC内に実装されるメモリインタフェースの初期化、シリアルATAインタフェースの初期化、CPUの初期化、HCの起動処理等が含まれる。なお、HCの起動処理には、マスターHDD(例えばHDD300)からOSをメモリにロードして、OSを起動する動作も含まれる。また、以下のS101〜S107は、OS上で動作する、ディスクアレイ装置100のデバイスドライバの動作に対応する。
【0026】
次に、HC200のCPUは、HDDフォーマットテーブルを用意する(RAM内に読み込む)(S101)。なお、HDDフォーマットテーブルは、ディスクアレイ装置100のデバイスドライバに含まれるものとする。即ち、HDDフォーマットテーブルはHDDに保持されるが、マスター/バックアップHDDという区別はない。HDDフォーマットテーブルは、例えば、ディスクアレイ装置100にマスターHDDのみ接続されている場合はマスターHDDに保持され、マスターHDD/バックアップHDD共に接続されている場合はマスター/バックアップHDDの両方に保持されている。
【0027】
また、ここで読み出すHDDフォーマットテーブルには、ディスクアレイ装置100に接続されるHDDにおける複数のパーティション領域の開始アドレスを示す情報として、予め、想定されているHDDの複数種類の記憶容量毎に用意された複数のフォーマット情報が記述管理されている。例えば、80,160,250,500,1000[GByte]の記憶容量を持つHDDの存在が想定されるとすると、それぞれに対するパーティションの管理情報(例えば、それぞれ図6に示すような情報)が記述されている。即ち、実際に接続されていない容量のHDDについてもフォーマットテーブル内にパーティションの管理情報が存在することになる。なお、HDDフォーマットテーブルは、ディスクアレイ装置100のデバイスドライバをバージョンアップすること等により更新可能である。
【0028】
次に、HC200のCPUは、一連の初期化処理が終了すると割り込み受信待ち状態となる(S102でNo)。そして、HC200のCPUは、割り込みを受信したと判定すると(S102でYes)、その割り込みが新HDD接続割り込みであるか判定する(S103)。
【0029】
そして、新HDD接続割り込みであると判定した場合(S103でYes)、HC200のCPUは、ディスクアレイ装置100から新HDD情報(容量等)を取得する(S104)。
【0030】
HC200のCPUは、得られた新HDD情報(容量等)を元に上記S101で用意したHDDフォーマットテーブルを参照し、該HDDフォーマットテーブルから新HDD用のフォーマット情報を選択する(S105)。例えば、80,160,250,500,1000[GByte]のHDDに対するフォーマット情報の中から、新たに接続されたHDDの容量に対応するフォーマット情報を自動選択する。これにより、新たなHDDが接続されても、ユーザが手動でパーティション情報等を指定する手間を省くことができる。例えば、ミラーリングを行うためにはマスター/バックアップHDDのミラーリングされている個所の容量が等しく(正確にはマスターHDDの容量以上)なければならず、これを満たさない場合、ミラーリングの不具合が発生するが、これを防止できる。
【0031】
次に、HC200のCPUは、上記S105で選択した新HDD用フォーマット情報をディスクアレイ装置100に送信し(S106)、再び割り込み受信待ちとなる(S102)。
【0032】
一方、HC200が受信した割り込みが新HDD接続割り込み以外であった場合(S103でNo)、HC200のCPUは、受信した割り込みに応じた処理を実施し(S107)、再び割り込み受信待ち(S102)となる。例えば、フォーマット管理情報更新完了の割り込みを受信した場合、HC200のCPUは、S107において、リビルド処理を実行するコマンドをディスクアレイ装置100に送信するようにしてもよい。そして、リビルド処理の実行中は、リビルド処理の状態(何%終了)等の情報を図示しない表示部に表示してもよい。また、この場合、リビルド処理を実行するか否かを指示する画面を図示しない表示部に表示してもよい。その場合、この画面からユーザがリビルド処理の実行を指示した場合、HC200のCPUは、ディスクアレイ装置100にリビルド処理を実行するコマンドを送信するものとする。
【0033】
なお、上記S105では、HC200のCPUが、HDDフォーマットテーブルから新HDD用のフォーマット情報を自動選択する構成を説明した。しかし、HC200のCPUが、図示しない表示部に新HDDが接続された旨と新HDDの情報(新HDDの容量等)を表示し、ユーザに新HDDのフォーマット情報を入力させるようにしてもよい。この場合、HC200は、入力される新HDDの各パーティションの容量がマスターHDDの対応する各パーティションの容量より小さい場合、エラーとなるように制御する。また、HC200は、入力される新HDDのパーティション数がマスターHDDのパーティション数より少ない場合も、エラーとなるように制御する。
【0034】
図3は、実施例1のディスクアレイ装置100の基本処理を示すフローチャートである。このフローチャートに示す処理においてディスクアレイ装置100を構成する各部が実行する各ステップは、ハードウェアにより実現されるものであってもよいし、ソフトウェアにより実現されるものであってもよい。ソフトウェアにより実現される場合、コンピュータ(プロセッサ)読み取り可能な記録媒体に格納されたプログラムをコンピュータ(プロセッサ)が読み出して実行する等により実現される。
【0035】
ディスクアレイ装置100は、電源が投入されると、ディスクアレイ装置100自身の初期化処理を実行する(S200)。この初期化処理(S200)には、デバイス制御部101の初期化、RAID制御部102の初期化、フォーマット管理部103の初期化、アドレス算出部104の初期化、ホスト制御部105の初期化が含まれる。また、この初期化処理には、一部、状態保持部106に保持された情報が使用される。
【0036】
次に、ディスクアレイ装置100は、ディスクアレイ装置100に接続されているHDDの情報を取得する(S201)。RAID制御部102は、状態保持部106に保持されているRAID制御状態(RAID制御の有効/無効の設定状態)を確認し、RAID制御が有効であるか否かを判定する(S202)。
【0037】
そして、RAID制御が有効であると判定した場合(S202でYes)、RAID制御部102は、上記S201で取得されたHDD情報が状態保持部106に未登録か登録されているか確認する(S203)。
【0038】
そして、上記S201で取得されたHDD情報が状態保持部106に未登録であると判定した場合(S203でYes)、RAID制御部102は、デバイス制御部101を介してHC200に対してエラーを通知するように制御する(S204)。そして、本フローチャートの処理を終了する。
【0039】
一方、上記S201で取得されたHDD情報が状態保持部106に登録されていると判定した場合(S203でNo)、RAID制御部102は、RAID制御を実行する(S205)。そして、本フローチャートの処理を終了する。
【0040】
また、状態保持部106の登録内容からRAID制御が無効であると判定した場合(S202でNo)、RAID制御部102は、状態保持部106に保持された有効なチャネルにHDDが接続されている(HDD接続OK)かを確認する(S206)。
【0041】
そして、状態保持部106に保持された有効なチャネルにHDDが接続されていないと判定した場合(S206でNo)、RAID制御部102は、デバイス制御部101を介してHC200にエラーを通知する(S204)。そして、本フローチャートの処理を終了する。
【0042】
一方、状態保持部106に保持された有効なチャネルにHDDが接続されていると判定した場合(S206でYes)、RAID制御部102は、該当するHDDに対する制御を実行する(1HDD制御実行)(S207)。そして、本フローチャートの処理を終了する。
【0043】
図4は、実施例1のディスクアレイ装置100の新HDD接続処理を示すフローチャートである。このフローチャートにおける処理は、コンピュータ読み取り可能な記録媒体に格納されたプログラムをコンピュータ(プロセッサ)が読み出して実行する等により実現される。
【0044】
RAID制御が無効化された状態のディスクアレイ装置100において、無効なチャネルに新HDDが接続されると、RAID制御部102は、ホスト制御部を介して新HDDの接続を検出する(S300)。なお、新HDDの接続を検出した場合、RAID制御部102は、デバイス制御部101を介して、新HDD接続割り込みを、HC200に送信する。これにより、HC200では、新HDD接続割り込みが受信される(図2のS102,S103)。
【0045】
次に、RAID制御部102は、ホスト制御部を介して新HDDの情報を取得する(容量取得等を行う)(S301)。さらに、RAID制御部102は、上記S301で取得した新HDDの情報をデバイス制御部101を介してHC200に対して送信する(S302)。これにより、HC200では、新HDDの情報が受信され、新HDDフォーマット情報が選択され、ディスクアレイ装置100に新HDD用フォーマット情報が送信される(図2のS104〜S106)。
【0046】
この後、RAID制御部102は、デバイス制御部101を介してHC200から新HDDのフォーマット情報を受信する(フォーマット情報取得を行う)(S303)。さらに、RAID制御部102は、上記S303で受信したフォーマット情報を元にフォーマット管理部103の情報を更新(S304)する。そして、本フローチャートの処理を終了する。なお、S304の処理が完了した際に、RAID制御部102は、デバイス制御部101を介して、新HDDに基づくフォーマット管理情報更新完了の割り込みを、HC200に送信するようにしてもよい。また、S304の処理が完了した際に、RAID制御部102が自発的にリビルド処理を開始するように構成してもよい。
【0047】
なお、S301で取得された新HDDの容量が、マスターHDDの容量より小さい場合には、エラーとなり、その旨がHC200に通知され、処理が終了される。なお、HC200側では、上記エラーが通知されると、新たに接続されたHDDの容量がマスターHDDの容量より小さい旨のエラーメッセージを図示しない表示部に表示してもよい。
【0048】
なお、本実施例では、S302で新HDDの情報をHC200に送信し、HC200が、該新HDDの情報(容量)に対応するフォーマット情報(図2のS101で用意済み)をHC200内のRAMに読み込み済みのHDDフォーマットテーブルから選択してディスクアレイ装置100に送信し(図2のS103〜106)、S303でHC200から新HDDのフォーマット情報を受信する構成を説明した。しかし、ディスクアレイ装置100内にフォーマットテーブル記憶部を設け、RAID制御部102が上記HDDフォーマットテーブルから新HDDの容量に対応するフォーマット情報を選択する構成にしてもよい。例えば、ディスクアレイ装置100内の不図示のROMやディスクアレイ装置100に接続されるいずれかのHDDにHDDフォーマットテーブルを記憶させておき、RAID制御部102が、上記HDDフォーマットテーブルから新HDDの容量に対応するフォーマット情報を選択するようにしてもよい。なお、上記HDDフォーマットテーブルは、ディスクアレイ装置100内の図示しないROMに記録されるファームウェアをバージョンアップすること等により更新可能である。
【0049】
また、本実施例では、S302で新HDDの情報をHC200に送信し、S303でHC200から新HDDのフォーマット情報を受信する構成を説明した。しかし、S302で接続されている全てのHDDの情報をHC200に送信し、S303でHC200から接続されている全てのHDDのフォーマット情報を受信するようにしてもよい。
【0050】
図5は、実施例1のディスクアレイ装置100の制御コマンドのフォーマットを示す図である。図5において、400はディスクアレイ装置100の制御コマンドである。実施例1のディスクアレイ装置100では、制御コマンド400としてATAで規定されているコマンドフォーマットを使用する。
【0051】
制御コマンド400において、Featuresフィールド401は、対応する制御IDが挿入される。実施例1のディスクアレイ装置100では、「0x00」にRAID機能のON/OFFを指示するRAID制御、「0x01」にフォーマット情報制御を割り当てる。
【0052】
Commandフィールド402は、ATAで規定されているコマンドが挿入される。実施例1のディスクアレイ装置100では、ベンダ定義コマンドとして規定されている「0xFF」を使用する。C/I/Dフィールド403は、ソフトリセット制御、等の指示に使用される。
【0053】
FIS Typeフィールド404は、Frame Information Structureと呼ばれるフレーム構造を指定する。実施例1のディスクアレイ装置100では、Host-to-Device Registerタイプとして規定されている「0x27」を使用する。
【0054】
Dev/Headフィールド405は、HDDヘッド番号、マスター/スレーブデバイス、LBA/CHS切り替え指示等の情報が挿入される。Cyl Highフィールド406は、上位HDDシリンダ番号、等が挿入される。Cyl Lowフィールド407は、下位HDDシリンダ番号、等が挿入される。
【0055】
Sec Numフィールド408は、HDDセクタ番号が挿入される。Features(exp)フィールド409は、拡張されたFeaturesフィールド401として使用される。Cyl High(exp)フィールド410は、137GByte容量を越えるHDDに対する上位LBAが割り当てられる。Cyl Low(exp)フィールド411は、137GByte容量を越えるHDDに対する下位LBAが割り当てられる。Sec Num(exp)フィールド412は、137GByte容量を越えるHDDセクタ番号が挿入される。Controlフィールド413は、HDD制御に使用される。
【0056】
Sec Cnt(exp)フィールド414は、137GByte容量を越えるHDDに対する連続的に処理されるセクタ数が挿入される。Sec Cntフィールド415は、連続的に処理されるセクタ数が挿入される。Reservedフィールド416は、今後の機能拡張用に確保され、現在は未使用となっている。
【0057】
図6は、実施例1のディスクアレイ装置100のフォーマット情報の構成を示す図である。図6において、500はフォーマット情報である。フォーマット情報500は、512Byte領域を4Byte単位で区切り、先頭からアドレス501を割り振る。各4Byteのフィールドにおいて有効サイズ502と内容503を示す。
【0058】
例えば、第1フィールド510には、ホスト制御部105のチャネルAに接続されるHDD300内のパーティション1に対する開始LBA(Low)が挿入される。第2フィールド511には、チャネルAに接続されるHDD300内のパーティション1に対する開始LBA(High)が挿入される。
【0059】
第3フィールド512には、チャネルAに接続されるHDD300内のパーティション2に対する開始LBA(Low)が挿入される。第4フィールド513には、チャネルAに接続されるHDD300内のパーティション2に対する開始LBA(High)が挿入される。
【0060】
第5フィールド520には、チャネルBに接続されるHDD301内のパーティション1に対する開始LBA(Low)が挿入される。第6フィールド521には、チャネルBに接続されるHDD301内のパーティション1に対する開始LBA(High)が挿入される。
【0061】
第7フィールド522には、チャネルBに接続されるHDD301内のパーティション2に対する開始LBA(Low)が挿入される。第8フィールド523には、チャネルBに接続されるHDD301内のパーティション2に対する開始LBA(High)が挿入される。
【0062】
実施例1のディスクアレイ装置100では、フォーマット情報500をATAで規定されているData FIS内のデータ領域に512Byteデータとして挿入する。フォーマット情報500の送信は、ATAの規定に従い、Featuresフィールド401に「0x01」が挿入された制御コマンドに続いて送信される。
【0063】
図7は、本発明の実施例1に係るフォーマット管理部103で記憶管理されるフォーマット管理テーブルの構成を示す図である。図7において、600はフォーマット管理テーブルである。フォーマット管理テーブル600には、ディスクアレイ装置100に接続されるHDDのID601、HDD内パーティション番号602、及び各パーティションが開始されるLBA603が保持される。
【0064】
ここで、フォーマット管理テーブル600の更新方法について述べる。
HC200から送信されたフォーマット情報制御コマンド400及びフォーマット情報500をデバイス制御部101が受信し、デバイス制御部101は、受信したフォーマット情報500をRAID制御部102に内部バスを介して送信する。RAID制御部102は、受信したフォーマット情報をフォーマット管理部103に送信する。フォーマット管理部103は、受信した情報を元にフォーマット管理テーブルを作成する。なお、フォーマット管理テーブル600の更新は、HDD毎に個別に更新することも可能である。HDD毎に個別にフォーマット管理テーブル600内の情報を更新する場合は、或るHDDのフォーマット情報のみがHC200からディスクアレイ装置100に送信される。そして、RAID制御部102は、受信した前記HDDのフォーマット情報をフォーマット管理部103に送信する。そして、フォーマット管理部103が、前記HDDのフォーマット情報を元にフォーマット管理テーブル内の前記HDDに対応する部分を更新する。
【0065】
以下、図8〜図10に示すRAID1ディスクアレイ状態例を用いて、ディスクアレイ装置100によるHDDアクセス処理を具体的に説明する。図8は、実施例1のディスクアレイ装置100のRAID1ディスクアレイ状態1を示す図である。
図8に示すように、ホスト制御部105のチャネルAに接続されたHDD300及びチャネルBに接続されたHDD301の容量を共に80GByteとする。チャネルAに接続されたHDD300のパーティション構造は、パーティション1を「0x0000_0000」から「0x04FF_FFFF」までの40GByteとする。また、HDD300のパーティション2を「0x0500_0000」から「0x09FF_FFFF」までの40GByteとする。また、チャネルBに接続されたHDD301のパーティション構造も同様とする。これらパーティション情報は、フォーマット管理部103により管理される。また、チャネルAに接続されたHDD300をマスターHDD、チャネルBに接続されたHDD301をバックアップHDDとする。
【0066】
ここで図8を例にして、HC200からの書き込み要求に対するディスクアレイ装置100によるHDDアクセス処理を具体的に説明する。
HC200からATAの規定に従って送信された書き込み要求をデバイス制御部101が受信すると、デバイス制御部101は、受信した書き込み要求の内容を、内部バスを介してRAID制御部102に送信する。RAID制御部102は、デバイス制御部101から受信した上記書き込み要求の内容からマスターHDD300のLBA(要求の対象となるLBA)を抽出し、該抽出されたLBA及びマスターHDDのIDをフォーマット管理部103に送信する。
【0067】
書き込み要求の対象となるLBAが「0x0100_0000」である場合、マスターHDDのIDである「HDDA」及び「0x0100_0000」がRAID制御部102からフォーマット管理部103に送信される。
【0068】
フォーマット管理部103は、受信したLBAとHDDのIDを用いてフォーマット管理テーブル600にアクセスし、書き込み要求の対象となるパーティション番号を抽出する。
【0069】
図8の例では、パーティション番号は「1」となる。フォーマット管理部103は、抽出されたマスターHDDのパーティション番号から該当するマスターHDDのパーティション開始LBA、バックアップHDDのパーティション開始LBAを抽出する。図8の例では、マスターHDDのパーティション番号「1」のパーティション開始LBAは「0x0000_0000」となり、バックアップHDDのパーティション番号「1」のパーティション開始LBAは「0x0000_0000」となる。
【0070】
フォーマット管理部103は、RAID制御部102から受信したマスターHDDのLBA、マスターHDDのパーティション開始LBA及びバックアップHDDのパーティション開始LBAをアドレス算出部104に送信する。図8の例では、マスターHDDのLBAは「0x0100_0000」となり、マスターHDDのパーティション開始LBAは「0x0000_0000」となり、バックアップHDDのパーティション開始LBAは「0x0000_0000」となる。
【0071】
アドレス算出部104は、マスターHDDのアクセスLBA、マスターHDDのアクセスパーティション開始LBA、及び、バックアップHDDのアクセスパーティション開始LBAから、以下の(式1)に従い、バックアップHDDのアクセスLBAを算出する。なお、マスターHDDのアクセスLBAを「LBA_M」とする。また、マスターHDDのアクセスパーティション開始LBAを「P_LBA_M」とする。また、バックアップHDDのアクセスパーティション開始LBAを「P_LBA_B」とする。また、バックアップHDDのアクセスLBAを「LBA_B」とする。
【0072】
LBA_B=P_LBA_B+(LBA_M−P_LBA_M) ・・・(式1)
図8の例では、LBA_Bは「0x0100_0000」となる。アドレス算出部104は、算出したバックアップHDDのアクセスLBAをRAID制御部102に送信する。RAID制御部102は、デバイス制御部101から受信したマスターHDDのLBA及びアドレス算出部104から受信したバックアップHDDのLBAを用いてRAID制御し、それぞれのHDDに対する書き込み要求を生成し、ホスト制御部105に送信する。ホスト制御部105は、RAID制御部102から受信したマスターHDD及びバックアップHDDに対する書き込み要求をATAの規定に沿ったコマンドに変換する。ホスト制御部105は、変換した書き込み要求をそれぞれチャネルA及びチャネルBのシリアルATAインタフェース900を介してHDD300,301に送信する。
【0073】
ここで図8を例にして、ディスクアレイ装置100におけるリビルド処理によるHDDアクセス処理を説明する。
実施例1のディスクアレイ装置100におけるリビルド処理実行は、HC200からのリビルド実行指示、HDDに対する書き込み処理エラーの検出、HDDに対する読み込み処理エラーの検出等で開始される。しかし、リビルド処理の開始条件(リビルド条件)は、これらに限定されるものではない。
【0074】
RAID制御部102は、リビルド条件が検出されるとリビルド処理を開始する。リビルド処理では、RAID制御部102は、マスターHDDの全パーティションに保持される全データを順次読み出してバックアップHDDの対応するパーティションに順次書き込む処理を行う。まず、RAID制御部102は、マスターHDDからデータを読み出し、該データを読み出したマスターHDDのアクセスLBAとマスターHDDのIDをフォーマット管理部103に送信する。これにより、アドレス算出部104により、バックアップHDDのアクセスLBAが算出され、RAID制御部102に送信される。そして、RAID制御部102は、上記マスターHDDから読み出したデータを、上記バックアップHDDのアクセスLBAに書き込む指示をホスト制御部105に送信する。以下、上述した書き込み要求における処理と同様に実行される。また、リビルド処理中に実行される読み込み処理においても、LBA算出手順は書き込み処理と同様である。
【0075】
以上のようなリビルド処理の実行により、マスターHDDのパーティション1に保持されるデータA310は、バックアップHDDのパーティション1に保持されるデータA320としてコピーされる。また、マスターHDDのパーティション2に保持されるデータB311は、バックアップHDDのパーティション2に保持されるデータB321としてコピーされる。
【0076】
図9は、実施例1のディスクアレイ装置100のRAID1ディスクアレイ状態2を示す図である。
図9に示すように、ホスト制御部105のチャネルAに接続されたHDD300の容量を80GByte、チャネルBに接続されたHDD301の容量を160GByteとする。チャネルAに接続されたHDD300のパーティション構造は、パーティション1を「0x0000_0000」から「0x04FF_FFFF」までの40GByteとする。さらに、HDD300のパーティション2を「0x0500_0000」から「0x09FF_FFFF」までの40GByteとする。また、チャネルBに接続されたHDD301のパーティション構造は、パーティション1を「0x0000_0000」から「0x09FF_FFFF」までの80GByteとする。さらに、HDD301のパーティション2を「0x0A00_0000」から「0x14FF_FFFF」までの80GByteとする。これらパーティション情報は、フォーマット管理部103により管理される。また、チャネルAに接続されたHDD300をマスターHDD、チャネルBに接続されたHDD301をバックアップHDDとする。なお、HC200からの書き込み要求及びリビルドに対する処理は図8に示した状態の場合と同様である。
【0077】
ここで図9において、書き込み要求の対象となるマスターHDDのLBAが「0x0500_0100」である場合について、バックアップHDDのLBAの算出処理を説明する。
フォーマット管理部103のフォーマット管理テーブル600から、マスターHDDのアクセスパーティション開始LBAは「0x0500_0000」、バックアップHDDのアクセスパーティション開始LBAは「0x0A00_000」となる。このため、上記(式1)からバックアップHDDにおけるアクセスすべきLBAは「0x0A00_0100」となる。
【0078】
図9に示す例では、リビルド処理の実行により、マスターHDDのパーティション1に保持されるデータA310は、バックアップHDDのパーティション1に保持されるデータA330としてコピーされる。また、マスターHDDのパーティション2に保持されるデータB311はバックアップHDDのパーティション2に保持されるデータB331としてコピーされる。
【0079】
図10は、実施例1のディスクアレイ装置100のRAID1ディスクアレイ状態3を示す図である。
図10に示すように、ホスト制御部105のチャネルAに接続されたHDD300及びチャネルBに接続されたHDD301の容量を共に160GByteとする。チャネルAに接続されたHDD300のパーティション構造は、パーティション1を「0x0000_0000」から「0x09FF_FFFF」までの80GByteとする。さらに、HDD300のパーティション2を「0x0A00_0000」から「0x14FF_FFFF」までの80GByteとする。また、チャネルBに接続されたHDD301のパーティション構造も同様とする。これらパーティション情報はフォーマット管理部103により管理される。
【0080】
図10に示す例では、マスターHDDへのアクセスエラーによりマスターHDDとバックアップHDDが入れ替わった状態を想定し、チャネルBに接続されたHDD301をマスターHDD、チャネルAに接続されたHDD300をバックアップHDDとする。なお、HC200からの書き込み要求及びリビルドに対する処理フローは図8に示す状態の場合と同様である。
【0081】
ここで図10において、書き込み要求の対象となるマスターHDDのLBAが「0x0A00_0100」である場合について、バックアップHDDのLBAの算出処理を説明する。フォーマット管理部103のフォーマット管理テーブル600から、マスターHDDのアクセスパーティション開始LBAは「0x0A00_0000」、バックアップHDDのアクセスパーティション開始LBAは「0x0A00_000」となる。このため、上記(式1)より、バックアップHDDにおけるアクセスすべきLBAは「0x0A00_0100」となる。
【0082】
図10に示す例では、リビルド処理の実行によりマスターHDDのパーティション1に保持されるデータA330は、バックアップHDDのパーティション1に保持されるデータA340としてコピーされる。また、マスターHDDのパーティション2に保持されるデータB331は、バックアップHDDのパーティション2に保持されるデータB341としてコピーされる。
【0083】
実施例1のディスクアレイ装置100は、図8、図9、図10に記載した状態を順次経ることで、RAIDの再構築とOSの再インストール無しで、HDD内の連続するパーティション領域の拡張が可能となる。実際、図8〜図10で示した例では、HDD内の連続するパーティション領域が40GByteから80GByteに拡張されている。
【0084】
なお、図8に示した状態から図9の状態への移行は、HDD301を160GByteのHDDに交換してリビルド処理を行うことにより可能である。また、図9の状態から図10の状態への移行は、HDD300を160GByteのHDDに交換してリビルド処理を行うことにより可能である。
【0085】
以上示したように、実施例1では、RAID1制御において、パーティション管理情報からアクセスすべきHDDのアドレスを算出する構成を有する。このような構成により、RAIDの再構築とOSの再インストール無しにHDD内の連続するパーティション領域の変更を実現することができる。
【実施例2】
【0086】
以下、実施例1の変形例(実施例2)について説明する。
上述した実施例1は、本発明をRAID1について適用する実施例であるが、本発明はこれに限らず、変形例として以下に示すようなRAID5に対しても適用することができる。なお、実施例2のディスクアレイ装置100の構成は、図1と同様であるので省略する。
【0087】
図11は、実施例2のディスクアレイ装置100のRAID5ディスクアレイ状態を示す図である。
図11に示すように、ホスト制御部105のチャネルAに接続されたHDD300及びチャネルCに接続されたHDD302の容量を80GByte、チャネルBに接続されたHDD301の容量を160GByteとする。チャネルAに接続されたHDD300のパーティション構造は、パーティション1を「0x0000_0000」から「0x04FF_FFFF」までの40GByteとする。さらに、HDD300のパーティション2を「0x0500_0000」から「0x09FF_FFFF」までの40GByteとする。また、チャネルBに接続されたHDD301のパーティション構造は、パーティション1を「0x0000_0000」から「0x09FF_FFFF」までの80GByteとする。さらに、HDD301のパーティション2を「0x0A00_0000」から「0x14FF_FFFF」までの80GByteとする。また、チャネルCに接続されたHDD302のパーティション構造は、パーティション1を「0x0000_0000」から「0x04FF_FFFF」までの40GByteとする。さらに、HDD302のパーティション2を「0x0500_0000」から「0x09FF_FFFF」までの40GByteとする。これらパーティション情報はフォーマット管理部103により管理される。
【0088】
RAID5では、ディスクアレイ装置100がHC200からの書き込み要求を受信すると、RAID制御部102は、例えばHDD300にデータを書き込む。さらに、RAID制御部102は、HDD300、及び、HDD301又はHDD301に書き込まれているデータからパリティを算出し、該算出したパリティをHDD301又はHDD302に書き込む処理を実行する。
【0089】
例えば、ディスクアレイ装置100がHC200からのデータAの書き込み要求を受信すると、RAID制御部102は、例えばHDD300にデータA350を書き込む。さらに、RAID制御部102は、HDD300、及び、HDD301に書き込まれているデータAからパリティAを算出し、該算出したパリティAをHDD302に書き込む。一方、ディスクアレイ装置100がHC200からのデータBの書き込み要求を受信すると、RAID制御部102は、例えばHDD300にデータB351を書き込む。さらに、RAID制御部102は、HDD300、及び、HDD302に書き込まれているデータBからパリティBを算出し、該算出したパリティBをHDD301に書き込む。
【0090】
このため、RAID制御部102は、HC200からの書き込み要求からHDD300のLBAを抽出し、抽出されたLBA及びHDD300のIDをフォーマット管理部103に送信する。フォーマット管理部103は、受信したLBAとHDDのIDを用いてデータの書き込み要求の対象となるHDD300、データの読み込み要求やパリティの書き込み要求の対象となるHDD301及びHDD302のパーティション開始LBAを抽出する。
【0091】
図11に示した例では、書き込み要求の対象となるHDD300のLBAが「0x0500_0100」である場合、各HDDのパーティション開始アドレスは次のようになる。HDD301のパーティション開始LBAが「0x0500_0000」、HDD301のパーティション開始LBAが「0x0A00_0000」、HDD302のパーティション開始LBAが「0x0500_0000」となる。
【0092】
アドレス算出部104は、フォーマット管理部103から各HDDのパーティション開始LBAとHDD300に対する書き込み要求の対象となるLBA(LAB_A)を受信する。そして、アドレス算出部104は、HDD301及びHDD302に対するアクセスすべきLBA(それぞれ、LAB_B及びLAB_C)を算出する。
【0093】
算出式は、HDD300のアクセスLBA(LBA_A)、HDD301のアクセスパーティション開始LBA(P_LBA_B)、及びHDD302のアクセスパーティション開始LBA(P_PBA_C)から以下の(式2),(式3)となる。
【0094】
LBA_B=P_LBA_B+(LBA_A−P_LBA_A) ・・・(式2)
LBA_C=P_LBA_C+(LBA_A−P_LBA_A) ・・・(式3)
図11に示した例では、LBA_Bは「0x0A00_0100」、LBA_Cは「0x0500_0100」となる。
【0095】
アドレス算出部104は、算出したHDD301及びHDD302に対するアクセスLBAをRAID制御部102に送信する。RAID制御部102は、HDD300に対する書き込み要求及びHDD302に対する読み込み要求をホスト制御部105に送信する。
【0096】
ホスト制御部105は、RAID制御部102から受信した書き込み要求及び読み込み要求をATAの規定に沿ったコマンドに変換し、それぞれHDD300及びHDD302に送信する。ホスト制御部105は、HDD302に対する読み込み要求を実行した後、HDD302から受信したデータをRAID制御部102に送信する。
【0097】
RAID制御部102は、HDD300に書き込まれたデータとHDD302から読み込まれたデータを元にパリティを算出し、HDD301に対する書き込み要求をホスト制御部105に送信する。ホスト制御部105は、RAID制御部102から受信したHDD301に対する書き込み要求をATAの規定に沿ったコマンドに変換し、HDD301に送信する。
【0098】
次に、書き込み要求の対象となるHDD300のLBAが「0x0000_0100」である場合、について説明する。
書き込み要求の対象となるHDD300のLBAが「0x0000_0100」である場合、図11に示した例では、各HDDのパーティション開始アドレスは次のようになる。HDD301のパーティション開始LBAが「0x0000_0000」、HDD302のパーティション開始LBAが「0x0000_0000」となる。
【0099】
アドレス算出部104は、フォーマット管理部103から各HDDのパーティション開始LBAとHDD300に対する書き込み要求の対象となるLBA(LAB_A)を受信する。そして、アドレス算出部104は、HDD301及びHDD302に対するアクセスすべきLBA(それぞれ、LAB_B及びLAB_C)を算出する。図11に示した例では、LBA_Bは「0x0000_0100」、LBA_Cは「0x0000_0100」となる。
【0100】
アドレス算出部104は、算出したHDD301及びHDD302に対するアクセスLBAをRAID制御部102に送信する。RAID制御部102は、HDD300に対する書き込み要求及びHDD301に対する読み込み要求をホスト制御部105に送信する。
【0101】
ホスト制御部105は、RAID制御部102から受信した書き込み要求及び読み込み要求をATAの規定に沿ったコマンドに変換し、それぞれHDD300及びHDD301に送信する。ホスト制御部105は、HDD301に対する読み込み要求を実行した後、HDD301から受信したデータをRAID制御部102に送信する。
【0102】
RAID制御部102は、HDD300に書き込まれるデータとHDD301から読み込まれたデータを元にパリティを算出し、HDD302に対する書き込み要求をホスト制御部105に送信する。ホスト制御部105は、RAID制御部102から受信したHDD302に対する書き込み要求をATAの規定に沿ったコマンドに変換し、HDD302に送信する。
【0103】
以上示したように、実施例2では、RAID5制御において、各HDDのパーティション管理を行い、パーティション管理情報(フォーマット情報)を自由に変更可能とする。さらに、パーティション管理情報からアクセスすべきHDDのアドレスを算出する構成を有する。このような構成により、RAIDの再構築とOSの再インストール無しにHDD内の連続するパーティション領域の変更を実現することができる。
【0104】
なお、上記実施例1ではRAID1、上記実施例2ではRAID5に本発明を適用する場合について説明したが、他のRAIDレベルについても同様に本発明を適用可能なものがあり、このような構成も本発明に含まれるものである。
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【産業上の利用可能性】
【0105】
ホストコンピュータ200を複合機(MFP)のコントローラ部とすることによって、本発明を複合機等の画像形成装置にも適用できる。そして、上記コントローラ部に接続されるディスクアレイ装置は、該ディスクアレイ装置に接続される複数の記憶装置のいずれかが新たな記憶装置に交換された場合に、新たな記憶装置の記憶容量に対応するフォーマット情報に従って、新たな記憶装置における複数のパーティション領域にアクセスする。
【符号の説明】
【0106】
100 ディスクアレイ装置
101 デバイス制御部
102 RAID制御部
103 フォーマット制御部
104 アドレス算出部
105 ホスト制御部
106 状態保持部
200 ホストコンピュータ
300,301 HDD

【特許請求の範囲】
【請求項1】
情報処理装置及び複数の記憶装置と接続可能であり、前記情報処理装置からの要求に応じて前記複数の記憶装置へのアクセスを制御する制御装置であって、
前記制御装置に接続される前記記憶装置における複数のパーティション領域の開始アドレスを示す情報として、複数種類の記憶容量の各々に対応する複数のフォーマット情報を管理する管理手段と、
前記複数の記憶装置に含まれる何れかの記憶装置が新たな記憶装置に交換された場合に、前記新たな記憶装置の記憶容量に対応するフォーマット情報を前記管理手段により管理される複数のフォーマット情報の中から選択する選択手段と、
前記新たな記憶装置の複数のパーティションへアクセスする際のアドレスを、前記選択手段により選択されたフォーマット情報に基づいて算出するアドレス算出手段と、
前記アドレス算出手段により算出されたアドレスに基づいて前記新たな記憶装置へのアクセスを制御する制御手段と、
を有することを特徴とする制御装置。
【請求項2】
前記アドレス算出手段は、前記複数の記憶装置のいずれかの記憶装置のアドレスから、該いずれかの記憶装置のアドレスに対応する前記新たな記憶装置のアドレスを、前記いずれかの記憶装置のアドレスが属する前記いずれかの記憶装置のパーティションに対応する前記新たな記憶装置のパーティションに属するアドレスとして算出するものであり、
前記制御手段は、前記情報処理装置から受信したアクセス要求に含まれる前記いずれかの記憶装置のアドレスと、前記いずれかの記憶装置のアドレスから前記アドレス算出手段で算出される前記新たな記憶装置のアドレスとを用いて、前記新たな記憶装置へのアクセスを制御することを特徴とする請求項1に記載の制御装置。
【請求項3】
前記制御手段は、接続される記憶装置のうちマスターとなる記憶装置の全パーティションに記憶される全データを順次読み出して前記新たな記憶装置の対応するパーティションに順次書き込むリビルド処理の実行が可能であり、
前記リビルド処理は、前記マスターとなる記憶装置からデータを読み出し、該読み出したデータを、前記データを読み出した前記マスターとなる記憶装置のアドレスから前記アドレス算出手段で算出される前記新たな記憶装置のアドレスに書き込む処理であることを特徴とする請求項1又は2に記載の制御装置。
【請求項4】
情報処理装置及び複数の記憶装置と接続可能であり、前記複数の記憶装置における複数のパーティション領域の開始アドレスを示す情報として、複数種類の記憶容量の各々に対応する複数のフォーマット情報を管理する管理手段を備える制御装置の制御方法であって、
選択手段が、前記複数の記憶装置に含まれる何れかの記憶装置が新たな記憶装置に交換された場合に、前記新たな記憶装置の記憶容量に対応するフォーマット情報を前記管理手段により管理される複数のフォーマット情報の中から選択する選択ステップと、
アドレス算出手段が、前記新たな記憶装置の複数のパーティションへアクセスする際のアドレスを、前記選択ステップにて選択されたフォーマット情報に基づいて算出するアドレス算出ステップと、
制御手段が、前記アドレス算出ステップにより算出されたアドレスに基づいて前記新たな記憶装置へのアクセスを制御する制御ステップと、
を有することを特徴とする制御装置の制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate