JP2013196276A - 情報処理装置、プログラムおよびデータ配置方法 - Google Patents

情報処理装置、プログラムおよびデータ配置方法 Download PDF

Info

Publication number
JP2013196276A
JP2013196276A JP2012061747A JP2012061747A JP2013196276A JP 2013196276 A JP2013196276 A JP 2013196276A JP 2012061747 A JP2012061747 A JP 2012061747A JP 2012061747 A JP2012061747 A JP 2012061747A JP 2013196276 A JP2013196276 A JP 2013196276A
Authority
JP
Japan
Prior art keywords
data
stripe
stored
block
blocks
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
JP2012061747A
Other languages
English (en)
Inventor
Yoshinari Ono
吉成 大野
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012061747A priority Critical patent/JP2013196276A/ja
Priority to EP13155595.5A priority patent/EP2642379A2/en
Priority to US13/772,398 priority patent/US20130246842A1/en
Publication of JP2013196276A publication Critical patent/JP2013196276A/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
    • 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/0611Improving I/O performance in relation to response time
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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

Abstract

【課題】ライトペナルティの発生を抑止する。
【解決手段】各々が、複数の記憶装置のそれぞれの1ブロックの記憶領域の集合である複数のストライプの中から、少なくとも1つのブロックにデータが格納され、他のブロックに該データの誤り訂正符号が格納されているストライプを、移動元として選択する。第2の選択手段は、該移動元のストライプ以外のストライプの中から、少なくとも1つのブロックにデータが格納されており、かつ該移動元のストライプ内のデータが格納されているブロック数と同数以上の空きブロック数を有するストライプを、移動先として選択する。移動手段は、該移動元のストライプに格納されているデータを、該移動先のストライプのブロックに移動する。
【選択図】図1

Description

本発明は、情報処理を行う情報処理装置、プログラムおよびデータ配置方法に関する。
RAID(Redundant Array of Inexpensive Disks)は、複数のハードディスクを組み合わせて運用することで、耐障害性を確保して大容量の記憶領域を構築する技術である。RAIDの実装構成としては、ディスク記憶領域をストライプ化し、パリティによりデータの保護を行うものがある。
これは、ハードディスクの記憶空間を複数のストライプで構成し、分割したデータをストライプに書き込み(ストライピング)、データの書き込み時にはパリティ計算を行って、計算結果を保持しておく。
このようなRAIDでは、複数のハードディスクから同時並行読み出しが可能なので、読み出し速度を高めることが可能である。
また、一部のハードディスクに障害が発生しても、残りのデータとデータ修正用のパリティとにもとづいて、欠損したデータを算出できるので、元のデータを回復することが可能である。
従来のRAID技術として、ストライプ内のデータを他のストライプに移動し、ストライプの再構築を行って記憶領域を拡張する技術が提案されている。また、ディスクドライブの増設時、既設のディスクドライブに格納されているデータを、既設のディスクドライブと、増設されたディスクドライブとに分散して格納する技術が提案されている。
特開平8−115173号公報 特開2009−230352号公報
しかし、上記のような構成のRAIDでは、データおよびパリティがすでに書き込まれているストライプの空き領域に、新たなデータを書き込む場合、ライトペナルティが生じるという問題がある。
ライトペナルティは、パリティ処理によるデータ書き込み時のオーバーヘッドであり、ライトペナルティの発生は、データ書き込み処理を遅延させる。また、ライトペナルティが頻繁に生じると、データ書き込み処理の遅延が増大し、システム運用効率の低下が引き起こされることになる。
1つの側面では、本発明は、ライトペナルティの発生を抑止した情報処理装置、プログラムおよびデータ配置方法を提供することを目的とする。
1つの案では、情報処理装置が提供される。情報処理装置は、各々が、複数の記憶装置のそれぞれの1ブロックの記憶領域の集合である複数のストライプの中から、少なくとも1つのブロックにデータが格納され、他のブロックに該データの誤り訂正符号が格納されているストライプを、移動元として選択する第1の選択手段と、該移動元のストライプ以外のストライプの中から、少なくとも1つのブロックにデータが格納されており、かつ該移動元のストライプ内のデータが格納されているブロック数と同数以上の空きブロック数を有するストライプを、移動先として選択する第2の選択手段と、該移動元のストライプに格納されているデータを、該移動先のストライプのブロックに移動する移動手段とを有する。
1態様によれば、ライトペナルティの発生を抑止することが可能になる。
情報処理装置の構成例を示す図である。 データの選択および移動の動作例を説明するための図である。 データの選択および移動の動作例を説明するための図である。 ライトペナルティの発生例を示す図である。 ライトペナルティの発生が抑止される場合のデータ書き込み処理を示す図である。 ファイル管理システムの構成例を示す図である。 ファイルサーバの機能構成例を示す図である。 ファイルサーバのハードウェア構成例を示す図である。 ファイル管理の構成例を示す図である。 データ数管理テーブルの構成例を示す図である。 データ有無管理テーブルの構成例を示す図である。 データ格納状態を示す図である。 データ格納に変化があった状態を示す図である。 ハードディスク追加後のストライプ状態を示す図である。 データ再配置状態を示す図である。 データ再配置状態を示す図である。 データ配置制御を示すフローチャートである。 データ配置制御を示すフローチャートである。 移動元ストライプ探索処理の詳細フローを示す図である。 移動先ストライプ探索処理の詳細フローを示す図である。 データ移動処理の詳細フローを示す図である。
以下、本発明の実施の形態を図面を参照して説明する。図1は情報処理装置の構成例を示す図である。情報処理装置10は、記憶装置11−1〜11−N、選択手段12(第1の選択手段)、選択手段13(第2の選択手段)および移動手段14を備える。
記憶装置11−1〜11−Nには、ストライプs1〜snが形成されている。ストライプs1〜snは、各々が記憶装置11−1〜11−Nのそれぞれの1ブロックの記憶領域の集合であり、ストライプs1〜sn内のブロックは、データと、該データの誤り訂正符号(以下、パリティ)との格納に使用される。
選択手段12は、記憶装置11−1〜11−Nそれぞれの1ブロックずつの記憶領域をまとめた複数のストライプs1〜snのうち、少なくとも1つのブロックにデータが格納され、他のブロックに該データの誤り訂正符号が格納されているストライプを、移動元として選択する。
選択手段13は、移動元のストライプ以外のストライプのうち、少なくとも1つのブロックにデータが格納されており、かつ該移動元のストライプ内のデータが格納されているブロック数と同数以上の空きブロック数を有するストライプを、移動先として選択する。
移動手段14は、該移動元のストライプに格納されているデータを、該移動先のストライプのブロックに移動する。
図2、図3はデータの選択および移動の動作例を説明するための図である。図2はデータの移動前の状態を示し、図3はデータの移動後の状態を示している。記憶装置11−1〜11−5があるとし、記憶装置11−1の記憶領域は、ブロックb1−1〜b1−4に分けられている。
また、記憶装置11−2の記憶領域は、ブロックb2−1〜b2−4に分けられ、記憶装置11−3の記憶領域は、ブロックb3−1〜b3−4に分けられている。さらに、記憶装置11−4の記憶領域は、ブロックb4−1〜b4−4に分けられ、記憶装置11−5の記憶領域は、ブロックb5−1〜b5−4に分けられている。
一方、記憶装置11−1〜11−5のこれら記憶空間は、ストライプs1〜s4で形成されており、ストライプs1〜s4は、記憶装置11−1〜11−5に渡って延び、記憶装置11−1〜11−5それぞれのブロックを有している。
すなわち、ストライプs1は、ブロックb1−1、b2−1、b3−1、b4−1、b5−1を含む。また、ストライプs2は、ブロックb1−2、b2−2、b3−2、b4−2、b5−2を含む。
同様にして、ストライプs3は、ブロックb1−3、b2−3、b3−3、b4−3、b5−3を含み、ストライプs4は、ブロックb1−4、b2−4、b3−4、b4−4、b5−4を含む。
図2における、ストライプs1〜s4のデータおよびパリティの格納状態について示すと、ストライプs1では、ブロックb2−1にデータB2が格納され、ブロックb5−1にデータB1が格納され、ブロックb3−1、b4−1は空きブロックとなっている。また、データB2、B1から算出されたパリティp1がブロックb1−1に格納されている。
ストライプs2では、ブロックb2−2にデータA3が格納され、ブロックb3−2にデータC1が格納され、ブロックb4−2にデータB3が格納され、ブロックb5−2は空きブロックとなっている。また、データA3、C1、B3から算出されたパリティp2がブロックb1−2に格納されている。
ストライプs3では、ブロックb2−3にデータC2が格納され、ブロックb3−3にデータF1が格納され、ブロックb4−3にデータF3が格納され、ブロックb5−3にデータF2が格納されている。また、データC2、F1、F3、F2から算出されたパリティp3がブロックb1−3に格納されている。
ストライプs4では、ブロックb2−4にデータA1が格納され、ブロックb3−4にデータA2が格納され、ブロックb4−4、b5−4は空きブロックとなっている。また、データA1、A2から算出されたパリティp4がブロックb1−4に格納されている。
上記のように、1つの情報単位のデータは、複数のストライプに分散されて格納されている(例えば、1つの情報単位を構成するデータA1〜A3は、ストライプs2、s4に分散されて格納されている)。
また、上記では、ストライプ単位で計算されたパリティを、記憶装置11−1にまとめて格納しているが、記憶装置11−1〜11−4に分散して格納してもよい。
次にデータの選択動作について説明する。図2において、選択手段12は、ストライプs1〜s4のうち、少なくとも1つのブロックにデータが格納され、他のブロックに該データの誤り訂正符号が格納されているストライプを、移動元として選択する。ここでは、ストライプs4を選択したとする。
また、選択手段13は、移動元のストライプs4以外のストライプs1〜s3のうち、少なくとも1つのブロックにデータが格納されており、かつ移動元のストライプs4内のデータが格納されているブロック数と同数以上の空きブロック数を有するストライプを移動先として選択する。
この例では、選択手段12で選択された、移動元のストライプs4内のデータが格納されているブロック数は2であるので、空きブロック数が2以上のストライプを選択することになる。
ここでは、ストライプs1が該当する(ストライプs2の空きブロック数は1、ストライプs3は空きブロックを持たない)。したがって、選択手段13は、ストライプs1をデータ移動先のストライプとして選択する。
次にデータが移動して、データが1つも格納されていないストライプが生成されるまでの動作について説明する。図3において、移動手段14は、移動元のストライプs4に格納されているデータA1、A2を、移動先のストライプs1の空きブロックに移動する。
図3では、ストライプs4のブロックb2−4に格納されていたデータA1を、ストライプs1のブロックb3−1の空きブロックに移動している。また、ストライプs4のブロックb3−4に格納されていたデータA2を、ストライプs1のブロックb4−1の空きブロックに移動している。
なお、データ移動後のストライプs1では、格納データに変更があったので、パリティがあらためて計算される。新たなパリティ計算結果であるパリティp1aは、ブロックb1−1に格納されている。
一方、ストライプs4では、格納していたすべてのデータA1、A2がストライプs1へ移動したので、パリティp4も無くなり、ブロックb1−4、b2−4、b3−4、b4−4、b5−4はすべて空き領域となる。このため、ストライプs4は、データを1つも格納していないストライプとなる。
次にライトペナルティの発生と、情報処理装置10による上記の制御によって、ライトペナルティの発生が抑止されることについて説明する。
図4はライトペナルティの発生例を示す図である。データとパリティがすでに書き込まれているストライプの空き領域に、新たなデータを書き込む場合には、ライトペナルティが生じる。
例えば、5ブロックから構成されるストライプs0があって、ストライプs0中には、データd1〜d3と、データd1〜d3から算出したパリティprとがすでに書き込まれているとする。このような状態で、ストライプs0の空きブロックに、データe1を書き込む場合を考える。
この場合、まず、パリティprが読み出される。そして、パリティprと書き込みデータe1とを用いて、新たなパリティ(パリティpr1とする)を算出し、その後、データe1と新パリティpr1とがストライプs0へ書き込まれることになる。
このように、ストライプs0の空きブロックにデータe1を書き込む場合、新たなパリティ計算をするために、ストライプs0に書き込み済みのパリティprを一旦読み出さなければならない。
そして、パリティprと書き込みデータe1とを用いて、パリティ計算を行って、データe1の書き込みと、新パリティpr1の再書き込みとが行われることになる。
このような処理がライトペナルティである。ライトペナルティでは、パリティ算出時に、すでに格納されているパリティを読み出すオーバーヘッドが存在するため、その分、データ書き込み処理の速度が遅延することになる。
図5はライトペナルティの発生が抑止される場合のデータ書き込み処理を示す図である。情報処理装置10では、図1〜図3で上述したデータの選択・移動処理を行って、データが1つも格納されていないストライプを生成する。そして、データの書き込み要求があった場合には、データが何ら格納されていないストライプにデータを書き込むようにする(データが格納されていなければ、パリティも格納されていない)。
例えば、図5に示すように、データが1つも格納されていないストライプs5があり、ストライプs5にデータd1〜d3を書き込むとする。この場合、データd1〜d3を用いてパリティ計算が行われ、ストライプs5の空きブロックには、データd1〜d3と、パリティ計算結果であるパリティprとが書き込まれる。
このように、データを格納していないストライプにデータを書き込む場合は、パリティ算出時に、書き込み済みのデータおよびパリティを読み出すといったオーバーヘッドが存在しないので、データ書き込み処理速度の遅延を抑制することができる。すなわち、ライトペナルティの発生を抑止することが可能になる。
以上説明したように、情報処理装置10では、記憶装置11−1〜11−Nの1ブロックずつの記憶領域をまとめた複数のストライプに対し、ストライプ内のデータを、空き領域がある別のストライプに移動するデータ配置制御を行うこととした。
これにより、データが格納されていないストライプが生成され、該ストライプにデータ書き込みが行われることで、ライトペナルティの発生を抑止することが可能になり、データの書き込み処理の遅延を抑制することが可能になる。
次に情報処理装置10の適用例として、ファイルサーバに適用した場合の実施の形態について以降詳しく説明する。
図6はファイル管理システムの構成例を示す図である。ファイル管理システム1は、ファイルサーバ20およびサーバ30を備える。ファイルサーバ20とサーバ30は、LAN(Local Area Network)で接続されている。
ファイルサーバ20は、ストレージ部23を含み、ストレージ部23にはRAIDが構築されている。ファイルサーバ20は、RAID制御と、ファイルシステム管理を一元的に行う。また、ストレージ部23に格納されているデータをファイルとして、サーバ30へLAN経由で提供する。
次にファイルサーバ20の構成および動作を説明する前に、従来のファイルサーバの課題について説明する。ファイルサーバでは、ファイルシステム制御の実行中、しばらくすると多数のファイルを格納するようになり、ストレージ容量が足りなくなる場合がある。
このような場合に備えて、ファイルサーバでは、データを格納するハードディスクを増設して容量を増やす機能を備えている。
空き容量が不足している状態でハードディスクを追加するような場合、これまで使用していたハードディスクの領域にはデータを追加して記憶できる領域が少なくなっている。このため、新規の書き込みデータのほとんどは、追加されたハードディスクに記憶されていくことになる。
このように、従来のファイルサーバでは、RAIDを構成するハードディスクのうち、特定のハードディスクにのみデータ書き込みのアクセスが集中してしまうおそれがあり、書き込み処理の遅延が発生してしまう。
一方、データ書き込みが特定のハードディスクに集中してしまうと、別の問題を引き起こすこともある。すなわち、一般的には最近作られたデータを参照する場合が多いので、最近作成されたデータを読み出す場合には、新規に追加したハードディスクのみにアクセスが集中してしまう場合がある。
データの読み出し時は、RAIDを構成するすべてのハードディスクから均等にデータ読み出しが行われることが最も高速にデータを読み出せる。しかし、ディスクアクセスが集中してしまうと、高速読み出しが不可能になる。
例えば、データを格納する3台のハードディスクに均等にアクセスされる場合の処理時間と、1台にハードディスクに集中してアクセスされる場合の処理時間とを比べると、最大で3倍の時間がかかってしまう。
本技術は、このような点にも鑑みてなされたものであり、特定のハードディスクへアクセスが集中されることを回避し、データの書き込み/読み出し処理の遅延の抑制を図るものである。
次にファイルサーバ20の構成について説明する。図7はファイルサーバの機能構成例を示す図である。ファイルサーバ20は、データ配置制御部21、記憶部22、ストレージ部23、RAID制御部24およびファイルシステム25を備える。
データ配置制御部21は、図1で上述した選択手段12、13および移動手段14の機能を含み、データ配置制御を行う。記憶部22は、後述のデータ数管理テーブルT1と、ハードディスク毎のデータ有無管理テーブルT2,T2a,T2b,・・・を保持する。
ストレージ部23は、ハードディスクD0〜Dn(図1の記憶装置11−1〜11−Nに該当)を含み、RAID制御部24は、ハードディスクD0〜Dnに対するRAID制御を行う。ファイルシステム25は、ファイル管理制御を行う。
図8はファイルサーバのハードウェア構成例を示す図である。ファイルサーバ20は、プロセッサ201、ハードディスク制御部202、ストレージ部23、ネットワーク制御部204、メモリ205、SSD(Solid State Drive)206、ネットワークポート207、シリアルポート208および光学ドライブ装置209を備える。
プロセッサ201、ハードディスク制御部202、ネットワーク制御部204、メモリ205、SSD206、シリアルポート208および光学ドライブ装置209は、内部バス2aを通じて互いに接続している。
プロセッサ201は、CPU(Central Processing Unit)であり、各種プログラムを実行してデータ配置制御およびファイルシステム制御を行う。なお、プロセッサ201は、図7に示したデータ配置制御部21およびファイルシステム25を実現する。
ネットワーク制御部204は、例えば、ネットワーク制御の専用チップであり、ネットワークポート207を介して、外部ネットワークとのインタフェース制御を行う。
ハードディスク制御部202は、例えば、SAS(Serial Attached SCSI(Small Computer System Interface))コントローラに該当し、図7に示したRAID制御部24を実現する。
ハードディスク制御部202は、プロセッサ201の指示にもとづき、ストレージ部23内のハードディスクD0〜Dnに対するデータの書き込み/読み出しの制御を行う。
メモリ205は、例えば、RAM(Random Access Memory)に該当し、図7に示した記憶部22を実現する。SSD206は、制御手順格納領域を有して、ファイルサーバ20の動作手順を記した各種のプログラムを格納する。
例えば、RAID制御、ファイルシステム制御およびデータ配置制御などのプログラムが、制御手順格納領域に格納される。なお、これらプログラムは、プロセッサ201によって読み出され、メモリ205上に格納、展開された後に実行される。
ネットワークポート207は、LANケーブルを介して外部端末3aと接続し、シリアルポート208は、シリアルケーブルを介して外部端末3aと接続する。ネットワークポート207およびシリアルポート208は、外部の装置と通信を行うためのインタフェースポートとなる。なお、ネットワークポート207には、LANケーブルを介して図6に示したサーバ30も接続される。光学ドライブ装置209は、レーザ光などを利用して、光ディスク209aに記録されたデータの読み取りを行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。また、コンピュータで本実施の形態の処理機能を実現する場合、ファイルサーバ20が有する機能の処理内容を記述したプログラムが提供される。
そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD、DVD−RAM、CD−ROM/RWなどがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。なおプログラムを記録する記録媒体には、一時的な伝搬信号自体は含まれない。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
また、上記の処理機能の少なくとも一部を、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現することもできる。
次にファイルサーバ20で行われるファイル管理の仕組みについて説明する。図9はファイル管理の構成例を示す図である。
ハードディスク等の記憶媒体にデータを管理するための方法としては、ファイルシステムを利用する方法が知られている。ファイルシステムは、一般的に、データを管理・制御するための領域と、データそのものの領域とに大別される。
前者はinodeと呼ばれることが多い。また、後者は、図9では、Direct blocks、Indirect blocks、Double indirect blocksとして示されている(総称する場合は、データブロックと呼ぶ)。
1つのデータには、少なくとも1つのinodeが割り当てられて、データが管理される。inodeを参照することで、ファイルのメタデータ(属性情報など)や、実際のデータが格納されている場所などがわかるようになっている。
例えば、inodeでは、データを格納したブロックの位置が、ハードディスクの番号とストライプの番号(またはハードディスク内での該当ストライプに対応するブロック番号)との組で指定されている。なお、データは、一覧表示することが多いため、inode情報は、キャッシュ上に存在していることが多い。
また、データを再配置する場合、データブロックの場所が変わることになる。このような場合、inodeに格納された、データブロックの位置情報が更新される。Indirect blocks、Double indirect blocksの場合は、inode自体は変更されないが、それらデータブロックを指し示している制御情報41、42(図中、丸印で囲んだ部分)を格納している部分が更新される。
制御情報41、42には、ハードディスクの識別子と、そのハードディスク内での位置情報が格納されている。なお、inodeおよび制御情報41、42がキャッシュ上に存在している状態は、inode cacheとして表現される。
次にデータ数管理テーブルT1およびデータ有無管理テーブルT2について説明する。図10はデータ数管理テーブルの構成例を示す図である。データ数管理テーブルT1は、「ストライプS(i)」および「ストライプ単位のデータ数」の情報が登録される。
「ストライプS(i)」は、ストライプの識別情報(ストライプ番号)である。なお、ストライプ番号は、通常、ブロックのアドレスの若い方から順に番号が付けられる。
「ストライプ単位のデータ数」は、ストライプ内に格納されているデータの数である。データ数の最大値は、RAIDを構成するハードディスクの数となる。
なお、データ数管理テーブルT1は、1つのRAIDあたりに1つ存在する。また、テーブル表現として、S(x)=yと書いた場合は、番号xのストライプには、有効なデータがy個格納されていることを示す。
図11はデータ有無管理テーブルの構成例を示す図である。データ有無管理テーブルT2は、ハードディスク(z)毎(番号zのハードディスク毎)に、「ストライプS(i)」および「ストライプ単位のデータ有無」の情報が登録される。
「ストライプS(i)」は、ストライプの識別情報(ストライプ番号)である。「ストライプ単位のデータ有無」は、ハードディスク毎のストライプ単位でのデータ有無の情報であり、データ有りの場合は“1”、データ無しの場合は“0”と表記する。
なお、データ有無管理テーブルT2は、RAIDを構成するハードディスク毎に1つ存在する。また、テーブル表現として、Dz(x)と書いた場合は、番号zのハードディスクの番号xのストライプを指すものとする。
したがって、例えば、D2(3)=1と書いた場合、番号2のハードディスクにおける番号3のストライプには、有効なデータが格納されていることを表している。また、D2(3)=0と書いた場合、番号2のハードディスクにおける番号3のストライプには、有効なデータが格納されていないことを表すことになる。
次に図12〜図16を用いて具体的な例を挙げながらデータ配置制御について説明する。なお、以降では、データが何ら格納されていない、すべて空きブロックで構成されるストライプに対して、データを書き込むことをストライプライト、また、このようなストライプの領域をストライプライト可能領域とも呼ぶ。
図12はデータ格納状態を示す図である。データ格納初期状態を示している。ハードディスクP、D0〜D2がある。説明を簡単にするため、ハードディスクPは、パリティを格納するディスクとし、ハードディスクD0〜D2は、データを格納するディスクとする。また、ハードディスクP、D0〜D2に渡って、ストライプS(0)〜S(n−1)が形成されている。
以下、ストライプ毎のデータおよびパリティの格納状態について示す。ストライプS(0)では、ハードディスクD0のブロックにはデータA1が格納され、ハードディスクD1のブロックにはデータA2が格納され、ハードディスクD2のブロックにはデータA3が格納されている。よって、S(0)=3である。また、データA1〜A3から算出されたパリティP0がハードディスクPのブロックに格納されている。
ストライプS(1)では、ハードディスクD0のブロックにはデータA4が格納され、ハードディスクD1のブロックにはデータA5が格納され、ハードディスクD2のブロックにはデータB0が格納されている。よって、S(1)=3である。また、データA4、A5、B0から算出されたパリティP1がハードディスクPのブロックに格納されている。
ストライプS(2)では、ハードディスクD0のブロックにはデータB1が格納され、ハードディスクD1のブロックにはデータB2が格納され、ハードディスクD2のブロックにはデータC0が格納されている。よって、S(2)=3である。また、データB1、B2、C0から算出されたパリティP2がハードディスクPのブロックに格納されている。
図13はデータ格納に変化があった状態を示す図である。図12の状態からしばらくするとフラグメンテーション状態となり、図13では、データA1、B1が書き換えられ、データB3、B4が新たに追加された状態を示している。
図中、更新された旧データにはoldを付加し、更新した新データにはnewを付加し、追加データにはaddを付加して示している。なお、oldが付加されている旧データのブロックは空きブロックである。
以下、ストライプ毎のデータおよびパリティの格納状態について示す。ストライプS(0)では、ハードディスクD1のブロックにデータA2が格納され、ハードディスクD2のブロックにデータA3が格納されている。よって、S(0)=2である。また、データA2、A3から新たなパリティ計算が行われ、算出されたパリティP0-1がハードディスクPのブロックに格納されている。
ストライプS(1)の格納状態に変化はない。ストライプS(2)では、ハードディスクD1のブロックにデータB2が格納され、ハードディスクD2のブロックにデータC0が格納されている。よって、S(2)=2である。また、データB2、C0から新たなパリティ計算が行われ、算出されたパリティP2-1がハードディスクPのブロックに格納されている。
ストライプS(n−2)では、ハードディスクD0のブロックにはデータA1(new)が格納され、ハードディスクD1のブロックにはデータB1(new)が格納され、ハードディスクD2のブロックにはデータB3(add)が格納されている。よって、S(n−2)=3である。また、データA1(new)、B1(new)、B3(add)からパリティ計算が行われ、算出されたパリティP(n−2)がハードディスクPのブロックに格納されている。
ストライプS(n−1)では、ハードディスクD0のブロックにはデータB4(add)が格納されている。よって、S(n−1)=1である。また、データB4(add)からパリティ計算が行われ、算出されたパリティP(n−1)がハードディスクPのブロックに格納されている。
次に図13に示す状態に対し、新たなハードディスクが追加されたとする。図14はハードディスク追加後のストライプ状態を示す図である。データ配置制御部21では、未使用のハードディスクD3の追加時には、既存のストライプそれぞれに、ハードディスクD3内のブロックを追加する(追加手段)。
したがって、ハードディスクD3が追加される前は、ストライプS(0)〜S(n−1)の各ブロック数は4であったが、ハードディスクD3が追加された後は、ストライプS(0)〜S(n−1)の各ブロック数は5となる。
次にハードディスク追加後のデータ移動元のストライプ選択動作について説明する。データ配置制御部21は、既存のストライプそれぞれへのブロックの追加が行われたときに、移動元とするストライプの選択処理を開始する。
データ配置制御部21では、データが格納されているストライプのうち、データが格納されているブロック数が少ないストライプを優先的に移動元ストライプとして選択する(格納されているデータ数が0個の場合は除く)。
図14の場合では、データが格納されているブロック数が最も少ないストライプは、ストライプS(n−1)である。次に少ないのがストライプS(0)、S(2)であり、データが格納されているブロック数が一番多いのが、ストライプS(1)、S(n−2)である。したがって、データ配置制御部21は、移動元ストライプとして、ストライプS(n−1)を選択する。
次に移動先ストライプの選択動作について説明する。移動先ストライプの選択時、データ配置制御部21は、データ移動後に生じる空きブロック数が少ないストライプを優先的に選択する。
この例では、移動元ストライプS(n−1)のデータ数は1であり、データを格納するハードディスク数(ブロック数)は4である。
したがって、現在、ストライプ中に3(=4−1)つのデータを格納しているストライプがあれば、そのストライプにデータを移動すれば、空きブロック数は0になる。よって、3つのデータを格納しているストライプは、この場合、データ移動後に生じる空きブロック数が最も少なくなるストライプであるといえる。
現在、3つのデータを格納しているストライプは、ストライプS(1)、S(n−2)の2つがある。同一条件の移動先ストライプが複数あるときは、ストライプ番号の若番から順に選択するものとすれば、ストライプS(1)を選択することになる。
図15はデータ再配置状態を示す図である。データ配置制御部21は、移動先ストライプとして、ストライプS(1)を選択する。その後、データ配置制御部21は、移動元ストライプS(n−1)のハードディスクD1に格納されていたデータB4(add)を移動先ストライプS(1)のハードディスクD3に移動して格納する。このとき、パリティも再計算されて、新パリティ(パリティP1―1とする)がストライプS(1)のハードディスクPに格納される。
上記のようなデータ再配置によって、ストライプS(n−1)は、データを格納しているブロックがすべて無くなるので、ストライプライト可能領域とすることができた。
以下同様な制御が行われる。次のデータ再配置について説明すると、まず、データ配置制御部21は、データが格納されているストライプのうち、データが格納されているブロック数が少ないストライプを優先的に移動元ストライプとして選択する(格納されているデータ数が0個の場合は除く)。
図15の段階で、データが格納されているブロック数が最も少ないストライプは、ストライプS(0)、S(2)である。同一条件の移動元ストライプが複数あるときは、ストライプ番号の旧番から順に選択するものとすれば、ここでは、ストライプS(2)を選択することになる。したがって、データ配置制御部21は、移動元ストライプとして、ストライプS(2)を選択する。
次に移動先ストライプの選択を行う。データ配置制御部21は、データ移動後に生じる空きブロック数が少ないストライプを優先的に選択する。この例では、移動元ストライプS(2)のデータ数は2である。また、データを格納するハードディスク数(ブロック数)は4である。
したがって、現在、ストライプ中に2(=4−2)つのデータを格納しているストライプがあれば、そのストライプにデータを移動すれば、空きブロック数は0になる。よって、2つのデータを格納しているストライプは、この場合、データ移動後に生じる空きブロック数が最も少なくなるストライプであるといえる。
現在、移動元ストライプのストライプS(2)以外で、2つのデータを格納しているストライプは、ストライプS(0)であるので、データ配置制御部21は、移動先ストライプとして、ストライプS(0)を選択する。
図16はデータ再配置状態を示す図である。データ配置制御部21は、移動元ストライプS(2)のハードディスクD1に格納されていたデータB2を、移動先ストライプS(0)のハードディスクD0に移動して格納する。
さらに、データ配置制御部21は、移動元ストライプS(2)のハードディスクD2に格納されていたデータC0を、移動先ストライプS(0)のハードディスクD3に移動して格納する。このとき、パリティも再計算されて、新パリティ(パリティP0-2とする)がストライプS(0)のハードディスクPに格納される。
上記のようなデータ再配置によって、ストライプS(2)は、データを格納しているブロックがすべて無くなるので、ストライプライト可能領域とすることができた。なお、上記では、ハードディスクを追加した場合のデータ配置制御について説明したが、ハードディスクを追加しない場合でも、本手順によるデータ配置制御が可能である。
以上説明したように、ストライプに格納されるデータの選択・移動を行って、少ないデータの配置動作によって、ストライプ可能領域を効率よく生成することができるので、ライトペナルティの発生を抑止することが可能になる。
また、上記のデータ配置制御により、ハードディスクが追加されたような場合であっても、特定のハードディスクへアクセスが集中されることを回避することができるので、データの書き込み/読み出し処理の遅延を抑制することが可能になる。
次にデータ配置制御についてフローチャートを用いて説明する。図17、図18はデータ配置制御を示すフローチャートである。なお、図17は、移動元ストライプの探索処理フローを示し、図18は、移動先ストライプの探索処理フローを示している。
〔S1〕データ配置制御部21は、ストライプ中に存在するデータ数Cが少ないストライプを探す。最初は、ストライプ中のデータ数Cが1個のストライプを探す。なお、移動元ストライプの探索は、ストライプ番号の旧番から若番に向かって探索する。すなわち、ストライプS(n−1)→ストライプS(n−2)→・・・→ストライプS(2)→ストライプS(1)→ストライプS(0)の順に探す。
〔S2〕データ配置制御部21は、データ数管理テーブルT1から、Cに一致するデータ数のストライプを探す。
〔S3〕データ配置制御部21は、S(i)=Cか否かを判断する。iはストライプ番号である。S(i)=Cの場合は、ステップS11へ行き、S(i)≠Cの場合は、ステップS4へ行く。なお、S(i)=Cの場合は、移動元ストライプが見つかったので、ステップS11に行って、移動先ストライプを探す処理を行うことになる。
〔S4〕データ配置制御部21は、ストライプS(i)がストライプ検索対象の最後であるか否かの判断を行う。
〔S5〕データ配置制御部21は、i=0か否かを判断する。i=0の場合は、ステップS7へ行き、i≠0の場合は、ステップS6へ行く。
i=0の場合は、先頭のストライプS(0)まで探したので、全ストライプチェックの完了となる。i≠0の場合は、全ストライプを探していないので、先頭に向かって探索することになる。
〔S6〕データ配置制御部21は、次のストライプを探す。ステップS2へ戻る。
〔S7〕データ配置制御部21は、次にデータ数が少ないストライプを探す。例えば、最初にC=1のストライプを探したら、次にC=2のストライプを探す(データ数が2のストライプを探す)。このように、段階的に、データ数Cを増やしていく。
〔S8〕データ配置制御部21は、移動元のデータ数が大きくなりすぎたか否かの判断処理を行う。
〔S9〕データ配置制御部21は、C≧Dn/2であるか否かを判断する。ここで、移動元ストライプに格納されるデータの数が大きくなりすぎたか否かを判断する条件式は、C≧Dn/2とする。Cはデータ数、Dnは現在稼働するハードディスク数(ストライプ当たりのブロック数)である。
データ配置制御部21では、データ格納に利用するブロックのうちの半分未満のブロックにデータが格納されているストライプがある場合、このストライプを移動元として選択する。また、データ配置制御部21は、データ格納に利用するブロックのうちの半分未満のブロックにデータが格納されているストライプが見つからなくなるまで、移動元とするストライプの選択を繰り返し実行する。
したがって、C<Dn/2を満たす場合は、ステップS2へ戻り、ストライプ探索処理を再度行う。また、C≧Dn/2を満たす場合は、移動元データ数がデータ格納に利用するブロックの半分以上であるので、この場合は、 移動させるデータは無いと判断して、移動元ストライプの探索処理は終了する。
〔S11〕データ配置制御部21は、データ数管理テーブルT1から、Cのデータ数を移動できる移動先ストライプを探す。なお、移動先ストライプの探索は、ストライプ番号の若番から旧番に向かって探索する。すなわち、ストライプS(0)→ストライプS(1)→・・・→ストライプS(n−2)→ストライプS(n−1)の順に探す。
〔S12〕データ配置制御部21は、S(j)=Dn−C−Xか否かを判断する。ここで、移動先ストライプと指定してよいか否かを判断する条件式は、S(j)=Dn−C−Xとする。jは移動先ストライプの番号、Dnは現在稼働するハードディスク数(ストライプ当たりのブロック数)、Xは補正値であり、最初は補正無し(補正値=0)である。
S(j)=Dn−C−Xの場合はステップS13へ行き、S(j)≠Dn−C−Xの場合はステップS14へ行く。
〔S13〕データ配置制御部21は、移動先ストライプが見つかったので、移動元ストライプ内のデータを移動先ストライプへ移動する。ステップS4へ戻る。なお、データ配置制御部21は、データ移動後は、データ数管理テーブルT1およびデータ有無管理テーブルT2の登録変更も行う。
〔S14〕データ配置制御部21は、ストライプS(j)がストライプ検索対象の最後であるか否かの判断を行う。
〔S15〕データ配置制御部21は、j=n−1か否かを判断する。j≠n−1の場合はステップS16へ行き、j=n−1の場合はステップS17へ行く。
j=n−1の場合は、最後のストライプS(n−1)まで探したので、全ストライプチェックの完了となる。j≠n−1の場合は、全ストライプを探していないので、最後のストライプS(n−1)に向かって探索することになる。
〔S16〕データ配置制御部21は、次のストライプを探す。ステップS11へ戻る。
〔S17〕データ配置制御部21は、最後のストライプS(n−1)まで探索したので、より空きブロック数が多い移動先ストライプを探す処理を行う。
〔S18〕データ配置制御部21は、X≧Dn−Cか否かを判断する。X<Dn−Cの場合はステップS19へ行き、X≧Dn−Cの場合はステップS20へ行く。
ここで、空きブロック数が多い移動先ストライプを探すための条件式は、X≧Dn−Cとなる。X≧Dn−Cを満たす場合は、ステップS12で示した式が成立しないので、移動先ストライプは無い。また、X<Dn−Cを満たす場合は、ステップS12で示した式が成立し、データ格納可能な移動先ストライプが存在するので、移動先ストライプの探索処理を続ける。
〔S19〕データ配置制御部21は、最初のストライプから探す。ステップS11へ戻る。
〔S20〕データ配置制御部21は、移動元ストライプのデータを格納可能な移動先ストライプが存在しないと判断して、移動先ストライプの探索処理は終了する。
このようにして、ストライプライト可能領域を増やすようなデータの起動が行われる。なお、より詳細には、データ配置制御部21は、データ数管理テーブルT1やデータ有無管理テーブルT2の内容を更新しながら、移動元ストライプの探索処理、移動先ストライプの探索処理、およびデータ移動処理を繰り返し行うこととなる。以下、テーブルの更新も含めた、移動元ストライプ探索処理の詳細フローについて説明する。図19は移動元ストライプ探索処理の詳細フローを示す図である。
〔S31〕データ配置制御部21は、データ数Cに対し、C=1と設定する。
〔S32〕データ配置制御部21は、データ数管理テーブルT1の登録情報をリードする。
〔S33〕データ配置制御部21は、S(i)==0であるか否かを判断する。iは移動元ストライプ番号である。ストライプS(i)中のブロックが、すべて空きブロックか否かを判断している。S(i)==0の場合は、ステップS34へ行き、S(i)==0でない場合は、ステップS35へ行く。なお、最初の探索時、i=n−1である。
〔S34〕データ配置制御部21は、iを1つデクリメントする。ステップS32へ戻る。
〔S35〕データ配置制御部21は、S(i)==Cであるか否かを判断する。S(i)==Cの場合は、ステップS39へ行く。S(i)==Cでない場合は、ステップS36へ行く。
〔S36〕データ配置制御部21は、i==0であるか否かを判断する。すなわち、先頭のストライプまで探索したか否かを判断する。i==0の場合は、すべてのストライプの探索をしたと認識し、ステップS37へ行く。i==0でない場合は、ステップS34へ戻り、さらに探索を行う。
〔S37〕データ配置制御部21は、Cを1つインクリメントする。
〔S38〕データ配置制御部21は、C≧Dn/2であるか否かを判断する。C≧Dn/2の場合は、移動元のデータ数が大きくなりすぎたと認識して終了し、C<Dn/2の場合はステップS32へ戻る。
〔S39〕データ配置制御部21は、現在探索しているストライプS(i)が移動元ストライプと決定する。そして、移動先ストライプ探索処理へ移行する。
〔S40〕移動先ストライプ探索処理から復帰すると、データ配置制御部21は、移動元ストライプから移動先ストライプへのデータ移動処理へ、処理を移行する。データ移動処理から復帰すると、処理がステップS32に戻る。
次に移動先ストライプ探索処理の詳細フローについて説明する。図20は移動先ストライプ探索処理の詳細フローを示す図である。
〔S41〕データ配置制御部21は、データ数管理テーブルT1の登録情報をリードする。
〔S42〕データ配置制御部21は、S(j)==Dnか否かを判断する。jは移動先ストライプ番号である。ストライプS(j)中のブロックが、すべてデータが格納されているか否かを判断している。S(j)==Dnの場合は、ステップS43へ行き、S(j)==Dnでない場合は、ステップS44へ行く。なお、最初の探索時、j=0である。
〔S43〕データ配置制御部21は、jを1つインクリメントする。ステップS41へ戻る。
〔S44〕データ配置制御部21は、S(j)==Dn−C−Xか否かを判断する。S(j)==Dn−C−Xの場合は、データ配置制御部21は、現在探索しているストライプS(j)が移動先ストライプであると決定し、処理を呼び出し元に復帰させる。またS(j)≠Dn−C−Xの場合は、データ配置制御部21は処理をステップS45へ進める。
〔S45〕データ配置制御部21は、j==n−1であるか否かを判断する。j==n−1の場合はXを補正して、より空きブロック数が多い移動先ストライプの探索処理を行うためにステップS46へ行く。j==n−1でない場合はステップS43へ戻って探索を続ける。
〔S46〕データ配置制御部21は、j=0とし、補正値Xを1つインクリメントする。
〔S47〕データ配置制御部21は、X≧Dn−Cか否かを判断する。X<Dn−Cの場合はステップS44へ戻る。X≧Dn−Cの場合は移動先ストライプが存在しないと認識して、処理を呼び出し元に復帰させずに終了する。
次にデータ移動処理の詳細フローについて説明する。図21はデータ移動処理の詳細フローを示す図である。
〔S51〕データ配置制御部21は、DL(i)=1であるか否かを判断する。Lはハードディスク番号、iは移動元ストライプ番号である。
L(i)=1であれば、ハードディスク番号Lの移動元ストライプ番号iに該当するブロックに、移動対象のデータが存在していることを示している。DL(i)=0であれば、ハードディスク番号Lの移動元ストライプ番号iに該当するブロックに、移動対象のデータが存在しないことを示している。DL(i)=1であればステップS53へ行き、DL(i)=0であればステップS52へ行く。
〔S52〕データ配置制御部21は、ハードディスク番号Lを1つインクリメントする。ステップS51へ戻る。
〔S53〕データ配置制御部21は、DM(j)=0であるか否かを判断する。Mはハードディスク番号、jは移動先ストライプ番号である。
M(j)=0であれば、ハードディスク番号Mの移動先ストライプ番号jに該当するブロックが、空きブロック(データの移動先ブロック)になっていることを示している。DM(j)=1であれば、ハードディスク番号Mの移動先ストライプ番号jに該当するブロックが、空きブロックではないことを示している。DM(j)=0であればステップS55へ行き、DM(j)=1であればステップS54へ行く。
〔S54〕データ配置制御部21は、ハードディスク番号Mを1つインクリメントする。ステップS53へ戻る。
〔S55〕データ配置制御部21は、DL(i)のブロックに格納されていたデータをDM(j)の空きブロックに移動する。
〔S56〕データ配置制御部21は、設定値の更新処理を行う。すなわち、ハードディスクMのストライプ番号jのブロックにデータを移動して格納したので、DM(j)=1と設定する。また、ハードディスクLのストライプ番号jのブロックからデータを移動して、該ブロックは空きブロックになったので、DL(i)=0と設定する。
なお、この場合、データ配置制御部21は、データ数管理テーブルT1の該当ストライプのデータ数の情報を更新する。さらに、データ有無管理テーブルT2の該当ストライプのデータ有無の情報を更新する。
さらにまた、データ配置制御部21は、ファイルシステムにおける移動元のストライプに格納されていたデータの格納先のブロック位置の指定を、該移動元のストライプのブロックの位置から移動先のストライプのブロックの位置に更新する(更新手段)。すなわち、inode中の、DL(i)に格納されていたデータの格納先のブロック位置指定を、DM(j)のブロック位置指定に設定変更する。
〔S57〕データ配置制御部21は、ci=0であるか否かを判断する。ciは、移動元のデータ数(C)である。ci=0ならば、移動元ストライプ内のデータ移動は完了したので、データ配置制御部21は、処理を呼び出し元に復帰させる。ci≠0であればステップS58へ行く。
〔S58〕データ配置制御部21は、移動元ハードディスク番号Lおよび移動先ハードディスク番号Mをそれぞれ1インクリメントする。ステップS51へ戻る。
以上説明したように、本実施の形態によれば、一部のブロックにのみデータが格納されたストライプ内のデータを、一部のブロックにのみデータが格納されたストライプに移動し、ストライプライト可能領域を作り出すことができる。これにより、以後、新たなデータを格納する際には、ストライプライトによる書き込みを行うことができる。その結果、ライトペナルティの発生が抑止される。
また本実施の形態では、データ格納に利用するブロックのうちの半分未満のブロックにデータが格納されているストライプが、移動元として選択される。これにより、移動するデータ量を抑止し、処理の効率化を図ることができる。
しかも、本実施の形態では、データが格納されているストライプのうち、データが格納されているブロック数が少ないストライプを優先的に選択される。これにより、移動するデータ量の抑止効果をさらに向上させることができ、処理の効率化が促進される。
さらに、本実施の形態では、データ格納に利用するブロックのうちの半分未満のブロックにデータが格納されているストライプが見つからなくなるまで、移動元とするストライプの選択が繰り返し実行される。これにより、より多くのストライプライト可能領域を生成できる。
また、本実施の形態では、データ移動後に生じる空きブロック数が少ないストライプが、移動先として優先的に選択される。これにより、より多くのストライプライト可能領域を生成できる。
また、本実施の形態では、ファイルシステムにおける移動元のストライプに格納されていたデータの格納先のブロック位置の指定が、該移動元のストライプのブロックの位置から移動先のストライプのブロックの位置に更新される。これにより、ストライプ間でのデータの移動を行っても、移動されたデータに適切にアクセスすることができる。
また、本実施の形態では、未使用のハードディスクを追加時に、既存のストライプそれぞれに、該未使用のハードディスク内のブロックが追加され、既存のストライプそれぞれへのブロックの追加が行われたときに、移動元とするストライプの選択処理が開始される。そして移動元として選択されたストライプ内のデータが移動され、ストライプライト可能領域が生成される。これにより、その後のデータ書き込みが、増設されたハードディスクに集中することが抑止され、データアクセス効率が向上する。
なお、上記の実施の形態では、ストレージ部23を複数のハードディスクで構成しているが、ハードディスクに代えてSSDなどの他の記憶媒体を使用することもできる。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。
10 情報処理装置
11−1〜11−N 記憶装置
12、13 選択手段
14 移動手段
s1〜sn ストライプ

Claims (9)

  1. 各々が、複数の記憶装置のそれぞれの1ブロックの記憶領域の集合である複数のストライプの中から、少なくとも1つのブロックにデータが格納され、他のブロックに該データの誤り訂正符号が格納されているストライプを、移動元として選択する第1の選択手段と、
    該移動元のストライプ以外のストライプの中から、少なくとも1つのブロックにデータが格納されており、かつ該移動元のストライプ内のデータが格納されているブロック数と同数以上の空きブロック数を有するストライプを、移動先として選択する第2の選択手段と、
    該移動元のストライプに格納されているデータを、該移動先のストライプのブロックに移動する移動手段と、
    を有する情報処理装置。
  2. 前記第1の選択手段は、データ格納に利用するブロックのうちの半分未満のブロックにデータが格納されているストライプを、移動元として選択する、
    ことを特徴とする請求項1記載の情報処理装置。
  3. 前記第1の選択手段は、データが格納されているストライプのうち、データが格納されているブロック数が少ないストライプを、移動元として優先的に選択する、
    ことを特徴とする請求項1または2のいずれかに記載の情報処理装置。
  4. 前記第1の選択手段は、データ格納に利用するブロックのうちの半分未満のブロックにデータが格納されているストライプが見つからなくなるまで、移動元とするストライプの選択を繰り返し実行する、
    ことを特徴とする請求項1乃至3のいずれかに記載の情報処理装置。
  5. 前記第2の選択手段は、データ移動後に生じる空きブロック数が少ないストライプを、移動先として優先的に選択する、
    ことを特徴とする請求項1乃至4のいずれかに記載の情報処理装置。
  6. ファイルシステムにおける移動元のストライプに格納されていたデータの格納先のブロック位置の指定を、該移動元のストライプのブロックの位置から移動先のストライプのブロックの位置に更新する更新手段、
    をさらに有することを特徴とする請求項1乃至5のいずれかに記載の情報処理装置。
  7. 未使用の記憶装置を追加時に、既存のストライプそれぞれに、該未使用の記憶装置内のブロックを追加する追加手段をさらに有し、
    前記第1の選択手段は、既存のストライプそれぞれへのブロックの追加が行われたときに、移動元とするストライプの選択処理を開始する、
    ことを特徴とする請求項1乃至6のいずれかに記載の情報処理装置。
  8. コンピュータに、
    各々が、複数の記憶装置のそれぞれの1ブロックの記憶領域の集合である複数形成されたストライプであって、ストライプ内のブロックは、データと該データの誤り訂正符号との格納に使用される前記複数のストライプのうち、少なくとも1つのブロックにデータが格納されているストライプを、移動元として選択し、
    該移動元のストライプ以外のストライプのうち、少なくとも1つのブロックにデータが格納されており、かつ該移動元のストライプ内のデータが格納されているブロック数と同数以上の空きブロック数を有するストライプを、移動先として選択し、
    該移動元のストライプに格納されているデータを、該移動先のストライプのブロックに移動する、
    処理を実行させるプログラム。
  9. コンピュータが、
    各々が、複数の記憶装置のそれぞれの1ブロックの記憶領域の集合である複数のストライプの中から、少なくとも1つのブロックにデータが格納され、他のブロックに該データの誤り訂正符号が格納されているストライプを、移動元として選択し、
    該移動元のストライプ以外のストライプの中から、少なくとも1つのブロックにデータが格納されており、かつ該移動元のストライプ内のデータが格納されているブロック数と同数以上の空きブロック数を有するストライプを、移動先として選択し、
    該移動元のストライプに格納されているデータを、該移動先のストライプのブロックに移動してデータを配置する、
    ことを特徴とするデータ配置方法。
JP2012061747A 2012-03-19 2012-03-19 情報処理装置、プログラムおよびデータ配置方法 Pending JP2013196276A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2012061747A JP2013196276A (ja) 2012-03-19 2012-03-19 情報処理装置、プログラムおよびデータ配置方法
EP13155595.5A EP2642379A2 (en) 2012-03-19 2013-02-18 Information processing apparatus, program, and data allocation method
US13/772,398 US20130246842A1 (en) 2012-03-19 2013-02-21 Information processing apparatus, program, and data allocation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012061747A JP2013196276A (ja) 2012-03-19 2012-03-19 情報処理装置、プログラムおよびデータ配置方法

Publications (1)

Publication Number Publication Date
JP2013196276A true JP2013196276A (ja) 2013-09-30

Family

ID=47826882

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012061747A Pending JP2013196276A (ja) 2012-03-19 2012-03-19 情報処理装置、プログラムおよびデータ配置方法

Country Status (3)

Country Link
US (1) US20130246842A1 (ja)
EP (1) EP2642379A2 (ja)
JP (1) JP2013196276A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018229944A1 (ja) * 2017-06-15 2018-12-20 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9448887B1 (en) * 2015-08-22 2016-09-20 Weka.IO Ltd. Distributed erasure coded virtual file system
CN113835637A (zh) * 2020-03-19 2021-12-24 北京奥星贝斯科技有限公司 一种数据的写入方法、装置以及设备

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5502836A (en) * 1991-11-21 1996-03-26 Ast Research, Inc. Method for disk restriping during system operation
US5615352A (en) * 1994-10-05 1997-03-25 Hewlett-Packard Company Methods for adding storage disks to a hierarchic disk array while maintaining data availability
US5537534A (en) * 1995-02-10 1996-07-16 Hewlett-Packard Company Disk array having redundant storage and methods for incrementally generating redundancy as data is written to the disk array
US5604902A (en) * 1995-02-16 1997-02-18 Hewlett-Packard Company Hole plugging garbage collection for a data storage system
US5809224A (en) * 1995-10-13 1998-09-15 Compaq Computer Corporation On-line disk array reconfiguration
JP3170455B2 (ja) * 1996-05-27 2001-05-28 インターナショナル・ビジネス・マシーンズ・コーポレ−ション データ記憶システムにおけるデータの再配置方法、そのシステムに記憶されたデータのアクセス方法及びデータ記憶システム
JPH1153235A (ja) * 1997-08-08 1999-02-26 Toshiba Corp ディスク記憶装置のデータ更新方法、ならびにディスク記憶制御システム
US6742081B2 (en) * 2001-04-30 2004-05-25 Sun Microsystems, Inc. Data storage array employing block checksums and dynamic striping
WO2003077111A1 (fr) * 2002-03-13 2003-09-18 Fujitsu Limited Controleur pour dispositif raid
US9088494B2 (en) * 2002-06-26 2015-07-21 Avaya Communication Israel Ltd. Packet fragmentation prevention
US7386663B2 (en) * 2004-05-13 2008-06-10 Cousins Robert E Transaction-based storage system and method that uses variable sized objects to store data
US7418550B2 (en) * 2005-07-30 2008-08-26 Lsi Corporation Methods and structure for improved import/export of raid level 6 volumes
JP5075699B2 (ja) 2008-03-21 2012-11-21 株式会社日立製作所 ストレージ容量拡張方法及びその方法を使用するストレージシステム
JP4792490B2 (ja) * 2008-09-08 2011-10-12 株式会社日立製作所 記憶制御装置及びraidグループの拡張方法
US8429514B1 (en) * 2008-09-24 2013-04-23 Network Appliance, Inc. Dynamic load balancing of distributed parity in a RAID array
US8117613B2 (en) * 2009-04-08 2012-02-14 Microsoft Corporation Optimized virtual machine migration mechanism
US8266501B2 (en) * 2009-09-29 2012-09-11 Micron Technology, Inc. Stripe based memory operation
US9026716B2 (en) * 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
US9021231B2 (en) * 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Storage control system with write amplification control mechanism and method of operation thereof

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018229944A1 (ja) * 2017-06-15 2018-12-20 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
JPWO2018229944A1 (ja) * 2017-06-15 2019-11-07 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法

Also Published As

Publication number Publication date
EP2642379A2 (en) 2013-09-25
US20130246842A1 (en) 2013-09-19

Similar Documents

Publication Publication Date Title
US10977124B2 (en) Distributed storage system, data storage method, and software program
JP5942511B2 (ja) バックアップ装置,バックアップ方法,およびバックアッププログラム
EP3617867B1 (en) Fragment management method and fragment management apparatus
JP5407430B2 (ja) ストレージシステム
JP6350162B2 (ja) 制御装置
JP6094267B2 (ja) ストレージシステム
CN109407975B (zh) 写数据方法与计算节点以及分布式存储系统
US20220066786A1 (en) Pre-scanned data for optimized boot
JP2017204037A (ja) 情報処理装置、重複除去プログラム、及び重複除去方法
JP2016510918A (ja) ボリューム複製を目的としたワークロードの特定およびバッファのサイズ設定
JP2006331076A (ja) データ記憶システム及び記憶方法
JP6233403B2 (ja) ストレージシステム、ストレージ装置、ストレージ装置の制御方法及び制御プログラム、管理装置、管理装置の制御方法及び制御プログラム
JP2013196276A (ja) 情報処理装置、プログラムおよびデータ配置方法
US11516287B2 (en) Method and apparatus for performing simple storage service seamless migration using index objects
JP5719083B2 (ja) データベース装置、プログラムおよびデータ処理方法
JP5141234B2 (ja) 階層記憶制御装置、階層記憶制御システム及びそれらに用いる階層記憶制御方法及びそのプログラム
JP2016192170A (ja) ストレージ制御装置、ストレージシステムおよびストレージ制御プログラム
US20130159656A1 (en) Controller, computer-readable recording medium, and apparatus
JP2015143945A (ja) ストレージ制御装置、ストレージ装置および制御プログラム
JP2007334752A (ja) Raid装置、raid制御プログラムおよびキャッシュ管理方法
US11188258B2 (en) Distributed storage system
WO2015162717A1 (ja) 計算機
JP5303935B2 (ja) データ多重化システムおよびデータ多重化方法
US11163642B2 (en) Methods, devices and computer readable medium for managing a redundant array of independent disks
WO2016001959A1 (ja) ストレージシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141204

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151006

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160412

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160613

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160823