(58)【調査した分野】(Int.Cl.,DB名)
RAIDに記憶されるべきT個のファイルを受信するステップであって、前記Tの値が、3以上の自然数であり、前記Tの前記値が、前記RAIDを形成するストレージ装置の数に等しい、ステップと、
前記RAIDのストライプ中のチェックブロックのシーケンス番号を判断するステップと、
前記T個のファイル中のK番目のファイルの、ストレージ装置に書き込まれるべきデータブロックを前記ストライプ中のK番目のデータブロックとして、前記ストライプ中のすべてのデータブロックが取得されるまで取得するステップであって、Kの値が、1からTまで漸進的に増加し、Kの前記値が、前記ストライプ中の前記チェックブロックの前記シーケンス番号に等しくない、ステップと、
前記ストライプ中のデータブロックに従って前記ストライプ中の前記チェックブロックを取得するステップと、
前記T個のストレージ装置に、前記ストライプ中の前記データブロックと前記ストライプ中の前記取得されたチェックブロックとを書き込むステップと
を含む、ファイル処理方法。
前記K番目のファイルが、ストレージ装置に書き込まれるべきデータブロックを有しないとき、前記T個のファイルを除く他のファイルが受信された場合、前記受信された他のファイルからファイルを選択するステップと、
前記選択されたファイル中の、ストレージ装置に書き込まれるべきデータブロックを、前記ストライプ中の前記K番目のデータブロックとして使用するステップと
をさらに含む、請求項1に記載のファイル処理方法。
前記K番目のファイルが、ストレージ装置に書き込まれるべきデータブロックを有しないとき、前記T個のファイルを除く他のファイルが受信されない場合、前記ストライプ中の前記K番目のデータブロックを0で充填するステップ
をさらに含む、請求項1に記載のファイル処理方法。
ホストのアクセス要求を受信するステップであって、前記アクセス要求が、前記RAIDに記憶されたファイルを読み取るために使用され、前記アクセス要求が、アクセスされる必要がある前記ファイルの論理アドレスを搬送する、ステップと、
前記論理アドレスに従って、前記ファイルのデータブロックが記憶された物理アドレスを照会するステップと、
前記物理アドレスに従って、前記ファイルが記憶されるストレージ装置を判断するステップと、
前記ホストに、前記ストレージ装置に記憶された前記ファイルの前記データブロックを戻すステップと
をさらに含む、請求項1から3のいずれか一項に記載のファイル処理方法。
プログラムコードを含むコンピュータプログラムであって、前記プログラムコード中に含まれた命令が、請求項1から4のいずれか一項に記載の方法を実行するために使用される、コンピュータプログラム。
【発明の概要】
【課題を解決するための手段】
【0004】
本発明の実施形態は、ファイルストレージのセキュリティを保証しながら、RAIDの1つのストレージ装置中に1つのファイルを記憶することができ、エネルギー節約の効果を達成することができるファイル処理方法およびストレージデバイスを提供する。
【0005】
第1の態様によれば、本発明の一実施形態は、
RAIDに記憶されるべきT個のファイルを受信するステップであって、Tの値が、3以上の自然数であり、Tの値が、RAIDを形成するストレージ装置の数に等しくなるステップと、
RAIDのストライプ中のチェックブロックのシーケンス番号を判断するステップと、
T個のファイル中のK番目のファイルの、ストレージ装置に書き込まれるべきデータブロックをストライプ中のK番目のデータブロックとして取得するステップであって、Kの値が、1からTまで漸進的に増加し、Kの値が、ストライプ中のチェックブロックのシーケンス番号に等しくないステップと、
ストライプ中のデータブロックに従ってストライプ中のチェックブロックを取得するステップと、
T個のストレージ装置に、ストライプ中のデータブロックとストライプ中の取得されたチェックブロックとを書き込むステップと
を含む、ファイル処理方法を提供する。
【0006】
第1の態様の第1の可能な実装方法において、本ファイル処理方法は、
K番目のファイルが、ストレージ装置に書き込まれるべきデータブロックを有しないとき、T個のファイルを除く他のファイルが受信されたかどうかを判断するステップと、
他のファイルが受信された場合、受信された他のファイルからファイルを選択するステップと、
選択されたファイル中の、ストレージ装置に書き込まれるべきデータブロックを、ストライプ中のK番目のデータブロックとして使用するステップと
をさらに含む。
【0007】
第1の態様に関して、第1の態様の第2の可能な実装方法において、本方法は、
K番目のファイルが、ストレージ装置に書き込まれるべきデータブロックを有しないとき、T個のファイルを除く他のファイルが受信されない場合、ストライプ中のK番目のデータブロックを0で充填するステップ
をさらに含む。
【0008】
第1の態様あるいは第1の態様の第1のまたは第2の可能な実装方法のうちのいずれか1つに関して、第3の可能な実装方法において、本方法は、
ホストのアクセス要求を受信するステップであって、アクセス要求が、RAIDに記憶されたファイルを読み取るために使用され、アクセス要求が、アクセスされる必要があるファイルの論理アドレスを搬送するステップと、
論理アドレスに従って、ファイルのデータブロックが記憶された物理アドレスを照会するステップと、
物理アドレスに従って、ファイルが記憶されるストレージ装置を判断するステップと、
ホストに、ストレージ装置に記憶されたファイルのデータブロックを戻すステップと
をさらに含む。
【0009】
第2の態様によれば、本発明の一実施形態は、独立ディスク冗長アレイ(Redundant
Array of Independent Disks、RAID)上にファイルを記憶するための方法であって、RAIDが、D個のデータストレージ装置とP個の独立チェックストレージ装置とを含み、Dの値が2以上の自然数であり、Pの値が1以上の自然数であり、方法が、
RAIDに記憶されるべきD個のファイルを受信するステップと、
D個のファイル中のK番目のファイルの、データストレージ装置に書き込まれるべきデータブロックを、RAIDのストライプ中にある、K番目のデータストレージ装置に記憶されるべきデータブロックとして取得するステップであって、Kの値が、1からDまで漸進的に増加するステップと、
取得されたD個のデータブロックに従ってストライプ中のP個のチェックブロックを取得するステップと、
D個のデータストレージ装置にD個のデータブロックを書き込み、P個の独立チェックストレージ装置にP個のチェックブロックを書き込むステップと
を含む方法を提供する。
【0010】
第2の態様の第1の可能な実装方法において、本方法は、
K番目のファイルが、データストレージ装置に書き込まれるべきデータブロックを有しないとき、D個のファイルを除く他のファイルが受信されたかどうかを判断するステップと、
他のファイルが受信された場合、受信された他のファイルからファイルを選択するステップと、
選択されたファイル中の、ストレージ装置に書き込まれるべきデータブロックを、ストライプ中にあり、K番目のデータストレージ装置に記憶されるべきデータブロックとして使用するステップと
をさらに含む。
【0011】
第2の態様に関して、第2の態様の第2の可能な実装方法において、本方法は、
K番目のファイルが、データストレージ装置に書き込まれるべきデータブロックを有しないとき、D個のファイルを除く他のファイルが受信されない場合、ストライプ中にあり、K番目のデータストレージ装置に記憶されるべきデータブロックを0で充填するステップ
をさらに含む。
【0012】
第2の態様あるいは第2の態様の第1のまたは第2の可能な実装方法のうちのいずれか1つに関して、第3の可能な実装方法において、本方法は、
ホストのアクセス要求を受信するステップであって、アクセス要求が、RAIDに記憶されたファイルを読み取るために使用され、アクセス要求が、アクセスされる必要があるファイルの論理アドレスを搬送するステップと、
論理アドレスに従って、ファイルのデータブロックが記憶された物理アドレスを照会するステップと、
物理アドレスに従って、ファイルが記憶されるストレージ装置を判断するステップと、
ホストに、ストレージ装置に記憶されたファイルのデータブロックを戻すステップと
をさらに含む。
【0013】
第3の態様によれば、本発明の一実施形態は、コントローラと独立ディスク冗長アレイ(Redundant Array of Independent Disks、RAID)とを含み、
RAIDがファイルを記憶するように構成され、RAIDがT個のストレージ装置を含み、Tの値が3以上の自然数であり、
コントローラが、
ホストと独立ディスク冗長アレイ(Redundant Array of Independent Disks、RAID)と通信するように構成された、通信インターフェースと、
RAIDに記憶されるべきT個のファイルを受信することと、
RAIDのストライプ中のチェックブロックのシーケンス番号を判断することと、
T個のファイル中のK番目のファイルの、ストレージ装置に書き込まれるべきデータブロックをストライプ中のK番目のデータブロックとして取得することであって、Kの値が、1からTまで漸進的に増加し、Kの値が、ストライプ中のチェックブロックのシーケンス番号に等しくないことと、
ストライプ中のデータブロックに従ってストライプ中のチェックブロックを取得することと、
T個のストレージ装置に、ストライプ中のデータブロックとストライプ中の取得されたチェックブロックとを書き込むことと
を行うように構成された、プロセッサと
を含む、ストレージデバイスを提供する。
【0014】
第3の態様の第1の可能な実装方法において、本プロセッサは、
K番目のファイルが、ストレージ装置に書き込まれるべきデータブロックを有しないとき、T個のファイルを除く他のファイルが受信されたかどうかを判断することと、
他のファイルが受信された場合、受信された他のファイルからファイルを選択することと、
選択されたファイル中の、ストレージ装置に書き込まれるべきデータブロックを、ストライプ中のK番目のデータブロックとして使用することと
を行うようにさらに構成される。
【0015】
第3の態様に関して、第3の態様の第2の可能な実装方法において、本プロセッサは、
K番目のファイルが、ストレージ装置に書き込まれるべきデータブロックを有しないとき、T個のファイルを除く他のファイルが受信されない場合、ストライプ中のK番目のデータブロックを0で充填すること
を行うようにさらに構成される。
【0016】
第3の態様あるいは第3の態様の第1のまたは第2の可能な実装方法のうちのいずれか1つに関して、第3の可能な実装方法において、本プロセッサは、
ホストのアクセス要求を受信することであって、アクセス要求が、RAIDに記憶されたファイルを読み取るために使用され、アクセス要求が、アクセスされる必要があるファイルの論理アドレスを搬送することと、
論理アドレスに従って、ファイルのデータブロックが記憶された物理アドレスを照会することと、
物理アドレスに従って、ファイルが記憶されるストレージ装置を判断することと、
ホストに、ストレージ装置に記憶されたファイルのデータブロックを戻すことと
を行うようにさらに構成される。
【0017】
第4の態様によれば、本発明の一実施形態は、コントローラと独立ディスク冗長アレイ(Redundant Array of Independent Disks、RAID)とを含み、RAIDが、D個のデータストレージ装置とP個の独立チェックストレージ装置とを含み、Dの値が2以上の自然数であり、Pの値が1以上の自然数であり、
RAIDがファイルを記憶するように構成され、
コントローラが、
ホストと独立ディスク冗長アレイ(Redundant Array of Independent Disks、RAID)と通信するように構成された、通信インターフェースと、
RAIDに記憶されるべきD個のファイルを受信することと、
D個のファイル中のK番目のファイルの、データストレージ装置に書き込まれるべきデータブロックを、RAIDのストライプ中にある、K番目のデータストレージ装置に記憶されるべきデータブロックとして取得することであって、Kの値が、1からDまで漸進的に増加することと、
取得されたD個のデータブロックに従ってストライプ中のP個のチェックブロックを取得することと、
D個のデータストレージ装置にD個のデータブロックを書き込み、P個の独立チェックストレージ装置にP個のチェックブロックを書き込むことと
を行うように構成された、プロセッサと
を含む、ストレージデバイスを提供する。
【0018】
第4の態様の第1の可能な実装方法において、本プロセッサは、
K番目のファイルが、データストレージ装置に書き込まれるべきデータブロックを有しないとき、D個のファイルを除く他のファイルが受信されたかどうかを判断することと、
他のファイルが受信された場合、受信された他のファイルからファイルを選択することと、
選択されたファイル中の、ストレージ装置に書き込まれるべきデータブロックを、ストライプ中にあり、K番目のデータストレージ装置に記憶されるべきデータブロックとして使用することと
を行うようにさらに構成される。
【0019】
第4の態様に関して、第4の態様の第
2の可能な実装方法において、本プロセッサは、
K番目のファイルが、データストレージ装置に書き込まれるべきデータブロックを有しないとき、D個のファイルを除く他のファイルが受信されない場合、ストライプ中にあり、K番目のデータストレージ装置に記憶されるべきデータブロックを0で充填すること
を行うようにさらに構成される。
【0020】
第4の態様あるいは第4の態様の第1のまたは第2の可能な実装方法のうちのいずれか1つに関して、第3の可能な実装方法において、本プロセッサは、
ホストのアクセス要求を受信することであって、アクセス要求が、RAIDに記憶されたファイルを読み取るために使用され、アクセス要求が、アクセスされる必要があるファイルの論理アドレスを搬送することと、
論理アドレスに従って、ファイルのデータブロックが記憶された物理アドレスを照会することと、
物理アドレスに従って、ファイルが記憶されるストレージ装置を判断することと、
ホストに、ストレージ装置に記憶されたファイルのデータブロックを戻すことと
を行うようにさらに構成される。
【0021】
第5の態様によれば、本発明の一実施形態は、プログラムコードを記憶するコンピュータ可読記憶媒体を含み、プログラムコード中に含まれた命令が、
第1の態様および第1の態様の可能な実装方法のうちのいずれか1つに記載の方法を実行するために使用される、コンピュータプログラム製品を提供する。
【0022】
第6の態様によれば、本発明の一実施形態は、プログラムコードを記憶するコンピュータ可読記憶媒体を含み、プログラムコード中に含まれた命令が、
第2の態様および第2の態様の可能な実装方法のうちのいずれか1つ記載の方法を実行するために使用される、コンピュータプログラム製品を提供する。
【0023】
本発明の実施形態において提供されるファイル処理方法によれば、ストレージデバイスは、RAIDのストライプ中のチェックブロックのシーケンス番号を判断する。受信されたT個のファイル中のK番目のファイルの、ストレージ装置に書き込まれるべきデータブロックが、ストライプ中のK番目のデータブロックとなるように取得され、ここで、Kの値が、ストライプ中のチェックブロックのシーケンス番号に等しくない。ファイルからデータブロックを取得した後に、ストレージデバイスは、計算することによって、ストライプ中の取得されたデータブロックに従ってストライプ中のチェックブロックを取得し、RAIDを形成するディスクにストライプ中のデータブロックとチェックブロックとを書き込む。ストレージデバイスがディスクにファイルを書き込む前に、1つのファイルのデータブロックは、ストライプ中の同じ位置に対応し、したがって、その1つのファイルのデータブロックは、RAID中の1つのディスクに対応する。したがって、ストレージデバイスは、1つのディスクに1つのファイルのすべてのデータブロックを書き込むことができる。アーカイビングの適用例シナリオでは、本発明の実施形態の方法を使用することによってRAIDに記憶されたファイルにアクセスする必要があるとき、有効なエネルギー節約効果を達成するために、RAID中のすべてのディスクを起動または電源投入する必要がなく、ファイルが記憶されたただ1つのディスクしか動作する必要がない。
【0024】
本発明の実施形態または従来技術における技術的解決策についてより明確に説明するために、以下に、実施形態について説明するのに必要な添付の図面を簡単に紹介する。明らかに、以下の説明における添付の図面は、本発明のいくつかの実施形態を示しているにすぎない。
【発明を実施するための形態】
【0026】
本発明における技術的解決策を当業者により良く理解させるために、本発明の実施形態における添付の図面を参照しながら本発明の実施形態における技術的解決策について以下で明確かつ完全に説明する。明らかに、説明する実施形態は、本発明のいくつかの実施形態のすべてではなく一部分にすぎない。
【0027】
図1に示すように、
図1は、本発明の一実施形態による、適用例シナリオの図である。
図1に示す適用例シナリオでは、ストレージシステムは、ホスト100と、接続デバイス105と、ストレージデバイス110とを含む。
【0028】
ホスト100は、サーバ、デスクトップコンピュータ、またはアプリケーションサーバなど、従来知られている任意のコンピューティングデバイスを含み得る。オペレーティングシステムおよび他のアプリケーションプログラムがホスト100上にインストールされ、複数のホスト100があり得る。
【0029】
接続デバイス105は、従来知られている、ストレージデバイスとホストとの間の任意のインターフェース、たとえば、ファイバースイッチまたは別の既存のスイッチを含み得る。
【0030】
ストレージデバイス110は、ストレージアレイ、単なるディスクの束(Just a Bunch Of Disks、JBOD)、または直接アクセスストレージデバイス(Direct Access Storage Device、DASD)の1つまたは複数の相互接続ディスクドライブなど、従来知られているストレージデバイスを含み得、ここで、直接アクセスストレージデバイスは、1つまたは複数のストレージユニットをもつテープライブラリまたはテープストレージデバイスを含み得る。
【0031】
図2は、本発明の一実施形態による、ストレージデバイス110の概略構造図であり、
図2に示すストレージデバイスは、ストレージアレイである。
図2に示すように、ストレージデバイス110は、コントローラ115とディスクアレイ125とを含み得、ここで、本明細書のディスクアレイは、独立ディスク冗長アレイ(Redundant Arrays of Independent Disks、RAID)を指す。複数のディスクアレイ125があり得、ディスクアレイ125は、複数のディスク130によって形成される。ディスクアレイ125とコントローラ115との間の通信は、小型コンピュータシステムインターフェース(Small Computer System Interface、SCSI)プロトコルなどの通信プロトコルを使用して実行され得、これは、本明細書では限定しない。
【0032】
コントローラ115は、ストレージデバイス110の「脳」である。コントローラ115は、主に、プロセッサ(processor)118と、キャッシュ(cache)120と、メモリ(memory)122と、通信バス(略して、バス)126と、通信インターフェース(Communication Interface)128とを含む。プロセッサ118と、キャッシュ120と、メモリ122と、通信インターフェース128とは、通信バス126を使用することによって互いに通信する。
【0033】
通信インターフェース128は、ホスト100とディスクアレイ125と通信するように構成される。
【0034】
メモリ122は、プログラム124を記憶するように構成される。メモリ122は、高速RAMメモリを含み得、または不揮発性メモリ(non-volatile memory)、たとえば、少なくとも1つのディスクメモリを含み得る。メモリ122は、ランダムアクセスメモリ(Random-Access Memory、RAM)、磁気ディスク、ハードディスク、光ディスク、ソリッドステートディスク(Solid State Disk、SSD)、または不揮発性メモリなど、プログラムコードを記憶することが可能な任意の非一時的(non-transitory)機械可読媒体であり得ることが理解され得る。
【0035】
プログラム124は、プログラムコードを含み得、ここで、プログラムコードは、コンピュータ動作命令を含む。
【0036】
キャッシュ120(Cache)は、アレイのパフォーマンスおよび信頼性を改善するために、ホスト100から受信したデータをバッファし、ディスクアレイ125から読み取ったデータをバッファするように構成される。キャッシュ120は、RAM、ROM、フラッシュメモリ(Flash memory)、またはソリッドステートディスク(Solid State Disk、SSD)など、データを記憶することが可能な任意の非一時的(non-transitory)機械可読媒体であり得、これは、本明細書では限定しない。
【0037】
プロセッサ118は、中央処理ユニットCPU、または特定用途向け集積回路ASIC(Application Specific Integrated Circuit)であるか、または本発明の実施形態を実装する1つまたは複数の集積回路として構成され得る。オペレーティングシステムおよび他のソフトウェアプログラムは、プロセッサ118中にインストールされる。異なるソフトウェアプログラムは、たとえば、ディスク130の入出力(Input/output、I/O)要求を処理するか、ディスク中のデータに対して他の処理を実行するか、またはストレージデバイスに記憶されたメタデータを変更するなど、異なる機能をもつ処理モジュールと見なされ得る。したがって、コントローラ115は、IO動作およびRAID管理機能を実装することができ、スナップショット、ミラーリング、およびコピーなど様々なデータ管理機能を提供することもできる。本発明の実施形態では、プロセッサ118は、プログラム124を実行するように構成され、詳細には、以下の方法実施形態の関連ステップを実行し得る。
【0038】
ディスクアレイ125は、データを記憶するように構成される。本発明の実施形態では、ディスクアレイ125の編成形態は、チェック機能をもつRAID方法、たとえば、RAID3、RAID4、RAID5、またはRAID6であり、これは、本明細書では限定しない。
【0039】
図1を参照すると、任意のストレージデバイス110は、接続デバイス105を通して、1つまたは複数のホスト100によって送られた複数のファイルを受信し、受信された複数のファイルを複数のデータブロックに分割し、データブロックをディスクアレイ125を形成する複数のディスク130に記憶し得る。任意のストレージデバイス110はまた、任意のホスト100によって送られたファイル読取り要求を受信し、ファイル読取り要求に従ってホスト100にディスク130に記憶されたファイルのデータブロックを戻し得る。
【0040】
ディスク130は、ディスクアレイ125を形成するストレージ装置の一例にすぎず、実際の適用例では、ディスクアレイが複数のディスクを含むキャビネット間に形成される実装方法があり得ることに留意されたい。したがって、本発明の実施形態では、ストレージ装置は、磁気ディスク、ソリッドステートドライブ(Solid State Drive、SSD)、サーバ、または複数の磁気ディスクから形成されたキャビネットなどの任意の装置を含み得、これは、本明細書では限定しない。
【0041】
図3は、本発明の一実施形態による、ファイル処理方法のフローチャートである。本方法は、
図2に示すストレージデバイス110のコントローラ115によって実行され得、本方法は、ファイルアーカイビングシナリオに適用され得る。本方法は、主に、分散チェック機能をもつRAID編成形態に適用され、ここで、分散チェック機能をもつRAID編成形態は、限定はしないが、RAID5およびRAID6を含む。
図3に示すように、本方法は、以下を含む。
【0042】
ステップ300において、ストレージデバイス110は、RAIDに記憶されるべきT個のファイルを受信し、ここで、Tの値が、3以上の自然数であり、Tの値が、RAIDを形成するストレージ装置の数に等しくなる。
【0043】
本発明の実施形態では、ストレージデバイス110のコントローラ115は、1つまたは複数のホスト100によって送られたファイルストレージ要求を受信し得る。ファイルストレージ要求は、RAIDにファイルを記憶することを要求するために使用され、ファイルストレージ要求は、記憶されるべき1つまたは複数のファイルを含み得る。
【0044】
図2に関して、ストレージデバイス110は、複数のRAIDを含み得、各RAIDは、3つ以上のディスクを含まなければならない。1つのストレージデバイス110中に含まれる複数のRAIDが同じ編成形態を有し得ることを理解されたい。たとえば、ストレージデバイス110中に含まれるすべてのRAIDがRAID5の編成形態にある。もちろん、1つのストレージデバイス110中に含まれる複数のRAIDの編成形態はまた異なり得る。たとえば、ストレージデバイス110が、2つのRAIDを含む場合、1つのRAIDは、RAID3であり得、もう一方のRAIDはRAID5であり得、これは、本明細書では限定しない。本発明の実施形態では、説明のための一例として、ストレージデバイス110中の1つのRAIDが使用される。
【0045】
ストレージデバイス110が、T個のファイルを受信するとき、T個のファイルを処理し得ることが理解され得る。ストレージデバイス110はまた、キャッシュ120中に受信された複数のファイルをバッファし、次いで、ストレージ時間に達したとき、処理するための受信された複数のファイルからT個のファイルをランダムに選択し得る。Tの値は、RAID中のディスクの数に等しくなる。たとえば、RAIDが4つのディスクを含む場合、ストレージデバイス110は、同時に4つのファイルを処理し得る。
【0046】
ストレージ時間は、RAIDを形成するディスクにファイルを書き込むためのプリセット時間である。たとえば、ストレージが1時間に一度実行されるように指定され得、そうすると、ストレージ時間は1時間である。ストレージ時間は、ディスクに書き込まれる必要があるデータの量など、実際の状況に従って判断され得る。ストレージは、一日に一度実行され得、または、ストレージは、10分ごとに実行され得、これは、本明細書では限定しない。
【0047】
ステップ305において、ストレージデバイス110は、RAIDのストライプ中のチェックブロックのシーケンス番号を判断する。本発明の実施形態において説明するストライプ(stripe)は、RAIDを形成するストレージ装置の各々に同時に書き込まれるデータブロックのセットを示し、ここで、ストライプ中の各データブロックのサイズは同じであり、ストライプのデータブロックは、同じオフセットで各ストレージ装置中にある。ストライプ中のデータブロックは、ストリップ(strip)とも呼ばれ、ストリップは、範囲内の連続アドレスブロックである。ディスクアレイでは、コントローラは、概して、メンバーディスクのブロックアドレスに仮想ディスクのブロックアドレス(block address)をマッピングするためにストリップを使用する。ストリップは、ストライプ要素(stripe element)とも呼ばれる。
【0048】
特定の動作では、ストレージデバイス110は、RAIDの編成形態に従ってストライプ中のチェックブロックのシーケンス番号を判断し得る。本明細書におけるシーケンス番号は、ストライプ中のチェックブロックの位置番号を示す。本発明の実施形態では、ストライプの位置番号は、1から開始し、連続的に1ずつ漸進的に増加する。たとえば、
図4Aに示すように、ストライプ1は、データブロック1のチェックブロック1と、データブロック2と、データブロック3とを含む。データブロック1のシーケンス番号は1であり、データブロック2のシーケンス番号は2であり、データブロック3のシーケンス番号は3である。チェックブロック1は、ストライプ1の第4の位置に位置し、その結果、チェックブロック1のシーケンス番号は4である。ストライプ2は、データブロック4と、データブロック5と、チェックブロック2と、データブロック6とを含み、ここで、チェックブロック2は、ストライプ2の第3の位置に位置し、その結果、チェックブロック2のシーケンス番号は3である。ストライプのシーケンス番号が、RAID中のメンバーディスクのシーケンス番号に対応することが理解され得る。たとえば、ストライプ中のチェックブロックのシーケンス番号が4である場合、チェックブロックは、RAID中の第4のメンバーディスクに書き込まれ得る。
【0049】
分散チェック機能をもつRAIDでは、特定のチェックブロックがストリップ中でどのように分散されるかは、第1のRAIDの編成形態とチェックブロックの分布方法とに従って判断され得る。たとえば、RAID5中のディスク上のチェックブロックの分布方法は、左同期(逆方向パリティまたはLeft Synchronous)、左非同期(後方動的またはLeft Asynchronous)、右同期(前方向パリティまたはRight Synchronous)、または右非同期(前方向動的またはRight Asynchronous)であり得る。「左」または「右」は、チェック情報がどのように分散させられるかを示し、「同期」または「非同期」は、データがどのように分散されるかを示す。「左」のアルゴリズムでは、(必要なら、巡回的に繰り返して分散するために)最後のディスクから開始して、チェックブロックは、第1のディスクに向かう方向に各ストライプ中で1ディスク位置移動される。「右」のアルゴリズムでは、(必要なら、巡回的に繰り返して分散するために)第1のディスクから開始して、チェックブロックは、最後のディスクに向かう方向に各ストライプ中で1ディスク位置移動される。RAID6には、RAID5に基づく別のグループのチェックブロックが追加される。
【0050】
ステップ310において、ストレージデバイス110は、T個のファイル中のK番目のファイルの、ストレージ装置に書き込まれるべきデータブロックをストライプ中のK番目のデータブロックとして取得し、ここで、Kの値は、1からTまで漸進的に増加し、Kの値は、ストライプ中のチェックブロックのシーケンス番号に等しくない。
【0051】
たとえば、RAID中に4つのディスクがある。ステップ305において、ストレージデバイス110が、現在のストライプ中のチェックブロックのシーケンス番号が
図4Aに示すストライプ1中のシーケンス番号4であると判断する場合、ステップ310において、ストレージデバイス110が、受信された4つのファイルF1、F2、F3およびF4を処理するとき、Kの値は、1から開始して、連続して1ずつ漸進的に増加する。Kの値がTよりも大きくなり得ないことが理解されよう。さらに、ストライプ中のチェックブロックのために位置を予約する必要がある。したがって、本発明の実施形態では、Kの値は、ストライプ中のチェックブロックのシーケンス番号に等しくならない。言い換えれば、ストレージデバイス110は、第1のファイルから開始して、ストライプの対応する位置にあるデータブロックを連続的に取得し得る。しかしながら、ストレージデバイス110は、ストライプ中のチェックブロックのシーケンス番号の値に対応するファイルからデータブロックを取得しない。たとえば、第1のファイルF1のデータブロックは、ストライプ1中の第1のデータブロック(
図4Aに示すストライプ1中のデータブロック1)となるように取得され、第2のファイルF2のデータブロックは、ストライプ1中の第2のデータブロック(
図4Aに示すストライプ1中のデータブロック2)となるように取得され、第3のファイルF3のデータブロックは、ストライプ1中の第3のデータブロック(
図4Aに示すストライプ1中のデータブロック3)となるように取得される。Kの値が、ストライプ中のチェックブロックのシーケンス番号に等しくならないので、ステップ310において、ストレージデバイス110は、第4のファイルF4のデータブロックを取得しない。
【0052】
ステップ305において、ストレージデバイス110が、現在のストライプ中のチェックブロックのシーケンス番号が
図4Aに示すストライプ2中のシーケンス番号3であると判断する場合、ステップ310において、第1のファイルF1のデータブロックは、ストライプ
2中の第1のデータブロック(
図4Aに示すストライプ2中のデータブロック4)となるように取得され得、第2のファイルF2のデータブロックは、ストライプ
2中の第2のデータブロック(
図4Aに示すストライプ2中のデータブロック5)となるように取得され得、第4のファイルF4のデータブロックは、ストライプ2中の第4のデータブロック(
図4Aに示すストライプ2中のデータブロック6)となるように取得され得ることが理解され得る。この場合、ストライプ2中のチェックブロックのシーケンス番号は3であり、したがって、ストレージデバイス110は、第3のファイルF3のデータブロックを取得しない。
【0053】
本発明の実施形態ではストライプ中のチェックブロックの数が制限されないことに留意されたい。RAIDの1つのストライプが1つのチェックブロックを含み、ストライプ中のチェックブロックのシーケンス番号が3である場合、ストレージデバイス110は、第3のファイルのデータブロックを取得しないことが理解され得る。RAIDの1つのストライプが、2つのチェックブロックを含み、ストライプ中の2つのチェックブロックのシーケンス番号が、それぞれ、3および4である場合、ストレージデバイス110は、第3のファイルおよび第4のファイルからデータブロックを取得しない。
【0054】
本発明の実施形態において説明するデータブロックは、複数個のデータによって形成されるデータユニットを示す。本発明の実施形態において説明するチェックブロックは、チェックデータによって形成されるデータユニットを示す。異なるファイルから取得されたデータブロックがRAIDのストライプを形成する。したがって、ストレージデバイス110が、RAIDのストリップサイズ(strip size)に従ってファイルからデータブロックを取得し得ることが理解され得る。言い換えれば、データブロックサイズは、RAIDのストリップサイズに等しくなる。ブロックサイズ、チャンクサイズ、またはグラニュラリティと呼ばれることもあるストリップサイズ(strip size)は、各ディスクに書き込まれるデータブロックのサイズを示す。概して、RAIDのストリップサイズは、2KB〜512KB(以上)の間にあり、ストリップサイズの値は、たとえば、2KB、4KB、8KB、16KBなど、2のn乗になる。
【0055】
実際の適用例では、データブロックは、ファイルの開始アドレスとストリップサイズとに従ってファイルから取得され得、または受信されたT個のファイルは、事前に、RAIDのストリップサイズに従って少なくとも2つのデータブロックに分割され得ることが理解され得る。ファイルが分割されるとき、ファイルのサイズがストリップサイズよりも小さい場合、ファイルは、データブロックとなるように取得され得る。ファイルが分割された後に、ファイルの残りのデータのサイズがストリップサイズよりも小さい場合、ファイルの残りのデータは、データブロックとなるように取得される。たとえば、
図4Bに示すように、コントローラ115は、RAIDのストリップサイズに従って、受信した4つの記憶されるべきファイルF1〜F4を分割する。ファイルF1は、F1-1、F1-2、F1-3、F1-4、およびF1-5の5つのデータブロックに分割される。ファイルF2は、F2-1、F2-2、およびF2-3の3つのデータブロックに分割される。ファイルF3は、1つのデータブロックF3-1に分割される。ファイルF4は、F4-1、F4-2、F4-3、F4-4、およびF4-5の5つのデータブロックに分割される。ステップ310において、ストレージデバイス110は、各ファイルの、ディスクに書き込まれるべきデータブロックをストライプの対応する位置にあるデータブロックとして直接取得し得る。たとえば、
図4Aに示すストライプ1中のデータブロックが判断されるとき、F1-1は、ストライプ1中のデータブロック1となるように取得され得、F2-1は、ストライプ1中のデータブロック2となるように取得され得、F3-1は、ストライプ1中のデータブロック3となるように取得され得る。
【0056】
ファイルのデータブロックが取得されるとき、ファイルの、ディスクに書き込まれるべき任意のデータブロックが、ストライプ中のファイルに対応する位置にあるデータブロックとして取得され得ることに留意されたい。たとえば、F1中のすべてのデータブロックが、ディスクに書き込まれるべきものである場合、データブロックF1-1、F1-2、F1-3、F1-4、またはF1-5のうちのいずれか1つは、ストライプ1のデータブロック1となるように取得され得る。
【0057】
ステップ315において、ストレージデバイス110は、ストライプ中のデータブロックに従ってストライプ中のチェックブロックを取得する。ストライプ中のデータブロックを取得した後に、ストレージデバイス110は、ストライプ中のチェックブロックを取得するために、RAIDのチェックアルゴリズムに従ってストライプ中のデータブロックに対してチェック計算を実行し得る。取得されたチェックブロックは、ステップ305において判断されたシーケンス番号に対応する位置にあるストライプ中のチェックブロックである。RAIDのチェックアルゴリズムには、限定はしないが、パリティチェックアルゴリズムが含まれることが理解され得る。
【0058】
ステップ320において、ストレージデバイス110は、T個のストレージ装置に、ストライプ中のデータブロックとストライプ中の取得されたチェックブロックとを書き込む。詳細には、ストレージデバイス110は、RAIDを形成するT個のディスクに、ストライプ中のデータブロックとチェックブロックとを同時に書き込み得る。たとえば、F1-1、F2-1、F3-1、およびチェックブロック1が、
図4A中のストライプ1を形成する場合、F1-1、F2-1、F3-1、およびチェックブロック1は、RAIDを形成する4つのディスクに同時に書き込まれ得、ここで、チェックブロック1は、F1-1、F2-1、およびF3-1に従って計算することによって取得される。
図4Cに示したストライプ1のストレージ構造が形成される。
【0059】
ストライプ1が書き込まれた後、ストレージデバイス110は、引き続きストライプ2中のデータブロックを取得し、取得されたデータブロックに従ってストライプ2中のチェックブロックを取得し、ディスクにストライプ2中のデータブロックとチェックブロックとを同時に書き込み得ることが理解され得る。
図4Cに示したストライプ2のストレージ構造が形成される。すべてのファイルがディスクに記憶されるまで、他のストライプが同様に処理される。
【0060】
本発明の実施形態では、ファイルのデータブロックがディスクに書き込まれた後、データブロックは、ディスクに書き込まれたデータブロックとしてマーキングされ得、またはファイルから削除され得、その結果、次のストライプ中のデータブロックを取得する必要があるとき、ファイルの、ディスクに書き込まれるべきデータブロックが識別され得ることが理解され得る。本発明の実施形態では、ファイルの、ディスクに書き込まれるべきデータブロックを識別する方法は限定されない。
【0061】
本発明の実施形態において説明するファイル処理方法では、ストレージデバイス110が、RAIDのストライプ中のチェックブロックのシーケンス番号を判断することを上記のことから知ることができる。受信されたT個のファイル中のK番目のファイルの、ストレージ装置に書き込まれるべきデータブロックが、ストライプ中のK番目のデータブロックとなるように取得され、ここで、Kの値が、ストライプ中のチェックブロックのシーケンス番号に等しくない。ファイルからデータブロックを取得した後に、ストレージデバイス110は、計算することによって、ストライプ中の取得されたデータブロックに従ってストライプ中のチェックブロックを取得し、RAIDを形成するディスクにストライプ中のデータブロックとチェックブロックとを書き込む。本方法では、ストレージデバイス110がディスクにファイルを書き込む前に、1つのファイルのデータブロックは、ストライプ中の同じ位置に対応し、したがって、その1つのファイルのデータブロックは、RAID中の1つのディスクに対応する。したがって、ストレージデバイス110は、1つのディスクに1つのファイルのすべてのデータブロックを書き込むことができる。アーカイビングの適用例シナリオでは、本発明の実施形態において説明するファイル処理方法を使用することによってRAIDに記憶されたファイルにアクセスする必要があるとき、有効なエネルギー節約効果を達成するために、RAID中のすべてのディスクを起動または電源投入する必要がなく、ファイルが記憶されたただ1つのディスクしか動作する必要がない。
【0062】
さらに、本発明の実施形態において説明するファイル処理方法では、異なるファイルのデータブロックがストライプを形成し、ストレージデバイス110がディスクにストライプを書き込む。ストライプのあるデータブロックが損傷したとき、ストレージデバイス110は、ストライプ中のチェックブロックと他のファイルのデータブロックとに従って損傷したデータブロックを復元することができる。ファイルストレージのセキュリティが保障されるとともに、ファイル書込み効率が保証される。
【0063】
図5は、本発明の一実施形態による、別のファイル処理方法のフローチャートである。本方法は、
図2に示すストレージデバイス110のコントローラ115によって実行され得、本方法は、ファイルアーカイビングシナリオに適用され得る。本発明の実施形態では、説明のための一例として、4つのディスクを含むRAIDが使用される。以下に、
図2、
図4B、および
図4Cを参照しながら
図5について説明する。
図5に示すように、本方法は、以下を含む。
【0064】
ステップ400において、RAIDに記憶されるべきT個のファイルが受信される。
【0065】
ステップ405において、ストレージデバイス110は、RAIDのストライプ中のチェックブロックのシーケンス番号を判断する。
【0066】
ステップ400は
図3中のステップ300と同様であり、ステップ405は
図3中のステップ305と同様である。したがって、ステップ300およびステップ305の関係する説明が参照され得、詳細について、本明細書では繰り返し説明しない。
【0067】
ステップ410において、ストレージデバイス110は、T個のファイルのK番目のファイルがディスクに書き込まれるべきデータブロックを含むかどうかを判断する。K番目のファイルがディスクに書き込まれるべきデータブロックを含む場合、ステップ415を実行し、そうでない場合、ステップ420を実行する。1つの事例では、ステップ405において、RAIDのストライプ中のチェックブロックのシーケンス番号が1でないとストレージデバイス110が判断する場合、このステップにおいて、Kの初期値が最初に1に設定され得る。言い換えれば、ストレージデバイス110は、T個のファイルの第1のファイルがディスクに書き込まれるべきデータブロックを含むかどうかを判断する必要がある。第1のファイルがディスクに書き込まれるべきデータブロックを含む場合、ステップ415を実行し、そうでない場合、ステップ420を実行する。別の事例では、ステップ405において、RAIDのストライプ中のチェックブロックのシーケンス番号が1であるとストレージデバイス110が判断する場合、このステップにおいて、Kの初期値が最初に2に設定され得る。言い換えれば、ストレージデバイス110は、第2のファイルがディスクに書き込まれるべきデータブロックを含むかどうかを判断する必要がある。第2のファイルがディスクに書き込まれるべきデータブロックを含む場合、ステップ415を実行し、そうでない場合、ステップ420を実行する。別の表現方法では、1つのストライプ中のチェックブロックのシーケンス番号が1でない場合、ストレージデバイスは、第1のファイルから1つのストライプ中のデータブロックを取得し始める必要がある。1つのストライプ中のチェックブロックのシーケンス番号が1である場合、ストレージデバイスは、第2のファイルから1つのストライプ中のデータブロックを取得し始める必要がある。
【0068】
本発明の実施形態では、ストレージデバイス110は、データブロックをマーキングすることによって、またはファイルからデータブロックを削除することによってファイルの、ディスクに書き込まれたデータブロックを識別し得、その結果、ストレージデバイス110は、ファイルの、ディスクに書き込まれるべきデータブロックを識別することができることが理解され得る。ストレージデバイス110によってファイルの、ディスクに書き込まれるべきデータブロックを識別するための方法を本明細書では限定しない。
【0069】
ステップ415において、ストレージデバイス110は、T個のファイル中のK番目のファイルの、ディスクに書き込まれるべきデータブロックをストライプ中のK番目のデータブロックとして取得し、ここで、Kの値は、ストライプ中のチェックブロックのシーケンス番号に等しくない。言い換えれば、ストレージデバイス110がファイルのデータブロックを取得するとき、ストレージデバイス110は、ファイルのデータブロックを取得することができず、ここで、ファイルのシーケンスがストライプ中のチェックブロックのシーケンス番号に対応し、その結果、シーケンス番号に対応する位置が、ストライプ中のチェックデータのために予約され得る。ステップ415の具体的な説明について、
図3中のステップ310の関係する説明が参照され得る。
【0070】
ステップ420において、ストレージデバイス110は、T個のファイルを除く他のファイルが受信されたかどうかを判断する。実際の適用例では、ストレージデバイス110が、ステップ410において、T個のファイルのK番目のファイルがディスクに書き込まれるべきデータブロックを含まないと判断する場合、それは、K番目のファイルがディスクに完全に記憶されていることを示す。ストレージデバイス110は、さらに、T個のファイルを除く他のファイルが受信されたかどうかを判断する必要があり、ここで、他のファイルは、RAIDを形成するディスクに記憶される必要がある。ストレージデバイス110がT個のファイルを除く他のファイルを受信した場合、本方法のステップ423を実行し、そうでない場合、本方法のステップ430を実行する。
【0071】
たとえば、
図4Bおよび
図4Cに示すように、第3のファイルF3は、
図4Bに示す4つのファイルのうちで、比較的小さく、F3は、データブロックF3-1として取得される。データブロックF1-1、F2-1、F3-1、およびチェックブロックP1によって形成されるストライプ1が、RAIDを形成する4つのディスクに書き込まれた後、ストライプ3中のチェックブロックP3のシーケンス番号が2であるので、ストレージデバイス110が、ストライプ3のデータブロックを取得するとき、ストライプ3は、第3のファイルF3の、ディスクに書き込まれるべき
データブロックが第3のデータブロックとして取得される必要がある。ファイルF3のデータブロックF3-1がストライプ1に書き込まれたので、ファイルF3は、ディスクに書き込まれるべきデータブロックを含まない。したがって、ストレージデバイス110は、ファイルF1〜F4を除く他のファイルが受信されたかどうかを判断する必要がある。たとえば、
図4Bに示した例では、ストレージデバイス110は、第5のファイルF5が受信されたかどうかを判断する必要がある。
【0072】
ステップ423において、ストレージデバイス110は、T個のファイルを除く他のファイルからファイルを選択する。詳細には、ストレージデバイス110は、他のファイルからファイルをランダムに選択し得る。
【0073】
ステップ425において、ストレージデバイス110は、選択されたファイルの、ディスクに書き込まれるべきデータブロックを、ストライプ中のK番目のデータブロックとして取得する。実際の適用例では、1つの事例では、T個のファイルのK番目のファイルがディスクに書き込まれているとき、ストレージデバイス110が、RAIDを形成するディスク中に記憶される必要がある、T個のファイルを除く他のファイルを受信した場合、ストレージデバイス110は、他のファイルのうちのいずれか1つのファイルの、ディスクに書き込まれるべきデータブロックをストライプ中のK番目のデータブロックとして取得し得る。このようにして、ストレージデバイス110は、受信された他のファイルのうちのいずれか1つのファイルのデータブロックと、T個のファイルのうちの他のファイルの、ディスクに書き込まれるべきデータブロックとを含むストライプをディスクに書き込み得る。たとえば、上記の例では、ストレージデバイス110が、RAIDに記憶されるべき第5のファイルF5を受信した場合、ストレージデバイス110は、ファイルF5の、ディスクに書き込まれるべきデータブロックF5-1を、ストライプ3中のシーケンス番号3の位置にあるデータブロックとして取得し得る。次いで、ステップ435を実行して、データブロックF5-1とファイルF1およびF4中のデータブロックとを含むストライプ3を形成する。詳細は、
図4Cに示すストライプ3の構造が参照され得る。
【0074】
ステップ430において、ストレージデバイス110は、ストライプ中のK番目のデータブロックを0で充填する。実際の適用例では、別の事例では、ストレージデバイス110が、ステップ420において、RAIDに記憶される必要がある、T個のファイルを除く他のファイルが受信されないと判断する場合、ストレージデバイス110は、ステップ430において、ストライプ中のK番目のデータブロックを0で充填し、これは、データブロックが使用されないことを示すために使用される。
【0075】
ステップ435において、ストレージデバイス110は、Kの値がTよりも大きいかどうかを判断する。Kの値がTよりも大きくない場合、ステップ440を実行し、そうでない場合、ステップ445を実行する。
【0076】
ステップ440において、ストレージデバイス110は、K=K+1を設定する。言い換えれば、ストレージデバイス110は、変数Kの値をK+1の値に設定し、ステップ410に戻って、ストライプ中の次のデータブロックを取得し始める。ステップ410、ステップ415、ステップ435、およびステップ440を実行することによって、ストレージデバイス110は、ファイルを除く他のファイルのデータブロックを取得し得、ここで、ファイルのシーケンスは、ストライプ中のすべてのデータブロックを取得するために、ストライプ中のチェックブロックのシーケンス番号に対応する。
【0077】
ステップ445において、ストレージデバイス110は、ストライプ中のデータブロックに従ってストライプ中のチェックブロックを取得する。このステップの具体的な説明について、
図3中のステップ315の関係する説明が参照され得る。
【0078】
ステップ450において、ストレージデバイス110は、T個のディスクに、ストライプ中のデータブロックとストライプ中の取得されたチェックブロックとを書き込む。このステップの具体的な説明について、
図3中のステップ320の関係する説明が参照され得る。
【0079】
ステップ455において、ストレージデバイス110は、RAIDのディスクに完全に書き込まれていないファイルが存在するかどうかを判断する。T個のファイルのうちのファイルがディスクに完全に書き込まれていない場合、言い換えれば、ファイルがディスクにまだ完全に記憶されていない場合、ステップ405に戻る。ストレージデバイス110は、引き続き、次のストライプ中のデータブロックとチェックブロックとをディスクに書き込むために、次のストライプ中のチェックブロックのシーケンス番号を判断し、次のストライプ中のデータブロックを取得する。ステップ455において、RAIDに記憶されるべきすべてのファイルが完全に記憶されたとストレージデバイス110が判断する場合、本方法のステップ460を実行して、ストレージプロシージャを終了する。
図5に示すファイル処理方法を使用することによって、ファイルがRAIDに記憶された後、1つのファイルがRAIDの1つのディスクに記憶され得る。具体的なストレージ構造を
図4Cに示し得る。便利な簡単な説明のために、
図5中の実施形態のいくつかのステップの説明について、
図3に示す実施形態における対応するプロセスの具体的な説明が参照され得ることが当業者には明確に理解され得る。
【0080】
別の事例では、RAIDの編成形態が独立チェックディスクをもつRAIDであるとき、たとえば、RAIDが、RAID3またはRAID4であるとき、コントローラ115は、
図6に示す方法に従ってファイルストレージを実行し得る。本発明の実施形態では、説明のための一例として、4つのメンバーディスクを含むRAIDが使用される。RAIDの編成形態は、RAID3であり、ここで、RAIDは、3つのデータディスクと1つの独立チェックディスクとを含む。当業者は、データディスクが、アレイ中でデータブロックを記憶するために使用されるメンバーディスクであることを知ることができる。独立チェックディスクは、アレイ中で特にチェックブロックを記憶するために使用されるメンバーディスクである。以下に、
図2、
図4B、および
図6Aを参照しながら
図6について説明する。
図6に示すように、本方法は、以下を含む。
【0081】
ステップ600において、ストレージデバイス110は、RAIDに記憶されるべきD個のファイルを受信する。Dの値は、RAID中のデータディスクの数に等しくなる。たとえば、上記で説明した4つのメンバーディスクを含むRAIDでは、RAIDの編成形態がRAID3である場合、RAID中のデータディスクの数は3になり、独立チェックディスクの数は1になる。
【0082】
ストレージデバイス110が、D個のファイルを受信するとき、D個のファイルを処理し得ることが理解され得る。ストレージデバイス110はまた、キャッシュ120中に受信された複数のファイルをバッファし、次いで、ストレージ時間に達したとき、処理するための受信された複数のファイルからD個のファイルをランダムに選択し得る。たとえば、
図4Bに示すように、ストレージデバイス110は、受信され、RAIDに記憶されるべき4つのファイルF1、F2、F3、およびF4から3つのファイルF1〜F3を処理するために選択し得る。
【0083】
ステップ605において、ストレージデバイス110は、D個のファイル中のK番目のファイルの、データストレージ装置に書き込まれるべきデータブロックを、RAIDのストライプ中にある、K番目のデータストレージ装置に記憶されるべきデータブロックとして取得し、ここで、Kの値は、1からDまで漸進的に増加する。
【0084】
本発明の実施形態におけるRAIDの編成形態が独立チェックディスクをもつRAIDであるので、このステップにおいて、ストライプ中のデータブロックを取得するとき、ストレージデバイス110は、独立チェックディスクに書き込まれるべきチェックブロックのための位置を予約する必要がある。ストレージデバイス110は、K番目のファイルの、データディスクに書き込まれるべきデータブロックを、ストライプ中にあり、K番目のデータディスクに記憶されるべきデータブロックとして使用し得る。たとえば、
図6Aに示すRAIDにおいて、メンバーディスクD1、D2、およびD3はデータディスクであり、メンバーディスクD4は、独立チェックディスクである。ストライプのデータブロックを取得するとき、ストレージデバイス110は、最初に、Kの初期値を1に設定し、次いで、1つのデータブロックを取得した後に、Kの値を連続して1ずつ漸進的に増加させ、ここで、Kの値は、Dよりも大きくない。このようにして、ストレージデバイス110は、第1のファイルからデータブロックを取得し始め、次いで、第2および第3のファイルのデータブロックを連続的に取得する。
図4Bに示すように、ストレージデバイス110は、連続的に、第1のファイルF1中のデータブロックF1-1をストライプ1中の、第1のデータディスクD1に書き込まれるべきデータブロックとして使用し、第2のファイルF2中のデータブロックF2-1をストライプ1中の、第2のデータディスクD2に書き込まれるべきデータブロックとして使用し、第3のファイルF3中のデータブロックF3-1をストライプ1中の、第3のデータディスクD3に書き込まれるべきデータブロックとして使用し得る。本発明の実施形態では、RAID中の独立チェックディスクの位置を限定せず、たとえば、メンバーディスクD3は、独立チェックディスクとして使用され得、メンバーディスクD4は、RAID中の第3のデータディスクとして使用され得ることに留意されたい。
【0085】
ステップ610において、ストレージデバイス110は、取得されたD個のデータブロックに従ってストライプ中のP個のチェックブロックを取得する。たとえば、
図6A中のストライプ1中の3つのデータブロックF1-1、F2-1、およびF3-1が取得された後、ストライプ1のチェックブロックP1を取得するために、RAIDのチェックアルゴリズムに従ってストライプ1中の3つのデータブロックに対してチェック計算が実行され得る。独立チェックディスクをもつRAIDでは、ストライプ中のチェックブロックの数は、RAIDの特定の編成形態に関係することに留意されたい。たとえば、RAID3は、1つの独立チェックディスクを有し、次いで、1つのストライプが1つのチェックブロックを有する。RAID4は、2つの独立チェックディスクを有し、次いで、1つのストライプが2つのチェックブロックを有する。本発明の実施形態では、RAIDの編成形態も特に限定されず、ストライプ中のチェックブロックの数も限定されない。さらに、本発明の実施形態におけるチェックアルゴリズムには、限定はしないが、パリティチェックアルゴリズムが含まれる。
【0086】
ステップ615において、ストレージデバイス110は、D個のデータストレージ装置にD個のデータブロックを書き込み、P個の独立チェックストレージ装置にP個のチェックブロックを書き込む。たとえば、ストレージデバイス110は、RAIDのメンバーディスクにストライプ1中の3つのデータブロックと1つのチェックブロックとを同時に書き込み得る。当業者は、ストライプ中のデータブロックとチェックブロックとがメンバーディスクに書き込まれるとき、独立チェックディスクをもつRAIDでは、データブロックは、データディスクに書き込まれる必要があり、ストライプ中のチェックブロックは独立チェックディスクに書き込まれる必要があることを知り得る。データがディスクに書き込まれた後、
図6Aに示すストライプ1のストレージ構造が形成され得る。
【0087】
図6に示す実施形態では、ストレージデバイス110は、D個のファイル中のK番目のファイルの、データディスクに書き込まれるべきデータブロックを、RAIDのストライプ中にある、K番目のデータディスクに記憶されるべきデータブロックとして使用する。このようにして、1つのファイルのデータブロックがRAID中の1つのデータディスクに対応し、その結果、1つのファイルに属するすべてのデータブロックが1つのデータディスクに書き込まれる。アーカイビングの適用例シナリオでは、RAID中のファイルにアクセスする必要があるとき、エネルギー節約効果を達成するために、RAID中のすべてのディスクを起動する必要がなく、ファイルが記憶されたただ1つのディスクしか起動する必要がない。
【0088】
さらに、
図6において説明したファイル処理方法では、ストレージデバイス110は、ディスクに、異なるファイルのデータブロックを含むストライプを書き込む。ストライプ中のデータブロックが損傷したとき、ストレージデバイス110は、ストライプ中のチェックブロックと他のファイルのデータブロックとを使用して損傷したデータブロックを復元することができ、それによって、ファイルストレージのセキュリティを保証しながら、ファイル書込み効率を保証する。
【0089】
図7は、本発明の一実施形態による、別のファイル処理方法のフローチャートである。本方法は、
図2に示すストレージデバイス110のコントローラ115によって実行され得、本方法は、独立チェックディスクをもつRAIDに適用され得る。本発明の実施形態では、説明のための一例として、4つのディスクを含むRAID3が使用される。以下に、
図2、
図4B、および
図6Aを参照しながら
図7について説明する。
図7に示すように、本方法は、以下を含む。
【0090】
ステップ700において、ストレージデバイス110は、RAIDに記憶されるべきD個のファイルを受信する。このステップの詳細について、ステップ600の関係する説明が参照され得る。
【0091】
ステップ705において、ストレージデバイス110は、D個のファイルのK番目のファイルがRAIDのデータディスクに書き込まれるべきデータブロックを含むかどうかを判断する。K番目のファイルがRAIDのデータディスクに書き込まれるべきデータブロックを含む場合、本方法のステップ710を実行し、そうでない場合、本方法のステップ715を実行する。Kの初期値は1である。別の表現方法では、ストレージデバイス110は、D個のファイルの第1のファイルがRAIDのデータディスクに書き込まれるべきデータブロックを含むかどうかを判断する必要がある。K番目のファイルがRAIDに書き込まれるべきデータブロックを含むかどうかを判断するための具体的な方法について、
図5中のステップ410の関係する説明が参照され得る。
【0092】
ステップ710において、ストレージデバイス110は、K番目のファイルの、データディスクに書き込まれるべきデータブロックを、RAIDのストライプ中にある、K番目のデータディスクに記憶されるべきデータブロックとして取得する。ステップ710の具体的な説明について、
図6中のステップ605の関係する説明が参照され得る。
【0093】
ステップ715において、ストレージデバイス110は、D個のファイルを除く他のファイルが受信されたかどうかを判断する。D個のファイルを除く他のファイルが受信された場合、本方法のステップ718を実行し、そうでない場合、本方法のステップ725を実行する。実際の適用例では、ストレージデバイス110が、ステップ705において、D個のファイルのK番目のファイルがディスクに書き込まれるべきデータブロックを含まないと判断する場合、それは、K番目のファイルがディスクにすべて記憶されていることを示す。この場合、ストレージデバイス110は、さらに、RAIDを形成するデータディスクに書き込まれる必要がある他のファイルが受信されたかどうかを判断する必要がある。ストレージデバイス110がD個のファイルを除く他のファイルを受信した場合、本方法のステップ718を実行し、そうでない場合、本方法のステップ725を実行する。
【0094】
たとえば、
図4Bに示す3つのファイルF1、F2、およびF3のうち、第3のファイルF3が比較的小さく、F3がデータブロックF3-1として使用される。さらに、データブロックF3-1は、
図6Aに示すRAIDに書き込まれている。ストレージデバイス110は、現在、ストライプ2中のデータブロックを取得する必要があり、ストレージデバイス110は、第3のファイルF3がRAIDに書き込まれるべきデータブロックを含まないと判断し得る。この場合、ストレージデバイス110は、F1〜F3を除く他のファイル、たとえば、第4のファイルF4が受信されたかどうかを判断する必要がある。他のファイルが受信された場合、本方法のステップ718を実行し、そうでない場合、ステップ725を実行する。
【0095】
ステップ718において、ストレージデバイス110は、D個のファイルを除く受信された他のファイルからファイルを選択する。詳細には、ストレージデバイス110は、受信された他のファイルからファイルをランダムに選択し得る。
【0096】
ステップ720において、ストレージデバイス110は、選択されたファイルの、ディスクに書き込まれるべきデータブロックを、ストライプ中のK番目のデータブロックとして使用する。たとえば、上記の例では、ストレージデバイス110が、RAIDに記憶されるべき第4のファイルF4を受信した場合、ストレージデバイス110は、ファイルF4の、ディスクに書き込まれるべきデータブロックF4-1を、ストライプ2中の第3のデータブロックとして使用し得る。別の表現方法では、ストレージデバイス110が、RAID中に、D個のファイルのK番目のファイルのすべてのデータブロックを記憶した後、ストレージデバイス110は、D個のファイルを除く他のファイルのデータブロックを記憶し始める。
【0097】
ステップ725において、ストレージデバイス110は、ストライプ中のK番目のデータブロックを0で充填する。別の事例では、ストレージデバイス110が、ステップ715において、D個のファイルを除く他のファイルが受信されないと判断し、ここで、他のファイルがRAIDに記憶される必要がある場合、ストレージデバイス110は、ステップ725において、ストライプ中のK番目のデータブロックを0で充填し、これは、データブロックが使用されないことを示すために使用される。
【0098】
ステップ730において、ストレージデバイス110は、Kの値がDよりも大きいかどうかを判断する。Kの値がDよりも大きくない場合、本方法のステップ735を実行し、そうでない場合、本方法のステップ740を実行する。Kの初期値が、本発明の実施形態では1であるので、ストライプ中の1つのデータブロックが取得された後、Kの値がDよりも大きいかどうかが判断され得る。Kの値がDよりも大きくない場合、本方法のステップ735を実行する。Kの値がDよりも大きい場合、ストライプ中のD個のデータブロックが取得されていること示し、本方法のステップ740を実行する。
【0099】
ステップ735において、ストレージデバイス110は、K=K+1を設定し、ストライプ中の次のデータブロックを取得するために、ステップ705に戻る。言い換えれば、ストレージデバイス110は、ストライプ中のすべてのデータブロックが完全に取得されるまで、変数Kの値をk+1の値に設定し、ステップ
705に戻って、上記の方法のステップを巡回的に使用することによってストライプ中の次のデータブロックを取得し始める。
【0100】
ステップ740において、ストレージデバイス110は、取得されたD個のデータブロックに従ってストライプ中のP個のチェックブロックを取得する。このステップの具体的な説明について、
図6中のステップ610の関係する説明が参照され得る。
【0101】
ステップ745において、ストレージデバイス110は、D個のデータディスクにD個のデータブロックを書き込み、P個の独立チェックディスクにP個のチェックブロックを書き込む。このステップの具体的な説明について、
図6中のステップ615の関係する説明が参照され得る。
【0102】
ステップ750において、ストレージデバイス110は、RAIDのディスクに完全に書き込まれていないファイルが存在するかどうかを判断する。D個のファイルのうちのファイルがRAIDのディスクに完全に書き込まれていない場合、言い換えれば、ファイルがRAIDに完全に記憶されていない場合、本方法のステップ705に戻る。ストレージデバイス110は、引き続き、次のストライプ中のデータブロックとチェックブロックとをRAIDを形成するディスクに書き込むために、次のストライプ中のチェックブロックのシーケンス番号を判断し、次のストライプ中のデータブロックを取得する。ステップ750において、RAIDに記憶されるべきすべてのファイルがRAIDに完全に記憶されたとストレージデバイス110が判断する場合、本方法のステップ755を実行して、本ストレージプロシージャを終了する。
【0103】
図6および
図7は、独立チェックディスクをもつRAIDに複数のファイルを記憶するための方法を紹介した。
図6または
図7に示すファイル処理方法を使用することによって、ファイルがRAIDに記憶された後、1つのファイルがRAIDの1つのディスクに記憶され得る。具体的なストレージ構造を
図6Aに示し得る。
【0104】
便利な簡単な説明のために、
図7中の実施形態のいくつかのステップの説明について、
図6に示す実施形態における対応するプロセスの具体的な説明が参照され得ることが当業者には明確に理解され得る。さらに、
図6および
図7おいて説明したファイル処理方法は、
図3および
図5において説明したファイル処理方法と同じ発明概念に基づく。上記の実施形態では、実施形態の各々の説明は、それぞれの焦点を有する。ある実施形態において詳細に説明していない部分について、他の実施形態における関係する説明が参照され得る。上記の実施形態において説明したファイル処理方法を使用することによって、1つのファイルのデータブロックがRAIDの1つのディスクに記憶され得る。さらに、ストレージデバイス110は、ディスクに、異なるファイルのデータブロックを含むストライプを書き込む。ストライプのデータブロックが損傷したとき、ストレージデバイス110は、ストライプ中のチェックブロックとストライプ中の他のファイルのデータブロックとに従って損傷したデータブロックを復元することができ、それによって、ファイルストレージのセキュリティを保証する。
【0105】
本発明の実施形態では、
図3、
図5、
図6、または
図7に示した上記のファイル処理方法を使用することによって、ファイルがRAIDに記憶された後、アーカイビングシナリオでは、記憶されたファイルはより低い頻度でアクセスされる。したがって、省エネルギーの目的を達成するために、ディスクは、概して、スリープ状態またはパワーオフ状態にある。ファイルを読み取る必要があるとき、読み取るために
図8において説明した方法が使用され得る。以下に、
図1および
図2を参照しながら
図8について説明する。本方法は、以下を含む。
【0106】
ステップ800において、ストレージデバイス110は、ホスト100のアクセス要求を受信し、ここで、アクセス要求は、RAIDに記憶されたファイルを読み取るために使用され、アクセス要求は、アクセスされる必要があるファイルの論理アドレスを搬送する。アクセス要求はまた、アクセスされるべきファイルのファイル名を搬送し得ることが理解され得る。
【0107】
ステップ805において、ストレージデバイス110は、論理アドレスに従って、ファイルのデータブロックが記憶された物理アドレスを照会する。概して、データがストレージデバイス110によって記憶された後、データを記憶するための物理アドレスと論理アドレスとの間のマッピング関係のマッピングテーブルが構成される。ファイルを読み取るためのアクセス要求を受信した後に、ストレージデバイス110は、アクセス要求中で搬送される論理アドレスに従って、マッピングテーブル中で、ディスク中のデータの物理アドレスを探索し得る。RAID中で、キャッシュ120中のデータとディスク130中のデータとの両方のためにマッピングテーブルが構成され得ることが理解され得る。物理アドレスが探索されるとき、概して、キャッシュ120のマッピングテーブルが最初に探索され得、次いで、ディスク130のマッピングテーブルが探索される。データがキャッシュ中にある場合、キャッシュ中のデータがホストに直接戻される。
【0108】
ステップ810において、ストレージデバイス110は、物理アドレスに従って、ファイルを記憶するための1つのディスクを判断する。本発明の実施形態では、上記の実施形態におけるファイル処理方法を使用することによって、RAIDを形成するディスク中にファイルが記憶された後、1つのファイルが1つのディスクに記憶され得る。したがって、本ステップにおいて、ストレージデバイス110は、物理アドレスに従って、ファイルを記憶するための1つのディスクを判断することができる。
【0109】
ステップ815において、ストレージデバイス110は、ホスト100にディスクに記憶されたファイルのデータブロックを戻す。本発明の実施形態における上記のファイル処理方法を使用することによって、1つのファイルが1つのディスクに記憶され得る。したがって、記憶されたファイルが読み取られるとき、ストレージデバイス110は、物理アドレスに従って、ファイルが記憶されたディスク130を起動するか、またはディスク130を電源投入し、ホスト100に、ファイルの、ディスク130に記憶されたデータブロックを戻し得る。詳細には、ストレージデバイス110は、取得された物理アドレスに従ってディスク130中のデータを読み取り、ホスト100にデータを戻し得る。
【0110】
本発明の実施形態では、
図3、
図5、
図6、または
図7に示した方法に従ってファイルが記憶されるので、1つのファイルに属するデータは1つのディスクに記憶される。したがって、ファイルが読み取られるとき、ファイルが記憶されたただ1つのディスクしか起動または電源投入する必要がなく、ファイルのデータは、RAIDのすべてのディスクを起動または電源投入する必要なしに、ディスクから読み取られ、ホストに戻され、その結果、有効なエネルギー節約効果を生じる。
【0111】
本発明の実施形態は、さらに、プログラムコードを記憶したコンピュータ可読記憶媒体を含み、ここで、プログラムコード中に含まれる命令が、上記の方法実施形態のうちのいずれか1つにおいて説明した方法プロセスを実行するために使用される、データ処理のためのコンピュータプログラム製品を提供する。当業者は、上記の記憶媒体が、USBフラッシュドライブ、リムーバブルハードディスク、磁気ディスク、光ディスク、ランダムアクセスメモリ(Random-Access Memory、RAM)、ソリッドステートディスク(Solid State Disk、SSD)、または不揮発性メモリ(non-volatile memory)など、プログラムコードを記憶することが可能な任意の非一時的(non-transitory)機械可読媒体を含み得ることを理解し得る。
【0112】
当業者は、本発明の実施形態では、ホストのアクセス要求に適時に応答するために、メタデータを記憶するためのディスクとキャッシュ120とが常にパワーオン状態のままであることを理解し得る。当業者は、メタデータが、RAIDに記憶されたデータとそのデータの環境とについて説明するデータであり、たとえば、メタデータが、論理アドレスと物理アドレスとの間のマッピング関係を含み得ることを知り得る。
【0113】
ディスクの頻繁なパワーオンまたはパワーオフは、ストレージシステムのエネルギー節約効果に影響を及ぼし得、ディスクの寿命にも影響を及ぼし得る。ディスクが頻繁に電源投入または電源切断されるのを回避するために、実際の適用例では、ディスクは等級をつけられ得る。少量の高性能ディスクが、常にパワーオン状態を保ち、一方、大量の高容量ディスクがエネルギー節約状態に入る。本明細書の高性能ディスクは、アクセス遅延が比較的低いディスクまたは1秒当たりの入出力(I/O)動作(Input/Output Operations Per Second、IOPS)が多いディスク、たとえば、ソリッドステートディスク(Solid State Disk、SSD)を指す。高容量ディスクは、比較的大容量のディスクを指す。ストレージ後に、ファイルアクセス条件に従って、アクセス頻度の高いファイルは、ディスクが電源投入または起動される回数を低減させ、応答速度を改善するために、常にパワーオン状態を保つ少量の予約済み高性能ディスクに移動され得る。
【0114】
さらに、ディスクが頻繁に電源投入または電源切断されるのを回避するために、本発明の実施形態でのストレージシステムはまた、警報機構および保護機構を提供し得る。RAID中の各ディスクが電源投入され電源切断された累積回数についての統計値が収集される。あるディスクがプリセットされた時間期間内に電源投入され電源切断された回数がプリセットされたしきい値を超えるとき、本システムは、プロンプトまたは警報を与え、何らかの保護処置を講じ得る。設定されるしきい値は、たとえば、10回/日または100回/月であり得る。保護処置は、設定された時間期間内にディスクのパワーオンまたはパワーオフ動作を実行しないことなどとして設定され得、これは、本明細書では限定しない。
【0115】
最後に、上記の実施形態は、本発明を限定するものではなく、本発明の技術的解決策について説明するためのものにすぎないことに留意されたい。