JP2010282281A - ディスクアレイ装置、及びその制御方法、並びにプログラム - Google Patents

ディスクアレイ装置、及びその制御方法、並びにプログラム Download PDF

Info

Publication number
JP2010282281A
JP2010282281A JP2009133176A JP2009133176A JP2010282281A JP 2010282281 A JP2010282281 A JP 2010282281A JP 2009133176 A JP2009133176 A JP 2009133176A JP 2009133176 A JP2009133176 A JP 2009133176A JP 2010282281 A JP2010282281 A JP 2010282281A
Authority
JP
Japan
Prior art keywords
storage device
data
chunk
lba
capacity
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.)
Pending
Application number
JP2009133176A
Other languages
English (en)
Inventor
Tomotaka Shionoya
友隆 塩野谷
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2009133176A priority Critical patent/JP2010282281A/ja
Priority to US12/791,204 priority patent/US20100306468A1/en
Publication of JP2010282281A publication Critical patent/JP2010282281A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1059Parity-single bit-RAID5, i.e. RAID 5 implementations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】異容量ストレージ装置を混載したディスクアレイ装置において、速度を損なわずに容量利用率を向上させる。
【解決手段】ホスト装置からの元データを複数のストライプデータに分割し、複数のストレージ装置に分散させて格納し、管理している(データ管理部:CPUとメモリで構成される)。ここで、複数のストレージ装置のうち、少なくとも1つの容量が他のストレージ装置の容量とは異なっている。そして、データ管理部は、複数のストレージ装置のそれぞれの容量に応じて、ストライプデータのサイズを決定し、各ストレージ装置には同一サイズのストライプデータを格納するように制御する。また、データ管理部は、複数のストレージ装置のそれぞれに格納されるストライプデータ1つずつから構成されるデータ集合をチャンクとして管理する。このとき、元データは、チャンクの集合によって構成される。以上の内容はRAID0でもRAID5でも同様である。
【選択図】図1

Description

本発明はディスクアレイ装置、及びその制御方法、並びにプログラムに関し、例えば、複数台のストレージ装置によって仮想ストレージを構成するディスクアレイ装置に関するものである。
近年デジタルデータの増大とHDDの容量増加が進んでいる。デジタルデータの増大はデータ保護の重要性を増し、一方のHDD容量増加は増大するデジタルデータの確保を可能にしつつも、故障時の損失を増している。
このような状況において、家庭内でもテラバイト単位のストレージ装置が保有されるようになり、そのメンテナンスを容易にする目的で、従来大規模サーバに利用されていたデジタルデータ保護を適用することが一般的になってきた。このようなデジタルデータ保護方法の代表がRAID(Redundant Arrays of Inexpensive Disks)であり、例えば、非特許文献1はRAIDについて開示している。
RAIDは何れのバリエーションも全てのディスクの容量が同容量であることを前提としたシステムである。すなわち、RAIDにおいてディスク故障時にはシステム構成時に利用した容量と同容量のディスクを用意することが望ましい。
ところが、昨今の目まぐるしいディスク容量の増加により、ディスク故障時にシステム構成時と同容量のディスクを取得することは困難もしくはビット単価的に不利であることが多くなってきている。
従って、ディスク故障時にはシステム全体を再構築したり、大容量ディスクの一部を使用不可として小容量ディスクとして代替したりすることが増え、時間的損失もしくは金銭的損失が発生している。このような問題に対処するため、例えば特許文献1及び2に記載されているように、異容量のストレージ装置で構成しても、容量利用率を損なわずにディスクアレイを構築する方法が考えられている。
特開2002−99391号公報 特開平08−63298号公報
A case for redundant arrays of inexpensive disks (RAID). [SIGMOD '88.]
しかしながら、上述の特許文献1及び2の何れに従ったとしても、従来RAIDに比べてディスクの同時稼働率が低下し、性能が劣化するという問題がある。例えば、特許文献1の技術によれば、2台以上の小容量ディスクを連結し、1台の大容量ディスクとして扱うため、データが格納されていない領域を担当しているディスクは利用されないため、ディスクの同時稼働率の低下が生じている。
また、特許文献2の技術では、最小容量ディスクがデータ格納可能である間は全てのディスクが同時稼動するが、データを蓄えるに従ってディスクの同時稼働率が徐々に低下していくという問題がある。
さらに、特許文献1及び2の何れにおいても、各ディスクが担当するストライプサイズは一定となっており、これも速度低下の要因となっている。なぜなら、RAIDのストレージ装置として一般的に利用されるハードディスク装置は大容量のほうがより高速に読書きできる特徴を有しているため、一定データ長(チャンク)の読書きにおいて、小容量ディスクの低速な読書き速度が障壁となり、大容量ディスクの速度性能を発揮できなくなるためである。すなわち、従来技術は容量利用率向上のために、RAIDの特徴であるディスク同時稼動による高速性を損なっている。
本発明はこのような状況に鑑みてなされたものであり、異容量のストレージ装置(ディスク装置)が接続されたディスクアレイ装置の容量利用率を、高速性を損なわずに向上させるものである。
上記課題を解決するために、本発明によるディスクアレイ装置では、ホスト装置からの元データを複数のストライプデータに分割し、複数のストレージ装置に分散させて格納し、管理している(データ管理部:CPUとメモリで構成される)。ここで、複数のストレージ装置のうち、少なくとも1つの容量が他のストレージ装置の容量とは異なっている。そして、データ管理部は、複数のストレージ装置のそれぞれの容量に応じて、ストライプデータのサイズを決定し、各ストレージ装置には同一サイズのストライプデータを格納するように制御する。また、データ管理部は、複数のストレージ装置のそれぞれに格納されるストライプデータ1つずつから構成されるデータ集合をチャンクとして管理する。このとき、元データは、チャンクの集合によって構成される。以上の内容はRAID0でもRAID5でも同様である。
ここで、ホスト装置からアクセス要求を受信したとき(RAID0の場合)、データ管理部は、まず、アクセス要求に含まれる要求LBA(仮想ディスク空間でのLBA)をチャンクのサイズで除算することにより、要求LBAの位置が含まれるチャンクである先頭チャンクを計算する。次に、データ管理部は、要求LBAと先頭チャンクと先頭チャンクに含まれるストライプデータのサイズの情報から先頭チャンクの開始位置から要求LBAまでの距離であるオフセットを計算してアクセスを開始すべきストレージ装置(アクセス開始ストレージ装置)を特定する。そして、データ管理部は、先頭チャンクが何番目のチャンクかを示す先頭チャンク位置情報とオフセットからアクセス開始ストレージ装置におけるアクセス開始LBA(実ディスク空間でのLBA)を特定する。
RAID5の場合、データ管理部は、ストライプデータの集合をチャンクとして管理し、対象のチャンクが何番目のチャンクに相当するかの情報からパリティ格納を担当するストレージ装置(パリティ担当ストレージ装置)を決定し、パリティ担当ストレージ装置以外のストレージ装置のストライプデータからパリティを生成し、パリティ担当ストレージ装置にはパリティのみを格納し、パリティ担当ストレージ装置以外のストレージ装置にはそれらの容量に応じて決定されたサイズのストライプデータを格納するように制御する。このとき、複数のストレージ装置のそれぞれが1回ずつパリティ担当ストレージ装置となった場合の単位を1サイクルとすると、データ管理部は、1サイクルに含まれる全てのチャンクのパリティ以外のストライプデータの合計サイズが各サイクル間で互いに等しく構成されるように管理する。
ホスト装置からアクセス要求を受信したとき(RAID5の場合)、データ管理部は、まず、アクセス要求に含まれる要求LBA(仮想ディスク空間でのLBA)を1サイクルに含まれる全チャンク内のストライプデータの合計サイズで除算することにより、前記要求LBAの位置が何番目のサイクルに該当するかを計算する。次に、データ管理部は、該当サイクルの先頭から要求LBAまでの距離である第1のオフセットを計算する。そして、データ管理部は、第1のオフセットと該当サイクルに含まれる各チャンクのサイズ情報から要求LBAの位置が含まれるチャンクである先頭チャンクを特定する。さらに、データ管理部は、要求LBAと先頭チャンクと先頭チャンクに含まれるストライプデータのサイズの情報から先頭チャンクの開始位置から要求LBAまでの距離である第2のオフセットを計算してアクセスを開始すべきストレージ装置(アクセス開始ストレージ装置)を特定する。最後に、データ管理部は、先頭チャンクが何番目のチャンクかを示す先頭チャンク位置情報と、アクセス開始ストレージ装置の情報と、当該アクセス開始ストレージ装置のストライプデータサイズと、当該アクセス開始ストレージ装置が前記パリティ担当ストレージ装置となった回数の情報と、からアクセス開始ストレージ装置におけるアクセス開始LBA(実ディスク空間でのLBA)を特定する。
さらに、複数のストレージ装置のうち少なくとも1つのストレージ装置(被代替ストレージ装置:例えば、故障したストレージ装置)を、それより容量の大きい代替ストレージ装置と交換する場合、データ管理部は、被代替ストレージ装置のデータを代替ストレージ装置に格納する。この場合、データ管理部は、被代替ストレージ装置以外のストレージ装置に格納されるデータから被代替ストレージ装置(故障ストレージ装置)のデータを復元し、当該復元データを代替ストレージ装置に格納する。
また、被代替ストレージ装置以外のストレージ装置(現存ストレージ装置)で代替ストレージ装置よりも容量が小さいものがある場合、データ管理部は、当該容量の小さい現存ストレージ装置のデータを順次代替ストレージ装置にコピーし、被代替ストレージ装置より容量が大きく、容量に関して直近の現存ストレージ装置に被代替ストレージ装置のデータを格納する。
さらなる本発明の特徴は、以下本発明を実施するための最良の形態および添付図面によって明らかになるものである。
本発明によれば、異容量のストレージ装置(ディスク装置)が接続されたディスクアレイ装置の容量利用率を、高速性を損なわずに向上させることができるようになる。
本発明の第1の実施形態によるディスクアレイ装置の概略構成を示す図である。 第1の実施形態において、ストレージ装置の実ディスク空間とディスクアレイ装置が構築する仮想ディスク空間の対応関係を示す図である。 第1の実施形態によるLBA変換処理(概要)を説明するためのフローチャートである。 第1の実施形態において、先頭チャンクの特定処理を説明するためのフローチャートである。 第1の実施形態において、アクセスを開始するストレージ装置の特定処理を説明するためのフローチャートである。 第1の実施形態において、ストレージ装置におけるアクセス開始LBAの特定処理を説明するためのフローチャートである。 第2の実施形態によるディスクアレイ装置の概略構成を示す図である。 第2の実施形態において、ストレージ装置の実ディスク空間とディスクアレイ装置が構築する仮想ディスク空間の対応関係を示す図である。 第2の実施形態において、先頭チャンクの特定処理を説明するためのフローチャートである。 第2の実施形態において、ストレージ装置におけるアクセス開始LBAの特定処理を説明するためのフローチャートである。 第2の実施形態において、ディスクアレイ装置へのデータ格納処理を説明するためのフローチャートである。 第2の実施形態において、ストレージ装置が故障した際に実行されるデータ復元処理を説明するためのフローチャートである。 ディスクアレイ装置の適用例を示す図である。
本発明は、ディスクアレイ装置に接続されたストレージ装置の容量利用率を向上させるための技術に関する。
以下、添付図面を参照して本発明の実施形態について説明する。ただし、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。また、各図において共通の構成については同一の参照番号が付されている。
(1)第1の実施形態
第1の実施形態は、RAID0を用いるディスクアレイ装置に関する。
<ディスクアレイ装置の構成>
図1は、本発明の第1の実施形態によるディスクアレイ装置1の概略構成を示す図である。図1に示されるように、ディスクアレイ装置1は、ホスト装置3と通信を行うためのホスト・インタフェース11と、データを一時格納するためのバッファ(バッファメモリ:キャッシュメモリを含む)12と、ディスクアレイ中でのデータ管理を行うためのデータ管理部13と、ストレージ装置2を接続するための、複数のストレージ・インタフェース14(図中では4つ)と、これらの構成要素を接続し、データ及び命令等を伝送するための通信バス15と、を備えている。
ホスト・インタフェース11は、Universal Serial BusやIEEE 1394などの実効転送速度が500Mbps程度の帯域を有する通信インタフェースでも構わないが、望ましくはGigabit EthernetやFibre Channel等、数Gbps程度の転送速度を有する通信インタフェースであることが望ましい。なぜなら、大規模ストレージ装置として広く利用されているハードディスク装置は1Gbps程度の転送速度を有しており、また近年普及が進むソリッドステートディスク装置においては2Gbps近い読込速度を有するものもある。このとき、ホスト・インタフェース11の転送速度が低速であると、ボトルネックとなり本発明の速度劣化の低減効果が発揮できなくなってしまうからである。
バッファ12は、Syncronous Dynamic Random Access Memoryなどの高速な揮発性メモリである。本発明においては、バッファ12は、ホスト装置3から一定量のデータを一時格納し、ストレージ・インタフェース14に接続された各ストレージ装置2に分割配置するのに十分な量が蓄積された時点で、データ管理部13により読み出され、各ストレージ装置2に格納される。
データ管理部13はメモリとCPUによって構成されている。CPUが、メモリに格納された各管理プログラムを実行することで、ホスト装置3へ転送するデータの復元および、ホスト装置3より受け取ったデータを分割してストレージ・インタフェース14に接続されたストレージ装置2に格納するように制御している。
データ管理部13は、実行する機能として、ストレージ・インタフェース14に接続された、各ストレージ装置2の情報を管理するための構成ドライブ管理機能131と、各ストレージ装置2のデータ格納単位(ストライプ25)のサイズを管理するストライプサイズ管理機能132と、ディスクアレイ装置1が管理する仮想ストレージ装置20のデータ格納単位(チャンク)を管理するチャンク管理機能133を含んでいる。
構成ドライブ管理機能131は、ストレージ・インタフェース14に接続されているストレージ装置2の台数および各ストレージ装置2の容量を管理する機能である。より具体的には、構成ドライブ管理機能131は、各ストレージ装置2が接続されたときにプロパティ情報を読み込んできて各ストレージ装置2の容量情報を取得し、メモリ内の例えばテーブル上にストレージ装置2の識別情報と対応させて格納する。
ストライプサイズ管理機能132は、構成ドライブ管理機能131が管理するストレージ装置2の台数と容量情報、及びユーザから与えられるチャンクサイズ(デフォルトでも良い)より、各ストレージ装置2に格納するストライプ25のサイズを決定する機能を有している。ストライプサイズは、以下の数式によって与えられる。
Si = Sc×(Ci/C) ・・・(1)
ここで、Siは、i番目のストレージ・インタフェース14に接続されたストレージ装置2に対するストライプサイズを示している。また、Scは、ユーザにより与えられるチャンクサイズを示している。そして、Ciはi番目のストレージ・インタフェース14に接続されたストレージ装置2の容量を示し、Cはストレージ・インタフェース14に接続された全てのストレージ装置2の総容量を示している。なお、以降Siをi番目のストライプサイズと呼ぶこととする。
チャンク管理機能133は、データ格納の指示を受けたときに、バッファ12中のチャンクをストライプ25に分割して、ストレージ装置2に格納する。また、チャンク管理機能133は、データ読み出しの指示を受けたときに、ホスト装置3からの読み出し要求に含まれるLBA(Logical Blocking Address)から適切なストレージ装置2およびストレージ装置2中のアクセス開始LBAを選択する機能を有している。
ストレージ・インタフェース14は、例えばSerial AT AttachmentやInformation Versatile Disk for Removable usage、AT Attachment Packet Interfaceなどを代表とするストレージ装置向けのインタフェースで構成されている。
<データ分散格納方法>
図2は、本発明の第1の実施形態によるデータ分散格納方法について説明するための図である。図2では、一点鎖線で区切られた上半分が実ディスクにおけるデータ格納状態(実ディスク空間200)を示し、下半分がホスト装置3から利用可能な仮想ストレージにおけるデータ格納状態(仮想ディスク空間201)を示している。
実ディスク空間200では4台のストレージ装置2が接続されており、ストレージ・インタフェース14の番号が若い順に小容量のストレージ装置2が接続されていることを仮定している。ここで、本発明は必ずしも4台のみでしか構成できないわけではなく、3台以上であれば何台でも適用可能であるし、また順序が必ずしも容量の昇順あるいは降順に接続されていなくても適用可能であることに注意するべきである。
チャンクは、ストライプ25に分割されて4台のディスクに分散配置されている。ここで、各チャンクに付与されているチャンクID27(0,1,2,・・・)は説明を簡単化するために便宜上割り当てたもので、決して必須の構成要素ではないことに注意するべきである。
既に説明したように、各ストライプ25のサイズは各ストレージ装置2の容量によって決定され、容量が小さいストレージ装置2ほど小さなストライプ25が割り当てられる。この特徴により、従来RAIDを用いたディスクアレイ装置が有していた小容量ディスクの容量枯渇による、大容量ディスクの利用率低下を防止することができる。
次に、仮想ディスク空間201について説明する。ホスト装置3は、ディスクアレイ装置1に何台のストレージ装置2が接続されているかに関係なく、あくまで1台のストレージ(仮想ストレージ)に対してアクセスするように制御される。
図2においては、実ディスク空間200と仮想ディスク空間201におけるストライプ25の対応が、図中のストライプ25に振られたアルファベットで示されている。実ディスク空間200においてストレージ装置2をまたがって割り当てられていたチャンクID27に対応するそれぞれのデータは、仮想ディスク空間201においては連続的に配置され、それに伴ってストライプ25も昇順に整列される。
<アクセス要求処理>
続いて、ホスト装置3は仮想ストレージにおけるLBAを用いてディスクアレイ装置1へとアクセス要求を発行した場合の処理について説明する。図3は、ホスト装置3からアクセス要求を受信したディスクアレイ装置1の全体処理、つまり仮想LBA(仮想ディスク空間でのLBA)を実LBA(実ディスク空間でのLBA)に変換するまでの処理を説明するためのフローチャート(S30)である。
まず、ディスクアレイ装置1は、チャンク管理機能133を用いて、ホスト装置3から指示された仮想LBAに基づいて、先頭チャンクを特定する(S40)。つまり、当該仮想LBAが仮想ディスク空間におけるどのチャンクに含まれているのか特定される。
次に、チャンク管理機能133は、S40で特定した先頭チャンクのチャンクID27を基にアクセスを開始するストレージ装置2を特定する(S50)。
最後に、チャンク管理機能133は、S50で特定したストレージ装置2上におけるアクセス開始LBA(実LBA)を特定する(S60)。
上記処理手順により、ディスクアレイ装置1は、ホスト装置3からの要求LBAを適切なストレージ装置2の実LBAへの変換を実現することができる。以下、各手順S40、S50、及びS60について詳細に説明する。
<先頭チャンクの特定処理(S40)の詳細>
図4は、先頭チャンクID27(先頭チャンクの位置)の特定処理(S40)の詳細を説明するためのフローチャートである。先頭チャンクの位置(チャンクID27)は、要求LBAをチャンクサイズで除算することで求まる。すなわち、小数点以下を切り上げる関数をRU、チャンクID27をh(=h:0,1,2,・・・)で表せば、式(2)のようになる。式(2)をフローチャートで表したのが図4である。
h = RU(LBA/Sc) ・・・(2)
<アクセス開始ストレージ装置特定処理(S50)の詳細>
図5は、アクセス開始対象となるストレージ装置2の特定処理(S50)の詳細を説明するためのフローチャートである。アクセスを開始するストレージ装置2は、要求LBA(仮想ディスク空間での仮想LBA)とS40で特定した先頭チャンクまでのチャンクサイズの総和の差分から、ストライプサイズを逐次減算していくことにより特定することができる。この演算手順を示したのが図5のフローチャートである。以降、要求LBAと先頭チャンクまでのチャンクサイズの総和の差分をオフセットOtと呼ぶこととする。
まず、チャンク管理機能133は、次に示す式(3)を用いてオフセットOtを計算する(S52)。つまり、これにより、先頭チャンクのLBAから要求されたLBAまでの距離が求まる(図2参照)。
Ot = LBA−Sc×h ・・・(3)
そして、チャンク管理機能133は、オフセットOtからストライプサイズ管理機能132が管理する、各ストレージ装置2のストライプサイズを減算していく(S53からS56)。そして、チャンク管理機能133は、減算結果が負になるのを検知して、アクセス開始ストレージ装置2を特定する(S57)。以下詳細に説明する。
まず、チャンク管理機能133は、担当ディスク番号iを1とし(S53)、オフセットOtとi番目のストライプサイズSiを比較する(S54)。
オフセットOtがi番目のストライプサイズSiよりも小さい場合(S54でYesの場合)、チャンク管理機能133は、i番目のストレージ装置2をアクセス開始ストレージ装置2として特定する(S57)。そのときのオフセットOtをオフセットOfとする。
一方、オフセットOtがi番目のストライプサイズSiよりも大きい場合(S54でNoの場合)、チャンク管理機能133は、オフセットOtよりi番目のストライプサイズSiを減算し、新しいオフセットOniとする(S55)。
そして、チャンク管理機能133は、iに1を加え(S56)、新しいiとOniを基にストライプサイズSiとの比較からやり直し(S54へ遷移)、最終的にオフセットOfを演算する。なお、アクセス開始ストレージ装置2特定処理(S50)で求められたオフセットOfは実LBA特定処理(S60)でも使用するため、バッファ12に格納される。
<実LBAの特定処理(S60)の詳細>
図6は、ストレージ装置2上において実際にアクセスを開始するLBA(実LBA)の特定処理(S60)の詳細を説明するためのフローチャートである。
チャンク管理機能133は、ストレージ装置特定処理(S50)において取得したオフセットOf(Otからストライプサイズ減算済みのオフセット)とi番目のストライプサイズSiおよびチャンクID27(=h)を用いれば、開始実LBAは単に以下の式(4)によって特定できる。
開始LBA = h×Si + Of ・・・(4)
この式(4)の計算手順を示したのが図6のフローチャートである。
以降、ストライプサイズ管理機能132は、i番目のストレージ装置2から順番に各ストライプを出力すれば、ホスト装置3からの仮想ディスク空間201へのアクセスを実現できる。
なお、以上のLBA変換手順によれば、仮想LBA空間と実LBA空間の対応を表形式などで記憶するなどする必要がないため、メモリを潤沢に有しない装置であっても十分に高速性を損なわずに容量利用効率を向上させることができる。ただし、メモリ等のハードウェアリソースが充分にある場合には、上述の対応表を設けることにより、処理をより高速化することが可能となる。
(2)第2の実施形態
第1の実施様態ではストレージ装置2の故障に対する耐性を有していない。そこで、本実施形態においては、RAID5を用い、ディスクアレイ装置1による耐故障性を実現する。
<ディスクアレイ装置の構成>
図7は、本発明の第2の実施形態によるディスクアレイ装置の概略構成を示す図である。ディスクアレイ装置1は、ホスト装置3と通信するためのホスト・インタフェース11と、データを一時格納するためのバッファ(バッファメモリ:キャッシュメモリを含む)12と、ディスクアレイ装置1中でのデータ管理を行うためのデータ管理部13と、ストレージ装置2を接続するための、複数のストレージ・インタフェース14(図中では4つ)と、これらの構成要素を接続し、データや命令等を伝送するための通信バス15と、を備えている。
パリティ管理機能134は、チャンクを構成するストライプ25のうち何れかが失われても、残りのストライプ25から失われたストライプ25を復元するためのパリティ26を生成し、ストライプ25とパリティ26から失われたストライプ25を復元するための機能を有している。パリティ26は、一般的に各ストライプ25の排他的論理和を取ることで生成される。本実施形態においても排他的論理和を利用するが、ストライプ25は等サイズではないため、ストライプ25のサイズを統一する処理を必要とする。具体的には、最大ストライプ25より小さいサイズのストライプ25の上位に0を適宜追加し、最大ストライプ25と同一サイズにした上で排他的論理和を取りパリティ26を生成する。例えば、一方が01で他方が0110であった場合、前者を0001としてサイズを共通化する。
ここで、複数の候補の中で最大を選出する関数をmaxとして表せば、パリティ26のサイズSpは下記の式(5)によって与えられる。
Sp = Sc×(max(Ci)/C) = max(Si) ・・・(5)
すなわち、最大容量を有するストレージ装置2が担当するストライプサイズとパリティサイズは等しくなる。
チャンク管理機能133は、データ格納時には、パリティ26を格納するストレージ装置2を決定し、データ格納時には、バッファ中のチャンクをストライプ25に分割して、ストレージ装置2に格納する。一方、データ読出し時には、チャンク管理機能133は、ストライプ25を結合してチャンクを生成し、データ復元時にはストライプ25およびパリティ26からチャンクを復元するする。さらに、チャンク管理機能133は、ホスト装置3の要求に含まれるLBA(Logical Blocking Address)から適切なストレージ装置2およびストレージ装置2中のアクセス開始LBA(実LBA)を選択する機能を有している。
<データ分散格納方法>
図8は、第2の実施形態によるデータ分散格納方法を説明するための図である。本実施形態においても、実ディスク空間200では4台のストレージ装置2が接続されており、ストレージ・インタフェース14の番号が若い順に小容量のストレージ装置2が接続されていることを仮定している。
第2の実施様態においては、チャンクはストライプ25とパリティ26として4台のディスクに分割されて配置されている。図8からも分かるように、第2の実施形態による各チャンクのサイズは、第1の実施形態とは異なり、等しくなっていない。ただし、1サイクル(パリティが全てのストレージ装置2に配置されたとき)分のチャンクの総サイズは、互いに等しい。つまり、図8の例に従えば、チャンクIDが0から3までのチャンクサイズの総量は、以降のサイクル(例えば、チャンクIDが4から7まで)のチャンクサイズの総量に等しい。
パリティ26を格納するストレージ装置2(パリティドライブ)は、チャンクID27(=h:0,1,2,・・・)と、ディスクアレイ装置1に接続されたディスク台数(=d)と、余剰演算子(=%)とを用いて計算されるi(パリティドライブ番号)によって決定される。
i= (h%d) + 1 ・・・(6)
第2の実施様態においては、第1の実施様態と異なり、パリティ26が存在する。パリティサイズSpは前述したとおり、ディスクアレイ装置1を構成するストレージ装置2の中で最も大容量のディスク容量によって決定される。そのためパリティを格納するドライブが変わるたびにチャンクサイズScが変化する。i番目のストレージ装置2がパリティ26を格納するときのチャンクサイズをSciとすると、Sciは式(7)のように表される。なお、Siはi番目のストレージ装置2のストライプサイズを示している。
Sci=Σ(Sk) − Si (k=1...d) ・・・(7)
以降、このSciをi番目のチャンクサイズと呼ぶ。
第2の実施様態においてもチャンクID27は説明のため便宜的に振られている数値であり、ホスト装置3の要求に含まれるLBA(仮想LBA)から計算する必要がある。この計算方法は仮想ディスク空間201の説明にて後述する。
図8を参照し、仮想ディスク空間201について説明すると、ホスト装置3は、ディスクアレイ装置1に何台のストレージ装置2が接続されているかに関係なく、あくまで1台のストレージ(仮想ストレージ)に対してアクセスするように制御される。
実ディスク空間200と仮想ディスク空間201における、ストライプ25の対応は、図8のストライプ25に振られたアルファベットで示されている。
<アクセス要求処理>
ホスト装置3からアクセス要求を受信したディスクアレイ装置1の全体処理、つまり仮想LBA(仮想ディスク空間でのLBA)を実LBA(実ディスク空間でのLBA)に変換するまでの処理は、図3(S30)と同様である。
ホスト装置3に対しては、パリティ26の存在は隠蔽され、実データの分割であるストライプ25のみアクセスが可能である。しかしながら、実ディスク空間200にはパリティ26が存在しているため、ディスクアレイ装置1へのアクセスにおいては、これを考慮したLBA変換処理(S30)が必要となる。よって、S40及びS60の各処理は以下のように実行される。なお、ストレージ装置2の特定処理(S50)は、第1の実施形態における処理(図5)と同様である。
<先頭チャンク特定処理(S40)の詳細>
図9は、第2の実施形態による先頭チャンク特定処理の詳細を説明するためのフローチャートである。既に説明したように、第2の実施様態においては、チャンクサイズScは一定でない。そのため、第1の実施様態のようなチャンクサイズによるLBA除算ではチャンクID27(チャックの位置)を特定できない。そこで、以下のような処理が実行される。
チャンク管理機能133は、チャンクサイズ(=Sc)の総計(=SC:1サイクル分)で仮想LBAを除算し、仮想LBAの位置をディスク台数(=d)の精度(分解能)で特定する。チャンクサイズの総計(=SC)は、チャンクサイズ(=Sci)とストレージ装置2の台数(=d)を用いれば、式(8)のように表される。まず、式(8)に従って、チャンクサイズ総計SCが演算される(S401)。
SC= ΣSci (i=1...d) ・・・(8)
S401で求めたSCを用いれば、仮チャンクID(=h’)は式(9)のように表わすことができる。この式(9)に従って、仮チャンクID、即ち、仮想LBAのおおよその位置が特定される(S402)。
h’ = RU(LBA/SC) ・・・(9)
そして、チャンク管理機能133は、チャンクサイズの総計(=SC)と仮チャンクID(=h’)の積を要求LBAから減算した結果をオフセットOxとする(S403)。
以降、チャンク管理機能133は、各チャンクサイズSciをオフセットOxから逐次減算し、チャンクID27(=h)、即ちLBAが含まれるチャンクの位置(先頭チャンク)を以下のように算出する。
チャンク管理機能133は、まず、変数iを1とし(S404)、オフセットOxをi番目のチャンクサイズSciと比較する(S405)。オフセットOxがi番目のチャンクサイズSciより小さい場合(S405でYesの場合)、チャンク管理機能133は、式(10)に示されるように、ステップS403で求めた仮チャンクID(=h’)にストレージ装置台数(=d)を乗算し、(i−1)を加えたものを先頭チャンクID27(=h)とする(S408)。なお、この場合のオフセットOxをオフセットOtと表すこととする。
h = h’×d + (i−1) ・・・(10)
一方、オフセットOxがi番目のチャンクサイズSciより大きい場合(S407でNoの場合)、チャンク管理機能133は、オフセットOxからチャンクサイズSciを減算し、減算結果を新しいオフセットOxniとする(S406)。
そして、チャンク管理機能133は、iに1を加え(S407)、新しいiと新しいオフセットOxniを基に、オフセットOxniとチャンクサイズSciの比較からやり直す(S405に遷移)。
以上のような先頭チャンク特定処理(S40)は、第1の実施様態におけるアクセス開始ストレージ装置特定処理(S50)と同様のアルゴリズムとなっている。よって、ソフトウェアあるいは演算回路の再利用が可能であるため、RAID0からRAID5を再構成する場合でも省コスト化を図ることが可能となる。
<実LBAの特定処理(S60)の詳細>
図10は、第2の実施様態におけるアクセス開始LBA(実LBA)の特定処理(S60)の詳細を説明するためのフローチャートである。
アクセス開始LBAは、ストライプ(=Si)及びチャンクID27(=h)を用いれば、以下の式(11)のように表わされる。
開始LBA=RU(h/d)×((d−1)×Si+Sp)+re ・・・(11)
ここで、reはパリティ26を考慮するための補正項であり、特定されたストレージ装置2がパリティ26を担当する回(チャンク)についてはパリティサイズを、パリティ26を担当しない回(チャンク)についてはストライプサイズを適切回数分足し合わせた値となっている。
S601からS603までによって、L=RU(h/d)×((d−1)×Si+Sp)が演算される。
以下、reの求め方をS604からS610の処理に従って詳細に説明する。
まず、チャンク管理機能133は、チャンクID27(=h)とディスク台数(=d)の余剰(=c)を計算する(S604)。
また、チャンク管理機能133は、補正項reを0に、変数iを1に設定し(S605)、iがディスク装置の番号と等しいか、すなわちパリティを担当する回かどうかについてチェックする(S606)。
iがストレージ装置番号と等しい場合(S606でYesの場合)、チャンク管理機能133は、reにパリティサイズSpを加算する(S607)。一方、iがストレージ装置番号と等しくない場合(S606でNoの場合)、チャンク管理機能133は、reにストライプサイズSを加算する(S608)。
そして、チャンク管理機能133は、re更新後、iに1を加え(S609)、cとiを比較する(S610)。cとiが等しければ(S610でYes)、チャンク管理機能133は、上記Lにreを加算して実LBAとし、処理を終了させる。一方、cとiが等しくない場合(S610でNoの場合)は、チャンク管理機能133は、iとディスク装置番号の比較処理(S606)からやり直す。
以降は、第1の実施様態と同様に、i番目のストレージ装置2から順番にローテーションすれば、ホスト装置3は仮想ディスク空間にアクセスすることが可能である。なお、メモリを潤沢に有する場合には、上記処理をより高速化するために要求LBAに対する担当ストレージ装置2と実LBAを表形式で記憶するなどしても構わない。
<データ格納処理>
図11は、ホスト装置3からデータ書き込み要求があった場合のデータの格納処理(S110)を説明するためのフローチャートである。
まず、ディスクアレイ装置1はLBA変換処理(S30)を用いて、アクセスを開始するストレージ装置2とストレージ装置2におけるアクセス開始LBA(実LBA)を特定する。
そして、チャンク管理機能133は、ホスト装置3から送られてくるデータをi番目のチャンクサイズSciを上回るまでバッファ12に蓄積する(S112及び113)。Sciに到達した時点(S113でYesの場合)で、チャンク管理機能133は、バッファ中のデータをストライプ25に分割する(S114)。
続いて、パリティ管理機能134が、分割されたストライプ25に基づいて、パリティ26を生成する(S115)。そして、チャンク管理機能133は、i番目のストレージ装置2にS115で生成したパリティ26を、他のストレージ装置2に対応するストライプ25を、それぞれ格納する(S116)。
格納の後、パリティ26担当ストレージ装置(ドライブ)2を変更するため、チャンク管理機能133は、iに1を加えてiを更新する(S117)。このとき、iがディスク台数(本実施形態では、4)を超えた場合、チャンク管理機能133は、iを1に戻す(S118及び119)。
チャンク管理機能133は、上記処理をホスト装置3からのデータ格納要求が終了するまで繰り返すことで、データ格納処理を完了させる(S1110及びS1111)。
<データ復元処理>
図12は、ストレージ装置2の故障に対するデータ復元処理を説明するためのフローチャートである。データ復元処理は、代替として挿入されたストレージ装置rの性能をできるだけ発揮し、システム全体の性能を向上させるための処理である。これを実現するため、挿入されたストレージ装置rの容量に応じて異なる復帰処理が実行される。ここでは、「故障」を例に挙げているが、ストレージ装置が故障していない場合に単に交換する場合も含まれるものとする。
まず、ディスクアレイ装置1は、構成ドライブ管理機能131を用いて、故障したストレージ装置bと挿入された代替ストレージ装置rの容量を比較する(S122)。代替ストレージ装置rの容量が故障ストレージ装置bの容量より小さい場合(S122でNoの場合)、構成ドライブ管理機能131は、データの復元が不可能であると判断し、データを復元せずに処理を終了する(S123及びS1215)。
一方、代替ストレージ装置rの容量が故障ストレージ装置bの容量より大きい場合(S122でYesの場合)、構成ドライブ管理機能131は、i=1に設定し(S124)、故障したストレージ装置bのストレージ装置b+i(故障したストレージ装置の次に容量が小さいストレージ装置2)との容量を比較する(S125)。代替ストレージ装置rの容量がストレージ装置b+iの容量より大きい場合(S125でYesの場合)、構成ドライブ管理機能131は、b+iがストレージ装置の台数に等しくない場合(S126でNoの場合)、iに1を加え(S127)、代替ストレージ装置rとストレージ装置b+i(次に容量が小さいストレージ装置2)の容量を比較する(S125)。b+iがストレージ装置台数と等しい、すなわち代替ストレージ装置rがディスクアレイ装置1を構成するストレージ装置2の中で最大の場合(S126でYesの場合)は、処理はS128に遷移し、iに1が加えられる。
代替ストレージ装置rよりも容量の大きいストレージ装置2が存在する場合、構成ドライブ管理機能131は、故障ストレージ装置の番号bがb+i−1に等しいか判断する。等しい場合、つまり代替ストレージ装置rよりも容量の小さい現存ストレージ装置がない場合には、処理はS1214に移行する。bがb+i−1に等しくない場合(b<b+i−1の場合)、つまり、代替ストレージ装置rは最大容量のストレージ装置ではないが、それより小さい容量の現存ストレージ装置がある場合、処理はS1210に移行する。
代替ストレージ装置rは最大容量のストレージ装置ではないが、それより小さい容量の現存ストレージ装置がある場合、あるいは代替ストレージ装置rが最も大容量であることが判明した場合、構成ドライブ管理機能131は、最後に比較したストレージ装置(ストレージ装置番号=b+i−1)の内容を代替ストレージ装置2に複製する(S1210)。
その後、構成ドライブ管理機能131は、最後に比較したストレージ装置に、最後に比較したストレージ装置より1つ小容量のストレージ装置の内容を複製していき、この操作を最初に比較したストレージ装置2まで繰り返す。具体的には、ストレージ装置b+i−1を新しい代替ストレージ装置rとした上で、iを1減算し(S1212)、iが1になるまで(代替ストレージ装置rへのストレージ装置b+i−1の複製)を繰り返す(S1210、S1211、S1212及びS1213)。
最後に、構成ドライブ管理機能131は、代替ストレージ装置rとして選出されたストレージ装置に、故障ストレージ装置bの内容を復元し、データ復元処理を完了する(S1214及びS1215)。
以上のデータ復元手処理は、復元後もストライプサイズSiの順位とストレージ装置2の容量順位が等しくなる点を特徴としている。その結果、大容量ストレージ装置2が大容量のデータを保持するようになり、性能が最適化される。さらに言えば、ストレージ装置2にハードディスク装置が用いられている場合は、大容量のものが一般に高速であるため、リードライト性能も最適化される。
(3)LBA変換処理の具体例
以下、第2の実施形態に従って、データアクセスに際するLBA変換処理の具体例について説明する。
図13は、ディスクアレイ装置1とストレージ装置2の接続構成の一例を示す図である。ディスクアレイ装置1には4台の外付けストレージ装置2a、2b、2c及び2dがUSBインタフェース14で接続されている。外付けストレージ装置2の種類は、単一のストレージ装置で構成されているものでも良いし、複数のストレージ装置で構成されているものたとえばディスクアレイ装置1であっても良い。
ストレージ装置2a、2b、2c及び2dの容量は、それぞれ200GB、400GB、600GB及び2TB(=2000GB)とし、ユーザ指定のチャンクサイズScは128kBとする。本具体例においては、このストレージ装置2で構成されたディスクアレイ装置1の仮想ディスク空間において、LBA10,000,000番からデータアクセスする際のLBA変換手順について説明する。
まず、各ストレージ装置2が格納するストライプサイズSiおよびSpを、ストライプサイズ管理機能132を用いて下記の通り計算する。
S1: 8kB(128kB×200/3200)
S2: 16kB(128kB×400/3200)
S3: 24kB(128kB×600/3200)
S4: 80kB(128kB×2000/3200)
Sp: 80kB(=S4)
ここで、計算機上におけるキロ接頭辞は1024倍を表すことに注意すべきである。
<アクセス開始チャンクの特定処理(S40)>
先頭チャンク特定処理に従ってアクセス開始チャンクが特定される(図9)。チャンクサイズSciおよび総チャンクサイズSCは下記の通りである(S401)。
Sc1: 200kB
Sc2: 192kB
Sc3: 184kB
Sc4: 128kB
SC: 704kB
上記SCと要求LBAおよびディスク台数からより、仮チャンクID(=h’)は、次の通り計算される(S402)。
h’=RU(10000000/(704×1024))=13
除算に総チャンクサイズを用いているため、h’の精度(解像度)はd、すなわち4倍程度であることに注意するべきである。
また、アクセス開始チャンクID(=h)特定のためのオフセットOxは、次のように求められる。
Ox=10000000−(13×704×1024)=628352
以降Sc1から順にオフセットOt(On)と比較し、減算していく(S405、S406及びS407)。最終的に求められたオフセットをOfとする。
628352−200×1024=423552 (Ox−Sc1=Oxn1)
423552−192×1024=226944 (Oxn1−Sc2=Oxn2)
226944−184×1024=38528 (Oxn2−Sc3=Oxn3)
38528<128×1024 (On3とSc4の比較の結果、38528=Ot)
したがって、アクセス開始チャンクID(=h)は、次のように求まる(S408)。
h=h’×d+i−1=13×4+4−1=55
<アクセス開始ストレージ装置の特定処理(S60)>
アクセス開始ストレージ装置の特定には、オフセットOtより、ストライプサイズSiを順に比較し、減算を行う(S54、S55及びS56)。
38528−8×1024 (Ot−S1=On1)
30336−16×1024 (On1−S2=On2)
13952<24×1024 (On2とS3の比較、13952=Of)
従って、アクセス開始ストレージ装置の番号iが3であることが特定される。
<アクセス開始LBAの特定>
アクセス開始LBA特定処理に従って、アクセス開始LBAが特定される(図10)。
まず、ストライプサイズS3とチャンクID(=h)およびディスク台数(=d)を用いて、次のように開始LBA−re=Lを計算する(S601乃至S603)
開始LBA−re=RU(h/d)×((d−1)×Si+Sp)=2023424
次にS54で求まったオフセットOfを用いてreを計算する。
本具体例におけるチャンクIDは55であるから、ディスク台数による余剰は3である。また、3番目のストレージ装置2c(図13)のパリティ担当回は3回目であるから、仮想LBA空間から実LBA空間への射影において、2度データを格納し、1度パリティを格納している。すなわち、reは次のように求めることができる。
re=Of+2×S3+Sp
=13952+2×24×1024+80×1024
=145024
従って、ストレージ装置2cにおけるアクセス開始LBAは次のようになる。
開始LBA=2023424+145024=2168448
以降、各ストレージ装置のパリティ担当回をスキップしながら、それぞれストライプを読み出し、連結して出力することによりホスト装置3からの仮想ディスク空間へのデータアクセスを実現する。
なお、実際のストレージ装置2へのアクセスはバイト単位ではなく、ブロックあるいはセクタと呼ばれる大きな単位で行われることが一般的である。その場合においても、本アルゴリズムの基本単位がバイトからブロック、セクタに変更するだけでそのまま継続して実施することが可能であり、本発明の適用において障害になることはない。
(4)故障復帰処理の具体例
以下、第2の実施形態に従って、故障復帰処理の具体例について説明する。故障復帰処理におけるディスクアレイ装置1とストレージ装置の構成も図13と同様であるものとする。以降、ディスクアレイ装置1を構成するドライブのうち2番目に容量の小さいストレージ装置2b(400GB)の故障に際して挿入される代替ストレージ装置(図示せず)の容量に応じた操作をそれぞれ説明する。
ディスクアレイ装置1は構成ドライブ管理機能131を用いて現存しているストレージ装置2a、2c及び2d、及び故障ストレージ装置2bと、代替ストレージ装置との容量を比較する(S122)。
<故障ストレージ装置2b(400GB)未満の代替ストレージ装置が挿入された場合>
構成ドライブ管理機能131は、ディスクアレイ装置1を復元できないと判断し、復元処理を中止する(S123及びS1213)。
<故障ストレージ装置2b(400GB)以上、ストレージ装置2c(600GB)未満の場合>
パリティ管理機能134は、現存ストレージ装置2a、2c及び2dに格納されたパリティおよびデータ情報を基に、代替ストレージ装置上に故障ストレージ装置2bの内容を復元する。
<ストレージ装置2c(600GB)以上ストレージ装置2d(2TB)未満の代替ストレージ装置が挿入された場合>
構成ドライブ管理機能131は、現存ストレージ装置2cの内容を代替ストレージ装置へとコピーする。これは、ストレージ装置2の容量の大小とストライプサイズSiの大小の整合性を確保するための処理であり、ディスクアレイ装置1の性能を最適化する効果がある。
コピーの後、パリティ管理機能134は、現存ストレージ装置2a及び2dと代替ストレージ装置(2cと同一の内容が記録されている)に格納されたパリティおよびデータ情報を基に、ストレージ装置2c上に故障ストレージ装置2bの内容を復元する。
<ストレージ装置2d(2TB)以上の代替ストレージ装置が挿入された場合>
この場合もストレージ装置2の容量関係とストライプサイズSiの関係の整合性を保つために、現存ストレージ装置の複製が行われる。
まず、構成ドライブ管理機能131は、現存ストレージ装置2dの内容を代替ストレージ装置にコピーする。コピーの後、構成ドライブ管理機能131は、現存ストレージ装置2cの内容を現存ストレージ装置2dにコピーする。このコピー処理(2c→2d)は必ずしも先のコピー処理(2d→代替ストレージ装置)が終了する必要はなく、十分な通信バス15を備えたディスクアレイ装置1ならば、平行して2つのコピー処理を行ってもよい。この並行処理を行うことで、データ復元手順にかかる時間を短縮することができる。
両コピーが終了した時点で、パリティ管理機能134は、現存ストレージ装置2a及び2d(内容は2c)と代替ストレージ装置(内容は2d)のパリティおよびデータ情報を用いて、現存ストレージ装置2c上に故障ストレージ装置2bを復元する。
以上の操作により、性能を最適化しながら、異容量ストレージ装置によって構成されるデータ復元機能を有するディスクアレイ装置1を提供することができる。
(5)まとめ
各実施形態によるディスクアレイ装置は、データ管理部を用いて、データを複数のストライプデータに分割し、複数のストレージ装置に分散させて格納し、管理している。ここで、複数のストレージ装置のうち、少なくとも1つの容量が他のストレージ装置の容量とは異なっている。そして、データ管理部は、複数のストレージ装置のそれぞれの容量に応じて、ストライプデータのサイズを決定し、各ストレージ装置には同一サイズのストライプデータを格納するように制御する(図2及び8参照)。このようにすることにより、最小容量のストレージ装置に影響されずに、各ストレージ装置の容量を効率よく利用することが可能となる。つまり、ストレージ装置の容量の選択が自由になるので、ディスクアレイ装置とストレージ装置とから構成されるシステム(ストレージシステム)を構築する際のコストを抑えることが可能となる。
ホスト装置からアクセス要求を受信したとき(RAID0の場合)、データ管理部は、まず、アクセス要求に含まれる要求LBA(仮想ディスク空間でのLBA)をチャンクのサイズで除算することにより、要求LBAの位置が含まれるチャンクである先頭チャンクを計算する。次に、データ管理部は、要求LBAと先頭チャンクと先頭チャンクに含まれるストライプデータのサイズの情報から先頭チャンクの開始位置から要求LBAまでの距離であるオフセットを計算してアクセスを開始すべきストレージ装置(アクセス開始ストレージ装置)を特定する。そして、データ管理部は、先頭チャンクが何番目のチャンクかを示す先頭チャンク位置情報とオフセットからアクセス開始ストレージ装置におけるアクセス開始LBA(実ディスク空間でのLBA)を特定する。このようにすることにより、各ストレージ装置においてストライプサイズが異なっていても、高速に所望のデータにアクセスすることが可能となる。
RAID5の場合、データ管理部は、ストライプデータの集合をチャンクとして管理し、対象のチャンクが何番目のチャンクに相当するかの情報からパリティ格納を担当するストレージ装置(パリティ担当ストレージ装置)を決定し、パリティ担当ストレージ装置以外のストレージ装置のストライプデータからパリティ(最大容量のストレージ装置におけるストライプデータに等しいサイズにする)を生成し、パリティ担当ストレージ装置にはパリティのみを格納し、パリティ担当ストレージ装置以外のストレージ装置にはそれらの容量に応じて決定されたサイズのストライプデータを格納するように制御する。このようにすることにより、RAID5に対応しながら、最小容量のストレージ装置に影響されずに、各ストレージ装置の容量を効率よく利用することが可能となる。
このとき、複数のストレージ装置のそれぞれが1回ずつパリティ担当ストレージ装置となった場合の単位を1サイクルとすると、データ管理部は、1サイクルに含まれる全てのチャンクのパリティ以外のストライプデータの合計サイズが各サイクル間で互いに等しく構成されるように管理する。このようにデータを管理することにより、高速なアクセス性を実現することができるようになる。
より具体的に述べると、ホスト装置からアクセス要求を受信したとき(RAID5の場合)、データ管理部は、まず、アクセス要求に含まれる要求LBA(仮想ディスク空間でのLBA)を1サイクルに含まれる全チャンク内のストライプデータの合計サイズで除算することにより、前記要求LBAの位置が何番目のサイクルに該当するかを計算する。次に、データ管理部は、該当サイクルの先頭から要求LBAまでの距離である第1のオフセットを計算する。そして、データ管理部は、第1のオフセットと該当サイクルに含まれる各チャンクのサイズ情報から要求LBAの位置が含まれるチャンクである先頭チャンクを特定する。さらに、データ管理部は、要求LBAと先頭チャンクと先頭チャンクに含まれるストライプデータのサイズの情報から先頭チャンクの開始位置から要求LBAまでの距離である第2のオフセットを計算してアクセスを開始すべきストレージ装置(アクセス開始ストレージ装置)を特定する。最後に、データ管理部は、先頭チャンクが何番目のチャンクかを示す先頭チャンク位置情報と、アクセス開始ストレージ装置の情報と、当該アクセス開始ストレージ装置のストライプデータサイズと、当該アクセス開始ストレージ装置が前記パリティ担当ストレージ装置となった回数の情報と、からアクセス開始ストレージ装置におけるアクセス開始LBA(実ディスク空間でのLBA)を特定する。以上のような演算によってアクセス開始LBAが特定されるので、複雑なアルゴリズムを使用することなく、所望のアクセス性能を実現することができるようになる。
また、複数のストレージ装置のうち少なくとも1つのストレージ装置(被代替ストレージ装置:例えば、故障したストレージ装置)を、それより容量の大きい代替ストレージ装置と交換する場合、データ管理部は、被代替ストレージ装置のデータを代替ストレージ装置に格納する。この場合、データ管理部は、被代替ストレージ装置以外のストレージ装置に格納されるデータから被代替ストレージ装置(故障ストレージ装置)のデータを復元し、当該復元データを代替ストレージ装置に格納する。また、被代替ストレージ装置以外のストレージ装置(現存ストレージ装置)で代替ストレージ装置よりも容量が小さいものがある場合、データ管理部は、当該容量の小さい現存ストレージ装置のデータを順次代替ストレージ装置にコピーし、被代替ストレージ装置より容量が大きく、容量に関して直近の現存ストレージ装置に被代替ストレージ装置のデータを格納する。このようにすることにより、代替ストレージ装置の容量を最大限に活用しつつ、故障ストレージ装置を交換することができる。つまり、代替ストレージ装置よりも容量の小さい現存ストレージ装置があるにもかかわらず、非代替ストレージ装置のデータを格納するだけでは、代替ストレージ装置に多くの空き領域(以後使われない空き領域)が存在してしまう。そこで、代替ストレージ装置よりも少ない容量の現存ストレージ装置が存在する場合には、非代替ストレージ装置よりも容量が大きい現存ストレージ装置の中で最小の容量を有する現存ストレージ装置に非代替ストレージ装置のデータを格納させる。当該現存ストレージ装置のデータは、代わりに他の容量の大きい現存ストレージ装置或いは代替ストレージ装置に格納することによって、ストレージ装置の容量を効率よく使用することができる。
なお、本発明は、実施形態の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ(又はCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD−ROM、DVD−ROM、ハードディスク、光ディスク、光磁気ディスク、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)などが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータ上のメモリに書きこまれた後、そのプログラムコードの指示に基づき、コンピュータのCPUなどが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。
また、実施の形態の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することにより、それをシステム又は装置のハードディスクやメモリ等の記憶装置又はCD-RW、CD-R等の記憶媒体に格納し、使用時にそのシステム又は装置のコンピュータ(又はCPUやMPU)が当該記憶装置や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしても良い。
1: ディスクアレイ装置
2: ストレージ装置
3: ホスト装置
20: 仮想ストレージ
25: ストライプ
26: パリティ

Claims (11)

  1. ホスト装置から元データを受信する受信部と、
    前記元データを複数のストライプデータに分割し、複数のストレージ装置に分散させて格納するデータ管理部と、を備え、
    前記複数のストレージ装置のうち、少なくとも1つの容量が他のストレージ装置の容量とは異なり、
    前記データ管理部は、前記複数のストレージ装置のそれぞれの容量に応じて、前記ストライプデータのサイズを決定し、各ストレージ装置には同一サイズのストライプデータを格納するように制御することを特徴とするディスクアレイ装置。
  2. 請求項1において、
    前記データ管理部は、前記複数のストレージ装置のそれぞれに格納されるストライプデータ1つずつから構成されるデータ集合をチャンクとして管理し、
    前記元データは、前記チャンクの集合によって構成されることを特徴とするディスクアレイ装置。
  3. 請求項2において、
    前記受信部が前記ホスト装置からアクセス要求を受信したとき、
    前記データ管理部は、
    前記アクセス要求に含まれる要求LBA(仮想ディスク空間でのLBA)を前記チャンクのサイズで除算することにより、前記要求LBAの位置が含まれるチャンクである先頭チャンクを計算し、
    前記要求LBAと前記先頭チャンクと前記先頭チャンクに含まれるストライプデータのサイズの情報から前記先頭チャンクの開始位置から前記要求LBAまでの距離であるオフセットを計算してアクセスを開始すべきストレージ装置(アクセス開始ストレージ装置)を特定し、
    前記先頭チャンクが何番目のチャンクかを示す先頭チャンク位置情報と前記オフセットから前記アクセス開始ストレージ装置におけるアクセス開始LBA(実ディスク空間でのLBA)を特定することを特徴とするディスクアレイ装置。
  4. 請求項1において、
    前記データ管理部は、前記ストライプデータの集合をチャンクとして管理し、対象のチャンクが何番目のチャンクに相当するかの情報からパリティ格納を担当するストレージ装置(パリティ担当ストレージ装置)を決定し、前記パリティ担当ストレージ装置以外のストレージ装置のストライプデータからパリティを生成し、前記パリティ担当ストレージ装置には前記パリティのみを格納し、前記パリティ担当ストレージ装置以外のストレージ装置にはそれらの容量に応じて決定されたサイズの前記ストライプデータを格納するように制御することを特徴とするディスクアレイ装置。
  5. 請求項4において、
    前記複数のストレージ装置のそれぞれが1回ずつ前記パリティ担当ストレージ装置となった場合の単位を1サイクルとすると、前記データ管理部は、1サイクルに含まれる全てのチャンクのパリティ以外のストライプデータの合計サイズが各サイクル間で互いに等しく構成されるように管理することを特徴とするディスクアレイ装置。
  6. 請求項5において、
    前記受信部が前記ホスト装置からアクセス要求を受信したとき、
    前記データ管理部は、
    前記アクセス要求に含まれる要求LBA(仮想ディスク空間でのLBA)を前記1サイクルに含まれる全チャンク内のストライプデータの合計サイズで除算することにより、前記要求LBAの位置が何番目のサイクルに該当するかを計算し、
    前記該当サイクルの先頭から前記要求LBAまでの距離である第1のオフセットを計算し、
    前記第1のオフセットと前記該当サイクルに含まれる各チャンクのサイズ情報から前記要求LBAの位置が含まれるチャンクである先頭チャンクを特定し、
    前記要求LBAと前記先頭チャンクと前記先頭チャンクに含まれるストライプデータのサイズの情報から前記先頭チャンクの開始位置から前記要求LBAまでの距離である第2のオフセットを計算してアクセスを開始すべきストレージ装置(アクセス開始ストレージ装置)を特定し、
    前記先頭チャンクが何番目のチャンクかを示す先頭チャンク位置情報と、前記アクセス開始ストレージ装置の情報と、当該アクセス開始ストレージ装置のストライプデータサイズと、当該アクセス開始ストレージ装置が前記パリティ担当ストレージ装置となった回数の情報と、から前記アクセス開始ストレージ装置におけるアクセス開始LBA(実ディスク空間でのLBA)を特定することを特徴とするディスクアレイ装置。
  7. 請求項1において、
    前記複数のストレージ装置のうち少なくとも1つのストレージ装置(被代替ストレージ装置)を、それより容量の大きい代替ストレージ装置と交換する場合、
    前記データ管理部は、前記被代替ストレージ装置のデータを前記代替ストレージ装置に格納することを特徴とするディスクアレイ装置。
  8. 請求項7において、
    前記データ管理部は、前記被代替ストレージ装置以外のストレージ装置に格納されるデータから前記被代替ストレージ装置のデータを復元し、当該復元データを前記代替ストレージ装置に格納することを特徴とするディスクアレイ装置。
  9. 請求項7において、
    前記被代替ストレージ装置以外のストレージ装置(現存ストレージ装置)で前記代替ストレージ装置よりも容量が小さいものがある場合、前記データ管理部は、当該容量の小さい現存ストレージ装置のデータを順次前記代替ストレージ装置にコピーし、前記被代替ストレージ装置より容量が大きく、容量に関して直近の現存ストレージ装置に前記被代替ストレージ装置のデータを格納することを特徴とするディスクアレイ装置。
  10. 複数のストレージ装置が接続され、受信部とデータ管理部を含むディスクアレイ装置の制御方法であって、
    前記複数のストレージ装置のうち、少なくとも1つの容量が他のストレージ装置の容量とは異なり、
    前記制御方法は、
    前記受信部がホスト装置から元データを受信する受信ステップと、
    前記データ管理部が、複数のストライプデータに分割し、複数のストレージ装置に分散させて格納する格納ステップと、を備え、
    前記格納ステップにおいて、前記データ管理部は、前記複数のストレージ装置のそれぞれの容量に応じて、前記ストライプデータのサイズを決定し、各ストレージ装置には同一サイズのストライプデータを格納するように制御することを特徴とする制御方法。
  11. コンピュータを請求項1に記載のディスクアレイ装置として機能させるためのプログラム。
JP2009133176A 2009-06-02 2009-06-02 ディスクアレイ装置、及びその制御方法、並びにプログラム Pending JP2010282281A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009133176A JP2010282281A (ja) 2009-06-02 2009-06-02 ディスクアレイ装置、及びその制御方法、並びにプログラム
US12/791,204 US20100306468A1 (en) 2009-06-02 2010-06-01 Disk array, and disk array control method and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009133176A JP2010282281A (ja) 2009-06-02 2009-06-02 ディスクアレイ装置、及びその制御方法、並びにプログラム

Publications (1)

Publication Number Publication Date
JP2010282281A true JP2010282281A (ja) 2010-12-16

Family

ID=43221572

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009133176A Pending JP2010282281A (ja) 2009-06-02 2009-06-02 ディスクアレイ装置、及びその制御方法、並びにプログラム

Country Status (2)

Country Link
US (1) US20100306468A1 (ja)
JP (1) JP2010282281A (ja)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8671265B2 (en) 2010-03-05 2014-03-11 Solidfire, Inc. Distributed data storage system providing de-duplication of data using block identifiers
CN102024059B (zh) * 2010-12-31 2012-07-18 成都市华为赛门铁克科技有限公司 一种文件系统内实现独立磁盘冗余阵列保护的方法及装置
US8601085B1 (en) * 2011-03-28 2013-12-03 Emc Corporation Techniques for preferred path determination
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
TW201445429A (zh) 2013-05-22 2014-12-01 Asmedia Technology Inc 磁碟陣列系統及資料處理方法
US9117086B2 (en) 2013-08-28 2015-08-25 Seagate Technology Llc Virtual bands concentration for self encrypting drives
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US9772787B2 (en) 2014-03-31 2017-09-26 Amazon Technologies, Inc. File storage using variable stripe sizes
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
US9952950B1 (en) 2014-09-08 2018-04-24 Western Digital Technologies, Inc. Data management in RAID environment
US20160070644A1 (en) * 2014-09-10 2016-03-10 Netapp, Inc. Offset range operation striping to improve concurrency of execution and reduce contention among resources
JP2016057876A (ja) * 2014-09-10 2016-04-21 富士通株式会社 情報処理装置、入出力制御プログラム、及び入出力制御方法
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
US9762460B2 (en) 2015-03-24 2017-09-12 Netapp, Inc. Providing continuous context for operational information of a storage system
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
KR102546474B1 (ko) 2016-04-25 2023-06-22 삼성전자주식회사 모바일 장치의 동작 방법 및 모바일 장치
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US11461273B1 (en) * 2016-12-20 2022-10-04 Pure Storage, Inc. Modifying storage distribution in a storage system that includes one or more storage devices
EP3553664B1 (en) * 2017-11-03 2022-07-27 Huawei Technologies Co., Ltd. Method and apparatus for calculating available capacity of storage system
US11842074B2 (en) * 2021-03-21 2023-12-12 Vast Data Ltd. Striping in a storage system
US11537472B1 (en) * 2021-10-14 2022-12-27 Vast Data Ltd. Striping based on failure domains rules

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6591339B1 (en) * 1999-05-03 2003-07-08 3Ware, Inc. Methods and systems for selecting block sizes for use with disk arrays

Also Published As

Publication number Publication date
US20100306468A1 (en) 2010-12-02

Similar Documents

Publication Publication Date Title
JP2010282281A (ja) ディスクアレイ装置、及びその制御方法、並びにプログラム
US8938582B2 (en) Storage systems with reduced energy consumption
CN107817952B (zh) 存储系统
JP5112003B2 (ja) ストレージ装置及びこれを用いたデータ格納方法
US8639898B2 (en) Storage apparatus and data copy method
US7899981B2 (en) Flash memory storage system
JP5216463B2 (ja) ストレージ装置、その記憶領域管理方法及びフラッシュメモリパッケージ
US11150846B2 (en) Storage system, computer-readable recording medium, and control method for system that reconstructs and distributes data
JP5816303B2 (ja) フラッシュメモリを含むストレージシステム、及び記憶制御方法
US20220027239A1 (en) Storage system
JP2016530637A (ja) Raidパリティストライプ再構成
JP2011065625A (ja) 大容量ディスクドライブの使用方法及び装置
WO2016142998A1 (ja) 計算機システム
CN111158587A (zh) 基于存储池虚拟化管理的分布式存储系统及数据读写方法
JP2000010738A (ja) ディスクアレイシステム、同システムに適用される記憶容量拡張方法および記録媒体
US11899533B2 (en) Stripe reassembling method in storage system and stripe server
TWI376683B (en) Method for implementing fault tolerance in a drive array and storage device using said method
US8433949B2 (en) Disk array apparatus and physical disk restoration method
WO2018229944A1 (ja) ストレージシステム及びストレージシステムの制御方法
TWI607303B (zh) 具有虛擬區塊及磁碟陣列架構之資料儲存系統及其管理方法
WO2018235132A1 (en) DISTRIBUTED STORAGE SYSTEM
CN116483263A (zh) 一种存储系统的存储设备、存储系统
JP5472930B2 (ja) ディスクアレイ装置を備えたストレージシステム、ディスクアレイ装置及びエクステントサイズ変更方法
US20210191828A1 (en) Storage system and rebuilding method for storage system
JP5215434B2 (ja) 複数の不揮発性メモリを備えたストレージ装置、ストレージコントローラ及び論理ディスク生成方法