(57)【特許請求の範囲】
【請求項１】
主記憶装置と、
２台の補助記憶装置と、
該２台の補助記憶装置に結合され、これらをＲＡＩＤ０モード、ＲＡＩＤ１モード及びシングルモードを含む指定されたディスク制御モードで制御するディスクアレイ制御装置と、
を備え、該２台の補助記憶装置の両者及び片方の記憶領域に対応する少なくとも３つ以上の仮想ディスクを実現する情報処理装置であって、
該ディスク制御モードを指定する第１指定情報及び該指定するディスク制御モードに使用される補助記憶装置を指定する第２指定情報を含む、仮想ディスクのコントロールブロックが該仮想ディスク毎に格納された記憶手段と、
該３つ以上の仮想ディスクのうちいずれかの仮想ディスクに対するディスクアクセス要求に応答し、該ディスクアクセス要求と、該要求された仮想ディスクに対応するコントロールブロックとに基づき、該第１指定情報と該第２指定情報とを含んだ該ディスクアレイ制御装置の制御情報を該主記憶装置上に生成し、これを該ディスクアレイ制御装置に直接的に又は間接的に伝達するデバイスドライバ手段と、
をさらに備えることを特徴とする情報処理装置。
【請求項２】
該ディスクアレイ制御装置は、該デバイスドライバ手段により伝達された該制御情報の各情報に基づき、該２台の補助記憶装置内又はこれらのうち１つの補助記憶装置内の所定の記憶領域を、所定のディスク制御モードで制御する、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
該コントロールブロックは、該３つ以上の仮想ディスクのうちから１つを識別するためのディスク識別情報と、該１つの仮想ディスクの総セクタ数を示す総セクタ数情報と、該１つの仮想ディスクの補助記憶装置上の先頭アドレスを示すオフセット情報と、を含み、
該制御情報は、ディスクアクセス対象のデータの一時格納先又は一時格納元を示す該主記憶装置上のバッファアドレス情報と、該ディスクアクセス要求に応じたコマンド名情報と、該ディスクアクセスを開始する該補助記憶装置上の先頭アドレス情報と、該補助記憶装置に対する転送セクタ数情報と、を含む、
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
該ディスクアレイ制御装置は、ＤＭＡ転送機能を有し、指定されたアドレスから該ＤＭＡ転送機能により該制御情報を取得するものであり、
該デバイスドライバ手段が該主記憶装置上の該制御情報の格納元アドレス情報と該ディスクアクセスの開始命令を該ディスクアレイ制御装置に伝達して、該ＤＭＡ転送機能により該制御情報を取得させることにより、該デバイスドライバ手段は該制御情報を「間接的に」伝達する、
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
該情報処理装置の起動時から該ディスクアクセス要求の受信前までに該第１指定情報が各々異なる該３つ以上の仮想ディスクをオペレーティングシステムに認識させ、且つ、該３つ以上のいずれかに対するディスクアクセス要求に応答して、アクセス対象の仮想ディスクを識別する該ディスク識別情報を含む、該デバイスドライバ手段に対応したディスクアクセス要求を新たに生成し、これを該デバイスドライバ手段に伝達するファイルシステム手段をさらに備え、
該デバイスドライバ手段は、受信したディスクアクセス要求に含まれる該ディスク識別情報に基づき、アクセス対象の仮想ディスクに対応するコントロールブロックを特定する、
ことを特徴とする請求項３又は４に記載の情報処理装置。
【請求項６】
該ディスクアレイ制御装置が有する該ディスク制御モードは、ＲＡＩＤ０モード及びＲＡＩＤ１モードとは異なるＲＡＩＤモードをも含み、
該記憶手段には、該第１指定情報が該ＲＡＩＤ０モードを示す第１コントロールブロックと、該第１指定情報が該ＲＡＩＤ１モードを示す第２コントロールブロックと、該第１指定情報が該異なるＲＡＩＤモードを示す第３コントロールブロックと、が格納され、
該３つ以上の仮想ディスクには、該第１コントロールブロックに対応する第１仮想ディスクと、該第２コントロールブロックに対応する第２仮想ディスクと、該第３コントロールブロックに対応する第３仮想ディスクとが含まれること、
を特徴とする請求項５に記載の情報処理装置。
【請求項７】
該記憶手段には、該第１指定情報が該ＲＡＩＤ０モードを示す第１コントロールブロックと、該第１指定情報が該ＲＡＩＤ１モードを示す第２コントロールブロックと、が格納され、
該第１コントロールブロックに対応する仮想ディスクが該第２コントロールブロックに対応する仮想ディスクより該２台の補助記憶装置両者の円盤状ディスクの外周側に位置するように、該第１コントロールブロック内のオフセット情報と該第２コントロールブロック内のオフセット情報とが設定されている、
ことを特徴とする請求項５に記載の情報処理装置。
【請求項８】
該記憶手段は、該２台の補助記憶装置のいずれかであり、
該情報処理装置の該情報処理装置の起動時から該ディスクアクセス要求の受信前までに、該いずれかの補助記憶装置に格納されている該コントロールブロック全てを該主記憶装置上にコピーするコントロールブロック取得手段と、
をさらに備え、
該デバイスドライバ手段は、該要求された仮想ディスクに対応するコントロールブロックを該主記憶装置上から取得して該制御情報を生成する、
ことを特徴とする請求項６又は７に記載の情報処理装置。
【請求項９】
該情報処理装置は、ネットワークに結合される通信手段を備えた画像形成装置であり、
該デバイスドライバ手段は、該通信手段を介して該ディスクアクセス要求を受信することを特徴とする請求項３乃至８のいずれか１つに記載の情報処理装置。
【請求項１０】
主記憶装置と、
２台の補助記憶装置と、
該２台の補助記憶装置に結合され、これらをＲＡＩＤ０モード、ＲＡＩＤ１モード及びシングルモードを含む指定されたディスク制御モードで制御するディスクアレイ制御装置と、
該２台の補助記憶装置の両者又は片方の記憶領域に対応する３つ以上の仮想ディスクと、
該ディスク制御モードを指定する第１指定情報及び該指定するディスク制御モードに使用される補助記憶装置を指定する第２指定情報を含む、仮想ディスクのコントロールブロックが該仮想ディスク毎に格納された記憶手段と、
を備えた情報処理装置に搭載されるデバイスドライバであって、
該情報処理装置に対し、該３つ以上の仮想ディスクのうちいずれかの仮想ディスクに対するディスクアクセス要求に応答し、該ディスクアクセス要求と、該要求された仮想ディスクに対応するコントロールブロックとに基づき、該第１指定情報と該第２指定情報とを含む制御情報を該主記憶装置上に生成させ、これを該ディスクアレイ制御装置に直接的に又は間接的に伝達させることにより、該２台の補助記憶装置において各々異なるディスク制御モードに対応したディスク領域が複数共存することを実現させる、
ことを特徴とするデバイスドライバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、補助記憶装置の信頼性と性能向上を図るためのＲＡＩＤ（Redundant Arrays of Inexpensive/Independent Disks）と呼ばれるディスクアレイ構成をもつ記憶装置が接続された情報処理装置及びこれに備えられるデバイスドライバに関する。
【背景技術】
【０００２】
近年、サーバコンピュータやパーソナルコンピュータのような情報処理装置においては、ディスクアクセス速度の向上及び記憶データの保護を図るために、複数台の補助記憶装置を１台の記憶装置として仮想的に取り扱うディスクアレイ技術が利用されている。
【０００３】
上記ディスクアレイ技術には、様々な方式が考案されているが、代表的なものとしてＲＡＩＤ０とＲＡＩＤ１が挙げられる。
【０００４】
ＲＡＩＤ０は、ストライピングとも呼ばれ、複数台の補助記憶装置にデータをブロック単位で分散し、ディスクアクセス速度の向上を図る方式である。ＲＡＩＤ０には最低２台の補助記憶装置が必要である。一方、ＲＡＩＤ１は、ミラーリングとも呼ばれ、複数台の補助記憶装置に同時に同一のデータを書き込み、記憶データの保護を図る方式である。ＲＡＩＤ１も上記同様に最低２台の補助記憶装置が必要である。以下、上記ＲＡＩＤ０の機能をＲＡＩＤ０モードと称し、上記ＲＡＩＤ１の機能をＲＡＩＤ１モードと称す。
【０００５】
ここで、取り扱うデータによって、アクセス速度を重視したいもの又はデータ保護を重視したいものに分別したい場合がある。
【０００６】
これを実現するためには、情報処理装置に、ＲＡＩＤ０モードとＲＡＩＤ１モードとを切り換えることが可能なディスクアレイ制御装置（ＲＡＩＤコントローラ）を備え、これに結合される、ＲＡＩＤ０モード専用の２台の補助記憶装置と、ＲＡＩＤ１モード専用の２台の補助記憶装置と、の少なくとも計４台の補助記憶装置が一般的に必要である（例えば下記特許文献１）。
【０００７】
しかしながら、情報処理装置に４台もの補助記憶装置を備えることは、コスト的に負担が大きい。
【０００８】
そこで、下記非特許文献１では、２台の補助記憶装置において、取り扱うデータによってＲＡＩＤ０モードとＲＡＩＤ１モードとに切替え可能で、かつＲＡＩＤ０モードで構築される記憶領域と、ＲＡＩＤ１モードで構築される記憶領域とを共存（混在）させることができるマトリックスＲＡＩＤと呼ばれる技術を公開している。
【特許文献１】特開２００２−２５９０６２号公報
【非特許文献１】http://www.intel.com/jp/support/chipsets/imsm/sb/CS-020681.htm
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上記非特許文献１には、２台の補助記憶装置を用いて、ＲＡＩＤ０モードで構築される記憶領域とＲＡＩＤ１モードで構築される記憶領域とに加え、異なるＲＡＩＤモード又はシングルモードで構築される記憶領域をも共存させる、すなわち三種類以上のディスク制御モードで構築される記憶領域を共存させることは開示されていない。なお、「シングルモード」とはディスクアレイ制御を行わない通常のディスク制御モードをいう。
【００１０】
本発明の目的は、上記問題点に鑑み、２台の補助記憶装置において、３種類以上のディスク制御モードで構築される記憶領域を共存させることが可能な情報処理装置及びこれに備えられるデバイスドライバを提供することにある。
【課題を解決するための手段】
【００１１】
本発明による情報処理装置の第１態様では、
主記憶装置と、
２台の補助記憶装置と、
該２台の補助記憶装置に結合され、これらをＲＡＩＤ０モード、ＲＡＩＤ１モード及びシングルモードを含む指定されたディスク制御モードで制御するディスクアレイ制御装置と、
を備え、該２台の補助記憶装置の両者及び片方の記憶領域に対応する少なくとも３つ以上の仮想ディスクを実現する情報処理装置であって、
該ディスク制御モードを指定する第１指定情報及び該指定するディスク制御モードに使用される補助記憶装置を指定する第２指定情報を含む、仮想ディスクのコントロールブロックが該仮想ディスク毎に格納された記憶手段と、
該３つ以上の仮想ディスクのうちいずれかの仮想ディスクに対するディスクアクセス要求に応答し、該ディスクアクセス要求と、該要求された仮想ディスクに対応するコントロールブロックとに基づき、該第１指定情報と該第２指定情報とを含んだ該ディスクアレイ制御装置の制御情報を該主記憶装置上に生成し、これを該ディスクアレイ制御装置に直接的に又は間接的に伝達するデバイスドライバ手段と、
をさらに備えることを特徴とする。
【００１２】
なお、上記記憶手段は、上記２台の補助記憶装置のいずれかでもよく、また他の記憶装置、例えばＲＯＭなどであってもよい。
【００１３】
本発明による情報処理装置の第２態様では、第１態様において、
該情報処理装置は、ネットワークに結合される通信手段を備えた画像形成装置であり、
該デバイスドライバ手段は、該通信手段を介して該ディスクアクセス要求を受信することを特徴とする。
【００１４】
本発明による情報処理装置の第３態様では、第１又は第２態様において、
該記憶手段には、該第１指定情報が該ＲＡＩＤ０モードを示す第１コントロールブロックと、該第１指定情報が該ＲＡＩＤ１モードを示す第２コントロールブロックと、が格納され、
該第１コントロールブロックに対応する仮想ディスクが該第２コントロールブロックに対応する仮想ディスクより該２台の補助記憶装置両者の円盤状ディスクの外周側に位置するように、該第１コントロールブロック内のオフセット情報と該第２コントロールブロック内のオフセット情報とが設定されている、
ことを特徴とする。
【発明の効果】
【００１５】
上記第１態様の構成によれば、
仮想ディスクを実現するのに必要な情報を含む通常のコントロールブロックに、仮想ディスクのディスク制御モードを指定する第１指定情報と、該指定するディスク制御モードに使用される補助記憶装置の第２指定情報とをさらに含ませており、デバイスドライバ手段が、受信したディスクアクセス要求と、アクセス対象の仮想ディスクに対応するコントロールブロックとに基づき、該第１指定情報と該第２指定情報とを含んだディスクアレイ制御装置の制御情報を生成し、これを該ディスクアレイ制御装置に伝達するので、
該ディスクアレイ制御装置は、受信した制御情報に基づき、２台の補助記憶装置両者及び片方の所定領域に所定のディスク制御モードでディスクアクセスすることが可能となり、
２台の補助記憶装置において、ＲＡＩＤを含む３種類以上のディスク制御モードに対応した記憶領域を共存させることができるという効果を奏する。
【００１６】
上記第２態様の構成によれば、
第１態様の構成を有するのがネットワークに結合される通信手段を備えた画像形成装置であり、デバイスドライバ手段は、該通信手段を介してディスクアクセス要求を受信するので、近年ネットワークに結合された画像形成装置に高速処理や耐障害性の向上が必要であるという要望に即座に対応できるという効果を奏する。
【００１７】
上記第３態様の構成によれば、一般的な補助記憶装置の円盤状ディスクにおいて外周側に向かってアクセス速度が速くなるという観点から、
該第１コントロールブロックに対応する仮想ディスクが該第２コントロールブロックに対応する仮想ディスクより該２台の補助記憶装置両者の円盤状ディスクの外周側に位置するように、ＲＡＩＤ０モードに対応する第１コントロールブロック内のオフセット情報とＲＡＩＤ１モードに対応する第２コントロールブロック内のオフセット情報とが設定されているので、アクセス速度が重視されるＲＡＩＤ０の効果を高めることができるという効果を奏する。
【００１８】
なお、該第１コントロールブロックに対応する仮想ディスクが該第２コントロールブロックに対応する仮想ディスクより該２台の補助記憶装置両者の円盤状ディスクの外周側に位置するためには、ディスクアレイ制御装置のアドレス指定方式がＬＢＡ（Logical Block Addressing）アドレス方式の場合、上記第１コントロールブロック内のオフセット情報の示す値は、上記第２コントロールブロック内のオフセット情報の示す値よりも小さく設定され、ＣＨＳ（Cylinder/Head/Sector）アドレス方式の場合には、大きく設定される。
【００１９】
本発明の他の目的、構成及び効果は以下の説明から明らかになる。
【実施例１】
【００２０】
＜１＞ハードウェア構成
一般的にＲＡＩＤ技術は、高速処理や耐障害性の向上を必要とするネットワークサーバに適用されているが、近年、画像形成装置（特に複合機）が大容量ＨＤＤを備え、ネットワークに接続されて高速処理や耐障害性の向上を必要とする場合が生じることに鑑み、本実施例ではＲＡＩＤ技術を複合機に適用して説明する。
【００２１】
図２は、本発明の実施例１に係わる複合機のハードウェア構成を示す概略ブロック図である。
【００２２】
複合機１０では、ＭＰＵ１１にインタフェース１２を介して、ＤＲＡＭ１３、ＥＥＰＲＯＭ１４、ＲＡＩＤコントローラ１５、ＮＩＣ１６、印刷部１７及びその他の装置１８が結合されている。図２では、簡単化のため、複数のインタフェースを１つのブロックで示している。
【００２３】
ＤＲＡＭ１３は、ワークエリア用である。ＥＥＰＲＯＭ１４は、例えばフラッシュメモリである。ＥＥＰＲＯＭ１４には、Ｌｉｎｕｘ（登録商標）カーネルを含むＯＳ３０、該ＯＳ３０上で動作する複数のアプリケーション３１、及び本発明に係わるＲＡＩＤドライバ３２が格納されている。
【００２４】
図３は、ＲＡＩＤドライバ３２のソースファイルの一部を示した図である。このソースファイル内には後述するディスクアクセス関数３５及び初期化関数３６などが記述されている。これら関数は、例えばＡＮＳＩ−Ｃ規格に準拠した関数である。
【００２５】
ＥＥＰＲＯＭ１４に格納されたＲＡＩＤドライバ３２は、上記ソースファイルからローダブルモジュール形式にコンパイルされたものであり、後述＜１０＞の方法により、カーネルに組み込まれ、上層からのディスクアクセス要求に応じて、ＲＡＩＤコントローラ１５を制御する。
【００２６】
なお、このＲＡＩＤドライバ３２には、ＯＳ３０側からドライバを特定できるように、メジャー番号が割り当てられている。本実施例では、このメジャー番号を「３００」と割り当てる。
【００２７】
ＲＡＩＤコントローラ１５は、インタフェース１２並びに第１ＨＤＤ１９及び第２ＨＤＤ２０に結合されている。このＲＡＩＤコントローラ１５は、ＲＡＩＤ０モードとＲＡＩＤ１モードとシングルモードとを有するディスク制御モード機能を有し、ＲＡＩＤドライバ３２からのディスクアクセス要求に応じて、第１ＨＤＤ１９又は／及び第２ＨＤＤ２０を、上記いずれかのディスク制御モードによりディスク制御を行う。
【００２８】
第１ＨＤＤ１９及び第２ＨＤＤ２０は、ＩＤＥ、ＳＣＳＩ又はＵＳＢなどの規格の磁気ディスクドライブであり、データ格納用である。なお、本実施例では便宜上、両者同一種類及び同一容量のものを用いて説明するが、本発明のＲＡＩＤ技術を適用するにあたって、両者異なる種類又は異なる容量のものであってもよい。
【００２９】
これら第１ＨＤＤ１９及び第２ＨＤＤ２０は、ＲＡＩＤコントローラ１５やＲＡＩＤドライバ３２からは２つの物理ディスクとして認識されるが、ＲＡＩＤドライバ３２より上層のＯＳ３０やアプリケーション３１からは、物理ディスクとして認識されない。即ち、ＯＳ３０やアプリケーション３１からは、図４に示すように第１ＨＤＤ及び第２ＨＤＤ内の領域１００１、領域１００２、領域１００３及び領域１００４がそれぞれ、あたかも物理ディスクとして、即ち仮想ディスクとして認識される。以下、これらの領域をそれぞれ第１仮想ディスク１００１、第２仮想ディスク１００２、第３仮想ディスク１００３及び第４仮想ディスク１００４と称す。なお、図４中の縦軸の数値はＬＢＡ方式のセクタアドレスを示す。
【００３０】
上記ＲＡＩＤコントローラ１５及びＲＡＩＤドライバ３２は、第１仮想ディスク１００１に割り当てられた領域をＲＡＩＤ０モード専用とし、第２仮想ディスク１００２に割り当てられた領域をＲＡＩＤ１モード専用とし、第３仮想ディスク１００３及び第４仮想ディスク１００４に割り当てられた領域をシングルモード専用として取り扱う。なお、図４の各ディスクの空白領域は本実施例では使用しないが、この領域もシングルモード専用の仮想ディスクとして割り当てるようにしてもよい。
【００３１】
図５（Ａ）は、上記第１ＨＤＤ１９に記録されているデータの一部を示す図である。この第１ＨＤＤ１９には、先頭セクタにあるＭＢＲの直後に、上記第１〜第４仮想ディスク１００１〜１００４を実現するために必要な情報のデータ集合体である第１仮想ディスクコントロールブロック４１、第２仮想ディスクコントロールブロック４２、第３仮想ディスクコントロールブロック４３及び第４仮想ディスクコントロールブロック４４が順に記録されている。
【００３２】
図５（Ｂ）は、第１仮想ディスクコントロールブロック４１内のデータ構成を示す図である。なお、他のコントロールブロック４２〜４４も同一のデータ構成である。また、同図縦軸は相対表記である。
【００３３】
第１仮想ディスクコントロールブロック４１内のデータ構成には、マイナー番号情報５０、ディスク制御モード情報５１、使用物理ディスク情報５２、総セクタ数情報５３及びＬＢＡオフセット情報５４の各データを含む。これら各情報は、ＲＡＩＤドライバ３２がカーネルに組み込まれる際に、第１ＨＤＤ１９から図６に示すようにＤＲＡＭ１３の所定領域に格納され、随時ＲＡＩＤドライバ３２が各情報を利用できる。なお、この格納の詳細は＜１０＞で述べる。本発明では、第１仮想ディスクコントロールブロック４１に通常の仮想ディスクを実現するために必要な情報、即ちマイナー番号情報５０、総セクタ数情報５３及びＬＢＡオフセット情報５４に加え、ディスク制御モード情報５１と使用物理ディスク情報５２とを新たに含ませている。
【００３４】
マイナー番号情報５０は、仮想ディスク識別情報である。なお、マイナー番号５０の１〜４番はそれぞれ第１〜４仮想ディスクに対応する。
【００３５】
ディスク制御モード情報５１は、ＲＡＩＤコントローラ１５がディスク制御可能な、ＲＡＩＤ０モード、ＲＡＩＤ１モード又はシングルモードのいずれかを指定するための情報である。
【００３６】
使用物理ディスク情報５２は、仮想ディスクに対応して上記ディスク制御モードにより実際に使用（アクセス）する物理ディスク（第１ＨＤＤ１９又は／及び第２ＨＤＤ２０）を指定するための情報である。本実施例では、この情報としてチャンネル番号を使用する。ＨＤＤ１９のチャンネル番号は「Ｃｈ１」であり、ＨＤＤ２０のチャンネル番号は「Ｃｈ２」である。本実施例では、第１及び第２仮想ディスク１００１〜１００２は、両者Ｃｈ１及びＣｈ２を使用し、また第３仮想ディスクはＣｈ２を、第４仮想ディスクはＣｈ１をそれぞれ使用する。
【００３７】
総セクタ数情報５３は、仮想ディスクの総セクタ数の情報である。
【００３８】
ＬＢＡオフセット情報５４は、仮想ディスクのＬＢＡアドレスと物理ディスクのＬＢＡアドレスとの差を表した情報である。
【００３９】
図２に戻って、ＮＩＣ１６は、ネットワーク上のホストコンピュータに結合されて、このコンピュータから、第１仮想ディスク１００１、第２仮想ディスク１００２、第３仮想ディスク１００３又は第４仮想ディスク１００４に対するディスクアクセス要求を受け付け、これをカーネルに渡す。
【００４０】
印刷部１７は、プリントエンジン並びに用紙の給紙部、搬送部及び排紙部を備え、供給されるビットマップデータに基づいてプリントエンジンの感光ドラムに静電潜像を形成し、これをトナーで現像し、用紙に転写し定着させた後に排紙する。
【００４１】
その他の装置１８は、例えばスキャナ、ファクシミリ及び操作パネルを含む。
＜２＞主要部構成
図１は、本発明の実施例１に係わる画像形成装置１０の主要部構成を示す機能ブロック図である。
【００４２】
本発明を実現するために、画像形成装置１０には、プロセス９９と、ファイルシステム１００と、ＤＲＡＭ１３と、ＲＡＩＤドライバ３２と、ＲＡＩＤコントローラ１５と、ＨＤＤ１９及び２０と、を主に備えている。
【００４３】
プロセス９９は、アプリケーション３１の処理又はＮＩＣ１６を介してネットワーク上のコンピュータから受け付けた要求の処理であり、ＭＰＵ１１によって実行される。
【００４４】
ファイルシステム１００は、プロセス９９からのディスクアクセス要求に応じて、ＲＡＩＤドライバ３２を制御する後述のディスクアクセス要求を、ＲＡＩＤドライバ３２宛に発行する。このファイルシステム１００は、第１デバイスファイル１０１、第２デバイスファイル１０２、第３デバイスファイル１０３及び第４デバイスファイル１０４をデータとして含む構成であり、カーネルに登録されている。
【００４５】
第１〜第４デバイスファイル１０１〜１０４は、それぞれ第１〜第４仮想ディスク１００１〜１００４に対応し、ファイルシステム１００が第１〜第４仮想ディスク１００１〜１００４にディスクアクセスするために参照するものである。プロセス９９がディスクアクセス要求をするときにデバイスファイル１０１〜１０４のいずれかを引数としてファイルシステム１００に渡し、ファイルシステム１００が引数により指定されたデバイスファイル１０１乃至１０４を参照することによってカーネルに組み込まれたＲＡＩＤドライバ３２を起動し、ＨＤＤ１９又は／及びＨＤＤ２０上の仮想ディスクへのアクセスが実現される。
【００４６】
ここで、これらデバイスファイル１０１〜１０４には、下層のＲＡＩＤドライバ３２を特定するために上記メジャー番号及び下層の仮想ディスクを特定するために上記マイナー番号５０が登録されている。具体的に、第１〜第４デバイスファイル１０１〜１０４には、これらファイルが同一のＲＡＩＤドライバ３２を呼び出せるように、ＲＡＩＤドライバ３２のメジャー番号「３００」が登録されている。また、第１デバイスファイル１０１はマイナー番号「１」、第２デバイスファイル１０２はマイナー番号「２」、第３デバイスファイル１０３はマイナー番号「３」、第４デバイスファイル１０４はマイナー番号「４」がそれぞれ登録されている。
【００４７】
上述では、ＲＡＩＤドライバ３２はファイルシステム１００からのディスクアクセス要求に応じて、ＲＡＩＤコントローラ１５を制御するものと説明したが、実際にはＲＡＩＤドライバ３２が該ディスクアクセス要求と、それに応じた第１仮想ディスクコントロールブロック４１乃至第４仮想ディスクコントロールブロック４４（図６参照）のいずれか１つのコントロールブロックと、に基づいてディスクリプタ３００ａをＤＲＡＭ１３上に生成し、ディスクアクセス開始指示をＲＡＩＤコントローラ１５に送信するとともに、ＤＲＡＭ１３上のディスクリプタ３００ａの先頭アドレス情報を送信する。以下に、ファイルシステム１００からのディスクアクセス要求と、ＲＡＩＤドライバ３２が生成するディスクリプタ３００ａと、を順に説明する。
【００４８】
図７（Ａ）は、ＲＡＩＤドライバ３２が受け取るディスクアクセス要求のフォーマットを示す図である。この要求２００ａには、マイナー番号情報５０、開始アドレス情報２０１、メモリバッファアドレス情報２０２、データサイズ情報２０３及びコマンド名情報２０４が含まれる。
【００４９】
マイナー番号情報５０は、どの仮想ディスクに対するディスクアクセス要求を受け取ったかによって異なり、ディスクアクセス対象の仮想ディスクに対応するデバイスファイル１０１乃至１０４に登録されたマイナー番号が設定される。
【００５０】
開始アドレス情報２０１は、仮想ディスクに対するディスクアクセスの開始セクタアドレスを示し、当該開始アドレスは１６進数（０ｘ）の数値で表されている。同様に、以下のアドレスや数値も全て１６進数の数値で表されている。
【００５１】
メモリバッファアドレス情報２０２は、ディスクアクセス対象のデータの一時的な格納元又は格納先のメモリ上の先頭アドレスを示す。
【００５２】
データサイズ情報２０３は、ディスクアクセス対象のデータのサイズ（バイト数）を示す。
【００５３】
コマンド名情報２０４は、そのディスクアクセス要求が、データ読み出し要求であるのか、データ書き込み要求であるのかといった、処理に対応したコマンド名が設定されている。
【００５４】
図８（Ａ）は、ＲＡＩＤドライバ３２が生成するディスクリプタ３００ａのフォーマットを示す図である。このディスクリプタ３００ａには、メモリバッファアドレス情報２０２、コマンド名情報２０４、ディスク制御モード情報５１、使用物理ディスク情報５２、ＬＢＡアドレス情報３０１及びセクタ数情報３０２が含まれる。
【００５５】
ディスクリプタ３００ａ内のメモリバッファアドレス情報２０２及びコマンド名情報２０４は、ディスクアクセス要求２００ａ（図７（Ａ）参照）から取り出されたものである。またディスク制御モード情報５１及び使用物理ディスク情報５２は、ディスクアクセス要求２００ａに対応するコントロールブロック４１乃至４４（図６参照）から取り出されたものである。
【００５６】
ＬＢＡアドレス情報３０１は、ディスクアクセス要求２００ａに含まれる開始アドレス情報２０１と、ディスクアクセス要求２００ａのマイナー番号情報５０により特定されるコントロールブロック４１乃至４４に含まれるＬＢＡオフセット情報５４と、に基づいて以下のように決定されたものである。
ＬＢＡアドレス＝開始アドレス＋ＬＢＡオフセット
セクタ数情報３０２は、ディスクアクセスを行うセクタ数の情報であり、ディスクアクセス要求２００ａに含まれるデータサイズ情報２０３と、ディスクアクセス要求２００ａのマイナー番号情報５０により特定されるコントロールブロック４１乃至４４に含まれるディスク制御モード情報５１に応じた１セクタ当たりのデータサイズと、に基づいて以下のように決定されたものである。
セクタ数＝［データサイズ／１セクタ当たりのデータサイズ］
なお、１セクタ当たりのデータサイズは、ディスク制御モードがＲＡＩＤ０モードの場合は１０２４Ｂ（０ｘ４００）であり、ＲＡＩＤ１モードの場合は５１２Ｂ（０ｘ２００）であり、シングルモードの場合は５１２Ｂ（０ｘ２００）である。
【００５７】
図１に戻って、ＲＡＩＤコントローラ１５は、上述した機能の他にＤＭＡ（Direct Memory Access）転送機能をさらに有し、ＲＡＩＤドライバ３２からディスクアクセス開始指示に応答し、当該ＤＭＡ転送機能を使用し、受信したディスクリプタ３００ａの先頭アドレス情報に基づきディスクリプタ３００ａをＤＲＡＭ１３から取得する（自己が備える不図示のレジスタに格納する）。次に、ＲＡＩＤコントローラ１５は、この取得したディスクリプタ３００ａに従って、第１ＨＤＤ１９又は／及び第２ＨＤＤ２０のディスク制御を行う。
【００５８】
以上のように構成された画像形成装置１０主要部の各動作の詳細フローを以下に説明する。
＜３＞ＲＡＩＤ０モード用の第１仮想ディスクに対する主要部の書き込み動作
ＲＡＩＤ０モード用の第１仮想ディスク１００１に対する書き込み動作の流れを説明する。この動作でストライピングによる書き込みが実現される。
【００５９】
図９は、ＲＡＩＤ０モード用の第１仮想ディスク１００１に対して８ＭＢのデータを書き込む動作の流れを示す図である。以下、括弧内は図９中のステップ識別符号である。
【００６０】
（Ｓ１０）プロセス９９は、ＭＰＵ１１に対し、第１デバイスファイル１０１を引数としてデータ書き込みコマンドをファイルシステム１００宛に発行させる（ファイルシステム１００のデータ書き込み関数をコールする）。即ち、第１仮想ディスク１００１に対する書き込み要求を発行させる。
【００６１】
（Ｓ１１）ファイルシステム１００はこれに応答して、ＭＰＵ１１に対し、書き込み対象である８ＭＢのデータを１０２４Ｂ単位でＤＲＡＭ１３上のバッファ領域に、該バッファ領域が空く毎にブロック転送させる。
【００６２】
（Ｓ１２）ファイルシステム１００は、ＭＰＵ１１に対し、引数として渡された第１デバイスファイル１０１を参照して得られるマイナー番号情報５０「１」と、仮想ディスクに対するディスクアクセスの開始アドレス情報２０１と、このバッファ領域の書き込み対象であるデータの先頭アドレスを示すメモリバッファアドレス情報２０２と、該データのサイズを示すデータサイズ情報２０３と、データ書き込みコマンドに対応したコマンド名情報２０４と、を含む図７（Ｂ）に示すような書き込み要求２００ｂを生成させる。次に、ＭＰＵ１１に対し、第１デバイスファイル１０１を参照させ、これに登録されたメジャー番号「３００」を取得し、このメジャー番号に対応するＲＡＩＤドライバ３２宛に、生成した書き込み要求２００ｂを供与させる。
【００６３】
（Ｓ１３）ＲＡＩＤドライバ３２は、上記書き込み要求２００ｂを受け取ると、ＭＰＵ１１に対し、ディスクアクセス関数３５を呼び出させる。ディスクアクセス関数３５は、これに応答して、ＭＰＵ１１に対し、この要求２００ｂと、当該要求２００ｂに含まれるマイナー番号「１」により特定される、ＤＲＡＭ１３上に格納された第１仮想ディスクコントロールブロック４１と、に基づき、図８（Ｂ）に示すようなディスクリプタ３００ｂをＤＲＡＭ１３上に生成させる。
【００６４】
この際、ディスクアクセス関数３５は、ＭＰＵ１１に対して、ディスクリプタ３００ｂ内の各情報を上述したように決定させるが、特にＬＢＡアドレス情報３０１（０ｘ３０００）は、開始アドレス情報２０１（０ｘ１０００）にＬＢＡオフセット情報５４（０ｘ２０００）を加算させることにより決定される。また、セクタ数情報３０２（０ｘ２０００）は、データサイズ情報２０３（０ｘ８０００００＝８ＭＢ）を１セクタ当たりのデータサイズ（０ｘ４００＝１０２４Ｂ）で除算させることにより決定される。
【００６５】
（Ｓ１４）ディスクアクセス関数３５は、ＭＰＵ１１に対し、書き込み開始要求とＤＲＡＭ１３上のディスクリプタ３００ｂの先頭アドレス情報とをＲＡＩＤコントローラ１５宛に送信させる。
【００６６】
（Ｓ１５）ＲＡＩＤコントローラ１５は、書き込み開始要求に応答して、受信した先頭アドレス情報に基づきＤＲＡＭ１３からディスクリプタ３００ｂをＤＭＡ転送により取得する。
【００６７】
（Ｓ１６、Ｓ１７）ＲＡＩＤコントローラ１５は、取得したディスクリプタ３００ｂに基づき、書き込みデータを、ＲＡＩＤ０モードにより第１ＨＤＤ１９及び第２ＨＤＤ２０に同時に書き込む。
【００６８】
具体的には、ＲＡＩＤコントローラ１５は、取得したディスクリプタ３００ｂのコマンド名情報２０４により書き込み制御を、メモリバッファアドレス情報２０２によりバッファ領域上に格納されている書き込み対象のデータの先頭アドレス（０ｘ１０００００００）を、ディスク制御モード情報５１によりＲＡＩＤ０モードによるディスク制御を、使用物理ディスク情報５２によりディスク制御を行う物理ディスク（第１ＨＤＤ１９及び第２ＨＤＤ２０）を、ＬＢＡアドレス情報３０１により使用する物理ディスク内の記憶領域において書き込みを開始する先頭セクタアドレス（０ｘ３０００）を、セクタ数情報３０２により書き込み対象のデータサイズ（０ｘ２０００）を、それぞれ決定する。ＲＡＩＤコントローラ１５は、これらの決定事項に基づき、バッファ領域に格納された書き込み対象のデータを１０２４バイト毎にＤＭＡ転送で取得し、これを２分割して第１ＨＤＤ１９のＬＢＡアドレス０ｘ３０００〜０ｘ５０００の領域及び第２ＨＤＤ２０のＬＢＡアドレス０ｘ３０００〜０ｘ５０００の領域内の空き領域にそれぞれ５１２バイト書き込む。
＜４＞ＲＡＩＤ０モード用の第１仮想ディスクに対する主要部の読み出し動作
ＲＡＩＤ０モード用の第１仮想ディスク１００１に対する読み出し動作の流れを説明する。この動作でストライピングにより第１仮想ディスク１００１に格納されたデータの読み出しが実現される。
【００６９】
図１０は、ＲＡＩＤ０モード用の第１仮想ディスク１００１から８ＭＢのデータを読み出す動作の流れを示す図である。以下、括弧内は図１０中のステップ識別符号である。
【００７０】
（Ｓ２０）プロセス９９は、ＭＰＵ１１に対し、第１デバイスファイル１０１を引数としてデータ読み出しコマンドをファイルシステム１００宛に発行させる（ファイルシステム１００のデータ読み出し関数をコールする）。即ち、第１仮想ディスク１００１に対する読み出し要求を発行させる。
【００７１】
（Ｓ２１）ファイルシステム１００はこれに応答して、ＭＰＵ１１に対し、読み出し対象であるデータを格納させるため、ＤＲＡＭ１３上にバッファ領域を確保させる。
【００７２】
（Ｓ２２）ファイルシステム１００は、ＭＰＵ１１に対し、引数として渡された第１デバイスファイル１０１を参照して得られるマイナー番号情報５０「１」、仮想ディスクに対するディスクアクセスの開始アドレス情報２０１と、上記確保したバッファ領域の先頭アドレスを示すメモリバッファアドレス情報２０２と、読み出し対象であるデータのサイズを示すデータサイズ情報２０３と、データ読み出しコマンドに対応したコマンド名情報２０４と、を含む図７（Ｃ）に示すような読み出し要求２００ｃを生成させる。次に、ＭＰＵ１１に対し、第１デバイスファイル１０１を参照させ、これに登録されたメジャー番号「３００」を取得し、このメジャー番号に対応するＲＡＩＤドライバ３２宛に、生成した読み出し要求２００ｃを供与させる。
【００７３】
（Ｓ２３）ＲＡＩＤドライバ３２は、上記読み出し要求２００ｃを受け取ると、ＭＰＵ１１に対し、ディスクアクセス関数３５を呼び出させる。ディスクアクセス関数３５は、これに応答して、ＭＰＵ１１に対し、この要求２００ｃと、当該要求２００ｃに含まれるマイナー番号「１」により特定される、ＤＲＡＭ１３上に格納された第１仮想ディスクコントロールブロック４１と、に基づき、図８（Ｃ）に示すようなディスクリプタ３００ｃをＤＲＡＭ１３上に生成させる。
【００７４】
この際、ディスクアクセス関数３５は、ＭＰＵ１１に対して、ディスクリプタ３００ｃ内の各情報を上述したように決定させるが、特にＬＢＡアドレス情報３０１（０ｘ３０００）は、開始アドレス情報２０１（０ｘ１０００）にＬＢＡオフセット情報５４（０ｘ２０００）を加算させることにより決定される。また、ディスクリプタ３００ｃ内のセクタ数情報３０２（０ｘ２０００）は、データサイズ情報２０３（０ｘ８０００００＝８ＭＢ）を１セクタ当たりのデータサイズ（０ｘ４００＝１０２４Ｂ）で除算させることにより決定される。
【００７５】
（Ｓ２４）ディスクアクセス関数３５は、ＭＰＵ１１に対し、読み出し開始要求とＤＲＡＭ１３上のディスクリプタ３００ｃの先頭アドレス情報とをＲＡＩＤコントローラ１５宛に送信させる。
【００７６】
（Ｓ２５）ＲＡＩＤコントローラ１５は、読み出し開始要求に応答して、受信した先頭アドレス情報に基づきＤＲＡＭ１３からディスクリプタ３００ｃをＤＭＡ転送により取得する。
【００７７】
（Ｓ２６、Ｓ２７、Ｓ２８）ＲＡＩＤコントローラ１５は、取得したディスクリプタ３００ｃに基づき、第１仮想ディスク１００１に格納されている読み出し対象のデータを、ＤＲＡＭ１３のバッファ領域に格納し、ファイルシステム１００はこのバッファ領域に格納されたデータを読み出す。
【００７８】
具体的には、ＲＡＩＤコントローラ１５は、取得したディスクリプタ３００ｃのコマンド名情報２０４により読み出し制御を、メモリバッファアドレス情報２０２によりに格納先であるバッファ領域の先頭アドレス（０ｘ１０００００００）を、ディスク制御モード情報５１によりＲＡＩＤ０モードによるディスク制御を、使用物理ディスク情報５２によりディスク制御を行う物理ディスク（第１ＨＤＤ１９及び第２ＨＤＤ２０）を、ＬＢＡアドレス情報３０１により使用する物理ディスク内の記憶領域において読み出しを開始する先頭セクタアドレス（０ｘ３０００）を、セクタ数情報３０２により読み出し対象のデータサイズ（０ｘ２０００）を、それぞれ決定する。ＲＡＩＤコントローラ１５は、これらの決定事項に基づき、第１ＨＤＤ１９のＬＢＡアドレス０ｘ３０００〜０ｘ５０００の領域及び第２ＨＤＤ２０のＬＢＡアドレス０ｘ３０００〜０ｘ５０００の領域に格納されているデータを、５１２Ｂ単位でそれぞれ読み出し、１０２４Ｂにまとめてメモリバッファアドレス情報２０２により指定されるバッファ領域に格納させる。
＜５＞ＲＡＩＤ１モード用の第２仮想ディスクに対する主要部の書き込み動作
ＲＡＩＤ１モード用の第２仮想ディスク１００２に対する書き込み動作の流れを説明する。この動作でミラーリングによる書き込みが実現される。
【００７９】
図１１は、ＲＡＩＤ１モード用の第２仮想ディスク１００２に対して４ＭＢのデータを書き込む動作の流れを示す図である。以下、括弧内は図１１中のステップ識別符号である。
【００８０】
（Ｓ３０）プロセス９９は、ＭＰＵ１１に対し、第２デバイスファイル１０２を引数としてデータ書き込みコマンドをファイルシステム１００宛に発行させる（ファイルシステム１００のデータ書き込み関数をコールする）。即ち、第２仮想ディスク１００２に対する書き込み要求を発行させる。
【００８１】
（Ｓ３１）ファイルシステム１００はこれに応答して、ＭＰＵ１１に対し、書き込み対象である４ＭＢのデータを５１２Ｂ単位でＤＲＡＭ１３上のバッファ領域に、該バッファ領域が空く毎にブロック転送させる。
【００８２】
（Ｓ３２）ファイルシステム１００は、ＭＰＵ１１に対し、引数として渡された第２デバイスファイル１０２を参照して得られるマイナー番号情報５０「２」と、仮想ディスクに対するディスクアクセスの開始アドレス情報２０１と、このバッファ領域の書き込み対象であるデータの先頭アドレスを示すメモリバッファアドレス情報２０２と、該データのサイズを示すデータサイズ情報２０３と、データ書き込みコマンドに対応したコマンド名情報２０４と、を含む図７（Ｄ）に示すような書き込み要求２００ｄを生成させる。次に、ＭＰＵ１１に対し、第２デバイスファイル１０２を参照させ、これに登録されたメジャー番号「３００」を取得し、このメジャー番号に対応するＲＡＩＤドライバ３２宛に、生成した書き込み要求２００ｄを供与させる。
【００８３】
（Ｓ３３）ＲＡＩＤドライバ３２は、上記書き込み要求２００ｄを受け取ると、ＭＰＵ１１に対し、ディスクアクセス関数３５を呼び出させる。ディスクアクセス関数３５は、これに応答して、ＭＰＵ１１に対し、この要求２００ｄと、当該要求２００ｄに含まれるマイナー番号「２」により特定される、ＤＲＡＭ１３上に格納された第２仮想ディスクコントロールブロック４２と、に基づき、図８（Ｄ）に示すようなディスクリプタ３００ｄをＤＲＡＭ１３上に生成させる。
【００８４】
この際、ディスクアクセス関数３５は、ＭＰＵ１１に対して、ディスクリプタ３００ｄ内の各情報を上述したように決定させるが、特にＬＢＡアドレス情報３０１（０ｘ９０００）は、開始アドレス情報２０１（０ｘ１０００）にＬＢＡオフセット情報５４（０ｘ８０００）を加算させることにより決定される。また、ディスクリプタ３００ｄ内のセクタ数情報３０２（０ｘ２０００）は、データサイズ情報２０３（０ｘ４０００００＝４ＭＢ）を１セクタ当たりのデータサイズ（０ｘ２００＝５１２Ｂ）で除算させることにより決定される。
【００８５】
（Ｓ３４）ディスクアクセス関数３５は、ＭＰＵ１１に対し、書き込み開始要求とＤＲＡＭ１３上のディスクリプタ３００ｄの先頭アドレス情報とをＲＡＩＤコントローラ１５宛に送信させる。
【００８６】
（Ｓ３５）ＲＡＩＤコントローラ１５は、書き込み開始要求に応答して、受信した先頭アドレス情報に基づきＤＲＡＭ１３からディスクリプタ３００ｄをＤＭＡ転送により取得する。
【００８７】
（Ｓ３６、Ｓ３７）ＲＡＩＤコントローラ１５は、取得したディスクリプタ３００ｄに基づき、書き込みデータを、ＲＡＩＤ１モードにより第１ＨＤＤ１９及び第２ＨＤＤ２０の両方に同時に書き込む。
【００８８】
具体的には、ＲＡＩＤコントローラ１５は、取得したディスクリプタ３００ｄのコマンド名情報２０４により書き込み制御を、メモリバッファアドレス情報２０２によりバッファ領域上に格納されている書き込み対象のデータの先頭アドレス（０ｘ１０００００００）を、ディスク制御モード情報５１によりＲＡＩＤ１モードによるディスク制御を、使用物理ディスク情報５２によりディスク制御を行う物理ディスク（第１ＨＤＤ１９及び第２ＨＤＤ２０）を、ＬＢＡアドレス情報３０１により使用する物理ディスク内の記憶領域において書き込みを開始する先頭セクタアドレス（０ｘ９０００）を、セクタ数情報３０２により書き込み対象のデータサイズ（０ｘ２０００）を、それぞれ決定する。ＲＡＩＤコントローラ１５は、これらの決定事項に基づき、バッファ領域に格納された書き込み対象のデータを５１２バイト毎にＤＭＡ転送により取得し、これを第１ＨＤＤ１９のＬＢＡアドレス０ｘ９０００〜０ｘｂ０００の領域及び第２ＨＤＤ２０のＬＢＡアドレス０ｘ９０００〜０ｘｂ０００の領域内の両方の空き領域に書き込む。
＜６＞ＲＡＩＤ１モード用の第２仮想ディスクに対する主要部の読み出し動作
ＲＡＩＤ１モード用の第２仮想ディスク１００２に対する読み出し動作の流れを説明する。この読み出し動作は、シングルモードによる読み出しの場合と同一である。この動作でミラーリングにより第１仮想ディスク１００１に格納されたデータの読み出しが実現される。
【００８９】
図１２は、ＲＡＩＤ１モード用の第２仮想ディスク１００２から４ＭＢのデータを読み出す動作の流れを示す図である。以下、括弧内は図１２中のステップ識別符号である。
【００９０】
（Ｓ４０）プロセス９９は、ＭＰＵ１１に対し、第２デバイスファイル１０２を引数としてデータ読み出しコマンドをファイルシステム１００宛に発行させる（ファイルシステム１００のデータ読み出し関数をコールする）。即ち、第２仮想ディスク１００２に対する読み出し要求を発行させる。
【００９１】
（Ｓ４１）ファイルシステム１００はこれに応答して、ＭＰＵ１１に対し、読み出し対象であるデータを格納させるため、ＤＲＡＭ１３上にバッファ領域を確保させる。
【００９２】
（Ｓ４２）ファイルシステム１００は、ＭＰＵ１１に対し、引数として渡された第２デバイスファイル１０２を参照して得られるマイナー番号情報５０「２」、仮想ディスクに対するディスクアクセスの開始アドレス情報２０１と、上記確保したバッファ領域の先頭アドレスを示すメモリバッファアドレス情報２０２と、読み出し対象であるデータのサイズを示すデータサイズ情報２０３と、データ読み出しコマンドに対応したコマンド名情報２０４と、を含む図７（Ｅ）に示すような読み出し要求２００ｅを生成させる。次に、ＭＰＵ１１に対し、第２デバイスファイル１０２を参照させ、これに登録されたメジャー番号「３００」を取得し、このメジャー番号に対応するＲＡＩＤドライバ３２宛に、生成した読み出し要求２００ｅを供与させる。
【００９３】
（Ｓ４３）ＲＡＩＤドライバ３２は、上記読み出し要求２００ｅを受け取ると、ＭＰＵ１１に対し、ディスクアクセス関数３５を呼び出させる。ディスクアクセス関数３５は、これに応答して、ＭＰＵ１１に対し、この要求２００ｅと、当該要求２００ｅに含まれるマイナー番号「２」により特定される、ＤＲＡＭ１３上に格納された第２仮想ディスクコントロールブロック４２と、に基づき、図８（Ｅ）に示すようなディスクリプタ３００ｅをＤＲＡＭ１３上に生成させる。なお、第２コントロールブロック４２から取得する使用物理ディスク情報５２は第１ＨＤＤ１９及び第２ＨＤＤ２０を使用することを示しているが、ミラーリングの場合第１ＨＤＤ１９及び第２ＨＤＤ２０にはそれぞれ同一データが格納されており、両方から読み出す必要がないことから、本実施例では、第１ＨＤＤ１９のみから読み出させるように、ＲＡＩＤドライバ３２が生成するディスクリプタ３００ｅ内の使用物理ディスク情報５２を変更している。
【００９４】
この際、ディスクアクセス関数３５は、ＭＰＵ１１に対して、ディスクリプタ３００e内の各情報を上述したように決定させるが、特にＬＢＡアドレス情報３０１（０ｘ９０００）は、開始アドレス情報２０１（０ｘ１０００）にＬＢＡオフセット情報５４（０ｘ８０００）を加算させることにより決定される。また、ディスクリプタ３００e内のセクタ数情報３０２（０ｘ２０００）は、データサイズ情報２０３（０ｘ４０００００＝４ＭＢ）を１セクタ当たりのデータサイズ（０ｘ２００＝５１２Ｂ）で除算させることにより決定される。
【００９５】
（Ｓ４４）ディスクアクセス関数３５は、ＭＰＵ１１に対し、読み出し開始要求とＤＲＡＭ１３上のディスクリプタ３００ｅの先頭アドレス情報とをＲＡＩＤコントローラ１５宛に送信させる。
【００９６】
（Ｓ４５）ＲＡＩＤコントローラ１５は、読み出し開始要求に応答して、受信した先頭アドレス情報に基づきＤＲＡＭ１３からディスクリプタ３００ｅをＤＭＡ転送により取得する。
【００９７】
（Ｓ４６、Ｓ４７、Ｓ４８）ＲＡＩＤコントローラ１５は、取得したディスクリプタ３００ｅに基づき、第２仮想ディスク１００２に格納されている読み出し対象のデータを、ＤＲＡＭ１３のバッファ領域に格納し、ファイルシステム１００はこのバッファ領域に格納されたデータを読み出す。
【００９８】
具体的には、ＲＡＩＤコントローラ１５は、取得したディスクリプタ３００ｅのコマンド名情報２０４により読み出し制御を、メモリバッファアドレス情報２０２によりに格納先であるバッファ領域の先頭アドレス（０ｘ１０００００００）を、ディスク制御モード情報５１によりＲＡＩＤ１モードによるディスク制御を、使用物理ディスク情報５２によりディスク制御を行う物理ディスク（第１ＨＤＤ１９）を、ＬＢＡアドレス情報３０１により使用する物理ディスク内の記憶領域において読み出しを開始する先頭セクタアドレス（０ｘ９０００）を、セクタ数情報３０２により読み出し対象のデータサイズ（０ｘ２０００）を、それぞれ決定する。ＲＡＩＤコントローラ１５は、これらの決定事項に基づき、第１ＨＤＤ１９のＬＢＡアドレス０ｘ９０００〜０ｘｂ０００の領域に格納されているデータを５１２Ｂ単位で読み出し、メモリバッファアドレス情報２０２により指定されるバッファ領域に格納させる。
＜７＞シングルモード用の第３仮想ディスクに対する主要部の書き込み動作
シングルモード用の第３仮想ディスク１００３に対する書き込み動作の流れを説明する。この動作で高速処理や耐障害性を要求しない通常書き込みが実現される。
【００９９】
図１３は、シングルモード用の第３仮想ディスク１００３に対して４ＭＢのデータを書き込む動作の流れを示す図である。以下、括弧内は図１３中のステップ識別符号である。
【０１００】
（Ｓ５０）プロセス９９は、ＭＰＵ１１に対し、第３デバイスファイル１０３を引数としてデータ書き込みコマンドをファイルシステム１００宛に発行させる（ファイルシステム１００のデータ書き込み関数をコールする）。即ち、第３仮想ディスク１００３に対する書き込み要求を発行させる。
【０１０１】
（Ｓ５１）ファイルシステム１００はこれに応答して、ＭＰＵ１１に対し、書き込み対象である４ＭＢのデータを５１２Ｂ単位でＤＲＡＭ１３上のバッファ領域に、該バッファ領域が空く毎にブロック転送させる。
【０１０２】
（Ｓ５２）ファイルシステム１００は、ＭＰＵ１１に対し、引数として渡された第３デバイスファイル１０３を参照して得られるマイナー番号情報５０「３」と、第３仮想ディスク１００３に対するディスクアクセスの開始アドレス情報２０１と、このバッファ領域の書き込み対象であるデータの先頭アドレスを示すメモリバッファアドレス情報２０２と、該データのサイズを示すデータサイズ情報２０３と、データ書き込みコマンドに対応したコマンド名情報２０４と、を含む図７（Ｆ）に示すような書き込み要求２００ｆを生成させる。次に、ＭＰＵ１１に対し、第３デバイスファイル１０３を参照させ、これに登録されたメジャー番号「３００」を取得し、このメジャー番号に対応するＲＡＩＤドライバ３２宛に、生成した書き込み要求２００ｆを供与させる。
【０１０３】
（Ｓ５３）ＲＡＩＤドライバ３２は、上記書き込み要求２００ｆを受け取ると、ＭＰＵ１１に対し、ディスクアクセス関数３５を呼び出させる。ディスクアクセス関数３５は、これに応答して、ＭＰＵ１１に対し、この要求２００ｆと、当該要求２００ｆに含まれるマイナー番号「３」により特定される、ＤＲＡＭ１３上に格納された第３仮想ディスクコントロールブロック４３と、に基づき、図８（Ｆ）に示すようなディスクリプタ３００ｆをＤＲＡＭ１３上に生成させる。
【０１０４】
この際、ディスクアクセス関数３５は、ＭＰＵ１１に対して、ディスクリプタ３００ｆ内の各情報を上述したように決定させるが、特にＬＢＡアドレス情報３０１（０ｘ６０００）は、開始アドレス情報２０１（０ｘ１０００）にＬＢＡオフセット情報５４（０ｘ５０００）を加算させることにより決定される。また、ディスクリプタ３００ｆ内のセクタ数情報３０２（０ｘ２０００）は、データサイズ情報２０３（０ｘ４０００００＝４ＭＢ）を１セクタ当たりのデータサイズ（０ｘ２００＝５１２Ｂ）で除算させることにより決定される。
【０１０５】
（Ｓ５４）ディスクアクセス関数３５は、ＭＰＵ１１に対し、書き込み開始要求とＤＲＡＭ１３上のディスクリプタ３００ｆの先頭アドレス情報とをＲＡＩＤコントローラ１５宛に送信させる。
【０１０６】
（Ｓ５５）ＲＡＩＤコントローラ１５は、書き込み開始要求に応答して、受信した先頭アドレス情報に基づきＤＲＡＭ１３からディスクリプタ３００ｆをＤＭＡ転送により取得する。
【０１０７】
（Ｓ５６、Ｓ５７）ＲＡＩＤコントローラ１５は、取得したディスクリプタ３００ｆに基づき、書き込みデータをシングルモードにより第２ＨＤＤ２０に書き込む。
【０１０８】
具体的には、ＲＡＩＤコントローラ１５は、取得したディスクリプタ３００ｆのコマンド名情報２０４により書き込み制御を、メモリバッファアドレス情報２０２によりバッファ領域上に格納されている書き込み対象のデータの先頭アドレス（０ｘ１０００００００）を、ディスク制御モード情報５１によりシングルモードによるディスク制御を、使用物理ディスク情報５２によりディスク制御を行う物理ディスク（第２ＨＤＤ２０）を、ＬＢＡアドレス情報３０１により使用する物理ディスク内の記憶領域において書き込みを開始する先頭セクタアドレス（０ｘ６０００）を、セクタ数情報３０２により書き込み対象のデータサイズ（０ｘ２０００）を、それぞれ決定する。ＲＡＩＤコントローラ１５は、これらの決定事項に基づき、バッファ領域に格納された書き込み対象のデータを５１２バイト毎にＤＭＡ転送で取得し、これを第２ＨＤＤ２０のＬＢＡアドレス０ｘ６０００〜０ｘ８０００の領域内の空き領域に書き込む。
＜８＞シングルモード用の第３仮想ディスクに対する主要部の読み出し動作
シングルモード用の第３仮想ディスク１００３に対する主要部の読み出し動作は、第２仮想ディスク１００２に対する読み出し動作と同一であるので詳細は省略する。
【０１０９】
また、シングルモード用の第４仮想ディスク１００４に対する主要部の書き込み動作は、第３仮想ディスク１００３に対する書き込み動作と同一であり、シングルモード用の第４仮想ディスク１００４に対する主要部の読み出し動作も第２仮想ディスク１００２に対する読み出し動作と同一であるので、それぞれの詳細は省略する。
＜９＞仮想ディスクとＨＤＤの領域との対応関係
図１４は、第１ＨＤＤ１９の領域が仮想ディスク毎に分割されている様子を概略的に示す図である。図４等では、説明のため各ＨＤＤが仮想ディスク毎に縦方向に分割されているように示されているが、実際には、第１ＨＤＤ１９及び第２ＨＤＤ２０内部のディスクは円盤状であって、図１４に示されるように、円盤の直径方向に領域が分割される。
【０１１０】
ここで、第１ＨＤＤ１９及び第２ＨＤＤ２０を含む一般的なＨＤＤは、内周から外周に向かって記録密度が高くなることから、外周は内周よりも転送速度が速いことが知られている。
【０１１１】
よって、本実施例では、転送速度が要求される、ＲＡＩＤ０モード用の第１仮想ディスク１００１の領域を外周側に割当て、転送速度が要求されないＲＡＩＤ１モード用の第２仮想ディスク１００２の領域を内周側に割り当てている。この割当ては、上述したように各仮想ディスクコントロールブロック４１〜４４内のＬＢＡオフセット情報５４と総セクタ数５３に基づいてなされる。なお、ＬＢＡアドレスは、外周側から内周側に向かって順番に割り当てられているため、ＬＢＡアドレスが若い順に転送速度が速い。即ち、ＬＢＡオフセット情報５４が示す数値が低いほどその仮想ディスクの転送速度は速くなる。
【０１１２】
このようにすることで、ＲＡＩＤ０モード用の第１仮想ディスク１００１の転送速度が向上し、ＲＡＩＤ０の効果を高めることができる。
＜１０＞本発明に係わる仮想ディスクの登録処理
図１５は、本発明に係わる仮想ディスクの登録処理のフローチャートを示した図である。以下、このフローチャートに従って、仮想ディスクの登録処理を説明する。この処理は、カーネル起動時に起動スクリプト（例えば/etc/rc.d/rc.local）が読み込まれて実行される。
【０１１３】
（Ｓ１０００）ＭＰＵ１１は、本発明に係わるＲＡＩＤドライバ３２をカーネルに登録するために、モジュール登録コマンド（例えばinsmodコマンド）を実行する。
【０１１４】
（Ｓ１００１）ＭＰＵ１１は、上記モジュール登録コマンドに従って、図３に示すようなＲＡＩＤドライバ３２内の初期化関数３６を呼び出す。次にＭＰＵ１１は、初期化関数３６に従って、各仮想ディスク１００１〜１００４を実現するために必要な情報である各仮想ディスクコントロールブロック４１〜４４をＤＲＡＭ１３に格納させるために、複数のデータ構造体を当該ＤＲＡＭ１３上に展開する。これら構造体の型は、図３に示す初期化関数３６内の構造体宣言部５０００に定義されている。
【０１１５】
（Ｓ１００２）ＭＰＵ１１は、初期化関数３６に従って、第１ＨＤＤ１９に予め格納されている各仮想ディスクコントロールブロック４１〜４４を取得し、各コントロールブロック４１〜４４内の各情報５０〜５４（図５（Ｂ）参照）を、各々に対応する構造体の要素が確保するメモリ領域に格納する。この際、第１ＨＤＤ１９に対応するデバイスドライバ、即ちＲＡＩＤドライバ３２はカーネルに未だ登録されていないことから、ＭＰＵ１１は、第１ＨＤＤ１９の物理アドレスを直接指定することにより該コントロールブロック４１〜４４を取得する。
【０１１６】
（Ｓ１００３）ＭＰＵ１１は、初期化関数３６に従って、ＲＡＩＤドライバ３２をカーネルに登録する。
【０１１７】
（Ｓ１００４）ＭＰＵ１１は、モジュール登録コマンドの処理を終了する。
【０１１８】
（Ｓ１００５〜１００９）ＭＰＵ１１は、マウントコマンド（例えばmountコマンド）を複数回実行することにより、各仮想ディスクに対応するように予め作成されている第１〜第４デバイスファイル１０１〜１０４をファイルシステム１００にマウントする。
【０１１９】
上記ステップを通じて、第１〜第４仮想ディスク１００１〜１００４はカーネルに認識（登録）される。なお、上記ステップＳ１００１〜１００３の処理は、初期化関数３６に従って実行される場合を説明したが、初期化関数３６から呼び出される他の関数によって実行される場合もある。
＜１１＞効果
本実施例１では、以上の構成により、仮想ディスクを実現するのに必要なＬＢＡオフセット情報５４などの通常の情報に加え、ＲＡＩＤコントローラ１５に対して仮想ディスクのディスク制御モードを指定するディスク制御モード情報５１と、該ディスク制御モードに使用されるＨＤＤを指定する使用物理ディスク情報５２を含むコントロールブロックを４台の仮想ディスク毎に備え、ＲＡＩＤドライバ３２が、ＭＰＵ１１に対し、アクセス要求（例えば２００ｂ）と、アクセス対象の仮想ディスク１００１乃至１００４に対応するコントロールブロック（例えば第１仮想ディスクコントロールブロック４１）と、に基づき、該ディスク制御モード情報５１と該使用物理ディスク情報５２とを含むディスクリプタ（例えば３００ｂ）を生成し、これをディスクアレイ制御装置に伝達するので、２台のＨＤＤ１９及び２０で、ＲＡＩＤを含む３種類以上のディスク制御モードに対応した記憶領域を共存させることができるという効果を奏する。
【０１２０】
また、以上の構成を備えるのがネットワークに結合されるＮＩＣ１６を備えた画像形成装置１０であり、デバイスドライバ３２は、該ＮＩＣ１６を介してディスクアクセス要求を受信するので、近年ネットワークに結合された画像形成装置に高速処理や耐障害性の向上が必要であるという要望に即座に対応できるという効果を奏する。
【０１２１】
さらに、一般的な補助記憶装置の円盤状ディスクにおいて外周側に向かってアクセス速度が速くなるという観点から、ＲＡＩＤ０モードに対応する第１仮想ディスクコントロールブロック４１内のＬＢＡオフセット情報５４の示す値がＲＡＩＤ１モードに対応する第２仮想ディスクコントロールブロック４２内のオフセット情報５４の示す値よりも、該第１仮想ディスクコントロールブロック４１に対応する第１仮想ディスク１００１が該第２仮想ディスクコントロールブロック４２に対応する第２仮想ディスク１００２より２台の第１ＨＤＤ１９と第２ＨＤＤ２０両者の円盤状ディスクの外周側に位置するように、小さく設定されているので、アクセス速度が重視されるＲＡＩＤ０の効果を高めることができるという効果を奏する。
＜１２＞変形例
なお、上述した本発明の実施例は、本発明の説明のための例示であり、本発明の範囲をそれらの実施例にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。以下に、その態様の一部を例示する。
【０１２２】
本実施例では、本発明に係わる主要部構成を複合機１０が備える場合を説明したが、ネットワークサーバやパーソナルコンピュータなどの他の情報処理装置が備える場合であってもよい。
【０１２３】
また、本発明を説明するために、本実施例ではＬｉｎｕｘを前提として記載したが、本発明は他のＯＳ、例えばＷｉｎｄｏｗｓ（登録商標）にも適用が可能である。
【０１２４】
さらに、ＨＤＤ２台を用いて各ディスク制御モードに対応する仮想ディスクを４台作成する場合を説明したが、第１ＨＤＤ１９及び第２ＨＤＤ２０の容量、ＯＳ３０の制限（例えばマウント数の制限）並びにＲＡＩＤコントローラ１５のディスク制御モードの機能制限が許す限り、例えばＲＡＩＤ２〜６のような様々なディスク制御モードに対応した無数台の仮想ディスクを作成し、２台のＨＤＤで複数種以上のＲＡＩＤモードに対応する各記憶領域を共存させることもできる。例えば、２台のＨＤＤでＲＡＩＤ０〜６及びシングルモードに対応する各記憶領域を共存させることも可能である。
【０１２５】
さらにまた、画像形成装置１０の起動前の第１〜第４コントロールブロック４１〜４４の格納先は第１ＨＤＤ１９に限定されず、例えばＯＳ３０やアプリ３１が格納されているＥＥＰＲＯＭ１４や第２ＨＤＤ２０などであってもよい。
【０１２６】
一方でＯＳ３０、アプリ３１及びＲＡＩＤドライバ３２などのソフトウェアが第１ＨＤＤ１９又は第２ＨＤＤ２０に格納されていてもよい。
【０１２７】
また、ＲＡＩＤドライバ３２は、ＭＰＵ１１に対し、ＤＭＡ転送方式を用いてディスクリプタを間接的にＲＡＩＤコントローラ１５に送信する場合（ＭＰＵ１１は上記ディスクリプタの先頭アドレスを送信し、ディスクリプタ自体は送信しない）に限られず、例えばＭＰＵ１１に対し、ディスクリプタ自体を直接的に送信させるようにしてもよい。
【図面の簡単な説明】
【０１２８】
【図１】本発明の実施例１に係わる画像形成装置の主要部構成を示す機能ブロック図である。
【図２】本発明の実施例１に係わる複合機のハードウェア構成を示す概略ブロック図である。
【図３】本発明の実施例１に係わるＲＡＩＤドライバのソースファイルの一部を示した図である。
【図４】第１ＨＤＤ及び第２ＨＤＤ両者及び片方の各記憶領域と複数の仮想ディスクとの対応関係を示した図である。
【図５】（Ａ）は、上記第１ＨＤＤに記録されているデータの一部を示す図である。（Ｂ）は、第１仮想ディスクコントロールブロック内のデータ構成を示す図である。
【図６】各コントロールブロックが格納された場合のＤＲＡＭのメモリマップを示す図である。
【図７】（Ａ）〜（Ｆ）ＲＡＩＤドライバが受け取る複数種のディスクアクセス要求の説明図である。
【図８】（Ａ）〜（Ｆ）ＲＡＩＤドライバが生成する複数種のディスクリプタの説明図である。
【図９】ＲＡＩＤ０モード用の第１仮想ディスクに対して８ＭＢのデータを書き込む動作の流れを示す図である。
【図１０】ＲＡＩＤ０モード用の第１仮想ディスクから８ＭＢのデータを読み出す動作の流れを示す図である。
【図１１】ＲＡＩＤ１モード用の第２仮想ディスクに対して４ＭＢのデータを書き込む動作の流れを示す図である。
【図１２】ＲＡＩＤ１モード用の第２仮想ディスクから４ＭＢのデータを読み出す動作の流れを示す図である。
【図１３】シングルモード用の第３仮想ディスクに対して４ＭＢのデータを書き込む動作の流れを示す図である。
【図１４】第１ＨＤＤの領域が仮想ディスク毎に分割されている様子を概略的に示す図である。
【図１５】本発明に係わる仮想ディスクの登録処理のフローチャートを示した図である。
【符号の説明】
【０１２９】
１０  複合機
１１  ＭＰＵ
１２  インタフェース
１３  ＤＲＡＭ
１４  ＥＥＰＲＯＭ
１５  ＲＡＩＤコントローラ
１６  ＮＩＣ
１７  印刷部
１８  その他の装置
３１  アプリケーション
３２  ＲＡＩＤドライバが格納されている
３５  ディスク制御関数
３６  初期化関数
４１  第１仮想ディスクコントロールブロック
４２  第２仮想ディスクコントロールブロック
４３  第３仮想ディスクコントロールブロック
４４  第４仮想ディスクコントロールブロック
５０  マイナー番号情報
５１  ディスク制御モード情報
５２  使用物理ディスク情報
５３  総セクタ数情報
５４  ＬＢＡオフセット情報
９９  プロセス
１０１  第１デバイスファイル
１０２  第２デバイスファイル
１０３  第３デバイスファイル
１０４  第４デバイスファイル
２００ａ〜ｆ  ディスクアクセス要求
２０１  開始アドレス情報
２０２  メモリバッファアドレス情報
２０３  データサイズ情報
２０４  コマンド名情報
３００ａ〜ｆ  ディスクリプタ
３０１  ＬＢＡアドレス情報
３０２  セクタ数情報
１００１  領域、第１仮想ディスク
１００２  領域、第２仮想ディスク
１００３  領域、第３仮想ディスク
１００４  領域、第４仮想ディスク
【図１】
0005080201.tif 000002
【図２】
0005080201.tif 000003
【図３】
0005080201.tif 000004
【図４】
0005080201.tif 000005
【図５】
0005080201.tif 000006
【図６】
0005080201.tif 000007
【図７】
0005080201.tif 000008
【図８】
0005080201.tif 000009
【図９】
0005080201.tif 000010
【図１０】
0005080201.tif 000011
【図１１】
0005080201.tif 000012
【図１２】
0005080201.tif 000013
【図１３】
0005080201.tif 000014
【図１４】
0005080201.tif 000015
【図１５】
0005080201.tif 000016