JP5080201B2 - 情報処理装置及びこれに備えられるデバイスドライバ - Google Patents

情報処理装置及びこれに備えられるデバイスドライバ Download PDF

Info

Publication number
JP5080201B2
JP5080201B2 JP2007274172A JP2007274172A JP5080201B2 JP 5080201 B2 JP5080201 B2 JP 5080201B2 JP 2007274172 A JP2007274172 A JP 2007274172A JP 2007274172 A JP2007274172 A JP 2007274172A JP 5080201 B2 JP5080201 B2 JP 5080201B2
Authority
JP
Japan
Prior art keywords
disk
information
control
mode
virtual
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007274172A
Other languages
English (en)
Other versions
JP2009104321A (ja
Inventor
俊太郎 辻
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kyocera Document Solutions Inc
Original Assignee
Kyocera Document Solutions Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kyocera Document Solutions Inc filed Critical Kyocera Document Solutions Inc
Priority to JP2007274172A priority Critical patent/JP5080201B2/ja
Priority to US12/236,828 priority patent/US8015354B2/en
Priority to CN2008101695661A priority patent/CN101419534B/zh
Publication of JP2009104321A publication Critical patent/JP2009104321A/ja
Application granted granted Critical
Publication of JP5080201B2 publication Critical patent/JP5080201B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、補助記憶装置の信頼性と性能向上を図るためのRAID(Redundant Arrays of Inexpensive/Independent Disks)と呼ばれるディスクアレイ構成をもつ記憶装置が接続された情報処理装置及びこれに備えられるデバイスドライバに関する。
近年、サーバコンピュータやパーソナルコンピュータのような情報処理装置においては、ディスクアクセス速度の向上及び記憶データの保護を図るために、複数台の補助記憶装置を1台の記憶装置として仮想的に取り扱うディスクアレイ技術が利用されている。
上記ディスクアレイ技術には、様々な方式が考案されているが、代表的なものとしてRAID0とRAID1が挙げられる。
RAID0は、ストライピングとも呼ばれ、複数台の補助記憶装置にデータをブロック単位で分散し、ディスクアクセス速度の向上を図る方式である。RAID0には最低2台の補助記憶装置が必要である。一方、RAID1は、ミラーリングとも呼ばれ、複数台の補助記憶装置に同時に同一のデータを書き込み、記憶データの保護を図る方式である。RAID1も上記同様に最低2台の補助記憶装置が必要である。以下、上記RAID0の機能をRAID0モードと称し、上記RAID1の機能をRAID1モードと称す。
ここで、取り扱うデータによって、アクセス速度を重視したいもの又はデータ保護を重視したいものに分別したい場合がある。
これを実現するためには、情報処理装置に、RAID0モードとRAID1モードとを切り換えることが可能なディスクアレイ制御装置(RAIDコントローラ)を備え、これに結合される、RAID0モード専用の2台の補助記憶装置と、RAID1モード専用の2台の補助記憶装置と、の少なくとも計4台の補助記憶装置が一般的に必要である(例えば下記特許文献1)。
しかしながら、情報処理装置に4台もの補助記憶装置を備えることは、コスト的に負担が大きい。
そこで、下記非特許文献1では、2台の補助記憶装置において、取り扱うデータによってRAID0モードとRAID1モードとに切替え可能で、かつRAID0モードで構築される記憶領域と、RAID1モードで構築される記憶領域とを共存(混在)させることができるマトリックスRAIDと呼ばれる技術を公開している。
特開2002−259062号公報 http://www.intel.com/jp/support/chipsets/imsm/sb/CS-020681.htm
しかしながら、上記非特許文献1には、2台の補助記憶装置を用いて、RAID0モードで構築される記憶領域とRAID1モードで構築される記憶領域とに加え、異なるRAIDモード又はシングルモードで構築される記憶領域をも共存させる、すなわち三種類以上のディスク制御モードで構築される記憶領域を共存させることは開示されていない。なお、「シングルモード」とはディスクアレイ制御を行わない通常のディスク制御モードをいう。
本発明の目的は、上記問題点に鑑み、2台の補助記憶装置において、3種類以上のディスク制御モードで構築される記憶領域を共存させることが可能な情報処理装置及びこれに備えられるデバイスドライバを提供することにある。
本発明による情報処理装置の第1態様では、
主記憶装置と、
2台の補助記憶装置と、
該2台の補助記憶装置に結合され、これらをRAID0モード、RAID1モード及びシングルモードを含む指定されたディスク制御モードで制御するディスクアレイ制御装置と、
を備え、該2台の補助記憶装置の両者及び片方の記憶領域に対応する少なくとも3つ以上の仮想ディスクを実現する情報処理装置であって、
該ディスク制御モードを指定する第1指定情報及び該指定するディスク制御モードに使用される補助記憶装置を指定する第2指定情報を含む、仮想ディスクのコントロールブロックが該仮想ディスク毎に格納された記憶手段と、
該3つ以上の仮想ディスクのうちいずれかの仮想ディスクに対するディスクアクセス要求に応答し、該ディスクアクセス要求と、該要求された仮想ディスクに対応するコントロールブロックとに基づき、該第1指定情報と該第2指定情報とを含んだ該ディスクアレイ制御装置の制御情報を該主記憶装置上に生成し、これを該ディスクアレイ制御装置に直接的に又は間接的に伝達するデバイスドライバ手段と、
をさらに備えることを特徴とする。
なお、上記記憶手段は、上記2台の補助記憶装置のいずれかでもよく、また他の記憶装置、例えばROMなどであってもよい。
本発明による情報処理装置の第2態様では、第1態様において、
該情報処理装置は、ネットワークに結合される通信手段を備えた画像形成装置であり、
該デバイスドライバ手段は、該通信手段を介して該ディスクアクセス要求を受信することを特徴とする。
本発明による情報処理装置の第3態様では、第1又は第2態様において、
該記憶手段には、該第1指定情報が該RAID0モードを示す第1コントロールブロックと、該第1指定情報が該RAID1モードを示す第2コントロールブロックと、が格納され、
該第1コントロールブロックに対応する仮想ディスクが該第2コントロールブロックに対応する仮想ディスクより該2台の補助記憶装置両者の円盤状ディスクの外周側に位置するように、該第1コントロールブロック内のオフセット情報と該第2コントロールブロック内のオフセット情報とが設定されている、
ことを特徴とする。
上記第1態様の構成によれば、
仮想ディスクを実現するのに必要な情報を含む通常のコントロールブロックに、仮想ディスクのディスク制御モードを指定する第1指定情報と、該指定するディスク制御モードに使用される補助記憶装置の第2指定情報とをさらに含ませており、デバイスドライバ手段が、受信したディスクアクセス要求と、アクセス対象の仮想ディスクに対応するコントロールブロックとに基づき、該第1指定情報と該第2指定情報とを含んだディスクアレイ制御装置の制御情報を生成し、これを該ディスクアレイ制御装置に伝達するので、
該ディスクアレイ制御装置は、受信した制御情報に基づき、2台の補助記憶装置両者及び片方の所定領域に所定のディスク制御モードでディスクアクセスすることが可能となり、
2台の補助記憶装置において、RAIDを含む3種類以上のディスク制御モードに対応した記憶領域を共存させることができるという効果を奏する。
上記第2態様の構成によれば、
第1態様の構成を有するのがネットワークに結合される通信手段を備えた画像形成装置であり、デバイスドライバ手段は、該通信手段を介してディスクアクセス要求を受信するので、近年ネットワークに結合された画像形成装置に高速処理や耐障害性の向上が必要であるという要望に即座に対応できるという効果を奏する。
上記第3態様の構成によれば、一般的な補助記憶装置の円盤状ディスクにおいて外周側に向かってアクセス速度が速くなるという観点から、
該第1コントロールブロックに対応する仮想ディスクが該第2コントロールブロックに対応する仮想ディスクより該2台の補助記憶装置両者の円盤状ディスクの外周側に位置するように、RAID0モードに対応する第1コントロールブロック内のオフセット情報とRAID1モードに対応する第2コントロールブロック内のオフセット情報とが設定されているので、アクセス速度が重視されるRAID0の効果を高めることができるという効果を奏する。
なお、該第1コントロールブロックに対応する仮想ディスクが該第2コントロールブロックに対応する仮想ディスクより該2台の補助記憶装置両者の円盤状ディスクの外周側に位置するためには、ディスクアレイ制御装置のアドレス指定方式がLBA(Logical Block Addressing)アドレス方式の場合、上記第1コントロールブロック内のオフセット情報の示す値は、上記第2コントロールブロック内のオフセット情報の示す値よりも小さく設定され、CHS(Cylinder/Head/Sector)アドレス方式の場合には、大きく設定される。
本発明の他の目的、構成及び効果は以下の説明から明らかになる。
<1>ハードウェア構成
一般的にRAID技術は、高速処理や耐障害性の向上を必要とするネットワークサーバに適用されているが、近年、画像形成装置(特に複合機)が大容量HDDを備え、ネットワークに接続されて高速処理や耐障害性の向上を必要とする場合が生じることに鑑み、本実施例ではRAID技術を複合機に適用して説明する。
図2は、本発明の実施例1に係わる複合機のハードウェア構成を示す概略ブロック図である。
複合機10では、MPU11にインタフェース12を介して、DRAM13、EEPROM14、RAIDコントローラ15、NIC16、印刷部17及びその他の装置18が結合されている。図2では、簡単化のため、複数のインタフェースを1つのブロックで示している。
DRAM13は、ワークエリア用である。EEPROM14は、例えばフラッシュメモリである。EEPROM14には、Linux(登録商標)カーネルを含むOS30、該OS30上で動作する複数のアプリケーション31、及び本発明に係わるRAIDドライバ32が格納されている。
図3は、RAIDドライバ32のソースファイルの一部を示した図である。このソースファイル内には後述するディスクアクセス関数35及び初期化関数36などが記述されている。これら関数は、例えばANSI−C規格に準拠した関数である。
EEPROM14に格納されたRAIDドライバ32は、上記ソースファイルからローダブルモジュール形式にコンパイルされたものであり、後述<10>の方法により、カーネルに組み込まれ、上層からのディスクアクセス要求に応じて、RAIDコントローラ15を制御する。
なお、このRAIDドライバ32には、OS30側からドライバを特定できるように、メジャー番号が割り当てられている。本実施例では、このメジャー番号を「300」と割り当てる。
RAIDコントローラ15は、インタフェース12並びに第1HDD19及び第2HDD20に結合されている。このRAIDコントローラ15は、RAID0モードとRAID1モードとシングルモードとを有するディスク制御モード機能を有し、RAIDドライバ32からのディスクアクセス要求に応じて、第1HDD19又は/及び第2HDD20を、上記いずれかのディスク制御モードによりディスク制御を行う。
第1HDD19及び第2HDD20は、IDE、SCSI又はUSBなどの規格の磁気ディスクドライブであり、データ格納用である。なお、本実施例では便宜上、両者同一種類及び同一容量のものを用いて説明するが、本発明のRAID技術を適用するにあたって、両者異なる種類又は異なる容量のものであってもよい。
これら第1HDD19及び第2HDD20は、RAIDコントローラ15やRAIDドライバ32からは2つの物理ディスクとして認識されるが、RAIDドライバ32より上層のOS30やアプリケーション31からは、物理ディスクとして認識されない。即ち、OS30やアプリケーション31からは、図4に示すように第1HDD及び第2HDD内の領域1001、領域1002、領域1003及び領域1004がそれぞれ、あたかも物理ディスクとして、即ち仮想ディスクとして認識される。以下、これらの領域をそれぞれ第1仮想ディスク1001、第2仮想ディスク1002、第3仮想ディスク1003及び第4仮想ディスク1004と称す。なお、図4中の縦軸の数値はLBA方式のセクタアドレスを示す。
上記RAIDコントローラ15及びRAIDドライバ32は、第1仮想ディスク1001に割り当てられた領域をRAID0モード専用とし、第2仮想ディスク1002に割り当てられた領域をRAID1モード専用とし、第3仮想ディスク1003及び第4仮想ディスク1004に割り当てられた領域をシングルモード専用として取り扱う。なお、図4の各ディスクの空白領域は本実施例では使用しないが、この領域もシングルモード専用の仮想ディスクとして割り当てるようにしてもよい。
図5(A)は、上記第1HDD19に記録されているデータの一部を示す図である。この第1HDD19には、先頭セクタにあるMBRの直後に、上記第1〜第4仮想ディスク1001〜1004を実現するために必要な情報のデータ集合体である第1仮想ディスクコントロールブロック41、第2仮想ディスクコントロールブロック42、第3仮想ディスクコントロールブロック43及び第4仮想ディスクコントロールブロック44が順に記録されている。
図5(B)は、第1仮想ディスクコントロールブロック41内のデータ構成を示す図である。なお、他のコントロールブロック42〜44も同一のデータ構成である。また、同図縦軸は相対表記である。
第1仮想ディスクコントロールブロック41内のデータ構成には、マイナー番号情報50、ディスク制御モード情報51、使用物理ディスク情報52、総セクタ数情報53及びLBAオフセット情報54の各データを含む。これら各情報は、RAIDドライバ32がカーネルに組み込まれる際に、第1HDD19から図6に示すようにDRAM13の所定領域に格納され、随時RAIDドライバ32が各情報を利用できる。なお、この格納の詳細は<10>で述べる。本発明では、第1仮想ディスクコントロールブロック41に通常の仮想ディスクを実現するために必要な情報、即ちマイナー番号情報50、総セクタ数情報53及びLBAオフセット情報54に加え、ディスク制御モード情報51と使用物理ディスク情報52とを新たに含ませている。
マイナー番号情報50は、仮想ディスク識別情報である。なお、マイナー番号50の1〜4番はそれぞれ第1〜4仮想ディスクに対応する。
ディスク制御モード情報51は、RAIDコントローラ15がディスク制御可能な、RAID0モード、RAID1モード又はシングルモードのいずれかを指定するための情報である。
使用物理ディスク情報52は、仮想ディスクに対応して上記ディスク制御モードにより実際に使用(アクセス)する物理ディスク(第1HDD19又は/及び第2HDD20)を指定するための情報である。本実施例では、この情報としてチャンネル番号を使用する。HDD19のチャンネル番号は「Ch1」であり、HDD20のチャンネル番号は「Ch2」である。本実施例では、第1及び第2仮想ディスク1001〜1002は、両者Ch1及びCh2を使用し、また第3仮想ディスクはCh2を、第4仮想ディスクはCh1をそれぞれ使用する。
総セクタ数情報53は、仮想ディスクの総セクタ数の情報である。
LBAオフセット情報54は、仮想ディスクのLBAアドレスと物理ディスクのLBAアドレスとの差を表した情報である。
図2に戻って、NIC16は、ネットワーク上のホストコンピュータに結合されて、このコンピュータから、第1仮想ディスク1001、第2仮想ディスク1002、第3仮想ディスク1003又は第4仮想ディスク1004に対するディスクアクセス要求を受け付け、これをカーネルに渡す。
印刷部17は、プリントエンジン並びに用紙の給紙部、搬送部及び排紙部を備え、供給されるビットマップデータに基づいてプリントエンジンの感光ドラムに静電潜像を形成し、これをトナーで現像し、用紙に転写し定着させた後に排紙する。
その他の装置18は、例えばスキャナ、ファクシミリ及び操作パネルを含む。
<2>主要部構成
図1は、本発明の実施例1に係わる画像形成装置10の主要部構成を示す機能ブロック図である。
本発明を実現するために、画像形成装置10には、プロセス99と、ファイルシステム100と、DRAM13と、RAIDドライバ32と、RAIDコントローラ15と、HDD19及び20と、を主に備えている。
プロセス99は、アプリケーション31の処理又はNIC16を介してネットワーク上のコンピュータから受け付けた要求の処理であり、MPU11によって実行される。
ファイルシステム100は、プロセス99からのディスクアクセス要求に応じて、RAIDドライバ32を制御する後述のディスクアクセス要求を、RAIDドライバ32宛に発行する。このファイルシステム100は、第1デバイスファイル101、第2デバイスファイル102、第3デバイスファイル103及び第4デバイスファイル104をデータとして含む構成であり、カーネルに登録されている。
第1〜第4デバイスファイル101〜104は、それぞれ第1〜第4仮想ディスク1001〜1004に対応し、ファイルシステム100が第1〜第4仮想ディスク1001〜1004にディスクアクセスするために参照するものである。プロセス99がディスクアクセス要求をするときにデバイスファイル101〜104のいずれかを引数としてファイルシステム100に渡し、ファイルシステム100が引数により指定されたデバイスファイル101乃至104を参照することによってカーネルに組み込まれたRAIDドライバ32を起動し、HDD19又は/及びHDD20上の仮想ディスクへのアクセスが実現される。
ここで、これらデバイスファイル101〜104には、下層のRAIDドライバ32を特定するために上記メジャー番号及び下層の仮想ディスクを特定するために上記マイナー番号50が登録されている。具体的に、第1〜第4デバイスファイル101〜104には、これらファイルが同一のRAIDドライバ32を呼び出せるように、RAIDドライバ32のメジャー番号「300」が登録されている。また、第1デバイスファイル101はマイナー番号「1」、第2デバイスファイル102はマイナー番号「2」、第3デバイスファイル103はマイナー番号「3」、第4デバイスファイル104はマイナー番号「4」がそれぞれ登録されている。
上述では、RAIDドライバ32はファイルシステム100からのディスクアクセス要求に応じて、RAIDコントローラ15を制御するものと説明したが、実際にはRAIDドライバ32が該ディスクアクセス要求と、それに応じた第1仮想ディスクコントロールブロック41乃至第4仮想ディスクコントロールブロック44(図6参照)のいずれか1つのコントロールブロックと、に基づいてディスクリプタ300aをDRAM13上に生成し、ディスクアクセス開始指示をRAIDコントローラ15に送信するとともに、DRAM13上のディスクリプタ300aの先頭アドレス情報を送信する。以下に、ファイルシステム100からのディスクアクセス要求と、RAIDドライバ32が生成するディスクリプタ300aと、を順に説明する。
図7(A)は、RAIDドライバ32が受け取るディスクアクセス要求のフォーマットを示す図である。この要求200aには、マイナー番号情報50、開始アドレス情報201、メモリバッファアドレス情報202、データサイズ情報203及びコマンド名情報204が含まれる。
マイナー番号情報50は、どの仮想ディスクに対するディスクアクセス要求を受け取ったかによって異なり、ディスクアクセス対象の仮想ディスクに対応するデバイスファイル101乃至104に登録されたマイナー番号が設定される。
開始アドレス情報201は、仮想ディスクに対するディスクアクセスの開始セクタアドレスを示し、当該開始アドレスは16進数(0x)の数値で表されている。同様に、以下のアドレスや数値も全て16進数の数値で表されている。
メモリバッファアドレス情報202は、ディスクアクセス対象のデータの一時的な格納元又は格納先のメモリ上の先頭アドレスを示す。
データサイズ情報203は、ディスクアクセス対象のデータのサイズ(バイト数)を示す。
コマンド名情報204は、そのディスクアクセス要求が、データ読み出し要求であるのか、データ書き込み要求であるのかといった、処理に対応したコマンド名が設定されている。
図8(A)は、RAIDドライバ32が生成するディスクリプタ300aのフォーマットを示す図である。このディスクリプタ300aには、メモリバッファアドレス情報202、コマンド名情報204、ディスク制御モード情報51、使用物理ディスク情報52、LBAアドレス情報301及びセクタ数情報302が含まれる。
ディスクリプタ300a内のメモリバッファアドレス情報202及びコマンド名情報204は、ディスクアクセス要求200a(図7(A)参照)から取り出されたものである。またディスク制御モード情報51及び使用物理ディスク情報52は、ディスクアクセス要求200aに対応するコントロールブロック41乃至44(図6参照)から取り出されたものである。
LBAアドレス情報301は、ディスクアクセス要求200aに含まれる開始アドレス情報201と、ディスクアクセス要求200aのマイナー番号情報50により特定されるコントロールブロック41乃至44に含まれるLBAオフセット情報54と、に基づいて以下のように決定されたものである。
LBAアドレス=開始アドレス+LBAオフセット
セクタ数情報302は、ディスクアクセスを行うセクタ数の情報であり、ディスクアクセス要求200aに含まれるデータサイズ情報203と、ディスクアクセス要求200aのマイナー番号情報50により特定されるコントロールブロック41乃至44に含まれるディスク制御モード情報51に応じた1セクタ当たりのデータサイズと、に基づいて以下のように決定されたものである。
セクタ数=[データサイズ/1セクタ当たりのデータサイズ]
なお、1セクタ当たりのデータサイズは、ディスク制御モードがRAID0モードの場合は1024B(0x400)であり、RAID1モードの場合は512B(0x200)であり、シングルモードの場合は512B(0x200)である。
図1に戻って、RAIDコントローラ15は、上述した機能の他にDMA(Direct Memory Access)転送機能をさらに有し、RAIDドライバ32からディスクアクセス開始指示に応答し、当該DMA転送機能を使用し、受信したディスクリプタ300aの先頭アドレス情報に基づきディスクリプタ300aをDRAM13から取得する(自己が備える不図示のレジスタに格納する)。次に、RAIDコントローラ15は、この取得したディスクリプタ300aに従って、第1HDD19又は/及び第2HDD20のディスク制御を行う。
以上のように構成された画像形成装置10主要部の各動作の詳細フローを以下に説明する。
<3>RAID0モード用の第1仮想ディスクに対する主要部の書き込み動作
RAID0モード用の第1仮想ディスク1001に対する書き込み動作の流れを説明する。この動作でストライピングによる書き込みが実現される。
図9は、RAID0モード用の第1仮想ディスク1001に対して8MBのデータを書き込む動作の流れを示す図である。以下、括弧内は図9中のステップ識別符号である。
(S10)プロセス99は、MPU11に対し、第1デバイスファイル101を引数としてデータ書き込みコマンドをファイルシステム100宛に発行させる(ファイルシステム100のデータ書き込み関数をコールする)。即ち、第1仮想ディスク1001に対する書き込み要求を発行させる。
(S11)ファイルシステム100はこれに応答して、MPU11に対し、書き込み対象である8MBのデータを1024B単位でDRAM13上のバッファ領域に、該バッファ領域が空く毎にブロック転送させる。
(S12)ファイルシステム100は、MPU11に対し、引数として渡された第1デバイスファイル101を参照して得られるマイナー番号情報50「1」と、仮想ディスクに対するディスクアクセスの開始アドレス情報201と、このバッファ領域の書き込み対象であるデータの先頭アドレスを示すメモリバッファアドレス情報202と、該データのサイズを示すデータサイズ情報203と、データ書き込みコマンドに対応したコマンド名情報204と、を含む図7(B)に示すような書き込み要求200bを生成させる。次に、MPU11に対し、第1デバイスファイル101を参照させ、これに登録されたメジャー番号「300」を取得し、このメジャー番号に対応するRAIDドライバ32宛に、生成した書き込み要求200bを供与させる。
(S13)RAIDドライバ32は、上記書き込み要求200bを受け取ると、MPU11に対し、ディスクアクセス関数35を呼び出させる。ディスクアクセス関数35は、これに応答して、MPU11に対し、この要求200bと、当該要求200bに含まれるマイナー番号「1」により特定される、DRAM13上に格納された第1仮想ディスクコントロールブロック41と、に基づき、図8(B)に示すようなディスクリプタ300bをDRAM13上に生成させる。
この際、ディスクアクセス関数35は、MPU11に対して、ディスクリプタ300b内の各情報を上述したように決定させるが、特にLBAアドレス情報301(0x3000)は、開始アドレス情報201(0x1000)にLBAオフセット情報54(0x2000)を加算させることにより決定される。また、セクタ数情報302(0x2000)は、データサイズ情報203(0x800000=8MB)を1セクタ当たりのデータサイズ(0x400=1024B)で除算させることにより決定される。
(S14)ディスクアクセス関数35は、MPU11に対し、書き込み開始要求とDRAM13上のディスクリプタ300bの先頭アドレス情報とをRAIDコントローラ15宛に送信させる。
(S15)RAIDコントローラ15は、書き込み開始要求に応答して、受信した先頭アドレス情報に基づきDRAM13からディスクリプタ300bをDMA転送により取得する。
(S16、S17)RAIDコントローラ15は、取得したディスクリプタ300bに基づき、書き込みデータを、RAID0モードにより第1HDD19及び第2HDD20に同時に書き込む。
具体的には、RAIDコントローラ15は、取得したディスクリプタ300bのコマンド名情報204により書き込み制御を、メモリバッファアドレス情報202によりバッファ領域上に格納されている書き込み対象のデータの先頭アドレス(0x10000000)を、ディスク制御モード情報51によりRAID0モードによるディスク制御を、使用物理ディスク情報52によりディスク制御を行う物理ディスク(第1HDD19及び第2HDD20)を、LBAアドレス情報301により使用する物理ディスク内の記憶領域において書き込みを開始する先頭セクタアドレス(0x3000)を、セクタ数情報302により書き込み対象のデータサイズ(0x2000)を、それぞれ決定する。RAIDコントローラ15は、これらの決定事項に基づき、バッファ領域に格納された書き込み対象のデータを1024バイト毎にDMA転送で取得し、これを2分割して第1HDD19のLBAアドレス0x3000〜0x5000の領域及び第2HDD20のLBAアドレス0x3000〜0x5000の領域内の空き領域にそれぞれ512バイト書き込む。
<4>RAID0モード用の第1仮想ディスクに対する主要部の読み出し動作
RAID0モード用の第1仮想ディスク1001に対する読み出し動作の流れを説明する。この動作でストライピングにより第1仮想ディスク1001に格納されたデータの読み出しが実現される。
図10は、RAID0モード用の第1仮想ディスク1001から8MBのデータを読み出す動作の流れを示す図である。以下、括弧内は図10中のステップ識別符号である。
(S20)プロセス99は、MPU11に対し、第1デバイスファイル101を引数としてデータ読み出しコマンドをファイルシステム100宛に発行させる(ファイルシステム100のデータ読み出し関数をコールする)。即ち、第1仮想ディスク1001に対する読み出し要求を発行させる。
(S21)ファイルシステム100はこれに応答して、MPU11に対し、読み出し対象であるデータを格納させるため、DRAM13上にバッファ領域を確保させる。
(S22)ファイルシステム100は、MPU11に対し、引数として渡された第1デバイスファイル101を参照して得られるマイナー番号情報50「1」、仮想ディスクに対するディスクアクセスの開始アドレス情報201と、上記確保したバッファ領域の先頭アドレスを示すメモリバッファアドレス情報202と、読み出し対象であるデータのサイズを示すデータサイズ情報203と、データ読み出しコマンドに対応したコマンド名情報204と、を含む図7(C)に示すような読み出し要求200cを生成させる。次に、MPU11に対し、第1デバイスファイル101を参照させ、これに登録されたメジャー番号「300」を取得し、このメジャー番号に対応するRAIDドライバ32宛に、生成した読み出し要求200cを供与させる。
(S23)RAIDドライバ32は、上記読み出し要求200cを受け取ると、MPU11に対し、ディスクアクセス関数35を呼び出させる。ディスクアクセス関数35は、これに応答して、MPU11に対し、この要求200cと、当該要求200cに含まれるマイナー番号「1」により特定される、DRAM13上に格納された第1仮想ディスクコントロールブロック41と、に基づき、図8(C)に示すようなディスクリプタ300cをDRAM13上に生成させる。
この際、ディスクアクセス関数35は、MPU11に対して、ディスクリプタ300c内の各情報を上述したように決定させるが、特にLBAアドレス情報301(0x3000)は、開始アドレス情報201(0x1000)にLBAオフセット情報54(0x2000)を加算させることにより決定される。また、ディスクリプタ300c内のセクタ数情報302(0x2000)は、データサイズ情報203(0x800000=8MB)を1セクタ当たりのデータサイズ(0x400=1024B)で除算させることにより決定される。
(S24)ディスクアクセス関数35は、MPU11に対し、読み出し開始要求とDRAM13上のディスクリプタ300cの先頭アドレス情報とをRAIDコントローラ15宛に送信させる。
(S25)RAIDコントローラ15は、読み出し開始要求に応答して、受信した先頭アドレス情報に基づきDRAM13からディスクリプタ300cをDMA転送により取得する。
(S26、S27、S28)RAIDコントローラ15は、取得したディスクリプタ300cに基づき、第1仮想ディスク1001に格納されている読み出し対象のデータを、DRAM13のバッファ領域に格納し、ファイルシステム100はこのバッファ領域に格納されたデータを読み出す。
具体的には、RAIDコントローラ15は、取得したディスクリプタ300cのコマンド名情報204により読み出し制御を、メモリバッファアドレス情報202によりに格納先であるバッファ領域の先頭アドレス(0x10000000)を、ディスク制御モード情報51によりRAID0モードによるディスク制御を、使用物理ディスク情報52によりディスク制御を行う物理ディスク(第1HDD19及び第2HDD20)を、LBAアドレス情報301により使用する物理ディスク内の記憶領域において読み出しを開始する先頭セクタアドレス(0x3000)を、セクタ数情報302により読み出し対象のデータサイズ(0x2000)を、それぞれ決定する。RAIDコントローラ15は、これらの決定事項に基づき、第1HDD19のLBAアドレス0x3000〜0x5000の領域及び第2HDD20のLBAアドレス0x3000〜0x5000の領域に格納されているデータを、512B単位でそれぞれ読み出し、1024Bにまとめてメモリバッファアドレス情報202により指定されるバッファ領域に格納させる。
<5>RAID1モード用の第2仮想ディスクに対する主要部の書き込み動作
RAID1モード用の第2仮想ディスク1002に対する書き込み動作の流れを説明する。この動作でミラーリングによる書き込みが実現される。
図11は、RAID1モード用の第2仮想ディスク1002に対して4MBのデータを書き込む動作の流れを示す図である。以下、括弧内は図11中のステップ識別符号である。
(S30)プロセス99は、MPU11に対し、第2デバイスファイル102を引数としてデータ書き込みコマンドをファイルシステム100宛に発行させる(ファイルシステム100のデータ書き込み関数をコールする)。即ち、第2仮想ディスク1002に対する書き込み要求を発行させる。
(S31)ファイルシステム100はこれに応答して、MPU11に対し、書き込み対象である4MBのデータを512B単位でDRAM13上のバッファ領域に、該バッファ領域が空く毎にブロック転送させる。
(S32)ファイルシステム100は、MPU11に対し、引数として渡された第2デバイスファイル102を参照して得られるマイナー番号情報50「2」と、仮想ディスクに対するディスクアクセスの開始アドレス情報201と、このバッファ領域の書き込み対象であるデータの先頭アドレスを示すメモリバッファアドレス情報202と、該データのサイズを示すデータサイズ情報203と、データ書き込みコマンドに対応したコマンド名情報204と、を含む図7(D)に示すような書き込み要求200dを生成させる。次に、MPU11に対し、第2デバイスファイル102を参照させ、これに登録されたメジャー番号「300」を取得し、このメジャー番号に対応するRAIDドライバ32宛に、生成した書き込み要求200dを供与させる。
(S33)RAIDドライバ32は、上記書き込み要求200dを受け取ると、MPU11に対し、ディスクアクセス関数35を呼び出させる。ディスクアクセス関数35は、これに応答して、MPU11に対し、この要求200dと、当該要求200dに含まれるマイナー番号「2」により特定される、DRAM13上に格納された第2仮想ディスクコントロールブロック42と、に基づき、図8(D)に示すようなディスクリプタ300dをDRAM13上に生成させる。
この際、ディスクアクセス関数35は、MPU11に対して、ディスクリプタ300d内の各情報を上述したように決定させるが、特にLBAアドレス情報301(0x9000)は、開始アドレス情報201(0x1000)にLBAオフセット情報54(0x8000)を加算させることにより決定される。また、ディスクリプタ300d内のセクタ数情報302(0x2000)は、データサイズ情報203(0x400000=4MB)を1セクタ当たりのデータサイズ(0x200=512B)で除算させることにより決定される。
(S34)ディスクアクセス関数35は、MPU11に対し、書き込み開始要求とDRAM13上のディスクリプタ300dの先頭アドレス情報とをRAIDコントローラ15宛に送信させる。
(S35)RAIDコントローラ15は、書き込み開始要求に応答して、受信した先頭アドレス情報に基づきDRAM13からディスクリプタ300dをDMA転送により取得する。
(S36、S37)RAIDコントローラ15は、取得したディスクリプタ300dに基づき、書き込みデータを、RAID1モードにより第1HDD19及び第2HDD20の両方に同時に書き込む。
具体的には、RAIDコントローラ15は、取得したディスクリプタ300dのコマンド名情報204により書き込み制御を、メモリバッファアドレス情報202によりバッファ領域上に格納されている書き込み対象のデータの先頭アドレス(0x10000000)を、ディスク制御モード情報51によりRAID1モードによるディスク制御を、使用物理ディスク情報52によりディスク制御を行う物理ディスク(第1HDD19及び第2HDD20)を、LBAアドレス情報301により使用する物理ディスク内の記憶領域において書き込みを開始する先頭セクタアドレス(0x9000)を、セクタ数情報302により書き込み対象のデータサイズ(0x2000)を、それぞれ決定する。RAIDコントローラ15は、これらの決定事項に基づき、バッファ領域に格納された書き込み対象のデータを512バイト毎にDMA転送により取得し、これを第1HDD19のLBAアドレス0x9000〜0xb000の領域及び第2HDD20のLBAアドレス0x9000〜0xb000の領域内の両方の空き領域に書き込む。
<6>RAID1モード用の第2仮想ディスクに対する主要部の読み出し動作
RAID1モード用の第2仮想ディスク1002に対する読み出し動作の流れを説明する。この読み出し動作は、シングルモードによる読み出しの場合と同一である。この動作でミラーリングにより第1仮想ディスク1001に格納されたデータの読み出しが実現される。
図12は、RAID1モード用の第2仮想ディスク1002から4MBのデータを読み出す動作の流れを示す図である。以下、括弧内は図12中のステップ識別符号である。
(S40)プロセス99は、MPU11に対し、第2デバイスファイル102を引数としてデータ読み出しコマンドをファイルシステム100宛に発行させる(ファイルシステム100のデータ読み出し関数をコールする)。即ち、第2仮想ディスク1002に対する読み出し要求を発行させる。
(S41)ファイルシステム100はこれに応答して、MPU11に対し、読み出し対象であるデータを格納させるため、DRAM13上にバッファ領域を確保させる。
(S42)ファイルシステム100は、MPU11に対し、引数として渡された第2デバイスファイル102を参照して得られるマイナー番号情報50「2」、仮想ディスクに対するディスクアクセスの開始アドレス情報201と、上記確保したバッファ領域の先頭アドレスを示すメモリバッファアドレス情報202と、読み出し対象であるデータのサイズを示すデータサイズ情報203と、データ読み出しコマンドに対応したコマンド名情報204と、を含む図7(E)に示すような読み出し要求200eを生成させる。次に、MPU11に対し、第2デバイスファイル102を参照させ、これに登録されたメジャー番号「300」を取得し、このメジャー番号に対応するRAIDドライバ32宛に、生成した読み出し要求200eを供与させる。
(S43)RAIDドライバ32は、上記読み出し要求200eを受け取ると、MPU11に対し、ディスクアクセス関数35を呼び出させる。ディスクアクセス関数35は、これに応答して、MPU11に対し、この要求200eと、当該要求200eに含まれるマイナー番号「2」により特定される、DRAM13上に格納された第2仮想ディスクコントロールブロック42と、に基づき、図8(E)に示すようなディスクリプタ300eをDRAM13上に生成させる。なお、第2コントロールブロック42から取得する使用物理ディスク情報52は第1HDD19及び第2HDD20を使用することを示しているが、ミラーリングの場合第1HDD19及び第2HDD20にはそれぞれ同一データが格納されており、両方から読み出す必要がないことから、本実施例では、第1HDD19のみから読み出させるように、RAIDドライバ32が生成するディスクリプタ300e内の使用物理ディスク情報52を変更している。
この際、ディスクアクセス関数35は、MPU11に対して、ディスクリプタ300e内の各情報を上述したように決定させるが、特にLBAアドレス情報301(0x9000)は、開始アドレス情報201(0x1000)にLBAオフセット情報54(0x8000)を加算させることにより決定される。また、ディスクリプタ300e内のセクタ数情報302(0x2000)は、データサイズ情報203(0x400000=4MB)を1セクタ当たりのデータサイズ(0x200=512B)で除算させることにより決定される。
(S44)ディスクアクセス関数35は、MPU11に対し、読み出し開始要求とDRAM13上のディスクリプタ300eの先頭アドレス情報とをRAIDコントローラ15宛に送信させる。
(S45)RAIDコントローラ15は、読み出し開始要求に応答して、受信した先頭アドレス情報に基づきDRAM13からディスクリプタ300eをDMA転送により取得する。
(S46、S47、S48)RAIDコントローラ15は、取得したディスクリプタ300eに基づき、第2仮想ディスク1002に格納されている読み出し対象のデータを、DRAM13のバッファ領域に格納し、ファイルシステム100はこのバッファ領域に格納されたデータを読み出す。
具体的には、RAIDコントローラ15は、取得したディスクリプタ300eのコマンド名情報204により読み出し制御を、メモリバッファアドレス情報202によりに格納先であるバッファ領域の先頭アドレス(0x10000000)を、ディスク制御モード情報51によりRAID1モードによるディスク制御を、使用物理ディスク情報52によりディスク制御を行う物理ディスク(第1HDD19)を、LBAアドレス情報301により使用する物理ディスク内の記憶領域において読み出しを開始する先頭セクタアドレス(0x9000)を、セクタ数情報302により読み出し対象のデータサイズ(0x2000)を、それぞれ決定する。RAIDコントローラ15は、これらの決定事項に基づき、第1HDD19のLBAアドレス0x9000〜0xb000の領域に格納されているデータを512B単位で読み出し、メモリバッファアドレス情報202により指定されるバッファ領域に格納させる。
<7>シングルモード用の第3仮想ディスクに対する主要部の書き込み動作
シングルモード用の第3仮想ディスク1003に対する書き込み動作の流れを説明する。この動作で高速処理や耐障害性を要求しない通常書き込みが実現される。
図13は、シングルモード用の第3仮想ディスク1003に対して4MBのデータを書き込む動作の流れを示す図である。以下、括弧内は図13中のステップ識別符号である。
(S50)プロセス99は、MPU11に対し、第3デバイスファイル103を引数としてデータ書き込みコマンドをファイルシステム100宛に発行させる(ファイルシステム100のデータ書き込み関数をコールする)。即ち、第3仮想ディスク1003に対する書き込み要求を発行させる。
(S51)ファイルシステム100はこれに応答して、MPU11に対し、書き込み対象である4MBのデータを512B単位でDRAM13上のバッファ領域に、該バッファ領域が空く毎にブロック転送させる。
(S52)ファイルシステム100は、MPU11に対し、引数として渡された第3デバイスファイル103を参照して得られるマイナー番号情報50「3」と、第3仮想ディスク1003に対するディスクアクセスの開始アドレス情報201と、このバッファ領域の書き込み対象であるデータの先頭アドレスを示すメモリバッファアドレス情報202と、該データのサイズを示すデータサイズ情報203と、データ書き込みコマンドに対応したコマンド名情報204と、を含む図7(F)に示すような書き込み要求200fを生成させる。次に、MPU11に対し、第3デバイスファイル103を参照させ、これに登録されたメジャー番号「300」を取得し、このメジャー番号に対応するRAIDドライバ32宛に、生成した書き込み要求200fを供与させる。
(S53)RAIDドライバ32は、上記書き込み要求200fを受け取ると、MPU11に対し、ディスクアクセス関数35を呼び出させる。ディスクアクセス関数35は、これに応答して、MPU11に対し、この要求200fと、当該要求200fに含まれるマイナー番号「3」により特定される、DRAM13上に格納された第3仮想ディスクコントロールブロック43と、に基づき、図8(F)に示すようなディスクリプタ300fをDRAM13上に生成させる。
この際、ディスクアクセス関数35は、MPU11に対して、ディスクリプタ300f内の各情報を上述したように決定させるが、特にLBAアドレス情報301(0x6000)は、開始アドレス情報201(0x1000)にLBAオフセット情報54(0x5000)を加算させることにより決定される。また、ディスクリプタ300f内のセクタ数情報302(0x2000)は、データサイズ情報203(0x400000=4MB)を1セクタ当たりのデータサイズ(0x200=512B)で除算させることにより決定される。
(S54)ディスクアクセス関数35は、MPU11に対し、書き込み開始要求とDRAM13上のディスクリプタ300fの先頭アドレス情報とをRAIDコントローラ15宛に送信させる。
(S55)RAIDコントローラ15は、書き込み開始要求に応答して、受信した先頭アドレス情報に基づきDRAM13からディスクリプタ300fをDMA転送により取得する。
(S56、S57)RAIDコントローラ15は、取得したディスクリプタ300fに基づき、書き込みデータをシングルモードにより第2HDD20に書き込む。
具体的には、RAIDコントローラ15は、取得したディスクリプタ300fのコマンド名情報204により書き込み制御を、メモリバッファアドレス情報202によりバッファ領域上に格納されている書き込み対象のデータの先頭アドレス(0x10000000)を、ディスク制御モード情報51によりシングルモードによるディスク制御を、使用物理ディスク情報52によりディスク制御を行う物理ディスク(第2HDD20)を、LBAアドレス情報301により使用する物理ディスク内の記憶領域において書き込みを開始する先頭セクタアドレス(0x6000)を、セクタ数情報302により書き込み対象のデータサイズ(0x2000)を、それぞれ決定する。RAIDコントローラ15は、これらの決定事項に基づき、バッファ領域に格納された書き込み対象のデータを512バイト毎にDMA転送で取得し、これを第2HDD20のLBAアドレス0x6000〜0x8000の領域内の空き領域に書き込む。
<8>シングルモード用の第3仮想ディスクに対する主要部の読み出し動作
シングルモード用の第3仮想ディスク1003に対する主要部の読み出し動作は、第2仮想ディスク1002に対する読み出し動作と同一であるので詳細は省略する。
また、シングルモード用の第4仮想ディスク1004に対する主要部の書き込み動作は、第3仮想ディスク1003に対する書き込み動作と同一であり、シングルモード用の第4仮想ディスク1004に対する主要部の読み出し動作も第2仮想ディスク1002に対する読み出し動作と同一であるので、それぞれの詳細は省略する。
<9>仮想ディスクとHDDの領域との対応関係
図14は、第1HDD19の領域が仮想ディスク毎に分割されている様子を概略的に示す図である。図4等では、説明のため各HDDが仮想ディスク毎に縦方向に分割されているように示されているが、実際には、第1HDD19及び第2HDD20内部のディスクは円盤状であって、図14に示されるように、円盤の直径方向に領域が分割される。
ここで、第1HDD19及び第2HDD20を含む一般的なHDDは、内周から外周に向かって記録密度が高くなることから、外周は内周よりも転送速度が速いことが知られている。
よって、本実施例では、転送速度が要求される、RAID0モード用の第1仮想ディスク1001の領域を外周側に割当て、転送速度が要求されないRAID1モード用の第2仮想ディスク1002の領域を内周側に割り当てている。この割当ては、上述したように各仮想ディスクコントロールブロック41〜44内のLBAオフセット情報54と総セクタ数53に基づいてなされる。なお、LBAアドレスは、外周側から内周側に向かって順番に割り当てられているため、LBAアドレスが若い順に転送速度が速い。即ち、LBAオフセット情報54が示す数値が低いほどその仮想ディスクの転送速度は速くなる。
このようにすることで、RAID0モード用の第1仮想ディスク1001の転送速度が向上し、RAID0の効果を高めることができる。
<10>本発明に係わる仮想ディスクの登録処理
図15は、本発明に係わる仮想ディスクの登録処理のフローチャートを示した図である。以下、このフローチャートに従って、仮想ディスクの登録処理を説明する。この処理は、カーネル起動時に起動スクリプト(例えば/etc/rc.d/rc.local)が読み込まれて実行される。
(S1000)MPU11は、本発明に係わるRAIDドライバ32をカーネルに登録するために、モジュール登録コマンド(例えばinsmodコマンド)を実行する。
(S1001)MPU11は、上記モジュール登録コマンドに従って、図3に示すようなRAIDドライバ32内の初期化関数36を呼び出す。次にMPU11は、初期化関数36に従って、各仮想ディスク1001〜1004を実現するために必要な情報である各仮想ディスクコントロールブロック41〜44をDRAM13に格納させるために、複数のデータ構造体を当該DRAM13上に展開する。これら構造体の型は、図3に示す初期化関数36内の構造体宣言部5000に定義されている。
(S1002)MPU11は、初期化関数36に従って、第1HDD19に予め格納されている各仮想ディスクコントロールブロック41〜44を取得し、各コントロールブロック41〜44内の各情報50〜54(図5(B)参照)を、各々に対応する構造体の要素が確保するメモリ領域に格納する。この際、第1HDD19に対応するデバイスドライバ、即ちRAIDドライバ32はカーネルに未だ登録されていないことから、MPU11は、第1HDD19の物理アドレスを直接指定することにより該コントロールブロック41〜44を取得する。
(S1003)MPU11は、初期化関数36に従って、RAIDドライバ32をカーネルに登録する。
(S1004)MPU11は、モジュール登録コマンドの処理を終了する。
(S1005〜1009)MPU11は、マウントコマンド(例えばmountコマンド)を複数回実行することにより、各仮想ディスクに対応するように予め作成されている第1〜第4デバイスファイル101〜104をファイルシステム100にマウントする。
上記ステップを通じて、第1〜第4仮想ディスク1001〜1004はカーネルに認識(登録)される。なお、上記ステップS1001〜1003の処理は、初期化関数36に従って実行される場合を説明したが、初期化関数36から呼び出される他の関数によって実行される場合もある。
<11>効果
本実施例1では、以上の構成により、仮想ディスクを実現するのに必要なLBAオフセット情報54などの通常の情報に加え、RAIDコントローラ15に対して仮想ディスクのディスク制御モードを指定するディスク制御モード情報51と、該ディスク制御モードに使用されるHDDを指定する使用物理ディスク情報52を含むコントロールブロックを4台の仮想ディスク毎に備え、RAIDドライバ32が、MPU11に対し、アクセス要求(例えば200b)と、アクセス対象の仮想ディスク1001乃至1004に対応するコントロールブロック(例えば第1仮想ディスクコントロールブロック41)と、に基づき、該ディスク制御モード情報51と該使用物理ディスク情報52とを含むディスクリプタ(例えば300b)を生成し、これをディスクアレイ制御装置に伝達するので、2台のHDD19及び20で、RAIDを含む3種類以上のディスク制御モードに対応した記憶領域を共存させることができるという効果を奏する。
また、以上の構成を備えるのがネットワークに結合されるNIC16を備えた画像形成装置10であり、デバイスドライバ32は、該NIC16を介してディスクアクセス要求を受信するので、近年ネットワークに結合された画像形成装置に高速処理や耐障害性の向上が必要であるという要望に即座に対応できるという効果を奏する。
さらに、一般的な補助記憶装置の円盤状ディスクにおいて外周側に向かってアクセス速度が速くなるという観点から、RAID0モードに対応する第1仮想ディスクコントロールブロック41内のLBAオフセット情報54の示す値がRAID1モードに対応する第2仮想ディスクコントロールブロック42内のオフセット情報54の示す値よりも、該第1仮想ディスクコントロールブロック41に対応する第1仮想ディスク1001が該第2仮想ディスクコントロールブロック42に対応する第2仮想ディスク1002より2台の第1HDD19と第2HDD20両者の円盤状ディスクの外周側に位置するように、小さく設定されているので、アクセス速度が重視されるRAID0の効果を高めることができるという効果を奏する。
<12>変形例
なお、上述した本発明の実施例は、本発明の説明のための例示であり、本発明の範囲をそれらの実施例にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。以下に、その態様の一部を例示する。
本実施例では、本発明に係わる主要部構成を複合機10が備える場合を説明したが、ネットワークサーバやパーソナルコンピュータなどの他の情報処理装置が備える場合であってもよい。
また、本発明を説明するために、本実施例ではLinuxを前提として記載したが、本発明は他のOS、例えばWindows(登録商標)にも適用が可能である。
さらに、HDD2台を用いて各ディスク制御モードに対応する仮想ディスクを4台作成する場合を説明したが、第1HDD19及び第2HDD20の容量、OS30の制限(例えばマウント数の制限)並びにRAIDコントローラ15のディスク制御モードの機能制限が許す限り、例えばRAID2〜6のような様々なディスク制御モードに対応した無数台の仮想ディスクを作成し、2台のHDDで複数種以上のRAIDモードに対応する各記憶領域を共存させることもできる。例えば、2台のHDDでRAID0〜6及びシングルモードに対応する各記憶領域を共存させることも可能である。
さらにまた、画像形成装置10の起動前の第1〜第4コントロールブロック41〜44の格納先は第1HDD19に限定されず、例えばOS30やアプリ31が格納されているEEPROM14や第2HDD20などであってもよい。
一方でOS30、アプリ31及びRAIDドライバ32などのソフトウェアが第1HDD19又は第2HDD20に格納されていてもよい。
また、RAIDドライバ32は、MPU11に対し、DMA転送方式を用いてディスクリプタを間接的にRAIDコントローラ15に送信する場合(MPU11は上記ディスクリプタの先頭アドレスを送信し、ディスクリプタ自体は送信しない)に限られず、例えばMPU11に対し、ディスクリプタ自体を直接的に送信させるようにしてもよい。
本発明の実施例1に係わる画像形成装置の主要部構成を示す機能ブロック図である。 本発明の実施例1に係わる複合機のハードウェア構成を示す概略ブロック図である。 本発明の実施例1に係わるRAIDドライバのソースファイルの一部を示した図である。 第1HDD及び第2HDD両者及び片方の各記憶領域と複数の仮想ディスクとの対応関係を示した図である。 (A)は、上記第1HDDに記録されているデータの一部を示す図である。(B)は、第1仮想ディスクコントロールブロック内のデータ構成を示す図である。 各コントロールブロックが格納された場合のDRAMのメモリマップを示す図である。 (A)〜(F)RAIDドライバが受け取る複数種のディスクアクセス要求の説明図である。 (A)〜(F)RAIDドライバが生成する複数種のディスクリプタの説明図である。 RAID0モード用の第1仮想ディスクに対して8MBのデータを書き込む動作の流れを示す図である。 RAID0モード用の第1仮想ディスクから8MBのデータを読み出す動作の流れを示す図である。 RAID1モード用の第2仮想ディスクに対して4MBのデータを書き込む動作の流れを示す図である。 RAID1モード用の第2仮想ディスクから4MBのデータを読み出す動作の流れを示す図である。 シングルモード用の第3仮想ディスクに対して4MBのデータを書き込む動作の流れを示す図である。 第1HDDの領域が仮想ディスク毎に分割されている様子を概略的に示す図である。 本発明に係わる仮想ディスクの登録処理のフローチャートを示した図である。
符号の説明
10 複合機
11 MPU
12 インタフェース
13 DRAM
14 EEPROM
15 RAIDコントローラ
16 NIC
17 印刷部
18 その他の装置
31 アプリケーション
32 RAIDドライバが格納されている
35 ディスク制御関数
36 初期化関数
41 第1仮想ディスクコントロールブロック
42 第2仮想ディスクコントロールブロック
43 第3仮想ディスクコントロールブロック
44 第4仮想ディスクコントロールブロック
50 マイナー番号情報
51 ディスク制御モード情報
52 使用物理ディスク情報
53 総セクタ数情報
54 LBAオフセット情報
99 プロセス
101 第1デバイスファイル
102 第2デバイスファイル
103 第3デバイスファイル
104 第4デバイスファイル
200a〜f ディスクアクセス要求
201 開始アドレス情報
202 メモリバッファアドレス情報
203 データサイズ情報
204 コマンド名情報
300a〜f ディスクリプタ
301 LBAアドレス情報
302 セクタ数情報
1001 領域、第1仮想ディスク
1002 領域、第2仮想ディスク
1003 領域、第3仮想ディスク
1004 領域、第4仮想ディスク

Claims (10)

  1. 主記憶装置と、
    2台の補助記憶装置と、
    該2台の補助記憶装置に結合され、これらをRAID0モード、RAID1モード及びシングルモードを含む指定されたディスク制御モードで制御するディスクアレイ制御装置と、
    を備え、該2台の補助記憶装置の両者及び片方の記憶領域に対応する少なくとも3つ以上の仮想ディスクを実現する情報処理装置であって、
    該ディスク制御モードを指定する第1指定情報及び該指定するディスク制御モードに使用される補助記憶装置を指定する第2指定情報を含む、仮想ディスクのコントロールブロックが該仮想ディスク毎に格納された記憶手段と、
    該3つ以上の仮想ディスクのうちいずれかの仮想ディスクに対するディスクアクセス要求に応答し、該ディスクアクセス要求と、該要求された仮想ディスクに対応するコントロールブロックとに基づき、該第1指定情報と該第2指定情報とを含んだ該ディスクアレイ制御装置の制御情報を該主記憶装置上に生成し、これを該ディスクアレイ制御装置に直接的に又は間接的に伝達するデバイスドライバ手段と、
    をさらに備えることを特徴とする情報処理装置。
  2. 該ディスクアレイ制御装置は、該デバイスドライバ手段により伝達された該制御情報の各情報に基づき、該2台の補助記憶装置内又はこれらのうち1つの補助記憶装置内の所定の記憶領域を、所定のディスク制御モードで制御する、
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 該コントロールブロックは、該3つ以上の仮想ディスクのうちから1つを識別するためのディスク識別情報と、該1つの仮想ディスクの総セクタ数を示す総セクタ数情報と、該1つの仮想ディスクの補助記憶装置上の先頭アドレスを示すオフセット情報と、を含み、
    該制御情報は、ディスクアクセス対象のデータの一時格納先又は一時格納元を示す該主記憶装置上のバッファアドレス情報と、該ディスクアクセス要求に応じたコマンド名情報と、該ディスクアクセスを開始する該補助記憶装置上の先頭アドレス情報と、該補助記憶装置に対する転送セクタ数情報と、を含む、
    ことを特徴とする請求項2に記載の情報処理装置。
  4. 該ディスクアレイ制御装置は、DMA転送機能を有し、指定されたアドレスから該DMA転送機能により該制御情報を取得するものであり、
    該デバイスドライバ手段が該主記憶装置上の該制御情報の格納元アドレス情報と該ディスクアクセスの開始命令を該ディスクアレイ制御装置に伝達して、該DMA転送機能により該制御情報を取得させることにより、該デバイスドライバ手段は該制御情報を「間接的に」伝達する、
    ことを特徴とする請求項3に記載の情報処理装置。
  5. 該情報処理装置の起動時から該ディスクアクセス要求の受信前までに該第1指定情報が各々異なる該3つ以上の仮想ディスクをオペレーティングシステムに認識させ、且つ、該3つ以上のいずれかに対するディスクアクセス要求に応答して、アクセス対象の仮想ディスクを識別する該ディスク識別情報を含む、該デバイスドライバ手段に対応したディスクアクセス要求を新たに生成し、これを該デバイスドライバ手段に伝達するファイルシステム手段をさらに備え、
    該デバイスドライバ手段は、受信したディスクアクセス要求に含まれる該ディスク識別情報に基づき、アクセス対象の仮想ディスクに対応するコントロールブロックを特定する、
    ことを特徴とする請求項3又は4に記載の情報処理装置。
  6. 該ディスクアレイ制御装置が有する該ディスク制御モードは、RAID0モード及びRAID1モードとは異なるRAIDモードをも含み、
    該記憶手段には、該第1指定情報が該RAID0モードを示す第1コントロールブロックと、該第1指定情報が該RAID1モードを示す第2コントロールブロックと、該第1指定情報が該異なるRAIDモードを示す第3コントロールブロックと、が格納され、
    該3つ以上の仮想ディスクには、該第1コントロールブロックに対応する第1仮想ディスクと、該第2コントロールブロックに対応する第2仮想ディスクと、該第3コントロールブロックに対応する第3仮想ディスクとが含まれること、
    を特徴とする請求項5に記載の情報処理装置。
  7. 該記憶手段には、該第1指定情報が該RAID0モードを示す第1コントロールブロックと、該第1指定情報が該RAID1モードを示す第2コントロールブロックと、が格納され、
    該第1コントロールブロックに対応する仮想ディスクが該第2コントロールブロックに対応する仮想ディスクより該2台の補助記憶装置両者の円盤状ディスクの外周側に位置するように、該第1コントロールブロック内のオフセット情報と該第2コントロールブロック内のオフセット情報とが設定されている、
    ことを特徴とする請求項5に記載の情報処理装置。
  8. 該記憶手段は、該2台の補助記憶装置のいずれかであり、
    該情報処理装置の該情報処理装置の起動時から該ディスクアクセス要求の受信前までに、該いずれかの補助記憶装置に格納されている該コントロールブロック全てを該主記憶装置上にコピーするコントロールブロック取得手段と、
    をさらに備え、
    該デバイスドライバ手段は、該要求された仮想ディスクに対応するコントロールブロックを該主記憶装置上から取得して該制御情報を生成する、
    ことを特徴とする請求項6又は7に記載の情報処理装置。
  9. 該情報処理装置は、ネットワークに結合される通信手段を備えた画像形成装置であり、
    該デバイスドライバ手段は、該通信手段を介して該ディスクアクセス要求を受信することを特徴とする請求項3乃至8のいずれか1つに記載の情報処理装置。
  10. 主記憶装置と、
    2台の補助記憶装置と、
    該2台の補助記憶装置に結合され、これらをRAID0モード、RAID1モード及びシングルモードを含む指定されたディスク制御モードで制御するディスクアレイ制御装置と、
    該2台の補助記憶装置の両者又は片方の記憶領域に対応する3つ以上の仮想ディスクと、
    該ディスク制御モードを指定する第1指定情報及び該指定するディスク制御モードに使用される補助記憶装置を指定する第2指定情報を含む、仮想ディスクのコントロールブロックが該仮想ディスク毎に格納された記憶手段と、
    を備えた情報処理装置に搭載されるデバイスドライバであって、
    該情報処理装置に対し、該3つ以上の仮想ディスクのうちいずれかの仮想ディスクに対するディスクアクセス要求に応答し、該ディスクアクセス要求と、該要求された仮想ディスクに対応するコントロールブロックとに基づき、該第1指定情報と該第2指定情報とを含む制御情報を該主記憶装置上に生成させ、これを該ディスクアレイ制御装置に直接的に又は間接的に伝達させることにより、該2台の補助記憶装置において各々異なるディスク制御モードに対応したディスク領域が複数共存することを実現させる、
    ことを特徴とするデバイスドライバ。
JP2007274172A 2007-10-22 2007-10-22 情報処理装置及びこれに備えられるデバイスドライバ Expired - Fee Related JP5080201B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2007274172A JP5080201B2 (ja) 2007-10-22 2007-10-22 情報処理装置及びこれに備えられるデバイスドライバ
US12/236,828 US8015354B2 (en) 2007-10-22 2008-09-24 Information processor, virtual disk managing method, and computer-readable recording medium that records device driver
CN2008101695661A CN101419534B (zh) 2007-10-22 2008-10-08 信息处理装置以及虚拟盘管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007274172A JP5080201B2 (ja) 2007-10-22 2007-10-22 情報処理装置及びこれに備えられるデバイスドライバ

Publications (2)

Publication Number Publication Date
JP2009104321A JP2009104321A (ja) 2009-05-14
JP5080201B2 true JP5080201B2 (ja) 2012-11-21

Family

ID=40564644

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007274172A Expired - Fee Related JP5080201B2 (ja) 2007-10-22 2007-10-22 情報処理装置及びこれに備えられるデバイスドライバ

Country Status (3)

Country Link
US (1) US8015354B2 (ja)
JP (1) JP5080201B2 (ja)
CN (1) CN101419534B (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8656070B2 (en) * 2009-04-29 2014-02-18 Lsi Corporation Striping with SCSI I/O referrals
JP5350077B2 (ja) * 2009-05-28 2013-11-27 京セラドキュメントソリューションズ株式会社 情報処理装置及びこれを備えた画像形成装置
US8402214B2 (en) * 2009-09-16 2013-03-19 Hitachi, Ltd. Dynamic page reallocation storage system management
US8478938B2 (en) * 2010-10-28 2013-07-02 Lsi Corporation Performing data writes in parity protected redundant storage arrays
JP5849400B2 (ja) * 2011-02-08 2016-01-27 コニカミノルタ株式会社 画像形成方法および画像形成装置
US8904105B2 (en) * 2011-03-15 2014-12-02 Dell Products L.P. System and method for performing raid I/O operations in PCIE-based storage resources
US9069467B2 (en) 2011-06-01 2015-06-30 Microsoft Technology Licensing, Llc Isolation of virtual machine I/O in multi-disk hosts
US11048410B2 (en) * 2011-08-24 2021-06-29 Rambus Inc. Distributed procedure execution and file systems on a memory interface
CN102291466B (zh) * 2011-09-05 2014-02-26 浪潮电子信息产业股份有限公司 一种优化集群存储网络资源配置的方法
CN103777893B (zh) * 2012-10-17 2018-09-21 研祥智能科技股份有限公司 硬盘控制方法和装置
JP6191209B2 (ja) * 2013-04-12 2017-09-06 富士通株式会社 ストレージ装置、制御プログラムおよび制御方法
US9423965B2 (en) * 2014-07-11 2016-08-23 Dell Products L.P. Method and system for writing to and reading from computer readable media
US10148755B2 (en) * 2015-08-27 2018-12-04 Dell Products L.P. System and method to redirect USB mass storage devices in high latency VDI environments
US9766920B2 (en) * 2015-08-28 2017-09-19 Vmware, Inc. Dynamic content disk
US10146499B2 (en) * 2015-10-09 2018-12-04 Dell Products L.P. System and method to redirect display-port audio playback devices in a remote desktop protocol session
JP2019128891A (ja) * 2018-01-26 2019-08-01 キヤノン株式会社 情報処理装置及び情報処理装置の制御方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5542065A (en) * 1995-02-10 1996-07-30 Hewlett-Packard Company Methods for using non-contiguously reserved storage space for data migration in a redundant hierarchic data storage system
EP1120787A4 (en) * 1998-09-18 2008-08-27 Toshiba Kk INFORMATION RECORDING METHOD, INFORMATION RECORDING DEVICE, AND INFORMATION CARRIER
US6272591B2 (en) * 1998-10-19 2001-08-07 Intel Corporation Raid striping using multiple virtual channels
US6718404B2 (en) * 2000-06-02 2004-04-06 Hewlett-Packard Development Company, L.P. Data migration using parallel, distributed table driven I/O mapping
JP2002259062A (ja) * 2001-02-28 2002-09-13 Hitachi Ltd 記憶装置システム及び記憶装置システムにおけるデータの複写方法
CN100478865C (zh) * 2003-08-14 2009-04-15 克姆佩棱特科技公司 虚拟磁盘驱动系统和方法
CN100396065C (zh) * 2005-01-14 2008-06-18 清华大学 一种iSCSI存储系统的实现方法
US20100030960A1 (en) * 2008-07-31 2010-02-04 Hariharan Kamalavannan Raid across virtual drives

Also Published As

Publication number Publication date
US20090106493A1 (en) 2009-04-23
CN101419534B (zh) 2011-01-12
US8015354B2 (en) 2011-09-06
JP2009104321A (ja) 2009-05-14
CN101419534A (zh) 2009-04-29

Similar Documents

Publication Publication Date Title
JP5080201B2 (ja) 情報処理装置及びこれに備えられるデバイスドライバ
JP4219602B2 (ja) 記憶制御装置および記憶制御装置の制御方法
US8762682B1 (en) Data storage apparatus providing host full duplex operations using half duplex storage devices
US8924659B2 (en) Performance improvement in flash memory accesses
US10203876B2 (en) Storage medium apparatus, method, and program for storing non-contiguous regions
US7373477B2 (en) Fragmentation executing method and storage device
US20060179212A1 (en) Flash memory control devices that support multiple memory mapping schemes and methods of operating same
US10649891B2 (en) Storage device that maintains mapping data therein
US20140297984A1 (en) Storage apparatus and control method of the same
JP5959958B2 (ja) 記憶装置及び記憶装置におけるデータ消去方法
JP6142860B2 (ja) ディスクアレイ装置、ディスク制御装置、ソリッドステートドライブ、ディスク制御方法、及びそのためのプログラム
JP2008065445A (ja) 同一データを纏める事で格納領域を節約する計算機システム、ストレージシステム及びそれらの制御方法
JP2014010498A5 (ja)
WO2018158808A1 (ja) 情報システム、管理プログラム及び情報システムのプログラム交換方法
EP1126366A2 (en) Storage apparatus and access control method
US9547450B2 (en) Method and apparatus to change tiers
KR20100128120A (ko) 데이터 저장 장치 및 그것의 데이터 저장 방법
JP2018063676A (ja) 情報処理装置及びその制御方法、並びにプログラム
JP5350077B2 (ja) 情報処理装置及びこれを備えた画像形成装置
JP6895551B2 (ja) 情報処理システム
JP7113698B2 (ja) 情報システム
JP2010176399A (ja) Nand型フラッシュメモリデバイス及びnand型フラッシュメモリのデータ消去方法
JP3456234B2 (ja) ターゲット装置
JP6276208B2 (ja) メモリシステム及びプログラム
JP2022116209A (ja) 仮想ストレージシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100927

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120724

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120830

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150907

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5080201

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees