JP2016511879A - データ記憶システムにおけるストレージをよりきめ細かく、拡張可能に割り当てること可能とする方法及び装置 - Google Patents

データ記憶システムにおけるストレージをよりきめ細かく、拡張可能に割り当てること可能とする方法及び装置 Download PDF

Info

Publication number
JP2016511879A
JP2016511879A JP2015555982A JP2015555982A JP2016511879A JP 2016511879 A JP2016511879 A JP 2016511879A JP 2015555982 A JP2015555982 A JP 2015555982A JP 2015555982 A JP2015555982 A JP 2015555982A JP 2016511879 A JP2016511879 A JP 2016511879A
Authority
JP
Japan
Prior art keywords
chunk
file system
chunks
stripe set
last
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.)
Granted
Application number
JP2015555982A
Other languages
English (en)
Other versions
JP6067888B2 (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.)
Hitachi Data Systems Engineering UK Ltd
Original Assignee
Hitachi Data Systems Engineering UK 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 Data Systems Engineering UK Ltd filed Critical Hitachi Data Systems Engineering UK Ltd
Publication of JP2016511879A publication Critical patent/JP2016511879A/ja
Application granted granted Critical
Publication of JP6067888B2 publication Critical patent/JP6067888B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1727Details of free space management performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/183Provision of network file services by network file servers, e.g. by using NFS, CIFS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/188Virtual file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • 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/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage 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/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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一態様において、本発明は、きめ細かな、拡張可能な方法において、ファイルシステムのためのストレージを拡大する方法に向けられる。本方法は、スパンに対するランバイアスを、ファイルサーバによって判断するステップを含み、ここでランバイアスは、ファイルシステムのためのアドレス移行テーブルにおけるエントリに関連付けられたメモリの隣接するチャンクの数を示す。本方法は、ファイルシステムのためのメモリを拡大する要求を、ファイルサーバによって受信するステップを含む。本方法は、ストライプセット上の未使用のチャンクの数及びファイルシステムによって使用されているストライプセット上のチャンクの数に少なくとも部分的に基づいて、1つのグループのストライプセット中の各ストライプセットを、チャンク割り当て部によって採点するステップを含む。本方法は、最も高いスコアを有するストライプセット上のチャンクを、チャンク割り当て部によって割り当てるステップを含み、そこでは割り当てられたチャンクは、他のファイルシステムのために予約されたランの外側にある。

Description

本発明はデータ記憶システムに関し、且つ、特に、ファイルシステムにディスクスペースをよりきめ細かく、拡張可能に割り当てることが可能なデータ記憶システムに関する。
今日の情報化時代では、データ記憶システムは、多くの場合、ファイルシステムを管理し、ファイルシステムは、時々、ディスクスペースの動的拡大を要求する。多くの場合、ファイルシステムは、ストレージの増加分において拡大される(本明細書では「チャンク」と呼ばれる)。記憶システムは、自身のサイズが指針チャンクサイズから外れるチャンクを割り当ててもよいが、データ記憶システムは、異なる指針チャンクサイズが選択されることを許可してもよい。1つの代表的なデータ記憶システムでは、チャンクサイズは、1ギガバイト(GiB)から100GiBまでの範囲にわたることが可能である。別の代表的なデータ記憶システムでは、チャンクサイズは、0.5GiBから18GiBまでの範囲にわたることが可能である。
そのようなシステムのファイルサーバは、ファイルシステムスペースにおけるディスクスペースの仮想アドレスを、物理ストレージにおけるディスクスペースのアドレスに移行し、且つファイルシステムに割り当てられたディスクスペースのチャンクを追跡するために、固定サイズのテーブルを使用してもよい(例えば、テーブルは、1つの代表的なデータ記憶システムにおいて1023個のエントリを有し、ここで各エントリは、例えば、チャンクの開始物理アドレス及びチャンクのサイズに関する情報(例えば、チャンク長又はチャンクの終了アドレス)を格納するために使用され、仮想ファイルシステムアドレスの範囲に対応付けられる。固定サイズのテーブルを使用することは、一般にファイルシステムの最大サイズを制限し、即ち、ファイルシステムに割り当てられた所定最大数のチャンクだけを許可する。この固定サイズテーブルは、ハードウェアで履行されてもよく、且つ、いかなる場合も、より大きなファイルシステムがサポートされるのを許可するために、テーブルサイズを増加させることは実行不可能かもしれない。
特別なファイルシステムのために指針チャンクサイズを選択することは、本質的に、ユーザーがファイルシステムにどれだけ大きな成長を期待するかということと、ストレージ使用率の効率との間のトレードオフである。概して言えば、小さな指針チャンクサイズを選択することは、効率的なストレージ使用率に備えるが、ファイルシステムの最大サイズを制限する。その一方で、大きな指針チャンクサイズを選択することは、多くの場合、非効率的なストレージ使用率に帰着するが、最大ファイルシステムサイズを増加させる。
ある実施形態において、複数のストライプセットから選択された複数のチャンクを含むファイルシステムに対して、ストレージを拡大するための方法及びデータ記憶システムが提供され、そこでは、ファイルシステムの仮想アドレススペースは、チャンクに関連付けられた物理記憶アドレスに対応付けられる。本方法は、ファイルシステムに関連付けられたチャンクを追跡するための、チャンクデータベースを維持するステップであって、このチャンクデータベースは、固定数のエントリを含み、各エントリは、ファイルシステムに割り当てられたストレージの一部の開始アドレス及び長さに関する情報を格納することが可能である、ステップと、ファイルシステムを拡大する要求を受信するステップと、チャンクデータベースに基づいて、ファイルシステムに関連付けられた最後のチャンクを識別するステップと、少なくとも1つのチャンクがファイルシステムへ割り当て可能である場合、最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接する少なくとも1つのチャンクを割り当てるステップと、少なくとも1つの割り当てられたチャンクによって表される、連続したストレージの長さにおける増加を反映させるために、最後のチャンクに関連付けられたチャンクデータベースにおけるエントリを更新するステップと、を含む。
様々な代替的実施形態において、最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接する少なくとも1つのチャンクが、ファイルシステムへの割り当て可能であるかを判断する前に、少なくとも1つの最後のチャンクが割り当て可能な状態に留まるように、最後のチャンクと同じストライプセットのうちの最後のチャンクに隣接する少なくとも1つのチャンクが予約されてもよい。
最後のチャンクと同じストライプセットのうちその最後のチャンクに隣接する少なくとも1つのチャンクが、ファイルシステムへ割り当て可能であるかを判断するステップは、ファイルシステムに対してアクティブラン長を判断することと、ファイルシステムへの割り当てに対して少なくとも1つの利用可能なチャンクが存在すると判断することであって、この判断が行われるのは、アクティブラン長がランバイアス未満であり、且つ最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接する少なくとも1つのチャンクが存在する場合である、こととを含んでもよい。この点に関して、少なくとも1つのチャンクを割り当てるステップは、最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接するN個までのチャンクを割り当てることを含んでもよく、ここでNは、アクティブラン長を引いたランバイアスに等しい。本方法はまた、ストライプセットの数及びファイルシステムの数に基づいてランバイアスを判断することによるような、ランバイアスを判断するステップを含む。
本方法は、異なるストライプセットから少なくとも1つのチャンクを割り当てるステップを更に含んでもよいが、この割り当てが行われるのは、最後のチャンクと同じストライプセットのうちの最後のチャンクに隣接する少なくとも1つのチャンクが、利用できないと判断される場合である。
ある実施形態において、チャンクデータベースはハードウェアにおいて維持されてもよく、且つ、データ記憶システムは、ソフトウェアを基本としたチャンク割り当て部とハードウェアとの間で結合されるインターフェースを含んでもよく、この場合、該ハードウェアを通して、チャンク割り当て部はチャンクデータベースにアクセスする。
他の実施形態において、きめ細かな、拡張可能な方法で、ファイルシステムに対してストレージを拡大するための方法及びデータ記憶システムが提供される。本方法は、スパンに対するランバイアスを、ファイルサーバによって判断するステップを含み、そこではランバイアスは、ファイルシステムのためのアドレス移行テーブルにおけるエントリに関連付けられたディスクスペースの隣接するチャンクの数を示す。本方法は、ファイルシステムのためにディスクスペースを拡大する要求を、ファイルサーバによって受信するステップを含む。本方法は、ストライプセット上の未使用のチャンク、及びファイルシステムによって使用されているストライプセット上のチャンクの数に基づいて、1つのグループのストライプセット中の各ストライプセットを、チャンク割り当て部によって採点するステップを含む。本方法は、最も高いスコアを有するストライプセット上のチャンクを、チャンク割り当て部によって割り当てるステップを含み、そこでは割り当てられたチャンクは、他のファイルシステムのために予約されたランの外側にある。
スパンに対するランバイアスを判断するステップは、初期設定ランバイアスを、ファイルサーバによって判断することを含んでもよい。スパンに対するランバイアスを判断するステップは、ストライプセットの数及びファイルシステムの数に基づいて、ランバイアスをファイルサーバによって判断することを含んでもよい。
各ストライプセットを採点するステップは、ファイルシステムの最後に割り当てられたチャンクの後のチャンクが利用可能であることを、チャンク割り当て部によって判断することと、ファイルシステムの現在のストライプセットに対するバイアスファクタを、チャンク割り当て部によって判断することであって、該現在のストライプセットは、ファイルシステムの最後に割り当てられたチャンクを含む、ことと、バイアスファクタを有する現在のストライプセットを、チャンク割り当て部によって採点することと、を含んでもよい。各ストライプセットを採点するステップは、ファイルシステムの最後に割り当てられたチャンクの後のチャンクが別のファイルシステムによって使用されるのを、チャンク割り当て部によって判断することと、ストライプセット上の未使用のチャンクの数と、他のファイルシステムのために予約されたチャンクの数との間の差に少なくとも部分的に基づいて、1つのグループのストライプセット中の各ストライプセットを、チャンク割り当て部によって採点することと、を含んでもよい。各ストライプセットを採点するステップは、ストライプセット上の未使用のチャンクの数、スパン加重、ファイルシステムによって使用されているストライプセット上のチャンクの数、及びファイルシステム加重に少なくとも部分的に基づいて、そのグループのストライプセット中の各ストライプセットを、チャンク割り当て部によって採点することを含んでもよい。
最も高いスコアを有するストライプセット上にチャンクを割り当てるステップは、ファイルシステムの最後に割り当てられたチャンクの後のチャンクを、チャンク割り当て部によって選択することを含んでもよい。最も高いスコアを有するストライプセット上にチャンクを割り当てるステップは、自身の長さが少なくともランバイアスである、予約されていないチャンクのランを、チャンク割り当て部によって検索することと、そのランにおける第1チャンクを、チャンク割り当て部によって選択することと、を含んでもよい。最も高いスコアを有するストライプセット上にチャンクを割り当てるステップは、自身の長さが少なくともランバイアスである予約されたチャンクのランを、チャンク割り当て部によって検索することと、そのランの後半における第1チャンクを、チャンク割り当て部によって選択することと、を含んでもよい。
更に他の実施形態において、複数のストライプセットから選択された複数のチャンクを含むファイルシステム対してストレージを拡大するための方法及びシステムが提供され、そこでは、ファイルシステムの仮想アドレススペースが、チャンクに関連付けられた物理記憶アドレスに対応付けられる。本方法は、複数のファイルシステムに関連付けられたチャンクを追跡するための、チャンクデータベースを維持するステップであって、該チャンクデータベースは固定数のエントリを含み、各エントリは、ファイルシステムの1つに割り当てられたストレージの一部の開始アドレス及び長さに関する情報を格納することが可能である、ステップと、複数のファイルシステムにおいて、ファイルシステムを拡大する要求を受信するステップと、自身からストレージを割り当てるべきストライプセットを選択するステップと、ストライプセット上で開始アドレスを有するチャンクデータベースからエントリを受信するステップであって、そこではエントリは、複数のファイルシステムにおける、異なるファイルシステムのライブランに対応する、ステップと、ストライプセット上で少なくとも1つのチャンクを識別するステップであって、該ストライプセットは、ライブランにおける最後のチャンクに続き、且つこれに隣接するN個のチャンクの後に位置し、そこではNは、ライブランのアクティブラン長を引いたランバイアスに等しい、ステップと、もし少なくとも1つのチャンクが利用可能である場合、少なくとも1つのチャンクをファイルシステムに割り当てるステップと、を含む。
様々な代替的実施形態において、本方法は、ストライプセット上に開始アドレスを有するチャンクデータベースからエントリを引き出し、且つ少なくとも1つのチャンクを識別することを継続するステップであって、該少なくとも1つのチャンクは、少なくとも1つのチャンクが利用可能となるまで、ライブランにおける最後のチャンクに続き、且つこれに隣接するN個のチャンクの後に位置する、ステップ、を更に含んでもよい。ストライプセット上で少なくとも1つのチャンクを識別するステップは、ランバイアスに等しい利用可能なチャンクのランを識別することか、又はストライプセット上で利用可能なチャンクの最も長いランを識別することを含んでもよい。
更に他の実施形態において、複数のストライプセットから選択された複数のチャンクを含むファイルシステムに対して、ストレージを拡大するための方法及びデータ記憶システムが提供され、そこではファイルシステムの仮想アドレススペースは、チャンクに関連付けられた物理記憶アドレスに対応付けられる。本方法は、複数のファイルシステムに関連付けられたチャンクを追跡するための、チャンクデータベースを維持するステップであって、該チャンクデータベースは、固定数のエントリを含み、各エントリは、ファイルシステムの1つに割り当てられたストレージの一部の開始アドレス及び長さに関する情報を格納することが可能である、ステップと、複数のファイルシステムにおいて、ファイルシステムを拡大する要求を受信するステップと、要求に対するチャンクの数が、スパン上のストライプセットの数が掛けられたランバイアスにおけるチャンクの数を超えることを判断するステップと、要求に対するチャンクの数をストライプセットの数で割ることによって、各ストライプセットから割り当てるべきチャンクの数を判断するステップと、各ストライプセットから割り当てるべきチャンクの数に等しい、利用可能なチャンクのランを、各ストライプセット上で検索するステップと、利用可能なチャンクのランを、各ストライプセットから割り当てるステップと、利用可能なチャンクのランに関連付けられたチャンクデータベースにおけるエントリを、利用可能なチャンクの各ランに対して作成するステップであって、該エントリはランの長さを含む、ステップと、を含む。
実施形態はまた、上記方法のいずれかを実行するように構成されたコンピュータプログラムを含んでもよい。
実施形態はまた、有形のコンピュータ可読な媒体を備える装置を含んでもよく、該有形のコンピュータ可読な媒体は、上記方法のいずれかを実行するように構成されたコンピュータプログラムを、自身の中に具体化している。
付加的な実施形態が開示され、且つ請求されてもよい。
本発明の前述の特徴は、添付図面に関して得られた、以下の詳細な記述を参照することによって、より容易に理解されるであろう。
図1は、本発明の代表的な実施形態に従うファイル記憶システムの概略的ブロック図である。 図2は、本発明の代表的な実施形態に従うファイルシステムの一般的なフォーマットを示す概略的ブロック図である。 図3は、本発明の代表的な実施形態における、記憶ブロックとストライプセットとの間の関係を示す概略図である。 図4は、ファイル記憶システムのファイルサーバの概略的ブロック図である。 図5は、既に使用されている幾つかのチャンクと、ファイルシステムに自由に割り当てられるべき幾つかのチャンクとを含むストライプセットにおけるチャンクの概略的表現である。 図6は、テーブル9025の概略的表現であり、この表現は、代表的な先行技術の実施形態における特定の時点で見つけられるかもしれず、ここで各新しいチャンクのための情報は、別個のテーブルエントリに格納される。 図7は、テーブル9025の概略的表現であり、この表現は、代表的な実施形態における特定の時点で見つけられるかもしれず、ここで隣接するチャンクに対する情報は、図6に示されたテーブル9025の代わりに、単一のテーブルエントリに格納されてもよい。 図8は、テーブル9025の概略的表現であり、この表現は、1つの代表的な実施形態に従って、図7のテーブルエントリ9030が、2つの付加的な隣接するチャンクを組み込むために、いかにして修正されるかを示している。 図9は、図4のファイルシステムスペースの概略的表現であり、該ファイルシステムスペースは、1つの代表的な実施形態に従って、同じサイズ(例えば、X)の3つのチャンクだけ拡大される。 図10は、1つの代表的な実施形態に従う、包括的なチャンク割り当てプロセスのフローチャートである。 図11は、ファイルシステムに割り当てるべきストライプセット及びストライプセット上のチャンクを選択する方法の、代表的流れ図である。 図12は、ストライプセットを選択する方法の代表的な流れ図であり、該ストライプセットからチャンクが割り当てられるが、それは、現在のストライプセットが、図示され且つ説明されるファイルシステムに対して、拡大可能なライブランを含む場合である。 図13は、ストライプセットを選択する方法の代表的な流れ図であり、該ストライプセットからチャンクが割り当てられことになるが、それは、現在のストライプセットが、図示され且つ説明されるファイルシステムに対して、拡大可能なライブランを含まない場合である。 図14は、ファイルシステムに割り当てられるランのファイルシステムスペースにおいて、開始アドレス及び終了アドレスを格納する代表的なテーブルである。 図15は、スパンにわたる負荷均衡を改善するために、ランバイアスを低減する方法のための代表的な流れ図である。 図16は、ファイルシステムに割り当てるべきストライプセット上で、予約されていないチャンクを検索する方法のための代表的な流れ図である。 図17は、スパンにおける全てのストライプセットにわたって、ストレージを割り当てる方法のための代表的な流れ図である。 注意されるべきことであるが、前述の図及び、これの中に描かれた要素は、必ずしも一貫性のあるスケール、又は任意スケールに対して描かれていない。文脈で特に断りが無ければ、要素は参照符号によって示された通りである。
定義:この記述及び添付の請求項において使用されるように、以下の用語は、文脈で特に要求がなければ、示された意味を有するものとする。
「記憶装置」は、データを格納するために使用される装置又はシステムである。記憶装置は、1以上の磁気ディスクドライブ、又は光磁気ディスクドライブ若しくは光ディスクドライブ、固体記憶装置、又は磁気テープを含んでもよい。便宜上、記憶装置は、「ディスク」又は「ハードディスク」と時々呼ばれる。データ記憶システムは、同じ又は異なる記憶容量を有する、同じ又は異なるタイプの記憶装置を含んでもよい。
「RAIDコントローラ」は、幾つかの記憶装置の記憶容量を、ストレージスペースの仮想区画に結合する装置又はシステムであり、このストレージスペースの仮想区画は、代わりに、「システムドライブ」(「SD」)、「論理ユニット」(「LU」又は「LUN」)又は「ボリューム」と呼ばれてもよい。通常、SDは単一の記憶装置よりも大きく、幾つかの記憶装置からスペースを引き出し、且つ冗長情報を含み、それによって、データを喪失することなく、ある数のディスクの故障にも耐えることが可能である。代表的な実施形態において、各SDは、以下では「論理ユニット識別子」又は「LUID」と呼ばれる一意識別子に関連付けられ、且つ各SDは、所定最大サイズ、例えば2TB〜64TB又はそれ以上、よりも大きくないであろう。コマンドがSDに送信されると、RAIDコントローラは、通常、コマンドをSDの全ての記憶装置に同時に転送する。RAIDコントローラは、典型的な記憶装置の3つの主な制限を克服するのを手伝うが、3つの主な制限とは、即ち、それらの記憶装置は通常、記憶システムの中で最も遅い構成装置であり、それらは通常、破局故障を最も受けやすく、且つそれらは通常、比較的小さな記憶容量を有することである。
「RAIDシステム」は、1以上のRAIDコントローラと多数の記憶装置とを含む装置又はシステムである。通常、RAIDシステムは、2つのRAIDコントローラ(これによって、もし一方が故障しても、他方が動き続け、且つ、更に、両方が正常である間は、負荷を共有する)と、数十の記憶装置とを含む。代表的な実施形態において、RAIDシステムは、通常、2個と32個の間のSDで構成されるが、しかし、様々な実施形態においては、代表的なRAIDシステムはより多くのSDを有してもよい。ファイルサーバがデータを格納するか、又は引き出す必要がある場合、ファイルサーバは、RAIDシステムのRAIDコントローラにコマンドを送信し、今度はRAIDコントローラが責任を負い、個々の記憶装置に対して前方にコマンドを特定のルートで送信し、且つ、必要に応じて、データを格納するか又はデータを引き出す。幾つかのRAIDシステムによって、SD間でミラーの関係が確立され得る。それによって、1つのSD(「一次SD」と呼ばれる)に書かれたデータは、冗長性の目的のために、RAIDシステムによって別のSD(本明細書では「二次SD」又は「ミラーSD」と呼ばれる)に自動的に書かれる。二次SDは、一次SDと同じRAIDシステムによって、又は、異なるローカルRAIDシステム又は遠隔RAIDシステムによって管理されてもよい。SDを効率的にミラー化することは、SDにわたるRAID(1+0)機能性を提供するが、この目的は、1つのSDが喪失又は破損した場合、又は、幾つかの状況では、複数のSDでさえも喪失又は破損する場合が起こり得るが、そのような場合からの回復を提供することである。
「ファイルシステム」は、ファイル記憶システムに格納されるファイル及びディレクトリ(フォルダ)の構造である。幾つかの実施形態において、ファイルシステムは、1以上のストライプセットのチャンク上に存在するディスクスペースの仮想化された領域である。ファイル記憶システム内では、ファイルシステムは、通常、多数の仮想記憶構成を用いて管理され、且つ、代表的な実施形態においては、ファイルシステムは、レンジ、ストライプセット、及びスパンと呼ばれる仮想記憶構成の階層を用いて管理される。「レンジ」は、それ自身上の一次SDか、又は同一のデータを含むと想定される一次/二次SDペアのいずれかで構成され、且つ、それ故に、単一のSDと同じ記憶容量を提供する。「ストライプセット」は、1以上のレンジで構成される。幾つかの実施形態において、ストライプセットは、32個までの論理ユニット(「LU」)を含むことが可能である。ストライプセットは、もしその全てのチャンクが使用中である場合、「一杯で」ある。そうでない場合、ストライプセットは「一杯ではない」。「スパン」は1以上のストライプセットから構成される(例えば、64個までのストライプセットから構成され、ここでストライプセットは、同じ容量を持つ必要はなく、又は互いに同じ数のLUを含む必要はない)。幾つかの実施形態において、スパンは複数のファイルシステムを含む(例えば、128個までのファイルシステム)。従って、スパンは、結局、1以上のSDから構成される(通常、4個から50個のSD)。スパンは、1以上のファイルシステムに分割されることが可能であり、各ファイルシステムは別個の名称、及び識別子、並びに潜在的に異なる特性を有する(例えば、1つのファイルシステムは、32KBクラスタでフォーマットされ、且つ別のファイルシステムは、4KBクラスタでフォーマットされてもよく、1つのファイルシステムは、ワーム(Worm、ライトワンス)であってもよく、別のファイルシステムは、そうでない、など)。スパン上の各ファイルシステムは、別々にフォーマットされ、利用可能な状態にされ、そして利用不可能な状態とされる。ファイルシステムは、任意の順に、且ついつでも、作成され、削除されてもよい。ファイルシステムは、自動的に拡大するように(又は、代わりに、自動拡大を防止、又は制限するように)構成され得るか、又は手動で拡大され得る。ある実施形態において、ファイルサーバは、「チャンクデータベース」にファイルシステムのディスクスペースの仮想アドレス及び物理アドレスを格納する。様々な実施形態において、ファイルサーバは、ディスクインターフェース(DI)チップ上のテーブルのエントリに、ファイルシステムのディスクスペースについての情報を格納する。テーブル中の各エントリは、ファイルシステムに割り当てられたディスクスペースの部分の開始位置及び終了位置を含む。
「チャンク」は、単一のストライプセット上のディスクスペースの領域である。幾つかの実施形態において、チャンクは、ファイルシステムに付加されるディスクスペースの増加分であってもよい。各チャンクは、単一のストライプセット上に存在し、例えば、チャンクは、複数のストライプセットにまたがらない。幾つかの実施形態において、チャンクのサイズは、1ギガバイト(GiB)と100GiBとの間の範囲にわたってもよい。チャンクがファイルシステムに割り当てられていない場合、チャンクは「利用可能」又は「空き」の状態である。チャンクが割り当てられている場合、チャンクは、「使用中」であり、別のファイルシステムに割り当てられ得ない、又は同じファイルシステムに再使用され得ない。チャンクは「空き」か、又は「使用中」かのいずれかであり、例えば、チャンクが部分的に使用され、且つ部分的に空きであることはあり得ない。幾つかの実施形態において、スパンが作成される場合、管理者は指針チャンクサイズを設定する。指針チャンクサイズは、スパンにおけるチャンクサイズの概数である。ファイルサーバは、異なるサイズのチャンクを割り当てることが許される。それ故に、スパンにおけるチャンクは、互いに異なる容量を有し、且つ指針チャンクサイズとは異なる容量を有する。
「ラン」は、一連の、1以上のチャンクであり、これら一連のチャンクは、ファイルシステムスペース内で、及び論理ユニットスペース内で隣接している。従って、ファイルサーバは、ランの中の全てのチャンクに対して、単一の連続読み出し又は書き込み動作を実行できるであろう。更には、読み出し又は書き込み動作は、ストライプセットにおける論理ユニットの各々に相当する動作に移行され、各論理ユニット上の同じアドレスで開始し、且つ各論理ユニット上の同じアドレスで終了する。典型的な実施形態において、ある環境下では、ランは、単一のチャンクとして始まり、且つ拡大され、単一のストライプセットからの複数の隣接するチャンクを含むことが可能である。
「ランバイアス」は、ランの好ましい長さであり、これは、ファイルシステムに割り当てられたディスクスペースのアドレスを記憶するテーブルにおける単一のエントリに格納される。ランバイアスは、ファイルサーバが、ストライプセットの中での負荷不均衡を許容する程度を示すかもしれない。ランバイアスがより低い場合、ファイルサーバは、スパンにわたって均衡された負荷を保つために、異なるストライプセットから、より頻繁にチャンクを割り当てる(例えば、ファイルサーバは、自身が別のストライプセットからチャンクを割り当て始める前に、1つのストライプセットからチャンクを割り当てることはほとんどない)。幾つかの実施形態において、スパンが、少数しかチャンクを有せず、しかし多くのストライプセットを有する場合、ファイルサーバは、スパンにわたる負荷均衡を改善するために、より低いランバイアスを決定する。
「ライブラン」(live run)は、拡張され得るファイルシステムに割り当てられるチャンクのランである。このランは、ファイルシステムの中の最後のランであり、且つこのランには、このランと同じストライプセット上の空のチャンクが直ちに続く。
ストライプセット上の空のチャンクのランは、2つのランに分割され得る。これらのランの1つは、「請求されたラン」であり、これは、自身の長さがランバイアスよりも短いライブランに直ちに続く空のチャンクのランである。請求されたランは、その長さがランバイアスに等しいように、ライブランを拡大するのに必要とされる数のチャンクを含んでもよい。
「請求されないラン」は、請求されたランに直ちに続く空のチャンクのランである。チャンク割り当て部は、請求されないランから、チャンクを自由に割り当てる。
「チャンクデータベース」は、1以上のファイルシステムに関連付けられたチャンクを追跡するために使用される記憶構成である。図1は、本発明の1つの代表的な実施形態に従うファイル記憶システムの概略的ブロック図である。とりわけ、ファイル記憶システムは、多数のファイルサーバを含み(単一のファイルサーバ9002が、簡単且つ便宜のために示されている)、これら多数のファイルサーバは、インターネット・プロトコル・ネットワーク(例えば、インターネット)のような通信ネットワーク9004を通して様々なクライアント装置(9006i〜9006M)と通信し、且つまた、ファイバーチャネル・ネットワークのような記憶ネットワーク9010を通して様々なRAIDシステム(9008i〜9008N)と通信する。クライアント装置(9006i〜9006M)及びファイルサーバ9002は、CIFS及び/又はNFSのような1以上のネットワーク・ファイル・プロトコルを用いて通信する。ファイルサーバ9002及びRAIDシステム(9008l〜9008N)はSCSIのような記憶プロトコルを用いて通信する。注意されるべきことであるが、ファイル記憶システムは、様々な配置で相互連結された、複数のファイルサーバ及び複数のRAIDシステムを含むことが可能であろう。ここで、様々な配置には完全なメッシュ配置が含まれ、このメッシュ配置の中で、任意のファイルサーバは、冗長で且つ切り替えられたファイバーチャネル・ネットワークを通して、任意のRAIDシステムと通信する。
ファイルサーバ9002は、1以上のファイルシステムを管理する。ファイルサーバ9002は、クライアントが、指定された名称下でのツリー又はサブツリーのような、ファイルシステムの部分にアクセスできるように構成され得る。CIFS用語では、そのようなアクセスは、「シェア」と呼ばれ、その一方で、NFS用語では、そのようなアクセスは「エクスポート」と呼ばれるかもしれない。内部的には、ファイルサーバ9002は、例えば米国特許出願第09/879,798号及び米国特許出願第10/889,158号(これらは、上記参照によって包含された)に記載されるハードウェア履行型及び/又はハードウェア加速型サブシステムを含んでもよく、且つ、例えば米国特許出願第10/286,015号及び米国特許出願第11/841,353号(これらは、上記参照によって包含された)に記載されるような複数の連鎖したサブモジュールを含む、ハードウェアを基本としたファイルシステムを含んでもよい。
各RAIDシステム9008は、RAIDコントローラによって管理される多数の物理記憶装置(例えば、ディスク)はもちろんのこと、通常、少なくとも1つのRAIDコントローラ(及び、普通は冗長性のために2つのRAIDコントローラ)を含む。RAIDシステム9008は、その記憶リソースを多数のSDに統合する。例えば、各RAIDシステム9008は、2個から32個の間のSDで構成されてもよいが、しかし、幾つかの例では、各RAIDシステムはより多くのSDに対して構成されてもよい。各SDは、所定最大サイズ(例えば、2TB〜64TB又はそれ以上)に制限されてもよい。幾つかの記憶装置を1つのSDに結合することは、多くの利益を提供でき、これらの利益が含むものとして、増大される速度(個々の記憶装置は比較的遅いが、しかしデータは、ボトルネックを広げるために、幾つかの記憶装置にわたってストライプ化され得る)、増大される容量(個々の記憶装置は比較的小さいが、しかし幾つかの記憶装置は、より多くの使用可能なスペースを提供するために、結合され得る)、抽象作用(使用されるスペースの量は、単一の記憶装置のサイズよりも大きいか、又は小さいかのいずれかであり得る)及び障害許容力(パリティ情報又は冗長性情報が各記憶装置上に格納され、SDは記憶装置の喪失に耐え得る)がある。
ファイルサーバ9002は、1以上のSDを使用するように構成され、これらは、単一のRAIDシステムから、又は複数のRAIDシステムからのものであり得る。ファイルサーバ9002は、各SDが一次か二次であるかを見つけるために、普通はRAIDシステムに質問できる。どのSDがファイルサーバ9002によって使用されるかを制御する方法は、本明細書では「認可」と呼ばれる。従って、実際には、ファイルサーバ9002は、通常、幾つかのSDに対して認可され、他のSDに対して認可されない。
内部的には、ファイルサーバ9002は、幾つかのSDを、本明細書で「スパン」と呼ばれるより大きな記憶プールに結合することが可能である。スパンは、本質的に、幾つかのSDのRAID−0アレイである。幾つかのSDを1つのスパンに結合することは、複数のディスクを1つのSDに結合することによって得られるのと同様な多くの利益を提供でき、これらの利益が含むものとして、増大された速度(複数のRAIDシステム上の複数のSD間にI/Oを分散させることは、記憶ボトルネックを更に広げ得る)、増大された記憶容量(スパンは単一のSDよりも大きいことが可能であり、これは2テラバイトに制限されるかもしれない)、及び、より多くの柔軟なストレージスペースの割り当てに備える付加的な抽象作用がある。
図2は、本発明の代表的な実施形態に従うスパンの概略的ブロック図である。図示されるように、スパン9011は、論理的に隣接するストレージスペースを提供する多数のストライプセット(9012i〜9012kで番号付けされる)から構成される。各ストライプセット9012は、今度は、1以上のレンジ及び、それ故に、1以上のSDから構成される。この例では、ストライプセット9012iは、9013i〜9013jで番号付されたレンジを含む。
大量のデータがストライプセットに書かれる場合、ファイルサーバ9002は、一般に、単一のレンジ/SDに全てのデータを書くというよりも、ストライプセットの中の複数のレンジ/SDにわたってデータを「ストライプ化」する。例えば、大量のデータが書かれる場合、ファイルサーバ9002は、レンジ/SD90131に最初の4MBのデータを、レンジ/SD90132に次の4MBのデータを、などと言うように書いてもよく、レンジ/SD9013jまでデータを書いた後は、レンジ/SD90131へ戻って再び循環する。とりわけ、そのような「ストライピング」は、ファイルサーバ9002が、幾つかのRAIDシステムによって管理される可能性のある幾つかのSD(及び、それ故に、幾つかの記憶装置)を使用する機会を増加させる。
注意されるべきことであるが、代表的な実施形態において、スパンが作成される場合、スパン9011は、初めは単一のストライプセットを含むが、しかし付加的なストライプセットが、時間と共にスパンに加えられてもよく、且つ異なるストライプセットが、異なる数のレンジ/SDを有してもよい。代表的な実施形態において、各ストライプセットは、それらの容量とは無関係に、32個までのSDを含むことが可能である。各SDはミラー化されてもよく、しかしそのようなミラー化は、ファイルサーバ9002によってというよりは、RAIDシステムによって実行される。それ故に、ミラー化されたSDに対して、ファイルサーバ9002は、一次SDにだけコマンドを送信し、且つ一次SDだけが、ストライプセット当たり32個のSDの制限に向けて数を数える。また、代表的な実施形態において、いったんストライプセットが作成されると、それ以上のSDは、そのストライプセットに付加されない。それ故に、SDをスパンに付加するためには、付加的なSDに対して、新しいストライプセットが形成され、且つ新しいストライプセットは、本質的に、スパンに現存するストライプセットに連結される。
従って、例えば、スパンは、0〜3で番号付けされた4つのSDを有する単一のストライプセットを初めは含んでもよい。5〜7で番号付けされた3つの新しいSDをスパンに付加するために、SD(5〜7)を含む第2ストライプセットが作成され、且つ第2ストライプセットは、第1ストライプセットに連結される。現存するデータは、スパンの中の全ての7つのSDにわたって、「再ストライプ化される」ことはない。
本質的には、ファイルシステムは、ストレージのN個の連続するブロックを有する連続したストレージスペースとして見ることが可能である。この議論のために、ブロックは、連続して0から(N−1)までで、論理的に番号付けされることが可能である。現実には、ファイルシステムストレージスペースは、スパン内で物理的に隣接していなくてもよく、且つ複数のストライプセットからのストレージを含んでもよい。概して言えば、ファイルサーバ9002は、ファイルシステム記憶ブロックを、スパン内の物理記憶位置に対応させる。従って、ファイルシステムが複数のストライプセットからのストレージを含むような代表的な実施形態において、第1セットのファイルシステム記憶ブロックは、第1ストライプセットに対応付けされ、且つ第2セットのファイルシステム記憶ブロックは、第2ストライプセットに対応付けされる、などであろう。
図3は、本発明の代表的な実施形態における、記憶ブロックとストライプセットとの間の関係を示す概略図である。この例では、2つのストライプセットからのチャンクを備えた0から(N−1)までで番号付けされたN個の記憶ブロックがあり、そこでは、(0から(M−1)で番号付けされた)第1のM個のブロックは、ストライプセット1からのチャンクに対応付けられ、且つ(Mから(N−1)で番号付けされた)残りの(N−M)個のブロックは、ストライプセット2からのチャンクに対応付けられる。注意されるべきことであるが、各ストライプセットに関連付けられた数百万のブロックがあってもよく、且つブロックの数は、各ストライプセットで異なっていてもよい。注意されるべきことであるが、割り当ては、ファイルシステムに対して時間と共になされるため、典型的なファイルシステムは、各ストライプセットから多くの範囲を有するであろう。例えば、ファイルシステムは、ストライプセット0からの7GiB、ストライプセット2からの9GiB、ストライプセット1からの13GiB、ストライプセット0からの11GiB、ストライプセット1からの18GiB、ストライプセット0からの8GiB、ストライプセット2からの21GiB、などを有するであろう。更に、ファイルシステムは、同じストライプセットの異なる領域から、幾つかの連続した範囲を有することが可能であり、このことは、もしスパンがただ1つ又は2つのストライプセットを含む場合、特にありそうなことである。
図4は、1つの代表的な実施形態に従う、ファイルサーバ9002上のスパンマネージャ9003の概略的ブロック図である。とりわけ、スパンマネージャ9003は、1以上のチャンク割り当て部9014及びVLSIインターフェース9015を含み、VLSIインターフェース9015を通して、スパンマネージャ9003は、様々なハードウェアを基本としたファイルシステム構成要素とインターフェースで連結する。これらのファイルシステム構成要素は、ファイルシステムに割り当てられたランの位置を格納するテーブル9025を有するディスクインターフェース(DI)チップ9020を含む。スパンマネージャ9003はまた、ファイルシステムに割り当てられたチャンクに関する情報を格納するチャンクデータベース9030とインターフェースで連結する。多くの実施形態において、チャンクデータベース9030は、スパン上のあらゆるチャンクについての情報を格納する。チャンクデータベース9030は、ディスク上に、メモリの中に、又はその両方に維持される。スパンマネージャ9003のチャンク割り当て部9014は、チャンクデータベース9030を操作する。
DIチップ9020は、物理ストレージとの接続性に対して(例えば、ディスク及び/又はバックエンドのファイバーチャネルSAN上の固体記憶装置)、及びいかにしてデータが格納され、且つそれらの物理的装置にわたって分散されるかを制御することに対して責任を負う。スパンマネージャ9003が、ファイルシステムのディスクスペースを拡大する要求をクライアント装置9006から受信すると、チャンク割り当て部9014は、ファイルシステムにどのチャンクを割り当てるべきかを判断する。
幾つかの実施形態において、ファイルサーバ9002は、単一のチャンク割り当て部9014を含む。
チャンク割り当て部9014は、本明細書で更に説明されるように、異なるスパンに対して、スパン加重及びファイルシステム加重のセットを格納する。チャンク割り当て部9014は、拡大されているファイルシステムが存在するスパンに基づいて、スパン加重及びファイルシステム加重を選択する。他の実施形態において、ファイルサーバ9002は、異なるチャンク割り当て部9014を含み、各チャンク割り当て部9014は、スパン加重及びファイルシステム加重の異なるセットを格納する。幾つかの実施形態において、スパンマネージャ9003は、クライアント装置9006に基づいて、チャンク割り当て部9014を選択する。幾つかの実施形態において、スパンマネージャ9003は、拡大されるべきファイルシステムに基づいて、チャンク割り当て部9014を選択する。
チャンク割り当て部9014は、論理ユニットに対する装置識別子はもちろんのこと、論理ユニット上のディスクスペースにおいて、チャンクの仮想アドレス及び対応する物理アドレスを判断する。チャンク割り当て部9014は、チャンクデータベース9025において、及びDIチップ9020の中のテーブル9025において割り当てられるチャンクに関する情報を格納する。幾つかの実施形態において、チャンク割り当て部9014は、チャンクデータベース9025における、個々に割り当てられた各チャンクについての情報を格納する。チャンク割り当て部9014はまた、新しく割り当てられたチャンクを反映するために、VLSIインターフェース9015を通して、DIチップ9020上のテーブル9025を更新する。
幾つかの実施形態において、テーブル9025は、ボリューム対応付けテーブル及びストライプセット対応付けテーブルを含む。チャンク割り当て部9014は、ボリューム対応付けテーブルのエントリにおけるランに対して、ファイルシステムスペースにおける開始アドレス及び終了アドレスを格納し、且つ/又は更新する。ストライプセット対応付けテーブルは、SDスペースにおけるアドレスと共に、ファイルシステムスペースにおけるアドレス間の関係を格納する。従って、ボリューム対応付けテーブル及びストライプセット対応付けテーブルを用いて、ファイルシステムは、自身に割り当てられているディスクスペースのチャンクにアクセスできる。幾つかの実施形態において、チャンク割り当て部9014は、仮想アドレス、物理アドレス、及びチャンクに対応する装置識別子のような情報を格納する。幾つかの実施形態において、仮想アドレスはファイルシステムのオフセットであり、装置識別子はLU装置識別子であり、且つ物理アドレスは、論理ユニット上のオフセットである。
代表的な実施形態において、任意の方法でストライプセットからチャンクを割り当て、且つ付加された各チャンクに対してチャンクデータベース9025で別個のテーブルエントリを用いるというよりは、ファイルシステムが1以上のチャンクによって拡大される場合、スパンマネージャ9003、及び特にチャンク割り当て部9014は、以下でより完全に議論されるある環境の下で、ファイルシステムにおいて現存する最後のチャンクと同じストライプセットのうちのその現存する最後のチャンクに隣接する1以上のチャンクを割り当て(即ち、チャンクデータベース9025に最後に追加されたエントリに関連付けられたチャンク)、且つチャンクデータベース9025の中で対応するエントリが更新され、ファイルシステムに割り当てられたディスクスペースにおける効果的な増加が反映される。このように、最後のテーブルエントリに関連付けられた仮想ファイルシステムアドレスの範囲は大きくなり、且つ物理ストレージの複数の隣接するチャンクに対応付けられるが、その際、付加的なテーブルエントリを使用することなく、且つ、そのため、更なる拡大のために利用可能な、それらのテーブルエントリを残すこともない。その結果、ファイルシステムは、一般に拡大され、それによって、テーブルのサイズを拡大することなく、より多数のチャンクを含むことが可能である(例えば、システムにおける1023個以上のチャンクは、1023個のエントリを有する固定サイズのテーブルを使用する)。
図5は、ストライプセットにおけるチャンクの概略的表現であり、ここでは、既に使用されている幾つかのチャンク、及びファイルシステムに自由に割り当てられる幾つかのチャンクが含まれる。便宜上、「空の」チャンクは、「空1」、「空2」などと呼ばれる。この実施形態において、ストライプセットは、使用中チャンクの、隣接していないランを含む。使用中チャンク1および使用中チャンク2は、同じファイルシステムに割り当てられる。ファイルサーバ9002が、異なるファイルシステムに割り当てるべき空のチャンクを検索する場合、ファイルサーバ9002は、所定数の空のチャンクを通り過ぎて検索するが、この所定数の空のチャンクは、本明細書で更に説明されるように、ファイルシステムのためのライブランに続く。従って、ファイルサーバ9002は空のチャンクを迂回し、それによって、ファイルシステムは、後で、請求されたランにおけるチャンクの中に拡大する。ファイルサーバ9002は、異なるファイルシステムに対して、請求されたラン、例えばチャンク「使用中3」の後に、チャンクを割り当てる。実証のために、スパンマネージャ9003が所定のファイルシステムをサイズXの3つのチャンクだけ拡大する要求が、受信されたとする。スパンマネージャは、利用可能なストレージから3つのチャンクを割り当てる。3つのチャンクは、単一のストライプセットに、又は、2つ又は3つの異なるストライプセットに由来し得るであろう。これに対して、この実証のために、図5からチャンク「空1」、チャンク「空2」及びチャンク「空3」がファイルシステムに対して割り当てられる。
図6は、代表的な先行技術の実施形態における特別な時点で見られるような、テーブル9025の概略的表現であり、ここで各新しいチャンクに対する情報は、別個のテーブルエントリに格納される。便宜上且つ簡単のために、テーブルは、チャンクポインタ及びサイズを格納するものとして表現されるが、しかし実際の実施形態においては、テーブルは、論理アドレス及び物理アドレス、並びにファイルシステムに割り当てられるチャンクに関連付けられた装置を、追跡するための付加的な及び/又は代替的な情報を含んでもよい(例えば、チャンクの、又はファイルシステムに割り当てられるチャンクのランの、開始アドレス及び終了アドレスを格納する)。ファイルシステムが最初に作成される場合、テーブル9025におけるフィールドは空である。ファイルサーバ9002がファイルシステムにチャンクを割り当てるにつれて、新しく割り当てられた各チャンクのアドレス及びサイズが、エントリのフィールドに格納される。ファイルサーバ9002は、3つの新しいチャンクをファイルシステムに割り当てることが可能であり、従って、テーブル9025の中で3つのエントリを占有する。第1チャンクに対する情報は、テーブルエントリ9030の中に書かれるが、これには、以前は空のフィールド9040におけるチャンクの開始に対するポインタ(この例では、チャンク「空1」の開始に対するポインタ)と、フィールド9050におけるチャンクサイズXとが含まれる。第2チャンクに対する情報は、テーブルエントリ9031の中に書かれるが、これには、以前は空のフィールド9041におけるチャンクの開始に対するポインタ(この例では、チャンク「空2」の開始に対するポインタ)と、フィールド9051におけるチャンクサイズXとが含まれる。且つ、第3チャンクに対する情報は、テーブルエントリ9032の中に書かれるが、これには、以前は空のフィールド9042におけるチャンクの開始に対するポインタ(この例では、チャンク「空3」の開始に対するポインタ)と、フィールド9052におけるチャンクサイズXとが含まれる。仮想のファイルシステム・アドレス・スペースは3Xだけ増加される。代替的実施形態において、割り当てられた各チャンクは、同じサイズを有してもよい。これらの3つの実施形態において、テーブル9025は、単一のコラムを含み得るが、そこではコラムにおける各エントリは、チャンクの開始のアドレスを格納する。
図7は、代表的な実施形態における特別な時点で見つけられるような、テーブル9025の概略的表現であるが、そこでは隣接するチャンクに対する情報は、図6に示されたテーブル9025の代わりに、単一のテーブルエントリに格納されてもよい。具体的には、図5の隣接するチャンク「空1」、チャンク「空2」及びチャンク「空3」がファイルシステムに対して割り当てられる上記の例を用いて、テーブルエントリ9030が、3つの隣接するチャンクのランに対する情報を格納するために使用される。ランの開始に対するポインタ(この例では、チャンク「空1」の開始に対するポインタ)が、フィールド9040の中に書かれている。ランの終了に対するポインタ(この例では、チャンク「空3」の終了に対するポインタ)が、フィールド9050の中に書かれている。このように、スパンマネージャ9003は、3つの新しいチャンクを割り当て、且つそれらのチャンクをファイルシステムに付加したものの、隣接するチャンクは、ただ1つのテーブルエントリだけを取り、より大きなチャンクサイズの単一チャンクとして(即ち、チャンクは格納されたアドレスをまたぐ)、テーブル9025の中に出現させられる。
更なる実証のために、スパンマネージャ9003がファイルシステムをあと2つのチャンクだけ拡大するための更なる要求が受信され、且つスパンマネージャ9003は、自身が、同じストライプセットから次の2つの隣接するチャンク(例えば、図5におけるチャンク「空4」及び「空5」)を割り当てることを決定すると仮定する。
図8はテーブル9025の概略的表現であり、これは、1つの代表的な実施形態に従って、図7のテーブルエントリ9030が、2つの付加的な隣接するチャンクを組み込むために、いかにして修正されるかを示している。具体的には、ランにおける第1チャンクの開始に対するポインタは、フィールド9040に留まるが、しかしフィールド9050に格納される、ランの終了アドレスは変化され(この例では、チャンク「空5」の終了に対して)、それによって、開始アドレスと終了アドレスとの間のディスクスペースは、付加的な2つの隣接して割り当てられたチャンクを取り囲む。このように、スパンマネージャ9003は、今は、ストレージから5つの隣接するチャンクを割り当て、且つそれらのチャンクをファイルシステムに付加したものの、隣接するチャンクは、依然としてただ1つのテーブルエントリを取る。
典型的な実施形態において、統合された隣接するチャンクを用いたファイルシステムの拡大は、テーブル9025において最後に使用されたテーブルエントリ又は未使用のテーブルエントリのみによってなされ、それによって、仮想的なファイルシステム・アドレス・スペースに対応する拡張は、ファイルシステムの末端部に付加された新しいストレージに対応付けられる。例えば、図4を再び参照すると、もし3つのチャンクがファイルシステムに付加される場合、その時は、ファイルシステム・アドレス・スペースは、Nから(N+3X)まで増加するであろう。しかし、ブロック0からブロック(N−1)に対するストレージに対応する物理アドレスは、変化しないままでなければならず、そうでなければ、特別な仮想的ファイルシステムアドレスは、その場合、無効な物理アドレス位置を示すかもしれない。図9は、サイズXの3つのチャンクだけ拡大される、図4のファイルシステムスペースの概略的表現である。オリジナルファイルシステムスペース9060は、論理アドレス範囲が0から(N−1)までに留まり、且つ新しく割り当てられたファイルシステムスペース9070は、Nから(N+3X−1)までの論理アドレス範囲にある。
図10は、1つの代表的な実施形態に従う、包括的なチャンク割り当てプロセスに対するフローチャートである。具体的には、図10は、ファイルサーバによってファイルシステムのためのストレージを拡大するための、包括的なチャンク割り当てプロセスを説明し、そこではファイルシステムは、複数のストライプセットから選択された複数のチャンクを含み、且つファイルサーバは、ファイルシステムの仮想アドレススペースを、チャンクに関連付けられた物理記憶アドレスに対応付ける。ブロック1002に始まり、ファイルサーバは、ファイルシステムに関連付けられたチャンクを追跡するために、チャンクデータベースを維持し、該チャンクデータベースは、固定数のエントリを含み、各エントリは、ファイルシステムに割り当てられたストレージの一部の開始アドレス及び長さに関する情報を格納することが可能である。ブロック1004では、ファイルサーバは、ファイルシステムを拡大する要求を受信する。ブロック1006では、ファイルサーバは、チャンクデータベースに基づいて、ファイルシステムに関連付けられた最後のチャンクを識別する。ブロック1008では、ファイルサーバは、最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接する少なくとも1つのチャンクが、ファイルシステムへの割り当てのために利用可能であるかを判断する。本明細書で議論される代表的な実施形態の文脈において、最後のチャンクと同じストライプセット及び最後のチャンクに隣接するストライプセットから、少なくとも1つのチャンクが、ファイルシステムへの割り当てに対して「利用可能」であるかどうかの判断には、単にチャンク(複数チャンクを含む)が空であるかどうかだけでなく、以下で説明されるように、ランバイアス及び他のファクタのような、他のファクタもまた考慮に入れてもよい。ブロック1010では、少なくとも1つのチャンクが利用可能であると判断される場合、ファイルサーバは、最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接する少なくとも1つのチャンクを割り当てる。ブロック1012では、少なくとも1つの割り当てられたチャンクによって表される連続したストレージの長さにおける増加を反映させるために、ファイルサーバは、ファイルシステムの最後のチャンクに関連付けられたテーブルにおけるエントリを更新する。
ある代表的な実施形態において、(以下でより十分に議論される)様々な制限が、隣接したチャンクの数に課せられるが、これらの隣接したチャンクは、ストライプセットから割り当てられ、且つ単一のテーブルエントリに関連付けられ得る。それによって、ある状況では、もし付加的な隣接するチャンクが、特別なストライプセットから割り当てられ、且つ単一のテーブルエントリに関連付けられるとしても、少なくとも幾つかのチャンクは、複数のストライプセットにわたってストレージ(且つ、この故に、記憶アクセス)を分布させるために、異なるストライプセットから割り当てられる。例えば、特別なファイルシステムにおける最後のチャンクが、特別なストライプセット(これは、本明細書では、「アクティブラン長」と呼ばれてもよい)からのA個の隣接したチャンクのランの一部であるとする。ここでAは、1よりも大きいか、又は1に等しいが、しかし所定のランバイアス未満である。また、ファイルシステムをB個のチャンクだけ拡大する要求が受信されるとする。ここで(A+B)は、所定のランバイアスよりも大きい。もしB個のチャンクが、最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接するチャンクで利用可能であるとしても、チャンク割り当て部9014は、一般に、ストライプセットからN個のチャンクだけを割り当てるであろう。ここでNは、アクティブラン長を引いたランバイアスに等しい。チャンク割り当て部9014は、所定の選択案に従って選択されるような、1以上の他のストライプセットから、残りのチャンクを割り当てるであろう。このことは、以下でより十分に議論される。しかしながら、幾つかの実施形態において、もしストライプセットがスパンに最近付加されており、且つ、他のストライプセットよりも比較的空いている場合、チャンク割り当て部9014は、ランバイアスの長さに拘わらず、より空いたストライプセット上に長いランを割り当ててもよい。
幾つかの代表的な実施形態において、1以上のチャンクが、最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接するチャンクとして割り当てられ得るかどうかを、チャンク割り当て部9014は実時間で判断してもよい。これに対して、ある代表的な実施形態において、チャンク割り当て部9014は、以下でより十分に議論されるある環境の下で、ストライプセットから1以上の隣接するチャンクを、少なくとも一時的に予約してもよい。この理由は、そのようなチャンクが、将来の時点において、ファイルシステムに割り当てられ得るようにするためである。具体的には、そのような環境下では、チャンク割り当て部9014が、ファイルシステムに割り当てるべきストライプセットから、1以上の隣接したチャンクを割り当てる場合、付加的な隣接するチャンクが、将来、ファイルシステムに割り当てられるかもしれない可能性があり、チャンク割り当て部9014は、割り当てられたチャンクに隣接するそのストライプセットの中で1以上のチャンクを予約してもよく、それによって、そのような予約されたチャンクは、仮に及び実際にファイルシステムが将来拡大される場合、ファイルシステムに割り当てるのに利用可能である。概して言えば、チャンク割り当て部9014は、予約されたチャンクが所定のランバイアスを超えずに割り当てられ得る程度に、チャンクを予約するだけであろう。即ち、もしストライプセットからファイルシステムに割り当てられてきた隣接するチャンクの数(これは、本明細書で、「アクティブラン長」と呼ばれてもよい)が、所定のランバイアスに既に到達している場合、その時は、チャンク割り当て部9014は、通常、いかなるチャンクも予約しない。そうでない場合、チャンク割り当て部9014は、N個までのチャンクを予約する。ここでNは、アクティブラン長を引いた所定のランバイアスに等しい。チャンク割り当て部9014は、他のファイルシステムに対してチャンクを割り当てる場合、予約されたチャンクを回避するが、それは、少なくとも、予約されたチャンクが利用可能なチャンクの「プール」に戻されるまでのことである(例えば、仮に予約されたチャンクが、割り当てられるのに利用可能である唯一のチャンクになる場合)。注意されるべきことであるが、チャンク割り当て部9014は、多数の異なるファイルシステムの各々に対して、予約されたチャンクとは別個のグループ分けを維持してもよい。
従って、ファイルシステムのストレージが拡大するにつれて、ファイルサーバ9002は、ファイルシステムのために予約されたランからチャンクを割り当ててもよい。複数のチャンクを有するランは、チャンクデータベースの中で単一のエントリを占有し得るので、ファイルシステムは、それによって、チャンクデータベースが別なやり方で許容するよりも、多くのチャンクを含んでもよい。従って、このシステムでは、ストレージは効率的に使用されるかもしれず、ファイルシステムはより小さな増加分でストレージを付加するかもしれず、ファイルシステムは拡張可能かもしれず、且つアドレス移行は迅速に実行されるかもしれない。
加えて、ファイルサーバ9002は、ファイルシステムの累積負荷と各ファイルシステムの個々の負荷の両方を、ストライプセットにわたって分布させることに努めるかもしれない。ファイルシステムがディスクスペース拡大を要求する場合、ディスクスペースの次の割り当てに対して、どのストライプセットを選択するかを判断するために、ファイルサーバ9002は、多数のファクタを考慮する。
ストライプセットを評価するための代表的なファクタは、ストライプセットを最も一杯なストライプセットと比例的に同程度に一杯にするために、ストライプセット上に割り当てられる必要がありそうなチャンクの数と、ファイルシステムによって既に使用されているストライプセット上のチャンクの数とを含む。
幾つかの実施形態において、代表的なファクタは、ストライプセットにわたってファイルシステムの負荷を均衡させるよりも、ストライプセットにわたって全体的な負荷を均衡させることを優先的に履行する、又はその逆を優先的に履行する。スパン上のファイルシステムのほとんど又は全てが稼働中であると予想される場合、ストライプセットにわたって全体的な負荷を均衡させることは、より重要な優先事項であるかもしれない。
ファイルシステムの小さな部分が稼働中であると予想される場合、任意のある時間で、又はピーク時の間、ストライプセットにわたって各ファイルシステムの負荷を均衡させることは、優先事項となるかもしれない。これらの目標の相対的重要性は、パラメータに加えられる加重において履行され得るが、該パラメータはストライプセットを判断するためのものであり、このストライプセットから、ディスクスペースが次に割り当てられることになる。加重は、スパン加重及びファイルシステム加重であるかもしれない。より大きなスパン加重は、ストライプセットにわたってスパンの全体的な負荷を均衡させることを優先させ、且つスパン加重は、ストライプセットにわたるチャンク割り当ての不均衡の尺度に対して適用される(例えば、ストライプセットを最も一杯なストライプセットと比例的に同程度に一杯にするために、ストライプセット上に割り当てられる必要がありそうなチャンクの数)。より大きなファイルシステム加重は、ストライプセットにわたってアクティブなファイルシステムの負荷を均衡させることを優先させ、且つファイルシステム加重は、ストライプセットにわたる、特別なファイルシステムに対するチャンク割り当ての不均衡の尺度に適用される。
幾つかの実施形態において、ファイルサーバ9002は、スパン加重及びファイルシステム加重に対して異なる値を格納する単一のチャンク割り当て部9014を有する。様々な実施形態において、ファイルサーバ9002は、スパン加重及びファイルシステム加重に対して異なる値を有するかもしれない、異なるチャンク割り当て部9014を有し、且つファイルサーバ9002は、要求を作成するクライアント、拡大されているファイルシステム、又は任意の他の変数に基づいて、ディスクスペース拡大に対する要求を処理するための、チャンク割り当て部9014を選択してもよい。本明細書で議論される少なくとも1つのファクタに基づいて、ファイルサーバ9002上のチャンク割り当て部9014は、ファイルシステムに割り当てられる最後のチャンクを含むストライプセット、又は新しいストライプセットのいずれかを選択する。
チャンク割り当て部9014が、ファイルシステムの最後に割り当てられたチャンクを有するストライプセットを選択する場合、チャンク割り当て部9014は、可能ならば、最後のチャンクに直ちに続くチャンクを割り当てる。チャンク割り当て部9014が新しいストライプセットを選択する場合、チャンク割り当て部9014は、チャンクを割り当て、且つまた、ファイルシステムからの将来の要求のために、その後の連続する多数のチャンクを予約する(例えば、請求されたラン)。従って、ファイルシステムが付加的なディスクスペースを要求する場合、チャンク割り当て部9014は、そのために既に取っておかれたディスクスペースからチャンクを割り当てることが可能である。更に、チャンク割り当て部9014が、新しいストライプセット上でディスクスペースを検索する場合、チャンク割り当て部9014は、他のファイルシステムのために既に予約されている利用可能なチャンクを迂回してもよい。
予約するべき連続したチャンクの数に関して、ファイルサーバ9002は、スパンに対するランバイアスを判断してもよい。ファイルサーバ9002は、ランバイアスに対応する多数のチャンクを割り当てるであろうが、幾つかの環境では、ファイルサーバ9002は、以下でより詳細に議論されるように、異なる数を割り当ててもよい。
特定の代表的な実施形態の詳細が、ここで説明される。これらの特定の代表的な実施形態において、ファイルサーバ9002は情報を受信するが、この情報は、ストライプセットにわたって個々のファイルシステムの負荷を分布させることに比較して、ストライプセットにわたってスパンの全体的な付加を分布させることが相対的に重要であることに関する。幾つかの実施形態において、ファイルサーバ9002は、スパン加重及びファイルシステム加重に対する初期設定値を格納する。幾つかの実施形態において、ファイルサーバ9002の管理者は、スパン加重及びファイルシステム加重をファイルサーバ9002に入力できる。幾つかの実施形態において、管理者は、スパンにおける各ファイルシステムに対して、個々のファイルシステム加重及び/又は別個のファイルシステム加重を入力する。幾つかの実施形態において、ファイルサーバシステムに申し込むにあたり、又は新しいファイルシステムを要求するにあたり、クライアントは、ストレージに対するスパン加重及び/又はファイルシステム加重を、ファイルサーバ9002によって入力してもよい。ファイルサーバ9002は、チャンク割り当て部9014に加重を格納してもよい。幾つかの実施形態において、ファイルサーバ9002は、スパン・ディスク上構成(例えば、Cod)に加重を格納する。
様々な実施形態において、加重の値は、ゼロ(0)と10の間の範囲にわたることが可能である。スパン加重及び/又はファイルシステム加重の初期設定値は、10であってもよい。幾つかの履行例において、もしクライアントが、負荷分布に対する優先事項に関する情報を提供しない場合、ファイルサーバ9002は、スパン加重及びファイルシステム加重を同じ値に設定する。この値は、10、5、又は当業者の一人によって望まれる他の任意の値であってもよい。
ファイルサーバ9002は、スパンに対するランバイアスを判断する。幾つかの実施形態において、ファイルサーバ9002は、クライアントのスパン及び/又はファイルシステムに対して、クライアントによって入力されたランバイアスを使用する。幾つかの実施形態において、ファイルサーバ9002は、メモリに格納された初期設定値を使用する。初期設定ランバイアスは、64個のチャンクであってもよいが、しかし、他の初期設定値が使用されてもよい。
幾つかの実施形態において、サーバ9002は、ファイルシステムの数及びスパン上のストライプセットの数に基づいて、ランバイアスを判断する。例えば、スパンが、少しのチャンクしか有さず、且つ多くのストライプセットを有する場合、より小さなランバイアスは、ストライプセットにわたる負荷均衡を改善するかもしれない。ファイルサーバ9002は、スパンのパラメータに従って、ランバイアスを減少させる。
幾つかの実施形態において、ファイルサーバ9002は、ストライプセットの数を2で割ってもよい。ファイルサーバ9002は、結果としての値を、ファイルシステムの数で割ってもよい。ファイルサーバ9002は、結果としての値を、メモリに格納された初期設定ランバイアスと比較し、且つランバイアスをより小さな値に設定してもよい。幾つかの実施形態において、スパンに対するランバイアスは、0個のチャンクと250個のチャンクとの間であり得るが、しかし、ランバイアスの潜在的な値に対する他の範囲が使用されてもよい。
動作において、クライアント装置9006でのユーザーは、ファイルサーバ9002に、ファイルシステムのためにディスクスペースを拡大する要求を送信する。幾つかの実施形態において、要求は、ファイルシステムに付加するべきディスクスペースの総計を含む。ファイルサーバ9002は、ディスクスペースの総計に対応するチャンクの数を判断するが、この判断は、例えば、要求されたディスクスペースの総計を、チャンクの指針サイズで割ることによる。
ファイルシステムを拡大する要求が受信される場合、チャンク割り当て部9014は、ファイルシステムへのチャンクの割り当てに対して、1以上のストライプセットを選択する。上で説明されたように、チャンク割り当て部9014は、ファイルシステムのために、ストライプセット上のランを予約してもよい。この理由のために、チャンク割り当て部9014が、ファイルシステムへの次の割り当てに対してストライプセットを判断する場合、チャンク割り当て部9014は、ファイルシステムの最も間近に割り当てられたチャンクを含むストライプセット(本明細書で、「現在のストライプセット」とも呼ばれる)に対してバイアスを有してもよい。幾つかの状況において、チャンク割り当て部9014は、それでも、割り当てに対して新しいストライプセットを選択する。チャンク割り当て部9014は、スパンの全体的な負荷を均衡させるために、又はストライプセットにわたるファイルシステム負荷を均衡させるために、若しくは他の任意の理由のために、別のストライプセットに変更してもよい。
幾つかの実施形態において、チャンク割り当て部9014は、ストライプセットを選択するが、その選択は、少なくとも、ストライプセットを最も一杯なストライプセットと比例的に同程度に一杯にするために、ストライプセット上に割り当てられる必要がありそうなチャンクの数、拡大されているファイルシステムに割り当てられてきたストライプセット上で使用されたチャンクの数、スパン加重、及びファイルシステム加重に基づく。もしチャンク割り当て部9014が、現在のストライプセット上に留まることが有利かもしれないことを判断する場合、ストライプセットを選択する際に、チャンク割り当て部9014は、現在のストライプセット上で利用可能なチャンクの数に、バイアスファクタを付加することによって、その選択にバイアスを与える。
幾つかの実施形態において、チャンク割り当て部9014は、現在のストライプセットに対して、ストライプセットの選択にバイアスを与えるか否かを判断するために、様々な基準を使用してもよい。例えば、チャンク割り当て部9014は、その選択にバイアスを与えてもよいが、それは、仮にファイルシステムが既に少なくとも1つの割り当てられたチャンクを有しており、これによって、現在のストライプセットを有する場合だけである。この場合には、ファイルシステムの最後に割り当てられたチャンクの後のチャンクは利用可能であり、その結果、割り当て部は、次のチャンクを用いること、及び新しいランを開始する必要性を回避することに対して、常にバイアスが与えられる。ファイルシステムが最初に作成される場合、ファイルシステムは、ストライプセットにわたって分布させるべき負荷を未だ持たないので、チャンク割り当て部9014は、スパンの全体的な負荷を分布させることに主に関係してもよい。別の例では、もしファイルシステムの最後に割り当てられたチャンクに直ちに続くチャンクが利用可能である場合、チャンク割り当て部9014は、選択にバイアスを与える。もしこのチャンクが利用可能でない場合、その時は、ファイルシステムは、おそらく、自身のために予約されたチャンクのラン全体に拡大したであろう。次の割り当ては、テーブルの中で新しいエントリを要求するので、現在のストライプセット上に留まることは、必ずしも有利ではない。幾つかの実施形態において、ファイルサーバ9002は、選択にバイアスを与える前に、1以上のこれらの条件を要求してもよい。
バイアスファクタは、多数の方法の中の任意の方法で判断されてもよい。幾つかの実施形態において、チャンク割り当て部9014は、拡大されているファイルシステムに割り当てるべきチャンクの数を判断する。例えば、チャンク割り当て部9014は、ファイルシステムによって要求された割り当てのサイズを、チャンクの指針サイズで割ってもよい。チャンク割り当て部9014は、現在のストライプセット上に割り当てられるかもしれないチャンクの数を判断してもよい。例えば、チャンク割り当て部9014は、拡大におけるチャンクの数を、割り当てられ得るディスクスペースを依然として有するストライプセットの数で割ってもよい。
チャンク割り当て部9014はバイアスファクタを計算してもよいが、このバイアスファクタは、ディスク上に大きなランを隣接して配置する望ましさ、及び、スパンが多くのファイルシステムを有する場合に、ばらばらになるランを回避する望ましさを説明する。前者を説明するために、チャンク割り当て部9014は、現在のストライプセット上に割り当てられてもよいチャンクの数と比較して(本明細書で「隣接ファクタ」とも呼ばれる)、ランバイアスをより大きく決定してもよい。後者を説明するために、ファイルサーバ9002は、ファイルシステムの数を、ストライプセットの数で割ってもよい。もしこの商が1よりも大きい場合、バイアスファクタは、この商に隣接ファクタを掛けたものかもしれない。そうでない場合、バイアスファクタは、隣接ファクタに等しいかもしれない。
ストライプセットを選択するために、チャンク割り当て部9014は、各ストライプセットを採点し、且つ最も高いスコアを有するストライプセットを選択する。スコアは、スパン・サブスコア及びファイルシステム・サブスコアを含んでもよい。幾つかの実施形態において、スコアは、スパン・サブスコアとファイルシステム・サブスコアとの合計であってもよい。
スパン・サブスコアに対しては、チャンク割り当て部9014は、ストライプセットを、最も一杯なストライプセットと比例的に同程度に一杯にするために、ストライプセット上に割り当てられる必要がありそうなチャンクの数を、第一に判断してもよい。幾つかの実施形態において、スパン・サブスコアは、スパン加重とチャンクの数との積であってもよく、ここでのチャンクは、ストライプセットを、最も一杯なストライプセットと比例的に同程度に一杯にするために、ストライプセット上に割り当てられる必要がありそうなものである。従って、ストライプセットのスコアの一部は、スパンの負荷を仮定するための、他のストライプセットに対する、ストライプセットの入手可能性を説明する。ファイルシステム・サブスコアに対しては、チャンク割り当て部9014は、既にファイルシステムに割り当てられたストライプセット上のチャンクの数を判断してもよい。ファイルシステム・サブスコアは、ファイルシステム加重と、チャンクのこの数との積であってもよい。従って、ストライプセットのスコアの一部は、ストライプセットを、最も一杯なストライプセットと同じくらい一杯にするために、ストライプセットに割り当てられる必要がありそうなチャンクの数を説明してもよい。
幾つかの実施形態において、ファイルサーバ9002が、現在のストライプセットに対する選択にバイアスを与えていない場合、チャンク割り当て部9014は、他のファイルシステムのために既に予約されているチャンクを説明してもよいが、それは、チャンク割り当て部9014が、ストライプセット上で利用可能なチャンクの数を判断する場合である。例えば、もし他のファイルシステムの任意のものが、ストライプセット上でライブランを有する場合、チャンク割り当て部9014は、ランバイアスに等しいラン長に対して、ライブランに追加される必要がありそうなチャンクの数を判断してもよい。チャンク割り当て部9014は、ストライプセット上で利用可能なチャンクの全数から、この数を差し引いてもよい。最終的な数は、ストライプセットのスパン・サブスコアを判断するために、スパン加重が掛けられてもよい。チャンク割り当て部9014は、その後、ストライプセットのファイルシステム・スコア及び合計スコアを判断する。チャンク割り当て部9014は、最も高いスコアを有するストライプセットを選択する。
幾つかの実施形態において、ファイルサーバ9002が現在のストライプセットに対する選択にバイアスを与えている場合、ストライプセット上の可能なチャンクの数は、割り当てられていないチャンクの総数であってもよい。更に、チャンク割り当て部9014は、現在のストライプセット上の利用可能なチャンクの数に、バイアスファクタを付加してもよい。もし現在のストライプセットが最も高いスコアを有するか、又は最も高いスコアと同点である場合、チャンク割り当て部9014は、現在のストライプセットを選択する。そうでない場合、チャンク割り当て部9014は、あたかも自身が選択にバイアスを与えていないかのようにスコアを再計算し、且つ最も高いスコアを有するストライプセットを選択する。
幾つかの実施形態において、チャンク割り当て部9014が、新しいファイルシステムに対して第1チャンクを選択する場合、チャンク割り当て部9014は、1以上のSD上で提供されるストライプセットを選択する。多くの実施形態において、ファイルシステムの第1チャンクは、ファイルシステムの構造に関する情報を含む(例えば、メガデータ)。1以上のSD上で提供されるストライプセットを選択することによって、チャンク割り当て部9014は、そのような重要な情報を冗長的に格納し、もし別のコピーが失敗しても、少なくとも1つのコピーがアクセス可能であることを保証する。幾つかの実施形態において、チャンク割り当て部9014は、ストライプセットを選択する場合、単一のSD上の全てのストライプセットを排除する。幾つかの実施形態において、もし複数SDのストライプセットのどれもが空のチャンクを持たない場合、チャンク割り当て部9014は、単一SDのストライプセットを考慮することに戻る。
チャンク割り当て部9014は、ファイルシステムに割り当てるべき選択されたストライプセット上で、1以上のチャンクを選択する。もしチャンク割り当て部9014が現在のストライプセットを選択する場合、チャンク割り当て部9014は、ファイルシステムの最後に割り当てられたチャンクに直ちに続くチャンクが利用可能であるかを判断してもよい。もしそうであれば、チャンク割り当て部9014は、そのチャンクをファイルシステムに割り当てる。
チャンク割り当て部9014が新しいストライプセットを選択する場合、チャンク割り当て部9014は、予約されていないチャンクのランを検索し、且つその中の第1チャンクをファイルシステムに割り当てる。チャンク割り当て部9014は、自身の長さが少なくともランバイアスである、予約されていないチャンクのランを検索してもよい。もしチャンク割り当て部9014がそのようなランを見つける場合、ファイルサーバ9002は、そのランの中の第1チャンクをファイルシステムに割り当ててもよい。チャンク割り当て部9014は、ストライプセット上の予約されていないチャンクの最も長いランを検索し、且つこのランの中の第1チャンクをファイルシステムに割り当ててもよい。
幾つかの状況において、チャンク割り当て部9014は、ランバイアスのような、望ましい長さを有する予約されていないチャンクのランを見つけられないかもしれない。これらの状況では、チャンク割り当て部9014は、請求されたランを検索してもよい(例えば、他のファイルシステムのために予約され、割り当てられていないラン)。幾つかの実施形態において、チャンク割り当て部9014は、自身の長さがランバイアスに等しい、請求されていないランを検索してもよい。チャンク割り当て部9014は、請求されたランの後半における第1チャンクを、ファイルシステムに割り当ててもよい。幾つかの実施形態において、もしファイルシステムが、請求されたランにおける半分以上のチャンクを要求するディスクスペースの拡大を要求した場合、チャンク割り当て部9014は、請求されたランの前半の中でチャンクを識別し、それによって、要求されたチャンクの割り当ては、請求されたランの後半部分を満たすであろう。このように、利用可能なディスクスペースが少なくなる場合でさえも、ファイルサーバ9002は、ファイルシステムに対して、何らかの拡張可能性を保持するかもしれない。もしチャンク割り当て部9014が、ランバイアスに等しい長さを有する請求されたランを見つけられない場合、チャンク割り当て部9014は、ストライプセット上の最も長い請求されたランを検索し、且つその第1チャンクをファイルシステムに割り当ててもよい。
幾つかの実施形態において、もしチャンク割り当て部9014が、割り当てるべきチャンクを見つけられない場合、割り当ては失敗するかもしれない。ファイルサーバ9002は、エラーメッセージをクライアント9006に戻してもよい。
幾つかの実施形態において、ランバイアスに等しい長さを有するランを検索する代わりに、チャンク割り当て部9014は、ストライプセット上に割り当てられると予想されるファイルシステムに対して、チャンクの数に等しいランを検索してもよい。上で説明されたように、この数は、一杯でないストライプセットの数で割った、ファイルシステムに割り当てられるべきチャンクの総数であってもよい。幾つかの実施形態において、チャンク割り当て部9014は、この長さに従って検索するが、それは、長さが、スパンに対するランバイアスを超える場合である。
幾つかの状況において、ファイルシステムのためにディスクスペースを拡大する要求は、ストライプセットの指示を含むが、この指示から、ディスクスペースが割り当てられるべきである。もしストライプセットが、ファイルシステムの現在のストライプセットでない場合、チャンク割り当て部9014は、本明細書で説明される方法のいずれかに従って、チャンクを検索してもよい。
もしストライプセットが、ファイルシステムの現在のストライプセットである場合、チャンク割り当て部9014は、ライブランの直ぐ後にチャンクを割り当ててもよい。もし拡大が1以上のチャンクを要求する場合、チャンク割り当て部9014は、ランの長さがランバイアスに等しくなるまで、チャンク割り当てを継続してもよい。幾つかの実施形態において、もしライブランの後のチャンクが利用可能である場合、チャンク割り当て部9014は、ランバイアスを超えてランを拡大してもよい。幾つかの実施形態において、拡大における残りのチャンクに対しては、チャンク割り当て部9014は、本明細書で説明される他の方法のいずれかに従って、ディスクスペースを検索してもよい。
幾つかの状況において、ユーザーからの要求は、ディスクスペースの大きな拡大に対する要求を含む。スパンにわたって新しい負荷を分布させるために、チャンク割り当て部9014は、利用可能なチャンクを有する各ストライプセットからファイルシステムに、チャンクを割り当ててもよい。幾つかの実施形態において、チャンク割り当て部9014は、要求におけるチャンクの数を、一杯でないストライプセットの数で割ってもよい。チャンク割り当て部9014は、自身の長さがその商に等しい、請求されていないランに対して、各ストライプセットを検索してもよく、且つ各ランは、ファイルシステムのテーブルの中で単一のエントリを占有してもよい。幾つかの状況において、チャンク割り当て部9014は、自身の長さがランバイアスよりも長いランを、各ストライプセット上に割り当ててもよい。幾つかの実施形態において、もし商がランバイアスよりも小さい場合、チャンク割り当て部9014は、本明細書で説明される方法のいずれかに従って、ストライプセットを選択し、且つランバイアスに等しいチャンクのランを割り当ててもよい。チャンク割り当て部9014は、要求における全てのディスクスペースがファイルシステムに割り当てられてしまうまで、ストライプセットを選択し、且つランバイアスのチャンクを割り当てることを継続してもよい。
さて図11を参照すると、ファイルシステムに割り当てるべき、ストライプセット及びストライプセット上のチャンクを選択する方法の代表的な流れ図が示され、且つ説明される。本方法は、スパンに対してランバイアスを判断するステップを含み、そこではランバイアスは、ファイルシステムのためのアドレス移行テーブルにおけるエントリに関連付けられたディスクスペースの隣接するチャンクの数を示す(ステップ5005)。チャンク割り当て部が、ファイルシステムに、ランバイアスに等しいストライプセット上のディスクスペースの、隣接する多数のチャンクを割り当てる場合、チャンク割り当て部は、ディスクスペース拡大を提供するために、新しいストライプセットを判断することが可能である。幾つかの実施形態において、ファイルサーバは、メモリに格納された初期設定ランバイアスを引き出すことが可能である。幾つかの実施形態において、ファイルサーバは、ストライプセットの数及びファイルシステムの数に基づいて、潜在的なランバイアスを判断する。例えば、ファイルシステムは、ストライプセットの数を2で割り、且つその結果としての値を、ファイルシステムの数で割ることが可能である。もしその結果が初期設定ランバイアスよりも小さい場合、その結果はランバイアスとなり得る。
本方法は、ファイルシステムのために、ディスクスペースを拡大する要求を受信するステップを含む(ステップ5010)。幾つかの実施形態において、ファイルサーバは、ディスクスペースの拡大を要求するファイルシステムに基づいて、スパン加重及びファイルシステム加重を引き出す。幾つかの実施形態において、ファイルサーバの単一のチャンク割り当て部は、スパン加重及びファイルシステム加重を引き出す。他の実施形態において、ファイルサーバは、ファイルシステムに基づいて、複数のチャンク割り当て部から、1つのチャンク割り当て部を選択する。これらの実施形態において、各チャンク割り当て部は、スパン加重とファイルシステム加重の唯一のペアを格納する。
本方法は、ストライプセット上の未使用のチャンクの数、及びファイルシステムによって使用されているストライプセット上のチャンクの数に少なくとも部分的に基づいて、1つのグループのストライプセット中の各ストライプセットを採点するステップを含む(ステップ5015)。各ストライプセットに対して、チャンク割り当て部は、ストライプセットを最も一杯なストライプセットと比例的に同程度に一杯にするために、ストライプセット上に割り当てられる必要がありそうなチャンクの数を、スパン加重に掛けることが可能である。各ストライプセットに対して、チャンク割り当て部はまた、ファイルシステムによって使用されているストライプセット上のチャンクの数を、ファイルシステム加重に掛けることが可能である。チャンク割り当て部は、これら2つの積の和に等しいストライプセットに対して、スコアを設定することが可能である。幾つかの実施形態において、現在のストライプセットに対してスコアを判断する場合、チャンク割り当て部は、バイアスファクタを含むことが可能である。幾つかの実施形態において、ストライプセット上の未使用のチャンクの数は、他のファイルシステムのために予約されるディスクスペースの、割り当てられていないチャンクを説明することが可能である。
本方法は、最も高いスコアを有するストライプセット上のチャンクを割り当てるステップを含み、そこでは、割り当てられたチャンクは、他のファイルシステムのために予約されたランの外側にある(ステップ5020)。もしファイルシステムの現在のストライプセットが最も高いスコアを有する場合、チャンク割り当て部は、ファイルシステムの最後に割り当てられたチャンクの後に続くチャンクを割り当てることが可能である。幾つかの実施形態において、チャンク割り当て部は、予約されていないチャンクのランを検索し、且つそのランにおける第1チャンクをファイルシステムに割り当ててもよい。チャンク割り当て部は、自身の長さが少なくともランバイアスである、予約されていないチャンクのランを検索し、且つそのランにおける第1チャンクをファイルシステムに割り当ててもよい。チャンク割り当て部は、ストライプセット上の予約されていないチャンクの、最も長いランを検索し、且つこのランにおける第1チャンクを、ファイルシステムに割り当ててもよい。
幾つかの実施形態において、チャンク割り当て部は、自身の長さがランバイアスに等しい、請求されたランを検索することが可能である。チャンク割り当て部は、請求されたランの後半における第1チャンクをファイルシステムに割り当てるか、又は、本明細書で説明される他の方法によって説明される請求されたランにおける他の任意のチャンクを、ファイルシステムに割り当ててもよい。幾つかの実施形態において、チャンク割り当て部は、ストライプセット上の最も長い請求されたランを検索し、且つその第1チャンクをファイルシステムに割り当てることが可能である。
さて図12を参照すると、ストライプセットを選択する方法の代表的な流れ図が示され、且つ説明される。ここで、該ストライプセットからチャンクが割り当てられることになるが、それは、現在のストライプセットが、ファイルシステムのための拡大可能なライブランを含む場合である。本方法は、ストライプセット上で、ファイルシステムの最後に割り当てられたチャンクの後のチャンクが利用可能であることを判断するステップを含む(ステップ6005)。チャンク割り当て部は、ファイルシステムの最後に割り当てられたチャンクの位置を突き止め、且つ後に続くチャンクが利用可能かどうかを判断することが可能である。幾つかの実施形態において、チャンク割り当て部は、ファイルシステムのライブランの長さがランバイアスに等しくないことを判断することが可能である。
本方法は、ファイルシステムの最後に割り当てられたチャンクを有するストライプセットに対して、バイアスファクタを判断するステップを含む(ステップ6010)。幾つかの実施形態において、チャンク割り当て部は、第一に、拡大されているファイルシステムに割り当てるべきチャンクの数を判断するが、この判断は、例えば、ファイルシステムによって要求された割り当てのサイズを、チャンクの指針サイズで割ることによる。チャンク割り当て部は、現在のストライプセット上に割り当てられてもよいチャンクの数を判断できるが、この判断は、例えば、拡大におけるチャンクの数を、割り当てられ得るディスクスペースを依然として有するストライプセットの数で割ることによる。
バイアスファクタは、ディスクスペースに大きなランを隣接して配置する望ましさ、及び、スパンが多くのファイルシステムを有する場合に、ばらばらになるランを回避する望ましさを説明することが可能である。前者を説明するために、チャンク割り当て部は、現在のストライプセット上に割り当てられてもよいチャンクの数と比較して(本明細書では隣接ファクタとも呼ばれる)、ランバイアスをより大きく決定することが可能である。後者を説明するために、ファイルサーバは、ファイルシステムの数をストライプセットの数で割ることが可能である。もしこの商が1よりも大きい場合、バイアスファクタは、この商に隣接ファクタを掛けたものであり得る。
そうでない場合、バイアスファクタは隣接ファクタに等しいことが可能である。
本方法は、ファイルシステムの最後に割り当てられたチャンクを有するストライプセットを採点するステップを含み、この採点は、バイアスファクタ、ストライプセットを最も一杯なストライプセットと比例的に同程度に一杯にするために、ストライプセット上に割り当てられる必要がありそうなチャンクの数、及び/又は、ファイルシステムによって使用されているストライプセット上のチャンクの数、に少なくとも部分的に基づく(ステップ6015)。チャンク割り当て部は、バイアスファクタを、ストライプセット上の利用可能なチャンクの数に付加することが可能である。チャンク割り当て部は、この数にスパン加重を掛け、且つファイルシステムによって使用されているストライプセット上のチャンクの数に、ファイルシステム加重を掛けることが可能である。これらの2つの積の和は、現在のストライプセットのスコアであり得る。
本方法は、他のストライプセットの各々を採点するステップを含むことが可能であり、この採点は、ストライプセットを最も一杯なストライプセットと比例的に同程度に一杯にするために、ストライプセット上に割り当てられる必要がありそうなチャンクの数、及び/又は、ファイルシステムによって使用されているストライプセット上のチャンクの数、に少なくとも部分的に基づく(ステップ6020)。各ストライプセットに対して、チャンク割り当て部は、スパン加重に、ストライプセットを最も一杯なストライプセットと比例的に同程度に一杯にするために、ストライプセット上に割り当てられる必要がありそうなチャンクの数を掛け、且つファイルシステム加重に、ファイルシステムによって使用されているストライプセット上のチャンクの数を掛けることが可能である。これらの2つの積の和は、ストライプセットのスコアであり得る。
本方法は、最も高いスコアを有するストライプセットを選択するステップを含むことが可能である(ステップ6025)。もし現在のストライプセットが最も高いスコアを有するか、又は最も高いスコアと同点である場合、ファイルサーバは、現在のストライプセットを選択する。そうでない場合、本明細書で説明されるように、ファイルサーバは、あたかも現在のストライプセットに対して、自身がその選択にバイアスを与えていないかのようにスコアを再計算し、且つ最も高いスコアを有するストライプセットを選択する。
さて図13を参照すると、ストライプセットを選択する方法の代表的な流れ図が示され、且つ説明されるが、これは、現在のストライプセットが、ファイルシステムのための拡大可能なライブランを含まない場合である。本方法は、ストライプセット上でファイルシステムの最後に割り当てられたチャンクが別のファイルシステムによって使用されている後に、チャンクが異なるストライプセット上に位置するか、又は存在しないことを判断するステップを含む(ステップ7005)。チャンク割り当て部は、ファイルシステムの最後に割り当てられたチャンクの位置を突き止め、且つ後に続くチャンクが利用可能であるかどうかを判断する。幾つかの実施形態において、チャンク割り当て部は、このチャンクが既に他のファイルシステムに割り当てられたことを判断することが可能である。幾つかの実施形態において、チャンク割り当て部は、次のチャンクが存在しないという具合に、ファイルシステムの最後に割り当てられたチャンクがストライプセット上の最後のチャンクであることを判断することが可能である。幾つかの実施形態において、チャンク割り当て部は、次のチャンクが異なるストライプセット上にあることを判断することが可能である。
本方法は、1つのグループのストライプセット中の各ストライプセットを採点するステップを含み、この採点は、ストライプセットを最も一杯なストライプセットと比例的に同程度に一杯にするために、ストライプセット上に割り当てられる必要がありそうなチャンクの数と、他のファイルシステムのために予約されたチャンクの数と、ファイルシステムによって使用されているストライプセット上のチャンクの数との間の差に、少なくとも部分的に基づく(ステップ7010)。各ストライプセットに対して、ファイルサーバは、未使用のチャンクの数及びファイルシステムのために予約されたチャンクの数を判断することが可能である。ファイルサーバは、未使用のチャンクの数から予約されたチャンクの数を差し引き、且つこの差にスパン加重を掛けることが可能である。ファイルサーバは、ファイルシステムによって使用されているストライプセット上のチャンクの数に、ファイルシステム加重を掛けることが可能である。その積の和は、ストライプセットのスコアであろう。
本方法は、最も高いスコアを有するストライプセットを選択するステップを含む(ステップ7015)。ファイルサーバは、ストライプセットのスコアを比較し、且つ最も高いスコアを有するものを選択する。
さて図14を参照すると、代表的なテーブル9025’が示され、且つ説明されるが、このテーブルは、ファイルシステムに割り当てられたランのファイルシステムスペースに、開始アドレス及び終了アドレスを格納する。テーブル9025’は、DIチップ9020のようなDIチップ上にある。代表的なテーブル9025’は、ボリューム対応付けテーブルである。代表的な実施形態において、ファイルシステムのためのボリューム対応付けテーブルは、やはりDIチップ上に格納される、関連したストライプセット対応付けテーブル(便宜上、図示せず)を有する。ボリューム対応付けテーブルにおけるエントリは、ランのためのファイルシステムスペースにアドレスを格納する。ストライプセット対応付けテーブルの中の対応するエントリは、SD上の位置を格納し、該位置に、ファイルシステムスペースにおけるアドレスが対応付けられる。
テーブル9052’の1つの代表的使用法において、スパンは64個のチャンクの初期設定ランバイアスを有し、且つファイルサーバ9002は、そのランバイアスに対して初期設定ランバイアスを選択している。テーブル9025’は3つのエントリを有し、且つ各エントリは、ファイルシステムに割り当てられたチャンクのランのファイルシステムスペースにおける位置を格納する。第1のランに対して、チャンク割り当て部9014はストライプセットを選択し、且つ16個のチャンクの請求されていないランを検索した。チャンク割り当て部9014は、テーブル中の第1エントリにおいて、請求されていないランにおける第1チャンクに対して、開始アドレスBA1を選択し、且つ格納した。チャンク割り当て部9014はまた、テーブルエントリにおけるこのチャンクの最後のアドレスEA1を格納したが、これはライブランの終了を意味する。ファイルシステムがディスクスペースの付加的な拡大を要求した時、チャンク割り当て部9014は、EA1の後に継続するチャンクを割り当て、且つランの格納された終了アドレスEA1を更新したが、この割り当て/更新は、BA1とEA1との間のファイルスペースが、ファイルシステムに割り当てられてきたディスクスペースの、16個の隣接するチャンクに対応するまで行われた。
次回ファイルシステムがディスクスペースの拡大を要求した場合、チャンク割り当て部9014は、ストライプセットを選択し、且つ16個のチャンクの別の請求されていないランを検索した。チャンク割り当て部9014は、テーブル中の第2エントリにおいて、この次の請求されていないランにおける第1チャンクに対して、開始アドレスBA2及び終了アドレスEA2を選択し、且つ格納した。再び、チャンク割り当て部9014は、EA2の後に継続するチャンクを割り当てると共に、ランの終了アドレスEA2を更新し、且つ格納したが、この割り当て/更新/格納は、BA2とEA2との間のファイルスペースが、ファイルシステムに割り当てられてきたディスクスペースの、16個の隣接するチャンクに対応するまで行われた。
ディスクスペースの次の拡大に対して、チャンク割り当て部9014はストライプセットを再び選択し、且つ16個のチャンクの請求されていないランを検索した。チャンク割り当て部9014は、テーブル中の第3エントリにおいて、この次の請求されていないランにおける第1チャンクに対して、開始アドレスBA3及び終了アドレスEA3を選択し、且つ格納した。再び、チャンク割り当て部9014は、EA3の後に続くチャンクを割り当てると共に、ランの終了アドレスEA3を更新し、且つ格納したが、この割り当て/更新/格納は、BA3とEA3との間のファイルスペースが、ファイルシステムに割り当てられてきたディスクスペースの、16個の隣接するチャンクに対応するまで行われた。テーブル9052’の別の代表的な使用法において、スパンは、3つのストライプセット、及び16個のチャンクの初期設定ランバイアスを有する。ファイルシステムは、300個のチャンクに等しいディスクスペースの大きな割り当てを要求した。スパンにわたって負荷を均衡させるために、チャンク割り当て部9014は、3つのストライプセットの各々に対して、100個のチャンクを割り当てることを試みる。この実施形態において、チャンク割り当て部9014は、100個のチャンクの請求されていないランに対して、各ストライプセットを検索する。
チャンク割り当て部9014は、アドレスBA1とアドレスEA1との間の第1ストライプセット上に、請求されていないランの100個のチャンクを見つける。チャンク割り当て部9014は、これら100個のチャンクをファイルシステムに割り当て、且つテーブル9025’の第1エントリにアドレスBA1及びアドレスEA1を格納する。チャンク割り当て部9014は、アドレスBA2とアドレスEA2との間の第2ストライプセット上に、請求されていないランの100個のチャンクを見つける。チャンク割り当て部9014は、これら100個のチャンクをファイルシステムに割り当て、且つテーブル9025’の第2エントリにアドレスBA2及びアドレスEA2を格納する。チャンク割り当て部9014は、アドレスBA3とアドレスEA3との間の第3ストライプセット上に、請求されていないランの100個のチャンクを見つける。チャンク割り当て部9014は、これら100個のチャンクをファイルシステムに割り当て、且つテーブル9025”の第3エントリにアドレスBA3及びアドレスEA3を格納する。このように、16個のチャンクのランバイアスにもかかわらず、チャンク割り当て部9014は、可能な限り少ない付加的なテーブルエントリを使用しながら、スパンにわたってディスクスペースの割り当てを大きく分布させるために、より長いランを割り当てることが可能である。
さて図15を参照すると、スパンにわたって負荷均衡を改善するために、ランバイアスを減少させる方法のための代表的な流れ図が示され、且つ説明される。本方法は、初期設定ランバイアスを獲得するステップを含む(ステップ1505)。幾つかの実施形態において、ファイルサーバ9002は、データ記憶システムのユーザーによって入力された初期設定ランバイアスをメモリから引き出す。他の実施形態において、ファイルサーバ9002は、スパンの管理者によって設定された初期設定ランバイアスをメモリから引き出す。本方法は、ストライプセットの数を2で割り、且つその結果としての値をファイルシステムの数で割るステップを含む(ステップ1510)。本方法は、その結果としての商を、初期設定ランバイアスと比較するステップを含む(ステップ1515)。本方法は、より小さな値に等しいランバイアスを設定するステップを含む(ステップ1520)。
さて図16を参照すると、ファイルシステムに割り当てるべきストライプセット上で、予約されていないチャンクを検索する方法のための代表的な流れ図が示され、且つ説明される。本方法は、複数のファイルシステムに関連付けられたチャンクを追跡するために、チャンクデータベースを維持するステップを含み、このチャンクデータベースは、固定数のエントリを含み、各エントリは、ファイルシステムの1つに割り当てられたストレージの一部の開始アドレス及び長さに関する情報を格納することが可能である(ステップ1605)。本方法は、複数のファイルシステムにおいて、ファイルシステムを拡大する要求を受信するステップを含む(ステップ1610)。本方法は、自身からストレージを割り当てるべきストライプセットを選択するステップを含む(ステップ1615)。本方法は、ストライプセット上の開始アドレスを有するチャンクデータベースからエントリを引き出すステップを含み、そこではエントリは、複数のファイルシステムにおける異なるファイルシステムのライブランに対応する(ステップ1620)。本方法は、ストライプセット上で少なくとも1つのチャンクを識別するステップを含み、このチャンクは、ライブランにおける最後のチャンクに続き、且つこれに隣接するN個のチャンクの後に位置し、ここでNは、ライブランのアクティブラン長を引いたランバイアスに等しい(ステップ1625)。本方法は、もし少なくとも1つのチャンクが利用可能である場合、少なくとも1つのチャンクをファイルシステムに割り当てるステップを含む(ステップ1630)。
さて図17を参照すると、ファイルサーバによって、ファイルシステムに対するストレージを拡大する方法のための代表的な流れ図が示され、且つ説明される。ここで、このファイルシステムは、複数のストライプセットから選択された複数のチャンクを含み、ファイルサーバは、ファイルシステムの仮想アドレススペースを、ファイルサーバによってチャンクに関連付けられた物理記憶アドレスに対応付ける。
本方法は、複数のファイルシステムに関連付けられたチャンクを追跡するためのチャンクデータベースを維持するステップを含み、このチャンクデータベースは固定数のエントリを含み、各エントリは、ファイルシステムの1つに割り当てられたストレージの一部の開始アドレス及び長さに関する情報を格納することが可能である(ステップ1705)。本方法は、複数のファイルシステムにおいて、ファイルシステムを拡大する要求を受信するステップを含む(ステップ1710)。本方法は、要求に対するチャンクの数が、ランバイアスにおけるチャンクの数とスパン上のストライプセットの数との積を超えることを判断するステップを含む(ステップ1715)。本方法は、要求に対するチャンクの数をストライプセットの数で割ることによって、各ストライプセットから割り当てるべきチャンクの数を判断するステップを含む(ステップ1720)。本方法は、各ストライプセットから割り当てるべきチャンクの数に等しい、利用可能なチャンクのランを、各ストライプセット上で、検索するステップを含む(ステップ1725)。本方法は、利用可能なチャンクのランを、各ストライプセットから、割り当てるステップを含む(ステップ1730)。本方法は、利用可能なチャンクのランに関連付けられたチャンクデータベースにおいて、利用可能なチャンクの各ランに対して、エントリを作成するステップを含み、ここでエントリは、ランの長さを含む(ステップ1735)。
上で説明された代表的な実施形態において、ランバイアスは、ファイルシステムに割り当てられたチャンクのラン長を制限するために使用されてもよい。従って、上で説明された代表的な実施形態は、一般に、更に多数のチャンクが、固定長のチャンクデータベースに基づいて、ファイルシステムに割り当てられることを可能にする一方で、例えば、ファイルシステムがX個のチャンクに制限されるというよりはむしろ、ランバイアスは、ファイルシステムがどれだけ拡大され得るかを依然として有効に制限し(ここでXは、チャンクデータベースにおけるエントリの数である)、ファイルシステムは、ある実施形態において、(ランバイアス*X)個のチャンクに有効に制限されてもよい。従って、様々な代替的実施形態において、ファイルシステムがその最後のチャンク・データベース・エントリにある場合、又はその近くにある場合、ランバイアス制限(及びランバイアスが適用される方法、並びにチャンクが予約される方法)は、より長いラン長を許可するために修正されてもよい。しかし、一例として、ファイルシステムがその最後のチャンク・データベース・エントリにある場合、ファイルシステムが拡大を継続することを可能にするために、ランバイアスは、ファイルシステムに対して増加されるか、又は完全に削除されてもよい。ランバイアスのそのような増加又は削除に関連して、より多数の隣接するチャンク、例えば所定最大数のチャンク又はファイルシステムの所定パーセント増加(例えば、所定パーセントだけファイルシステムを拡大するのに必要となりそうなチャンクの数)、が予約されてもよい。
注意されるべきことであるが、用語「サーバ」は、本明細書では装置を説明するために使用されるが、この装置は、通信システムにおいて使用されてもよく、且つ本発明を任意の特別なタイプの装置に限定すると解釈されるべきではない。従って、本発明の実施形態は、クライアント、サーバ、コンピュータ、スイッチ、又は他のタイプの通信装置において履行されてもよい。
本発明は、多くの異なる形態において具体化されてもよく、多くの異なる形態には、以下に限定されるものではないが、プロセッサ(例えば、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ、又は汎用コンピュータ)と共に使用するためのコンピュータ・プログラム・ロジック、プログラマブルロジック装置(例えば、フィールド・プログラマブル・ゲート・アレイ(FPGA)又は他のPLD)と共に使用するためのプログラマブルロジック、個別部品、集積回路(例えば、特定用途向け集積回路(ASIC))又はこれらの任意の組み合わせを含む他の手段が含まれる。
本明細書で先に説明された機能性の全て又は一部を履行するコンピュータ・プログラム・ロジックは、様々な形態で具体化されてもよい。様々な形態には、以下に限定されるものではないが、ソースコード形態、コンピュータ実行形態、及び様々な中間形態(例えば、アセンブラ、コンパイラ、リンカー、又はロケーターによって生成される形態)が含まれる。ソースコードは、様々なオペレーティングシステム又はオペレーティング環境と共に使用するための適切なプログラミング言語(例えば、目的コード、アセンブリ言語、又は、Fortran、C、C++、JAVA、又はHTMLのような高レベル言語)において履行される、一連のコンピュータプログラム命令を含んでもよい。ソースコードは、様々なデータ構造及び通信メッセージを定義し、且つ使用する。ソースコードは、コンピュータ実行可能形態であってもよく(例えば、解釈プログラムを介して)、又はソースコードは、(例えば、翻訳プログラム、アセンブラ、又はコンパイラを介して)コンピュータ実行可能形態に変換されてもよい。
コンピュータプログラムは、有形の記憶媒体において、永久的又は一時的のいずれかで、任意の形態(例えば、ソースコード形態、コンピュータ実行可能形態、又は中間形態)に固定されるが、有形の記憶媒体には、半導体メモリ装置(例えば、RAM、ROM、PROM、EEPROM、又はフラッシュ−プログラマブルRAM)磁気メモリ装置(例えば、ディスケット又は固定ディスク)、光メモリ装置(例えば、CD−ROM)、PCカード(例えば、PCMCIA)、又は他のメモリ装置のようなものが含まれる。コンピュータプログラムは、様々な通信技術の任意の技術を用いて、コンピュータに伝達可能である信号における任意の形態に固定されてもよく、様々な通信技術には、以下に限定されるものではないが、アナログ技術、デジタル技術、光技術、無線技術(例えば、ブルートゥース)、ネットワーク技術、及びインターネットワーキング技術が含まれる。コンピュータプログラムは、印字された文書又は電子文書(例えば、収縮包装されたソフトウェア)を伴ったリムーバブル記憶媒体として任意の形態で配布されてもよく、コンピュータシステムにプレインストールされているか(例えば、システムROM又は固定ディスク上に)、又は、サーバ又は電子掲示板から通信システムを通して配布されてもよい(例えば、インターネット又はワールド・ワイド・ウェブ)。
本明細書で先に説明された機能性の全て又は一部を履行するハードウェアロジック(プログラマブルロジック装置と共に使用するためのプログラマブルロジックを含む)は、伝統的な手動方法を用いて設計されてもよく、又は、コンピュータ支援設計(CAD),ハードウェア記述言語(例えば、VHDL又はAHDL)又はPLDプログラミング言語(例えば、PALASM、ABEL、又はCUPL)のような様々なツールを用いて、設計され、データが取り込まれ、シミュレーションされ、又は電子的に文書化されてもよい。
プログラマブルロジックは、半導体メモリ装置(例えば、RAM、ROM、PROM、EEPROM、又はフラッシュ−プログラマブルRAM)、磁気メモリ装置(例えば、ディスケット、又は固定ディスク)、光メモリ装置(例えば、CD−ROM)又は他のメモリ装置のような有形の記憶媒体に、永久的又は一時的のいずれかで固定される。プログラマブルロジックは、様々な通信技術の任意の技術を用いて、コンピュータに伝達可能である信号に固定されてもよく、様々な通信技術には、以下に限定されるものではないが、アナログ技術、デジタル技術、光技術、無線技術(例えば、ブルートゥース)、ネットワーク技術、及びインターネットワーキング技術が含まれる。プログラマブルロジックは、印字された文書又は電子文書(例えば、収縮包装されたソフトウェア)を伴ったリムーバブル記憶媒体として配布されてもよく、コンピュータシステムにプレインストールされるか(例えば、システムROM又は固定ディスク上に)、又は、サーバ又は電子掲示板から通信システムを通して配布されてもよい(例えば、インターネット又はワールド・ワイド・ウェブ)。
本発明の様々な実施形態は、この節に続く(且つこの出願の末端部に提供された実際の請求項の前の)節に列挙された潜在的な請求項によって特徴付けられてもよい。これらの潜在的な請求項は、この出願の書面による明細の一部を形成する。従って、次の潜在的な請求項の主題は、この出願、又はこの出願に基づいて優先権を主張する任意の出願を含む後の訴訟手続きにおいて、実際の請求項として提示されてもよい。そのような潜在的な請求項を包含することは、実際の請求項が、潜在的な請求項の主題を対象としないことを意味すると解釈されるべきではない。従って、後の訴訟手続きにおいて、これらの潜在的な請求項を提示しない決定は、一般の人々にその主題を寄贈するものと解釈されるべきではない。
限定することなく、請求されるかもしれない潜在的な主題(以下に提示される実際の請求項との混乱を回避するように、文字「P」で始められる)は、以下を含む。
[請求項P16]
きめ細かな、拡張可能な方法でファイルシステムのためのストレージを拡大する方法であって、
スパンに対するランバイアスをファイルサーバによって判断するステップであって、前記ランバイアスは、ファイルシステムのためのアドレス移行テーブルにおけるエントリに関連付けられたメモリの隣接するチャンクの数を示す、ステップと、
前記ファイルシステムのためのメモリを拡大することに対する要求を、前記ファイルサーバによって受信するステップと、
1つのグループのストライプセット中の各ストライプセットをチャンク割り当て部によって採点するステップであって、この採点が、前記ストライプセットにおける未使用のチャンクの数、及び前記ファイルシステムによって使用されている前記ストライプセット上のチャンクの数に少なくとも部分的に基づく、ステップと、
最も高いスコアを有する前記ストライプセット上のチャンクを、前記チャンク割り当て部によって割り当てるステップであって、前記割り当てられたチャンクは、他のファイルシステムのために予約されたランの外側にある、ステップと、
を備える、方法。
[請求項P17]
請求項P16に記載の方法であって、
スパンに対する前記ランバイアスを判断するステップは、
初期設定ランバイアスを前記ファイルサーバによって判断すること、
を備える、方法。
[請求項P18]
請求項P16に記載の方法であって、
スパンに対する前記ランバイアスを判断するステップは、
ストライプセットの数及びファイルシステムの数に基づいて、前記ランバイアスを前記ファイルサーバによって判断すること、
を備える、方法。
[請求項P19]
請求項P16に記載の方法であって、
各ストライプセットを採点するステップは、
前記ファイルシステムの最後に割り当てられたチャンクの後のチャンクが利用可能であることを、前記チャンク割り当て部によって判断することと、
前記ファイルシステムの現在のストライプセットのために、バイアスファクタを前記チャンク割り当て部によって判断することであって、前記現在のストライプセットは、前記ファイルシステムの前記最後に割り当てられたチャンクを含む、ことと、
前記バイアスファクタを有する前記現在のストライプセットを、前記チャンク割り当て部によって採点することと、
を備える、方法。
[請求項P20]
請求項P16の方法であって、
各ストライプセットを採点するステップは、
前記ファイルシステムの最後に割り当てられたチャンクの後のチャンクが、別のファイルシステムによって使用されることを、前記チャンク割り当て部によって判断することと、
1つのグループのストライプセット中の各ストライプセットを前記チャンク割り当て部によって採点することであって、この採点は、前記ストライプセット上の未使用のチャンクの数と、他のファイルシステムのために予約されるチャンクの数との間の差に少なくとも部分的に基づく、ことと、
を更に備える、方法。
[請求項P21]
請求項P16に記載の方法であって、
各ストライプセットを採点するステップは、
1つのグループのストライプセット中の各ストライプセットを、前記チャンク割り当て部によって採点することであって、この採点は、前記ストライプセット上の未使用のチャンクの数、スパン加重、前記ファイルシステムによって使用されている前記ストライプセット上のチャンクの数、及びファイルシステム加重に少なくとも部分的に基づく、こと、
を更に備える、方法。
[請求項P22]
請求項P16に記載の方法であって、
最も高いスコアを有する前記ストライプセット上に前記チャンクを割り当てるステップは、
前記ファイルシステムの最後に割り当てられたチャンクの後のチャンクを、前記チャンク割り当て部によって選択すること、
を備える、方法。
[請求項P23]
請求項P16に記載の方法であって、
最も高いスコアを有する前記ストライプセット上に前記チャンクを割り当てるステップは、
自身の長さが少なくとも前記ランバイアスである、予約されていないチャンクのランを、前記チャンク割り当て部によって検索することと、
前記ランにおける第1チャンクを、前記チャンク割り当て部によって選択することと、
を備える、方法。
[請求項P24]
請求項P16に記載の方法であって、
最も高いスコアを有する前記ストライプセット上に前記チャンクを割り当てるステップは、
自身の長さが少なくとも前記ランバイアスである、予約されたチャンクのランを、前記チャンク割り当て部によって検索することと、
前記ランの後半における第1チャンクを、前記チャンク割り当て部によって選択することと、
を備える、方法。
[請求項P25]
データ記憶システムであって、
チャンク割り当て部を備えるファイルサーバであって、前記ファイルサーバは、スパンに対するランバイアスを判断するように構成され、前記ランバイアスは、ファイルシステムのためのアドレス移行テーブルにおけるエントリに関連付けられたメモリの隣接するチャンクの数を示し、且つ、
前記チャンク割り当て部は、1つのグループのストライプセット中の各ストライプセットを採点するように構成され、この採点は、前記ストライプセットにおける未使用のチャンクの数、及び前記ファイルシステムによって使用されている前記ストライプセット上のチャンクの数に少なくとも部分的に基づき、且つ、
前記チャンク割り当て部は、最も高いスコアを有する前記ストライプセット上にチャンクを割り当てるように構成され、前記割り当てられたチャンクは、他のファイルシステムのために予約されたランの外側にある、ファイルサーバ、
を備える、データ記憶システム。
[請求項P26]
請求項P25に記載のデータ記憶システムであって、
前記ファイルサーバは、初期設定ランバイアスを判断するように更に構成される、データ記憶システム。
[請求項P27]
請求項P25に記載のデータ記憶システムであって、
前記ファイルサーバは、ストライプセットの数及びファイルシステムの数に基づいて、前記ランバイアスを判断するように更に構成される、データ記憶システム。
[請求項P28]
請求項P25に記載のデータ記憶システムであって、
前記チャンク割り当て部は、前記ファイルシステムの最後に割り当てられたチャンクの後のチャンクが利用可能であることを判断し、
前記ファイルシステムの現在のストライプセットに対するバイアスファクタを判断し、前記現在のストライプセットは、前記ファイルシステムの前記最後に割り当てられたチャンクを含み、
且つ、前記バイアスファクタを有する前記現在のストライプセットを採点する、
ように更に構成される、データ記憶システム。
[請求項P29]
請求項P25に記載のデータ記憶システムであって、
前記チャンク割り当て部は、前記ファイルシステムの最後に割り当てられたチャンクの後のチャンクが別のファイルシステムによって使用されることを決定し、
且つ、前記ストライプセット上の未使用のチャンクの数と、他のファイルシステムのために予約されたチャンクの数との間の差に少なくとも部分的に基づいて、1つのグループのストライプセット中の各ストライプセットを採点する、
ように更に構成される、データ記憶システム。
[請求項P30]
請求項P25に記載のデータ記憶システムであって、
前記チャンク割り当て部は、1つのグループのストライプセット中の各ストライプセットのスコアを採点するように更に構成され、この採点は、前記ストライプセット上の未使用のチャンク、スパン加重、前記ファイルシステムによって使用されている前記ストライプセット上のチャンクの数、及びファイルシステム加重に少なくとも部分的に基づく、データ記憶システム。
[請求項P31]
請求項P25に記載のデータ記憶システムであって、
前記チャンク割り当て部は、前記ファイルシステムの最後に割り当てられたチャンクの後のチャンクを選択するように更に構成される、データ記憶システム。
[請求項P32]
請求項P25に記載のデータ記憶システムであって、
前記チャンク割り当て部は、自身の長さが少なくともランバイアスである、予約されていないチャンクのランを検索し、
且つ前記ランにおける第1チャンクを選択する、
ように更に構成される、データ記憶システム。
[請求項P33]
請求項P25に記載のデータ記憶システムであって、
前記チャンク割り当て部は、
自身の長さが少なくともランバイアスである、予約されたチャンクのランを検索し、
且つ前記ランの後半における第1チャンクを選択する、
ように更に構成される、データ記憶システム。
[請求項P34]
ファイルサーバによってファイルシステムのためのストレージを拡大する方法であって、
前記ファイルシステムは、複数のストライプセットから選択された複数のチャンクを含み、前記ファイルサーバは、ファイルシステムの仮想アドレススペースを、前記チャンクに関連付けられた物理記憶アドレスに対応付け、
前記方法は、ファイルサーバによって、
複数のファイルシステムに関連付けられた前記チャンクを追跡するためのチャンクデータベースを維持するステップであって、前記チャンクデータベースは固定数のエントリを含み、各エントリは、前記ファイルシステムの1つに割り当てられたストレージの一部の開始アドレス及び長さに関する情報を格納することが可能である、ステップと、
前記複数のファイルシステムにおいて、ファイルシステムを拡大する要求を受信するステップと、
自身からストレージを割り当てるべきストライプセットを選択するステップと、
前記ストライプセット上で開始アドレスを有する前記チャンクデータベースからエントリを引き出すステップであって、前記エントリは、前記複数のファイルシステムにおける異なるファイルシステムのライブランに対応する、ステップと、
前記ストライプセット上で少なくとも1つのチャンクを識別するステップであって、前記ストライプセットは、ライブランにおける最後のチャンクに続き、且つライブランにおける最後のチャンクに隣接するN個のチャンクの後に位置し、Nは前記ライブランのアクティブラン長を引いたランバイアスに等しい、ステップと、
もし少なくとも1つのチャンクが利用可能である場合、前記ファイルシステムに前記少なくとも1つのチャンクを割り当てるステップと、
を備える、方法。
[請求項P35]
請求項P34に記載の方法であって、
前記ストライプセット上に開始アドレスを有する前記チャンクデータベースからエントリを引き出し、且つ、少なくとも1つのチャンクが利用可能となるまで、前記少なくとも1つのチャンクを識別することを継続するステップであって、前記少なくとも1つのチャンクは、前記ライブランにおける最後のチャンクに続き、且つ前記ライブランにおける最後のチャンクに隣接するN個のチャンクの後に位置する、ステップ、
を更に備える、方法。
[請求項P36]
請求項P34に記載の方法であって、
前記ストライプセット上で少なくとも1つのチャンクを識別するステップは、
ランバイアスに等しい利用可能なチャンクのランを識別すること、
を備える、方法。
[請求項P37]
請求項P34に記載の方法であって、
前記ストライプセット上で少なくとも1つのチャンクを識別するステップは、
前記ストライプセット上で利用可能なチャンクの最も長いランを識別すること、
を備える、方法。
[請求項P38]
データ記憶システムであって、
メモリであって、該メモリに、複数のファイルシステムに関連付けられたチャンクを追跡するためのチャンクデータベースが格納され、前記チャンクデータベースは固定数のエントリを含み、各エントリは、前記ファイルシステムに割り当てられたストレージの一部の開始アドレス及び長さに関する情報を格納することが可能である、メモリと、
チャンク割り当て部であって、該チャンク割り当て部は、前記複数のファイルシステムにおいてファイルシステムを拡大する要求を受信し、自身からストレージを割り当てるべきストライプセットを選択し、前記ストライプセット上に開始アドレスを有するチャンクデータベースからエントリを引き出し(前記エントリは、前記複数のファイルシステムにおける異なるファイルシステムのライブランに対応する)、前記ストライプセット上で少なくとも1つのチャンクを識別し(前記ストライプセットは、前記ライブランにおける最後のチャンクに続き、且つ前記ライブランにおける最後のチャンクに隣接するN個のチャンクの後に位置し、ここでNは、前記ライブランのアクティブラン長を引いたランバイアスに等しい)、且つもし少なくとも1つのチャンクが利用可能である場合、前記ファイルシステムに少なくとも1つのチャンクを割り当てる、チャンク割り当て部と、
を備える、データ記憶システム。
[請求項P39]
請求項P38に記載のデータ記憶システムであって、
前記チャンク割り当て部は、前記ストライプセット上に開始アドレスを有するチャンクデータベースからエントリを引き出し、且つ少なくとも1つのチャンクが利用可能になるまで、前記少なくとも1つのチャンクを識別するように更に構成され、前記少なくとも1つのチャンクは、前記ライブランにおける最後のチャンクに続き、且つ前記ライブランにおける最後のチャンクに隣接するN個のチャンクの後に位置する、データ記憶システム。
[請求項P40]
請求項P38に記載のデータ記憶システムであって、
前記チャンク割り当て部は、ランバイアスに等しい利用可能なチャンクのランを識別するように更に構成される、データ記憶システム。
[請求項P41]
請求項P38に記載のデータ記憶システムであって、
前記チャンク割り当て部は、前記ストライプセット上の利用可能なチャンクの最も長いランを識別するように更に構成される、データ記憶システム。
[請求項P42]
ファイルサーバによってファイルシステムのためのストレージを拡大する方法であって、
前記ファイルシステムは、複数のストライプセットから選択された複数のチャンクを含み、前記ファイルサーバは、前記ファイルシステムの仮想アドレススペースを、前記チャンクに関連付けられた物理記憶アドレスに対応付け、
前記方法は、前記ファイルサーバによって、
複数のファイルシステムに関連付けられた前記チャンクを追跡するためのチャンクデータベースを維持するステップであって、前記チャンクデータベースは固定数のエントリを含み、各エントリは、前記ファイルシステムの1つに割り当てられたストレージの一部の開始アドレス及び長さに関する情報を格納することが可能である、ステップと、
前記複数のファイルシステムにおいてファイルシステムを拡大する要求を受信するステップと、
前記要求に対するチャンクの数が、ランバイアスにおけるチャンクの数及びスパン上のストライプセットの数を超えることを決定するステップと、
前記要求に対するチャンクの数をストライプセットの数で割ることによって、各ストライプセットから割り当てるべきチャンクの数を判断するステップと、
各ストライプセットから割り当てるべきチャンクの数に等しい利用可能なチャンクのランを、各ストライプセット上で検索するステップと
利用可能なチャンクの前記ランを、各ストライプセットから割り当てるステップと、
利用可能なチャンクの前記ランに関連付けられた前記チャンクデータベースにおけるエントリを、利用可能なチャンクの各ランに対して作成するステップであって、前記エントリは前記ランの長さを含む、ステップと、
を備える、方法。
[請求項P43]
データ記憶システムであって、
メモリであって、該メモリに、複数のファイルシステムに関連付けられたチャンクを追跡するためのチャンクデータベースが格納され、前記チャンクデータベースは固定数のエントリを含み、各エントリは、前記ファイルシステムの1つに割り当てられたストレージの一部の開始アドレス及び長さに関する情報を格納することが可能である、メモリと、
チャンク割り当て部であって、該チャンク割り当て部は、前記複数のファイルシステムにおいてファイルシステムを拡大する要求を受信し、前記要求に対するチャンクの数が、ランバイアスにおけるチャンクの数とスパン上のストライプセットの数との積を超えることを判断し、前記要求に対するチャンクの数をストライプセットの数で割ることによって、各ストライプセットから割り当てるべきチャンクの数を判断し、各ストライプセットから割り当てるべきチャンクの数に等しい利用可能なチャンクのランを各ストライプセット上で検索し、利用可能なチャンクのランを各ストライプセットから割り当て、利用可能なチャンクのランに関連付けられた前記チャンクデータベースにおいてエントリを、利用可能なチャンクの各ランに対して作成するように構成され、前記エントリは前記ランの長さを含む、チャンク割り当て部と、
を備える、データ記憶システム。
本発明は、本発明の真の範囲を外れることなく、他の特定の形態において具体化されてもよい。説明された実施形態は、全ての点で、単に例証的であり、限定的ではないと考えられるべきである。

Claims (20)

  1. ファイルサーバによってファイルシステムのためのストレージを拡大する方法であって、
    前記ファイルシステムは、複数のストライプセットから選択された複数のチャンクを含み、前記ファイルサーバは、前記ファイルシステムの仮想アドレススペースを、前記チャンクに関連付けられた物理記憶アドレスに対応付け、
    前記方法は、前記ファイルサーバによって、
    ファイルシステムに関連付けられたチャンクを追跡するためのチャンクデータベースを維持するステップであって、該チャンクデータベースは、固定数のエントリを含み、各エントリは、ファイルシステムに割り当てられたストレージの一部の開始アドレス及び長さに関する情報を格納することが可能である、ステップと、
    ファイルシステムを拡大する要求を受信するステップと、
    チャンクデータベースに基づいて、ファイルシステムに関連付けられた最後のチャンクを識別するステップと、
    少なくとも1つのチャンクがファイルシステムへ割り当て可能である場合、最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接する前記少なくとも1つのチャンクを割り当てるステップと、
    前記少なくとも1つの割り当てられたチャンクによって表される、連続したストレージの長さにおける増加を反映させるために、前記最後のチャンクに関連付けられたチャンクデータベースにおけるエントリを更新するステップと、
    を備える、方法。
  2. 請求項1に記載の方法であって、
    前記最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接する少なくとも1つのチャンクが、前記ファイルシステムへの割り当てに対して利用可能であるかどうかを判断する前に、前記最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接する少なくとも1つのチャンクを予約するステップであって、それによって、前記少なくとも1つのチャンクが利用可能な状態に留まる、ステップ、
    を更に備える、方法。
  3. 請求項1に記載の方法であって、
    前記最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接する少なくとも1つのチャンクが、前記ファイルシステムへ割り当て可能であるかどうかを判断するステップを更に備え、
    そのような判断するステップは、
    前記ファイルシステムに対するアクティブラン長を判断することと、
    前記ファイルシステムへの割り当てに対して利用可能な少なくとも1つのチャンクが存在するのを判断することであって、この判断が行われるのは、前記アクティブラン長がランバイアス未満であり、且つ前記最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接する少なくとも1つのチャンクが存在する場合である、ことと、
    を備える、方法。
  4. 請求項3に記載の方法であって、
    少なくとも1つのチャンクを割り当てるステップは、
    前記最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接するN個までのチャンクを割り当てることであって、ここでNは、前記アクティブラン長を引いた前記ランバイアスに等しい、こと、を備える、方法。
  5. 請求項3に記載の方法であって、
    前記ランバイアスを判断するステップを更に備える、方法。
  6. 請求項5に記載の方法であって、
    前記ランバイアスを判断するステップは、
    ストライプセットの数及びファイルシステムの数に基づいて前記ランバイアスを判断することを備える、方法。
  7. 請求項1に記載の方法であって、
    異なるストライプセットから少なくとも1つのチャンクを割り当てるステップであって、この割り当てが行われるのは、前記最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接する少なくとも1つのチャンクが、利用できないと判断される場合である、ステップ、を更に備える、方法。
  8. データ記憶システムであって、
    メモリであって、該メモリに、ファイルシステムに関連付けられたチャンクを追跡するためのチャンクデータベースが格納され、前記チャンクデータベースは固定数のエントリを含み、各エントリは、前記ファイルシステムに割り当てられたストレージの一部の開始アドレス及び長さに関する情報を格納することが可能である、メモリと、
    チャンク割り当て部であって、該チャンク割り当て部は、前記ファイルシステムを拡大する要求を受信し、前記チャンクデータベースに基づいて前記ファイルシステムに関連付けられた最後のチャンクを識別し、少なくとも1つのチャンクが前記ファイルシステムへの割り当てに対して利用可能である場合、前記最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接する前記少なくとも1つのチャンクを割り当て、且つ、前記少なくとも1つの割り当てられたチャンクによって表される隣接したチャンクの長さにおける増加を反映させるために、前記最後のチャンクに関連付けられた前記チャンクデータベースにおけるエントリを更新するように構成される、チャンク割り当て部と、
    を備える、データ記憶システム。
  9. 請求項8に記載のデータ記憶システムであって、
    前記チャンク割り当て部は、前記最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接する前記少なくとも1つのチャンクを予約するように構成され、この予約が行われた後に、前記最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接する少なくとも1つのチャンクが、前記ファイルシステムへの割り当てに対して利用可能であるかどうかが判断され、それによって、前記少なくとも1つのチャンクが利用可能な状態に留まる、データ記憶システム。
  10. 請求項8に記載のデータ記憶システムであって、
    前記チャンク割り当て部は、前記最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接する少なくとも1つのチャンクが、前記ファイルシステムへの割り当てに対して利用可能であるかを判断するように構成され、この判断は、前記ファイルシステムに対するアクティブラン長を判断すると共に、前記ファイルシステムへの割り当てに対して利用可能な少なくとも1つのチャンクが存在することを判断することによって行われ、この判断が行われるのは、前記アクティブラン長がランバイアス未満であり、且つ前記最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接する少なくとも1つのチャンクが存在する場合である、データ記憶システム。
  11. 請求項10に記載のデータ記憶システムであって、
    前記チャンク割り当て部は、前記最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接するN個までのチャンクを割り当てることによって、少なくとも1つのチャンクを割り当てるように構成され、ここでNは、前記アクティブラン長を引いた前記ランバイアスに等しい、データ記憶システム。
  12. 請求項10に記載のデータ記憶システムであって、
    前記チャンク割り当て部は、前記ランバイアスを判断するように更に構成される、データ記憶システム。
  13. 請求項12に記載のデータ記憶システムであって、前記チャンク割り当て部は、ストライプセットの数及びファイルシステムの数に基づいて前記ランバイアスを判断することによって、前記ランバイアスを判断するように構成される、データ記憶システム。
  14. 請求項8に記載のデータ記憶システムであって、
    前記最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接する少なくとも1つのチャンクが利用可能でないと判断される場合、前記チャンク割り当て部は、異なるストライプセットから、そのような少なくとも1つのチャンクを割り当てるように構成される、データ記憶システム。
  15. 請求項8に記載のデータ記憶システムであって、
    前記チャンクデータベースは、ハードウェアにおいて維持され、且つ前記データ記憶システムは、前記チャンク割り当て部と前記ハードウェアとの間で結合されたインターフェースを含み、このインターフェースを通して、前記チャンク割り当て部は前記チャンクデータベースにアクセスする、データ記憶システム。
  16. ファイルサーバによってファイルシステム用のストレージを拡大するためのコンピュータプログラムであって、
    前記ファイルシステムは、複数のストライプセットから選択された複数のチャンクを含み、前記ファイルサーバは、前記ファイルシステムの仮想アドレススペースを、前記チャンクに関連付けられた物理記憶アドレスに対応付け、
    前記コンピュータプログラムは、前記ファイルサーバが、
    前記ファイルシステムに関連付けられた前記チャンクを追跡するためのチャンクデータベースを維持し、前記チャンクデータベースは固定数のエントリを含み、各エントリは、前記ファイルシステムに割り当てられたストレージの一部の開始アドレス及び長さに関する情報を格納することが可能であり、
    前記ファイルシステムを拡大する要求を受信し、
    前記チャンクデータベースに基づいて、前記ファイルシステムに関連付けられた最後のチャンクを識別し、
    少なくとも1つのチャンクが前記ファイルシステムへの割り当てに対して利用可能である場合、最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接する前記少なくとも1つのチャンクを割り当て、
    且つ、前記少なくとも1つの割り当てられたチャンクによって表される、隣接するストレージの長さにおける増加を反映させるために、前記最後のチャンクに関連付けられたチャンクデータベースにおけるエントリを更新する、
    ことを引き起こすように構成される、コンピュータプログラム。
  17. 請求項16に記載のコンピュータプログラムであって、
    前記ファイルサーバが、
    前記最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接する少なくとも1つのチャンクが、前記ファイルシステムへの割り当てに対して利用可能であるかを判断する前に、前記少なくとも1つのチャンクが利用可能な状態に留まるように、前記最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接する前記少なくとも1つのチャンクを予約する、
    ことを引き起こすように更に構成される、コンピュータプログラム。
  18. 請求項16に記載のコンピュータプログラムであって、
    前記ファイルサーバが、前記最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接する少なくとも1つのチャンクが、前記ファイルシステムへ割り当て可能であるかを判断することを引き起こすように更に構成され、
    そのような判断するステップは、
    前記ファイルシステムに対するアクティブラン長を判断することと、
    前記アクティブラン長がランバイアス未満であり、且つ前記最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接する少なくとも1つのチャンクが存在する場合、前記ファイルシステムへ割り当て可能な少なくとも1つのチャンクが存在すると判断することと、
    を備える、コンピュータプログラム。
  19. 請求項18に記載のコンピュータプログラムであって、
    少なくとも1つのチャンクを割り当てるステップは、前記最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接するN個までのチャンクを割り当てることを備え、ここでNは、前記アクティブラン長を引いた前記ランバイアスに等しく、
    又は、前記コンピュータプログラムは、前記ファイルサーバが、前記ランバイアスを判断することを引き起こすように構成される、コンピュータプログラム。
  20. 請求項16に記載のコンピュータプログラムであって、
    前記ファイルサーバが、
    前記最後のチャンクと同じストライプセットのうちのその最後のチャンクに隣接する少なくとも1つのチャンクが利用可能でないと判断される場合、異なるストライプセットからそのような少なくとも1つのチャンクを割り当てることを、
    引き起こすように更に構成される、コンピュータプログラム。
JP2015555982A 2013-02-01 2013-02-01 データ記憶システムにおけるストレージをよりきめ細かく、拡張可能に割り当てること可能とする方法及び装置 Active JP6067888B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/024350 WO2014120240A1 (en) 2013-02-01 2013-02-01 Method and apparatus to enable finer-grained, scalable allocation of storage in a data storage system

Publications (2)

Publication Number Publication Date
JP2016511879A true JP2016511879A (ja) 2016-04-21
JP6067888B2 JP6067888B2 (ja) 2017-01-25

Family

ID=51262801

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015555982A Active JP6067888B2 (ja) 2013-02-01 2013-02-01 データ記憶システムにおけるストレージをよりきめ細かく、拡張可能に割り当てること可能とする方法及び装置

Country Status (5)

Country Link
US (1) US10789209B2 (ja)
EP (1) EP2951674B1 (ja)
JP (1) JP6067888B2 (ja)
CN (1) CN104956318B (ja)
WO (1) WO2014120240A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10146456B1 (en) * 2016-12-30 2018-12-04 EMC IP Holding Company LLC Data storage system with multi-level, scalable metadata structure
WO2019245445A1 (en) * 2018-06-21 2019-12-26 Telefonaktiebolaget Lm Ericsson (Publ) Memory allocation in a hierarchical memory system
CN110222019B (zh) * 2019-05-08 2023-12-19 安克创新科技股份有限公司 文件系统所占空间的调整方法及装置

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000010738A (ja) * 1998-06-17 2000-01-14 Toshiba Corp ディスクアレイシステム、同システムに適用される記憶容量拡張方法および記録媒体
US20020124137A1 (en) * 2001-01-29 2002-09-05 Ulrich Thomas R. Enhancing disk array performance via variable parity based load balancing
WO2003077111A1 (fr) * 2002-03-13 2003-09-18 Fujitsu Limited Controleur pour dispositif raid
US20040015672A1 (en) * 2002-07-17 2004-01-22 Masse Wayne P. Method, system, and storage medium for optimizing disk space and information access
JP2004094429A (ja) * 2002-08-30 2004-03-25 Toshiba Corp ディスクアレイ装置及び同装置におけるレイドレベル変更方法
JP2004102823A (ja) * 2002-09-11 2004-04-02 Toshiba Corp 冗長化論理ディスクに対するライトスルー処理方法、ライトスルー処理用プログラム及びディスクコントローラ
JP2008204206A (ja) * 2007-02-20 2008-09-04 Nec Corp データ分散格納システム及びデータ分散方法、それに用いる装置並びにそのプログラム
US20090327368A1 (en) * 2008-06-30 2009-12-31 Bluearc Uk Limited Dynamic Write Balancing in a Data Storage System
JP2010282608A (ja) * 2009-06-03 2010-12-16 Hitachi Ltd 動的チャンク割り当て機能を有するデータストレージシステムに於けるデータボリューム生成を制御するための方法及び装置
WO2011045838A1 (en) * 2009-10-15 2011-04-21 Hitachi,Ltd. Storage system, storage apparatus, and optimization method of storage areas of storage system
JP2013519062A (ja) * 2010-02-26 2013-05-23 ヘックレル・ウント・コッホ・ゲーエムベーハー 回転ラグブリーチ及び兵器

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU575182B2 (en) * 1984-06-28 1988-07-21 Wang Laboratories, Inc. Self extending memory file
EP1407386A2 (en) * 2001-06-21 2004-04-14 ISC, Inc. Database indexing method and apparatus
US7213021B2 (en) * 2004-03-11 2007-05-01 Hitachi, Ltd. Method and apparatus for storage network management
JP2005346564A (ja) * 2004-06-04 2005-12-15 Hitachi Global Storage Technologies Netherlands Bv ディスク装置及びディスク装置の制御方法並びに改竄検出方法
US7389382B2 (en) * 2005-06-08 2008-06-17 Cisco Technology, Inc. ISCSI block cache and synchronization technique for WAN edge device
US7502908B2 (en) * 2006-05-04 2009-03-10 International Business Machines Corporation Method for providing an address format compatible with different addressing formats used for addressing different sized address spaces
US7945726B2 (en) * 2006-05-08 2011-05-17 Emc Corporation Pre-allocation and hierarchical mapping of data blocks distributed from a first processor to a second processor for use in a file system
US7961959B2 (en) * 2006-08-24 2011-06-14 Dell Products L.P. Methods and apparatus for reducing storage size
US8331663B2 (en) * 2007-06-28 2012-12-11 Qualcomm Incorporated Efficient image compression scheme to minimize storage and bus bandwidth requirements
US7886124B2 (en) * 2007-07-30 2011-02-08 Oracle International Corporation Method and mechanism for implementing dynamic space management for large objects
US8006053B2 (en) * 2007-10-12 2011-08-23 Bluearc Uk Limited System, device, and method for detecting and configuring mirror relationships in a storage system

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000010738A (ja) * 1998-06-17 2000-01-14 Toshiba Corp ディスクアレイシステム、同システムに適用される記憶容量拡張方法および記録媒体
US20020124137A1 (en) * 2001-01-29 2002-09-05 Ulrich Thomas R. Enhancing disk array performance via variable parity based load balancing
WO2003077111A1 (fr) * 2002-03-13 2003-09-18 Fujitsu Limited Controleur pour dispositif raid
US20040015672A1 (en) * 2002-07-17 2004-01-22 Masse Wayne P. Method, system, and storage medium for optimizing disk space and information access
JP2004094429A (ja) * 2002-08-30 2004-03-25 Toshiba Corp ディスクアレイ装置及び同装置におけるレイドレベル変更方法
JP2004102823A (ja) * 2002-09-11 2004-04-02 Toshiba Corp 冗長化論理ディスクに対するライトスルー処理方法、ライトスルー処理用プログラム及びディスクコントローラ
JP2008204206A (ja) * 2007-02-20 2008-09-04 Nec Corp データ分散格納システム及びデータ分散方法、それに用いる装置並びにそのプログラム
US20090327368A1 (en) * 2008-06-30 2009-12-31 Bluearc Uk Limited Dynamic Write Balancing in a Data Storage System
JP2010282608A (ja) * 2009-06-03 2010-12-16 Hitachi Ltd 動的チャンク割り当て機能を有するデータストレージシステムに於けるデータボリューム生成を制御するための方法及び装置
WO2011045838A1 (en) * 2009-10-15 2011-04-21 Hitachi,Ltd. Storage system, storage apparatus, and optimization method of storage areas of storage system
JP2013519062A (ja) * 2010-02-26 2013-05-23 ヘックレル・ウント・コッホ・ゲーエムベーハー 回転ラグブリーチ及び兵器

Also Published As

Publication number Publication date
WO2014120240A1 (en) 2014-08-07
US10789209B2 (en) 2020-09-29
EP2951674A1 (en) 2015-12-09
CN104956318B (zh) 2018-05-18
US20150370823A1 (en) 2015-12-24
CN104956318A (zh) 2015-09-30
EP2951674A4 (en) 2016-08-03
EP2951674B1 (en) 2019-08-14
JP6067888B2 (ja) 2017-01-25

Similar Documents

Publication Publication Date Title
US9696932B1 (en) Virtual provisioning space reservation
US10248623B1 (en) Data deduplication techniques
US6912537B2 (en) Dynamically changeable virtual mapping scheme
US9459806B2 (en) Combining virtual mapping metadata and physical space mapping metadata
CN107209714B (zh) 分布式存储系统及分布式存储系统的控制方法
US8996783B2 (en) Managing nodes in a storage system
US7624230B2 (en) Information processing apparatus, information processing method and storage system using cache to reduce dynamic switching of mapping between logical units and logical devices
JP2004164370A (ja) 仮想ボリュームの記憶領域割当方法、その装置及びプログラム
US20140019706A1 (en) System and method of logical object management
US11086562B2 (en) Computer system having data amount reduction function and storage control method
US11409454B1 (en) Container ownership protocol for independent node flushing
JP5712127B2 (ja) データ記憶システムにおける動的な書き込み平衡化
JP6067888B2 (ja) データ記憶システムにおけるストレージをよりきめ細かく、拡張可能に割り当てること可能とする方法及び装置
WO2017145375A1 (ja) ストレージシステム
JP5183363B2 (ja) 論理ボリュームのデータ移動方法とストレージシステムおよび管理計算機
US10089125B2 (en) Virtual machines accessing file data, object data, and block data
US7493458B1 (en) Two-phase snap copy
US20210034467A1 (en) Techniques for duplicating inode state to prevent loss of inode metadata
JP6636159B2 (ja) ストレージ装置
US11449237B2 (en) Targetless snapshot system replication data pointer table
WO2019026221A1 (ja) ストレージシステム及びストレージ制御方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161114

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: 20161206

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161221

R150 Certificate of patent or registration of utility model

Ref document number: 6067888

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250