(58)【調査した分野】(Int.Cl.,DB名)
ファイルマイグレーション方法であり、前記方法は、ストレージデバイスに適用され、前記ストレージデバイスは、ターゲットファイルを記憶し、前記ターゲットファイルは、複数のデータブロックを有する方法であって、
前記ストレージデバイスにより、前記ターゲットファイルのメタデータのスナップショットを取得するステップであり、前記スナップショットは、前記複数のデータブロックの論理アドレス及び前記複数のデータブロックの第1の書き込み時点を有し、前記第1の書き込み時点は、前記スナップショットに記録された、前記データブロックを前記ストレージデバイスに書き込む時点を示すステップと、
前記複数のデータブロックの前記論理アドレス及び前記複数のデータブロックの前記第1の書き込み時点から、ターゲットデータブロックの論理アドレス及び前記ターゲットデータブロックの第1の書き込み時点を識別するステップと、
前記ターゲットデータブロックの前記論理アドレスに従って、前記ターゲットファイルの前記メタデータから前記ターゲットデータブロックの前記論理アドレスに対応する第2の書き込み時点を取得するステップであり、前記ターゲットファイルの前記メタデータは、前記ターゲットデータブロックの前記論理アドレス及び前記第2の書き込み時点を有し、前記第2の書き込み時点は、前記ターゲットデータブロックを前記ストレージデバイスに書き込む最新の時点を示すステップと、
前記第1の書き込み時点が前記第2の書き込み時点と同じであると決定された場合、前記ターゲットデータブロックを予め割り当てられた連続的なストレージ空間にマイグレーションするステップと
を有する方法。
前記連続的なストレージ空間を予め割り当てるステップであり、前記ストレージ空間のサイズは、前記ターゲットファイルのサイズ未満ではないステップを更に有する、請求項1に記載の方法。
前記ターゲットデータブロックの前記論理アドレスに対応する前記第2の書き込み時点が、前記ターゲットデータブロックの前記論理アドレスに従って、前記ターゲットファイルの前記メタデータから取得された場合、
前記ターゲットデータブロックの前記論理アドレスに対応する前記第2の書き込み時点が取得された後、且つ、前記物理アドレスと、前記ターゲットデータブロックを前記物理アドレスに対応する前記ストレージ空間に書き込む前記時点とが前記ターゲットファイルの前記メタデータに記憶される前に、前記ターゲットデータブロックの前記論理アドレス及び前記第2の書き込み時点が変更できないように、前記ターゲットデータブロックの前記論理アドレス及び前記第2の書き込み時点においてロック動作を実行するステップを更に有する、請求項4に記載の方法。
ファイルマイグレーション装置であり、前記装置は、ストレージデバイスに位置し、前記ストレージデバイスは、ターゲットファイルを記憶し、前記ターゲットファイルは、複数のデータブロックを有し、前記装置は、デフラグモジュールを有する装置であって、
前記デフラグモジュールは、
前記ターゲットファイルのメタデータのスナップショットを取得するように構成されたスナップショット取得モジュールであり、前記スナップショットは、前記複数のデータブロックの論理アドレス及び前記複数のデータブロックの第1の書き込み時点を有し、前記第1の書き込み時点は、前記スナップショットに記録された、前記データブロックを前記ストレージデバイスに書き込む時点を示すスナップショット取得モジュールと、
前記ターゲットファイルの前記メタデータの前記スナップショット及び前記ターゲットファイルの前記メタデータを記憶するように構成されたアドレスマッピングモジュールと
を有し、
前記スナップショット取得モジュールは、前記複数のデータブロックの前記論理アドレス及び前記複数のデータブロックの前記第1の書き込み時点から、ターゲットデータブロックの論理アドレス及び前記ターゲットデータブロックの第1の書き込み時点を識別するように更に構成され、
前記デフラグモジュールは、
前記ターゲットデータブロックの前記論理アドレスに従って、前記アドレスマッピングモジュールに記憶された前記ターゲットファイルの前記メタデータから前記ターゲットデータブロックの前記論理アドレスに対応する第2の書き込み時点を取得するように構成されたマイグレーションモジュールであり、前記ターゲットファイルの前記メタデータは、前記ターゲットデータブロックの前記論理アドレス及び前記第2の書き込み時点を有し、前記第2の書き込み時点は、前記ターゲットデータブロックを前記ストレージデバイスに書き込む最新の時点を示すマイグレーションモジュールを有し、
前記マイグレーションモジュールは、前記第1の書き込み時点が前記第2の書き込み時点と同じであると決定された場合、前記ターゲットデータブロックを予め割り当てられた連続的なストレージ空間にマイグレーションするように更に構成される装置。
前記ファイルマイグレーション装置は、前記連続的なストレージ空間を予め割り当てるように構成された空間管理モジュールであり、前記ストレージ空間のサイズは、前記ターゲットファイルのサイズ未満ではない空間管理モジュールを更に有する、請求項7に記載の装置。
前記マイグレーションモジュールは、前記ストレージ空間において前記物理アドレスが前記ターゲットデータブロックに割り当てられた後に、前記物理アドレスと、前記ターゲットデータブロックを前記物理アドレスに対応する前記ストレージ空間に書き込む時点とを、前記ターゲットファイルの前記メタデータに記憶するように更に構成される、請求項9に記載の装置。
前記マイグレーションモジュールは、前記ターゲットデータブロックの前記論理アドレスに対応する前記第2の書き込み時点が取得された後、且つ、前記物理アドレスと、前記ターゲットデータブロックを前記物理アドレスに対応する前記ストレージ空間に書き込む前記時点とが前記ターゲットファイルの前記メタデータに記憶される前に、前記ターゲットデータブロックの前記論理アドレス及び前記第2の書き込み時点が変更できないように、前記ターゲットデータブロックの前記論理アドレス及び前記第2の書き込み時点においてロック動作を実行するように更に構成される、請求項10に記載の装置。
ストレージデバイスであり、前記ストレージデバイスは、コントローラとディスクとを有し、前記コントローラは、プロセッサと通信インタフェースとを有するストレージデバイスであって、
前記通信インタフェースは、前記ディスクと通信するように構成され、
前記プロセッサは、
ターゲットファイルのメタデータのスナップショットを取得し、前記スナップショットは、複数のデータブロックの論理アドレス及び前記複数のデータブロックの第1の書き込み時点を有し、前記第1の書き込み時点は、前記スナップショットに記録された、前記データブロックを前記ディスクに書き込む時点を示し、
前記複数のデータブロックの前記論理アドレス及び前記複数のデータブロックの前記第1の書き込み時点から、ターゲットデータブロックの論理アドレス及び前記ターゲットデータブロックの第1の書き込み時点を識別し、
前記ターゲットデータブロックの前記論理アドレスに従って、前記ターゲットファイルの前記メタデータから前記ターゲットデータブロックの前記論理アドレスに対応する第2の書き込み時点を取得し、前記ターゲットファイルの前記メタデータは、前記ターゲットデータブロックの前記論理アドレス及び前記第2の書き込み時点を有し、前記第2の書き込み時点は、前記ターゲットデータブロックを前記ディスクに書き込む最新の時点を示し、
前記第1の書き込み時点が前記第2の書き込み時点と同じであると決定された場合、前記ターゲットデータブロックを予め割り当てられた連続的なストレージ空間にマイグレーションするように構成されるストレージデバイス。
前記プロセッサは、前記連続的なストレージ空間を予め割り当てるように更に構成され、前記ストレージ空間のサイズは、前記ターゲットファイルのサイズ未満ではない、請求項13に記載のストレージデバイス。
前記プロセッサは、前記ストレージ空間において前記物理アドレスが前記ターゲットデータブロックに割り当てられた後に、前記物理アドレスと、前記ターゲットデータブロックを前記物理アドレスに対応する前記ストレージ空間に書き込む時点とを、前記ターゲットファイルの前記メタデータに記憶するように更に構成される、請求項15に記載のストレージデバイス。
前記プロセッサは、前記ターゲットデータブロックの前記論理アドレスに対応する前記第2の書き込み時点が、前記ターゲットデータブロックの前記論理アドレスに従って、前記ターゲットファイルの前記メタデータから取得された場合、前記ターゲットデータブロックの前記論理アドレスに対応する前記第2の書き込み時点が取得された後、且つ、前記物理アドレスと、前記ターゲットデータブロックを前記物理アドレスに対応する前記ストレージ空間に書き込む前記時点とが前記ターゲットファイルの前記メタデータに記憶される前に、前記ターゲットデータブロックの前記論理アドレス及び前記第2の書き込み時点が変更できないように、前記ターゲットデータブロックの前記論理アドレス及び前記第2の書き込み時点においてロック動作を実行するように更に構成される、請求項16に記載のストレージデバイス。
前記プロセッサは、予め設定された時点が到達した場合、又はファイルマイグレーション命令が受信された場合、前記ストレージデバイスにより前記ターゲットファイルの前記メタデータの前記スナップショットを取得するように構成される、請求項13ないし17のうちいずれか1項に記載のストレージデバイス。
【発明を実施するための形態】
【0025】
本発明の実施例は、ターゲットファイルが連続的なストレージ空間にマイグレーションされることができ、これによりディスクのストレージ空間においてデフラグの目的を達成するような、ファイルマイグレーション方法、ファイルマイグレーション装置、及びストレージデバイスを提供する。
【0026】
従来技術では、デフラグがファイルの単位でストレージ空間において実行される場合、一般的に、ユーザがファイルを変更することを妨げるため、ファイルは、マイグレーション処理中にロックされる必要がある。ファイルは、複数のデータブロックを含み、従って、従来技術では、ファイルは、データブロックが順次にマイグレーションされた後にのみロック解除される。このことは、ユーザによるファイルアクセスに影響を与える。本発明の実施例では、デフラグの目的が達成されることができるだけでなく、ファイルがファイルマイグレーション処理中にロックされない可能性がある。スナップショットが生成された後に変更されないデータブロックを更に取得するため、ファイルのメタデータのスナップショットが取得され、データブロックは、予め割り当てられた連続的なストレージ空間にマイグレーションされ、これにより、ファイルマイグレーション処理がユーザに対してトランスペアレントである。
【0027】
本発明の実施例では、ファイルのメタデータは、ファイル情報を記述するデータを示し、ファイルに含まれるデータブロックの論理アドレス及び物理アドレス、論理アドレスと物理アドレスとの間のマッピング関係、並びにデータブロックをストレージデバイスに書き込む時点のような情報を含む。
【0028】
以下に、本発明の実施例を詳細に説明し始める。
【0029】
図1は、本発明の実施例によるストレージシステムの構成図である。
図1に示すストレージシステムは、少なくとも1つのアプリケーションサーバ10と、少なくとも1つのストレージデバイス20とを含む。アプリケーションサーバ10は、従来技術のいずれか既知のコンピューティングデバイス、例えば、ホスト、サーバ、又はデスクトップコンピュータを含んでもよい。アプリケーション(application)11は、アプリケーションサーバ10で実行し、ユーザは、アプリケーション11を使用することにより、様々なファイル処理要求をストレージデバイス20に送出してもよい。
【0030】
ストレージデバイス20は、ネットワーク上でNFS/CIFSプロトコルを使用することにより、アプリケーションサーバ
10とのデータ送信を実行してもよく、ストレージデバイス20は、従来技術のファイルシステムを含むいずれか既知のストレージデバイス、例えば、ストレージアレイ又はストレージサーバでもよい。
【0031】
ストレージデバイス20は、コントローラ21と、複数のディスク31とを含む。コントローラ21は、従来技術のいずれか既知のコンピューティングデバイス、例えば、サーバ又はデスクトップコンピュータを含んでもよい。ファイルシステム210及び他のアプリケーションは、コントローラにインストールされる。コントローラ21は、ファイル生成動作、ファイルオープニング動作、ファイル読み取り動作、及びファイル書き込み動作のようなファイル処理要求のための様々な動作を実行するように構成される。ストレージデバイス20に含まれる複数のディスク31は、ファイルを記憶するストレージ空間を提供するように構成される。
【0032】
以下に、コントローラ21のハードウェアの構成を説明する。
図2を参照すると、
図2は、本発明の実施例のコントローラ21の構成図である。
図2に示すように、コントローラ21は、プロセッサ(processor)118と、キャッシュ(cache)120と、メモリ(memory)122と、通信バス(略してバス)126と、通信インタフェース(Communication Interface)128とを主に含む。プロセッサ118、キャッシュ120、メモリ122、及び通信インタフェース128は、通信バス126を使用することにより相互に通信する。
【0033】
通信インタフェース128は、アプリケーションサーバ10又はディスク31と通信するように構成される。
【0034】
メモリ122は、プログラム124を記憶するように構成され、メモリ122は、高速RAMメモリを含んでもよく、或いは、不揮発性メモリ(non-volatile memory)、例えば、少なくとも1つのディスクメモリを更に含んでもよい。メモリ122は、ランダムアクセスメモリ(Random-Access Memory、RAM)、磁気ディスク、ハードディスク、光ディスク、ソリッドステートディスク(Solid State Disk、SSD)、又は不揮発性メモリのような、プログラムコードを記憶することができるいずれかの過渡的でない(non-transitory)機械読み取り可能な記憶媒体でもよいことが認識され得る。
【0035】
プログラム124は、プログラムコードを含んでもよく、プログラムコードは、ファイルシステム210及び他のプログラムコードを含む。
【0036】
キャッシュ120(Cache)は、アプリケーションサーバ10から受信したデータ又はディスク31から読み取られたデータを一時的に記憶するように構成される。キャッシュ120は、RAM、ROM、フラッシュメモリ(Flash memory)、又はソリッドステートディスク(Solid State Disk、SSD)のような、データを記憶し得るいずれかの過渡的でない(non-transitory)機械読み取り可能な記憶媒体でもよく、これは、ここでは限定されない。
【0037】
更に、メモリ122及びキャッシュ120は、統合されてもよく、別々に配置されてもよく、これは、本発明のこの実施例では限定されない。
【0038】
プロセッサ118は、中央処理装置CPU又は特定用途向け集積回路ASIC(Application Specific Integrated Circuit)でもよく、或いは、本発明のこの実施例を実現する1つ以上の集積回路として構成されてもよい。本発明のこの実施例では、プロセッサ118は、アプリケーションサーバ10から様々なファイル処理要求を受信し、ファイルシステム210を使用することによりファイル処理要求についてファイルマイグレーション動作、ファイル読み取り動作、及びファイル書き込み動作のような様々な動作を実行するように構成されてもよい。
【0039】
ファイルシステム210は、ストレージデバイス20のデータを記憶及び整理する方法であり、データアクセス及び検索を容易にする。ファイルシステム210は、ディスクのような物理デバイスにより使用されるデータブロックの概念を置換するために、ファイルの抽象的な論理概念及びツリーディレクトリを使用する。ストレージデバイス20がデータを記憶するためにファイルシステム210を使用した後に、ユーザは、データが実際に記憶されるデータブロックのディスクアドレスを気にかける必要はなく、ファイルが属するディレクトリ及びファイル名を記憶しさえすればよい。同様に、新たなデータを書き込む前に、ユーザは、どのアドレスブロックが使用されていないかを気にかける必要はない。ディスクのストレージ空間管理(割り当て及び解放)機能は、ファイルシステム210により自動的に実現され、ユーザは、データが書き込まれたファイルを記憶しさえすればよい。ストレージデバイス20に記憶されたデータは、ファイルの形式でユーザに表示されるが、ディスク31に記憶されたファイルは、データブロックの単位で留まる点に留意すべきである。従って、1つのファイルは、複数のデータブロックを含んでもよい。
【0040】
この実施例のファイルシステム210は、リダイレクト・オン・ライト(フルネーム:Redirection On Write、略してROW)ファイルシステムである。新たなユーザデータが書き込まれる場合又は元のユーザデータが変更される場合、新たなデータは、元の古いデータを上書きせず、新たなデータは、ストレージデバイス20の新たに割り当てられた空間に書き込まれる。新たなデータが成功して書き込まれた後に、古いデータのストレージ空間が解放される。しかし、新たなデータが絶えず書き込まれると、新たなストレージ空間がストレージデバイス20のディスク空間で絶えず割り当てられ、元の連続的なユーザデータは、複数の変更によって不連続になり、これにより、データのアクセス性能に影響を与える。従って、ストレージデバイス20のディスク空間のデフラグを実行するために、この実施例では、デフラグモジュールがファイルシステム210に追加される。
【0041】
以下に、ファイルシステム210の論理構成を説明する。
図3を参照すると、
図3は、本発明の実施例のファイルシステム210の論理構成の概略図である。
図3に示すように、ファイルシステム210は、デフラグモジュール214と、空間管理モジュール212とを主に含む。デフラグモジュール214は、ターゲットファイルに含まれるデータブロックをマイグレーションするように構成され、空間管理モジュール212は、マイグレーションされたデータブロックを記憶するために、1つの連続的なストレージ空間を予め割り当てるように構成される。
【0042】
具体的に、デフラグモジュール214は、スナップショット取得モジュール2140と、アドレスマッピングモジュール2145と、マイグレーションモジュール2144とを含んでもよい。スナップショット取得モジュール2140は、ターゲットファイルのメタデータのスナップショットを取得するように構成される。アドレスマッピングモジュール2145は、ターゲットファイルのメタデータのスナップショット及びターゲットファイルのメタデータを記憶するように構成される。マイグレーションモジュール2144は、ターゲットファイルのメタデータを求めてアドレスマッピングモジュール2145を検索するように構成され、マイグレーションモジュール2144は、ターゲットファイルに含まれるデータを予め割り当てられた連続的なストレージ空間にマイグレーションするように更に構成される。
【0043】
更に、スナップショット取得モジュール2140は、整理及び制御モジュール2143と、スナップショットアダプタ2141とを含んでもよい。整理及び制御モジュール2143は、全体のデフラグ手順を制御し、他のモジュールの作業を協調させることによりデフラグ機能を実現するように構成される。スナップショットアダプタ2141は、ターゲットファイルのメタデータのスナップショットを生成するように構成されてもよい。しかし、或るシナリオでは、ファイルシステム210がスナップショットを生成するように構成されたモジュール(例えば、スナップショットモジュール211)を既に含む場合、スナップショットアダプタ2141は、単にスナップショットモジュール211とデータ交換を実行するように構成されてもよい。例えば、スナップショットアダプタ2141は、スナップショットモジュール211に対してスナップショットを生成してスナップショットについての情報を記憶することを要求するためのスナップショット要求を送出する。
【0044】
更に、任意選択で、デフラグモジュール214は、トリガー2142を更に含んでもよい。トリガー2142は、デフラグを開始するために使用され、ファイルシステム210のためのデフラグタイミング及びデフラグポリシーを提供する。具体的に、タイマがトリガー2142に設定されてもよく、デフラグタスクは、予め設定された時点が到達した場合に開始される。或いは、他のトリガー条件が設定され、デフラグタスクは、予め設定された条件が満たされた場合に開始される。更に、トリガー2142は、デフラグタスクを開始するために、ファイルマイグレーション命令、デフラグ命令又は同様の命令を受信するように更に構成される。更に、デフラグポリシーは、トリガー2142に構成される。例えば、デフラグはファイルの単位で実行されるか、デフラグはディレクトリの単位で実行されるか、或いは、デフラグは全てのファイルの単位で実行される。
【0045】
任意選択で、ファイルシステム210は、ディスク31に記憶されたデータを読み書きする機能を実現するように構成されたデータIOモジュール213を更に含んでもよい。例えば、マイグレーション対象のデータブロックを決定する場合、マイグレーションモジュール2144は、データブロックをデータIOモジュール213に送出し、データIOモジュール213は、データブロックを、空間管理モジュール212により予め割り当てられた連続的なストレージ空間に書き込む。データブロックが成功して書き込まれた後に、新たなメタデータは、アドレスマッピングモジュール2145に記憶されてもよい。ここで、新たなメタデータは、データブロックの論理アドレス、データブロックが書き込まれたストレージ空間の物理アドレス、論理アドレスと物理アドレスとの間のマッピング関係、及びデータブロックを書き込む時点のような情報を含む。マイグレーションの後に、データブロックの論理アドレスが変化しないままである一方で、データブロックの物理アドレスが変化する点に留意すべきである。しかし、物理アドレスは、アプリケーションサーバ10に不可視であり、従って、データブロックのマイグレーション処理及び全体のファイルのマイグレーション処理ですら、アプリケーションサーバ10に対してトランスペアレントである。
【0046】
ファイルシステム210は、本発明のこの実施例で一時的に説明していない他の機能モジュールを更に含んでもよいことが認識され得る。
【0047】
図3に示す実施例では、ファイルシステム210は、スナップショットアダプタ2141と、スナップショットモジュール211との双方を含む点に留意すべきである。スナップショットモジュール211は、スナップショット生成動作を実行するように構成される。スナップショットアダプタ2141は、スナップショットモジュール211に対してスナップショットを生成してスナップショットについての情報を記憶すること等を要求するために、スナップショットモジュール211とデータ交換を実行するように構成される。しかし、或るシナリオでは、スナップショットモジュール211の機能は、スナップショットアダプタ2141に統合されてもよく、スナップショットアダプタ2141は、スナップショット生成動作を実行する。要するに、
図3に示すファイルシステム210のモジュール分割は、本発明のこの実施例の単なる例示的な説明であり、前述の機能を実現することができるいずれかのモジュールは、本発明のこの実施例の保護範囲内に入るものとする。
【0048】
この実施例では、アドレスマッピングモジュール2145は、論理アドレスと物理アドレスとの間のマッピング関係を管理するために、アドレスマッピングツリー(例えば、B+ツリー)を使用してもよい。
図4は、ファイルシステムに対応するB+ツリーの概略図である。
【0049】
ここで、ファイルシステムに対応するB+ツリーは、ストレージデバイスにおいて全てのファイルのメタデータを管理するために使用されるB+ツリーを示す点に留意すべきである。B+ツリーは、ルートノードと、様々なレベルのインデックスと、複数のリーフノードとを含む。ルートノードは、B+ツリーの入り口であり、ルートノードを通じてB+ツリーに入ってもよい。各リーフノードは、キー値(フルネーム:Key-Value、略してKV)ペアを記憶する。この実施例では、Keyフィールド及びValueフィールドの具体的な定義が以下の表に示される。
【表1】
【0050】
Keyフィールドは、論理オフセット又は論理開始アドレスとも呼ばれる論理アドレスを記憶するために使用される。Valueフィールドは、2つの部分の内容を記憶する。一方の部分は書き込み時点であり、他方の部分は物理アドレスである。物理アドレスは、ディスクに記憶されており、論理アドレスが向けられたデータブロックの具体的な位置である。書き込み時点は、論理アドレスが向けられたデータブロックをディスクに書き込む時点を示す。書き込み時点の表現形式は、64ビットのシリアル番号でもよく、順序を表す数字又は文字でもよく、他の方式でもよい。書き込み時点の形式は、本発明のこの実施例では限定されない。更に、書き込み時点は、論理アドレスが向けられたデータブロックがディスクに書き込まれる前に割り当てられた時点でもよいが、必ずしもデータブロックをディスクに書き込む実際の時点であるとは限らないことが認識され得る。
【0051】
図4から、Valueフィールドが物理アドレスを記憶し、各物理アドレスがファイルのメタデータ又はディレクトリのメタデータに向けられてもよいことが認識され得る。従って、ファイルのサブツリー(ファイルに対応するB+ツリー)は、ファイルシステムに対応するB+ツリーを使用することにより取得されてもよい。同様に、ファイルに対応するB+ツリーはまた、様々なレベルのインデックスと、複数のリーフノードとを含む。各リーフノードは、KVペアを記憶し、Keyフィールド及びValueフィールドの定義は、前述の表に示すものと同じである。1つのファイルは、複数のデータブロックにより形成され、従って、ファイルのサブツリーにおいてValueフィールドに記憶された物理アドレスは、1つ以上のデータブロックのメタデータに向けられてもよい。
【0052】
以下に、本発明の実施例のファイルマイグレーション方法の手順を説明する。本発明のこの実施例のファイルマイグレーション方法は、
図2に示すストレージデバイスに適用されてもよい。
図5は、本発明の実施例のファイルマイグレーション方法のフローチャートである。
図5に示すように、この方法は以下を含む。
【0053】
ステップS301A:プロセッサ118は、ターゲットファイルのメタデータのスナップショットを取得する。ターゲットファイルは、複数のデータブロックを含み、スナップショットは、複数のデータブロックの論理アドレス及び複数のデータブロックの第1の書き込み時点を含み、第1の書き込み時点は、スナップショットに記録された、データブロックをストレージデバイスに書き込む時点を示す。
【0054】
図4に示すB+ツリーを参照すると、ターゲットファイルのメタデータは、ファイルに対応するB+ツリーに記憶され、B+ツリーの各リーフノードは、Key-Value(KV)ペアを記憶する。Keyフィールドは、各データブロックの論理アドレスを記憶するための検索値として使用され、Valueフィールドは、各データブロックの物理アドレスと、各データブロックをストレージデバイス20に書き込む時点とを記憶するための値として使用される。
【0055】
任意選択で、ステップS301Aは、予め設定された時点が到達した場合、又はファイルマイグレーション命令が受信された場合に実行されてもよい。詳細については、
図3のトリガー2142及び関係する説明を参照し、ここでは詳細について再び説明しない。
【0056】
ステップS301Aにおいて、プロセッサ118は、ターゲットファイルのメタデータのスナップショットを生成する必要がある。スナップショットは、具体的な書き込み時点(コピーを開始する書き込み時点)における対応するデータのイメージを示す。スナップショットが生成された後に、ターゲットファイルのメタデータについてフリーズフレーム(freeze-frame)イメージが生成されてもよい。このイメージは変更されない。
図4を参照すると、ターゲットファイルのメタデータは、
図4に示すファイルに対応するB+ツリーに従って整理される。
図6に示すように、ターゲットファイルのメタデータのスナップショットは、ファイルに対応するフリーズフレームのB+ツリーの他のB+ツリーである。スナップショットが冒頭に生成された場合、データブロックは一時的に変更されない。従って、ターゲットファイルのメタデータに対応するB+ツリー(略して、ファイルに対応するB+ツリー)のルートノードは、スナップショットに対応するB+ツリーのルートノードと異なるが、リーフノードは共有されてもよい。
【0057】
しかし、スナップショットが生成された後に、プロセッサ118は、データブロックの変更要求を受信してもよい。変更要求は、データブロックを変更するために使用される。プロセッサ118の変更方式は、1つの新たなストレージ空間を変更データブロックに割り当て、変更データブロックを新たに割り当てられたストレージ空間に書き込み、変更データブロックが成功して書き込まれた後に、変更前のデータブロックが位置するストレージ空間を解放することである。
【0058】
次に、対応して、プロセッサ118は、変更要求に従ってKVを生成し、新たに生成されたKVを記憶するために、ファイルに対応するB+ツリーにおいて新たなリーフノードを追加してもよい。この場合、新たに生成されたKVのKeyフィールドは、変更データブロックの論理アドレスを依然として記憶する。Valueフィールドの物理アドレスは、変更データブロックが記憶された新たに割り当てられたストレージ空間のアドレスであり、Valueフィールドの書き込み時点は、変更データブロックを新たに割り当てられたストレージ空間に書き込む時点を示す。論理アドレスは変化しないため、書き込み時点は、論理アドレスが向けられたデータブロックの最新の書き込み時点である。新たなリーフノードは、ファイルに対応するB+ツリーのリーフノードであり、スナップショットに対応するB+ツリーと共有されないことが認識され得る。従って、ファイルに対応するB+ツリー及びスナップショットに対応するB+ツリーは、いくつかのリーフノードを共有するが、ファイルに対応するB+ツリーのValueフィールドに記憶された書き込み時点により示される意味は、スナップショットに対応するB+ツリーに記憶された書き込み時点により示される意味とは異なる。2つの書き込み時点を区別するために、この実施例では、スナップショットに対応するB+ツリーに記憶された書き込み時点は、第1の書き込み時点と呼ばれ、ファイルに対応するB+ツリーに記憶された書き込み時点は、第2の書き込み時点と呼ばれる。第1の書き込み時点は、スナップショットに記録された、データブロックをストレージデバイスに書き込む時点を示し、第2の書き込み時点は、データブロックの最新の書き込み時点を示す。
【0059】
ステップS301B:プロセッサ118は、複数のデータブロックの論理アドレス及び複数のデータブロックの第1の書き込み時点から、ターゲットデータブロックの論理アドレス及びターゲットデータブロックの第1の書き込み時点を識別する。
【0060】
この実施例では、説明を容易にするために、ターゲットファイルの1つのデータブロックが、マイグレーション手順を説明するための例として使用され、このデータブロックは、ターゲットデータブロックと呼ばれる。ターゲットデータブロックを除くターゲットファイルの他のデータブロックも、同じ方法を使用することによりマイグレーションされることが認識され得る。
【0061】
スナップショットに対応するB+ツリーは、ターゲットファイルに含まれる各データブロックのKVを記憶するため、スナップショットに対応するB+ツリーが取得された後に、ターゲットファイルに含まれる各データブロックのKVが取得される。プロセッサ118は、ターゲットデータブロックに対応するKVを取得するために、各データブロックに対応するKVにおいてスキャニングを実行してもよい。Keyフィールドは、ターゲットデータブロックの論理アドレスを含み、Valueフィールドは、ターゲットデータブロックの第1の書き込み時点を含む。
【0062】
ステップS302:プロセッサ118は、ターゲットデータブロックの論理アドレスに従って、ターゲットファイルのメタデータからターゲットデータブロックの論理アドレスに対応する第2の書き込み時点を取得する。ターゲットファイルのメタデータは、ターゲットデータブロックの論理アドレス及び第2の書き込み時点を含み、第2の書き込み時点は、ターゲットデータブロックをストレージデバイスに書き込む最新の時点を示す。
【0063】
ステップS302において、ターゲットファイルのメタデータは、ファイルに対応するB+ツリーを示す。ステップS301Aにおいて、ターゲットデータブロックの論理アドレスが取得され、従って、論理アドレスに対応するKVは、論理アドレスに従ってファイルに対応するB+ツリーを検索することにより取得されてもよい。Keyフィールドは、論理アドレスを記憶するために使用され、Valueフィールドは、第2の書き込み時点を記憶するために使用される(ステップS301Aの説明を参照)。従って、第2の書き込み時点が更に取得されてもよい。
【0064】
ステップS303:プロセッサ118は、第1の書き込み時点が第2の書き込み時点と同じであると決定された場合、ターゲットデータブロックを予め割り当てられた連続的なストレージ空間にマイグレーションする。
【0065】
具体的に、プロセッサ118が第1の書き込み時点及び第2の書き込み時点を取得した後に、これら2つが同じであるか否かが決定されてもよい。これら2つが同じである場合、これは、スナップショットが生成された後にターゲットデータブロックが変更されないことを示し、従って、ターゲットデータブロックが予め割り当てられた連続的なストレージ空間にマイグレーションされてもよい。これら2つが異なる場合、これは、スナップショットが生成された後にターゲットデータブロックが変更され、変更データブロックが新たなストレージ空間に既に書き込まれたことを示し、このようなターゲットデータブロックは、マイグレーションされる必要はない。
【0066】
従って、予め割り当てられた連続的なストレージ空間は、ステップS301Aが実行される前に割り当てられてもよく、ステップS301Aの後且つステップ303の前に割り当てられてもよい。具体的に、連続的な空間のサイズは、ターゲットファイルのマイグレーションされたデータブロックを記憶するのに十分な空間が存在し、これにより、デフラグの目的を達成するように、ターゲットファイルのサイズ未満でないことが必要である。ストレージ空間の割り当て方式は、十分なストレージ空間を一度に割り当てることでもよく、ストレージ空間を複数回割り当てることでもよい。割り当てられたストレージ空間の合計サイズは、ターゲットファイルのサイズ未満ではない。
【0067】
本発明のこの実施例では、ストレージデバイスは、ターゲットファイルのメタデータのスナップショットを取得し、スナップショットは、複数のデータブロックの論理アドレス及び第1の書き込み時点を含み、第1の書き込み時点は、スナップショットに記録された、データブロックをストレージデバイスに書き込む時点を示し、複数のデータブロックの論理アドレス及び複数のデータブロックの第1の書き込み時点から、ターゲットデータブロックの論理アドレス及びターゲットデータブロックの第1の書き込み時点を識別し、論理アドレスに従って、ターゲットファイルのメタデータから論理アドレスに対応する第2の書き込み時点を取得し、第2の書き込み時点は、ターゲットデータブロックをストレージデバイスに書き込む最新の時点を示し、第1の書き込み時点が第2の書き込み時点と同じである場合、これは、スナップショットが生成された後にターゲットデータブロックが変更されないことを示し、ターゲットデータブロックを予め割り当てられた連続的なストレージ空間にマイグレーションする。これにより、ディスクデフラグの目的を達成する。更に、本発明のこの実施例では、ターゲットファイルは、マイグレーション処理中にロックされる必要はない。スナップショットが生成された後に変更されないデータブロックを取得するため、ターゲットファイルのメタデータのスナップショットが取得され、変更されないデータブロックは、予め割り当てられた連続的なストレージ空間にマイグレーションされる。或る程度、本発明のこの実施例のファイルマイグレーション処理中に、ユーザによるファイルアクセスは影響を受けない可能性があり、これにより、ファイルアクセス効率を改善する。
【0068】
前述のステップS303において、予め割り当てられたストレージ空間は、大きい連続的なストレージ空間であり、予め割り当てられたストレージ空間のサイズは、ターゲットファイルのサイズ未満ではない。従って、ターゲットデータブロックが予め割り当てられたストレージ空間に書き込まれる前に、物理アドレスは、ストレージ空間においてターゲットデータブロックに割り当てられる必要があり、物理アドレスが割り当てられた後に、ターゲットデータブロックは、物理アドレスに対応するストレージ空間に書き込まれる。
【0069】
次に、対応して、
図5に示すファイルマイグレーション方法は以下を更に含んでもよい。
【0070】
ステップS304:プロセッサ118は、ターゲットデータブロックの論理アドレスと、マイグレーション後の物理アドレスと、ターゲットデータブロックを物理アドレスに対応するストレージ空間に書き込む時点とを、ファイルに対応するB+ツリーに記憶する。
【0071】
ここで、ターゲットデータブロックを物理アドレスに対応するストレージ空間に書き込む時点は、ターゲットデータブロックをストレージデバイスに書き込む最新の時点、すなわち、前述の第2の書き込み時点を示すことが認識され得る。
【0072】
図6を参照すると、ステップS304は、具体的に、新たなリーフノードを生成し、新たなリーフノードをファイルに対応するB+ツリーに追加し、新たなリーフノードとファイルに対応するB+ツリーのルートノードとの間の様々なレベルのインデックスを変更することでもよい。新たなリーフノードは、新たなKVを記憶するために使用され、Keyフィールドは、論理アドレスを記憶するために使用され、Valueフィールドは、マイグレーション後の物理アドレスと、ターゲットデータブロックを物理アドレスに対応するストレージ空間に書き込む時点とを記憶するために使用される。ここで、時点は、厳密な意味での時点でなくてもよく、割り当てられたシリアル番号又は他の形式でもよい点に留意すべきである。
【0073】
更に、
図5に示すファイルマイグレーション方法は以下を更に含んでもよい。
【0074】
論理アドレスに従ってターゲットファイルのメタデータから論理アドレスに対応する第2の書き込み時点を取得した場合、プロセッサ118は、論理アドレスに対応する第2の書き込み時点が取得された後、且つ、物理アドレスがストレージ空間においてターゲットデータブロックに割り当てられる前に、論理アドレス及び第2の書き込み時点が変更できないように、論理アドレス及び第2の書き込み時点においてロック動作を実行する。
【0075】
この実施例では、論理アドレス及び第2の書き込み時点においてロック動作を実行することは、具体的に、ファイルに対応するB+ツリーで、論理アドレスに対応するKVが位置するリーフノードにおいてロック動作を実行することでもよい。ロック動作を実行する目的は、ターゲットデータブロックが変更されることを妨げることである。具体的なロック動作は、様々な既存のロックアルゴリズムを使用することにより実現されてもよく、ここでは詳細について説明しない。
【0076】
対応して、この実施例は、プロセッサ118により、論理アドレス及び第2の書き込み時点においてロック解除動作を実行することを更に含んでもよい。ロック解除動作が実行された後に、ターゲットデータブロックは変更されてもよい。
【0077】
ロック解除動作がステップS304の後に実行されるという条件で、ロック解除のタイミングは、この実施例では限定されない点に留意すべきである。ロック解除動作は、プロセッサ118がターゲットデータブロックを物理アドレスに対応するストレージ空間に書き込む前に実行されてもよく、或いは、プロセッサ118がターゲットデータブロックを物理アドレスに対応するストレージ空間に書き込んだ後に実行されてもよい。
【0078】
論理アドレス及び第2の書き込み時点におけるロック動作の実行と、論理アドレス及び第2の書き込み時点におけるロック解除動作の実行との間の期間中に、ターゲットデータブロックのメタデータとしての論理アドレス及び第2の書き込み時点は変更できないことが認識され得る。これは、ターゲットデータブロックが変更できないことを意味する。例えば、この期間中に、プロセッサ118がターゲットデータブロックを変更するために使用される変更要求を受信した場合、変更要求の実行は、ロック解除動作が論理アドレス及び第2の書き込み時点において実行される前に一時停止される。変更要求は、本発明のこの実施例において単なる例であり、他のアクセス要求、例えば、読み取り要求の実行も一時停止される点に留意すべきである。
【0079】
しかし、ターゲットファイルについて、論理アドレス及び第2の書き込み時点におけるロック動作の実行と、論理アドレス及び第2の書き込み時点におけるロック解除動作の実行との間の期間中に、ターゲットデータブロックが変更できないが、ターゲットデータブロックを除く他のデータブロックの変更要求又は他のアクセス要求は、依然として受信されてもよい。本発明のこの実施例では、ロックされる対象は、ターゲットデータブロックのメタデータであり、他のデータブロックは影響を受けない。このように、本発明のこの実施例のファイルマイグレーション方法を使用することにより、マイグレーションされるファイルのユーザアクセスはできる限り影響を受けず、これにより、ユーザ体験を改善する。
【0080】
ターゲットファイルの1つのデータブロックをマイグレーションすることが、
図5に示すファイルマイグレーション方法を説明する例として使用される。ターゲットファイルの全てのデータブロックのマイグレーションが同じように完了した後に、ターゲットファイルの単位でのデフラグ作業も完了する。
【0081】
ディスク空間のデフラグ作業の単位は、ファイルでもよく、ディレクトリでもよい。ディレクトリの単位でのデフラグ手順は、
図5に示すファイルの単位でのデフラグ手順と同様であり、ここでは詳細について再び説明しない。
【0082】
更に、ストレージデバイス20に記憶された全てのファイルも、ディスク空間のデフラグ作業の単位として使用されてもよい。このシナリオでは、
図5に示す方法の手順は、全てのファイルのマイグレーションが完了するまで循環的に実行されてもよい。或いは、システムリソースを低減するために、ステップS301Aにおいて、全てのファイルのメタデータ(すなわち、
図4に示すファイルシステムに対応するB+ツリー)のスナップショットが取得されてもよく、全てのデータブロックのマイグレーションが完了するまで、スナップショットに記録された各ファイルの各データブロックのKVが順次に取得される。この具体的な手順は、
図5に示す実施例のものと同様であり、ここでは詳細について再び説明しない。
【0083】
図3を参照して、以下に、本発明の実施例によるファイルマイグレーション装置を説明する。この装置は、ストレージデバイスに位置し、ストレージデバイスは、ターゲットファイルを記憶し、ターゲットファイルは、複数のデータブロックを含む。ファイルマイグレーション装置は、
図3に示すファイルシステム210と同じ構成を有する。具体的に、ファイルマイグレーション装置は、デフラグモジュール214を含み、デフラグモジュール214は、スナップショット取得モジュール2140と、アドレスマッピングモジュール2145と、マイグレーションモジュール2144とを含む。
【0084】
スナップショット取得モジュール2140は、ターゲットファイルのメタデータのスナップショットを取得するように構成され、スナップショットは、複数のデータブロックの論理アドレス及び複数のデータブロックの第1の書き込み時点を含み、第1の書き込み時点は、スナップショットに記録された、データブロックをストレージデバイスに書き込む時点を示す。
【0085】
アドレスマッピングモジュール2145は、ターゲットファイルのメタデータのスナップショット及びターゲットファイルのメタデータを記憶するように構成される。
【0086】
スナップショット取得モジュール2140は、複数のデータブロックの論理アドレス及び複数のデータブロックの第1の書き込み時点から、ターゲットデータブロックの論理アドレス及びターゲットデータブロックの第1の書き込み時点を識別するように更に構成される。
【0087】
マイグレーションモジュール2144は、ターゲットデータブロックの論理アドレスに従って、アドレスマッピングモジュールに記憶されたターゲットファイルのメタデータからターゲットデータブロックの論理アドレスに対応する第2の書き込み時点を取得するように構成され、ターゲットファイルのメタデータは、ターゲットデータブロックの論理アドレス及び第2の書き込み時点を含み、第2の書き込み時点は、ターゲットデータブロックをストレージデバイスに書き込む最新の時点を示す。
【0088】
マイグレーションモジュール2144は、第1の書き込み時点が第2の書き込み時点と同じであると決定された場合、ターゲットデータブロックを予め割り当てられた連続的なストレージ空間にマイグレーションするように更に構成される。
【0089】
任意選択で、ファイルマイグレーション装置は、連続的なストレージ空間を予め割り当てるように構成された空間管理モジュール212を更に含み、ストレージ空間のサイズは、ターゲットファイルのサイズ未満ではない。
【0090】
任意選択で、マイグレーションモジュール2144は、ストレージ空間において物理アドレスをターゲットデータブロックに割り当てるように更に構成される。マイグレーションモジュール2144は、ストレージ空間において物理アドレスがターゲットデータブロックに割り当てられた後に、物理アドレスと、ターゲットデータブロックを物理アドレスに対応するストレージ空間に書き込む時点とを、ターゲットファイルのメタデータに記憶するように更に構成される。
【0091】
任意選択で、マイグレーションモジュール2144は、ターゲットデータブロックの論理アドレスに対応する第2の書き込み時点が取得された後、且つ、物理アドレスと、ターゲットデータブロックを物理アドレスに対応するストレージ空間に書き込む時点とがターゲットファイルのメタデータに記憶される前に、ターゲットデータブロックの論理アドレス及び第2の書き込み時点が変更できないように、ターゲットデータブロックの論理アドレス及び第2の書き込み時点においてロック動作を実行するように更に構成される。
【0092】
任意選択で、デフラグモジュール214は、トリガー2142を更に含む。
【0093】
トリガー2142は、予め設定された時点を設定するように或いはファイルマイグレーション命令を受信するように構成される。
【0094】
対応して、スナップショット取得モジュール2140は、予め設定された時点が到達した場合、又はファイルマイグレーション命令が受信された場合、ターゲットファイルのメタデータのスナップショットを取得するように具体的に構成される。
【0095】
図3を参照して、以下に、どのようにモジュールがデフラグ作業を実現するために相互に協調するかを説明するための具体的な例を使用する。
【0096】
図7A及び
図7Bを参照すると、
図7A及び
図7Bは、ファイルの単位でのデフラグの概略フローチャートである。以下のステップに記載するファイルは、
図5に示すファイルマイグレーション手順におけるターゲットファイルでもよく、以下のステップに記載するモジュールの定義及び機能は、
図3に示すモジュールのものと同じである。
図7A及び
図7Bに示すように、この方法は以下を含む。
【0097】
ステップS401:デフラグタスクが定期的にトリガーされる。
【0098】
例えば、ユーザは、タイマを使用することによりデフラグタスクを定期的にトリガーしてもよく、或いは、ユーザは、デフラグタスクを手動で開始する。
【0099】
ステップS402:トリガー2142は、整理及び制御モジュール2143に対してデフラグタスクを開始するように命令するために、命令を整理及び制御モジュール2143に送出する。
【0100】
ステップS403:整理及び制御モジュール2143は、ファイルのメタデータを求めてアドレスマッピングモジュール2145に記憶されたアドレスマッピングツリーを検索することを要求するために、クエリ命令をアドレスマッピングモジュール2145に送出する。
【0101】
具体的に、アドレスマッピングツリーのファイルのメタデータは、
図4又は
図6に示すファイルに対応するB+ツリーでもよい。
【0102】
ステップS404:アドレスマッピングモジュール2145は、ファイルのメタデータについての情報を整理及び制御モジュール2143に返信する。この情報は、ファイルシステムにおけるファイルのメタデータの位置情報でもよい。
【0103】
ステップS405:整理及び制御モジュール2143は、ファイルのメタデータのスナップショットを生成することを要求するために、スナップショット生成命令をスナップショットアダプタ2141に送出する。スナップショット生成命令は、ファイルのメタデータについての情報を含んでもよい。
【0104】
ステップS406:スナップショットアダプタ2141は、スナップショット生成命令をスナップショットモジュール211に転送する。
【0105】
ステップS407:スナップショットモジュール211は、ファイルのメタデータのスナップショットを生成してスナップショットをアドレスマッピングモジュール2145に記憶するために、アドレスマッピングモジュール2145にアクセスする。
【0106】
具体的に、スナップショットモジュール211は、ファイルのメタデータについての情報に従って、アドレスマッピングモジュール2145においてファイルのメタデータを見つけて、スナップショットを生成してもよい。スナップショットを生成する方式については、
図5に示すファイルマイグレーション手順のステップS301Aの説明を参照し、ここでは詳細について再び説明しない。
【0107】
ステップS408:アドレスマッピングモジュール2145は、ファイルのメタデータのスナップショットが成功して生成及び記憶されたことを示すために、スナップショット生成命令の応答要求をスナップショットモジュール211に返信する。
【0108】
更に、応答要求は、スナップショットについての情報を含み、スナップショットについての情報は、アドレスマッピングモジュール2145に記憶されたスナップショットのアドレスのような情報を含む。
【0109】
ステップS409:スナップショットモジュール211は、ファイルのメタデータのスナップショットが成功して生成及び記憶されたことを示すために、スナップショット生成命令の応答要求をスナップショットアダプタ2141に返信する。
【0110】
更に、応答要求は、ステップS408におけるスナップショットについての情報を含む。
【0111】
ステップS410:スナップショットアダプタ2141は、スナップショットについての情報を記憶する。
【0112】
ステップS411:スナップショットアダプタ2141は、スナップショットが成功して生成及び記憶されたことを示すために、スナップショット生成命令の応答要求を整理及び制御モジュール2143に返信する。
【0113】
ステップS412:整理及び制御モジュール2143は、ファイルマイグレーション命令をマイグレーションモジュール2144に送出する。
【0114】
ステップS413:マイグレーションモジュール2144は、連続的なストレージ空間を申請するために、空間申請命令を空間管理モジュール212に送出する。連続的なストレージ空間のサイズは、ファイルのサイズ未満ではない。
【0115】
具体的に、このステップの実現については、
図5に示すファイルマイグレーション手順のステップS303の説明を参照し、ここでは詳細について再び説明しない。
【0116】
ステップS414:空間管理モジュール212は、ストレージ空間が成功して割り当てられたことを示すために、空間割り当て命令の応答要求をマイグレーションモジュール2144に返信する。
【0117】
ステップS415:マイグレーションモジュール2144は、スナップショットをスキャニングすることを要求するために、スキャニング要求をスナップショットアダプタ2141に送出する。
【0118】
ステップS416:スナップショットアダプタ2141は、第1のKVを取得するために、クエリ命令をアドレスマッピングモジュール2145に送出する。
【0119】
具体的に、クエリ命令は、スナップショットについての情報を含む。スナップショットについての情報は、アドレスマッピングモジュール2145に記憶されたスナップショットのアドレスを含み、従って、アドレスマッピングモジュール2145は、アドレスに従ってファイルのメタデータのスナップショットをスナップショットアダプタ2141に送出してもよい。
図5に示す実施例のステップS301Aにおいて、ファイルのメタデータのスナップショットは、スナップショットに対応するB+ツリーを示し、スナップショットアダプタ2141は、第1のデータブロックのKV(略して第1のKV)を取得するために、B+ツリーのルートノードから検索を開始してもよいことが理解され得る。データブロックのKVについては、
図5に示すファイルマイグレーション手順のステップS301Aにおけるターゲットデータブロックに対応するKVの説明を参照し、ここでは詳細について再び説明しない。
【0120】
ステップS417:スナップショットアダプタ2141は、第1のKVをマイグレーションモジュール2144に送出する。
【0121】
ステップS418:マイグレーションモジュール2144は、ファイルのメタデータのKVにおいてロック動作を実行する。
【0122】
ステップS419:マイグレーションモジュール2144は、ファイルのメタデータのKVを取得するために、クエリ命令をアドレスマッピングモジュール2145に送出する。
【0123】
第1のKVのKeyフィールドは、論理アドレスを記憶し、従って、マイグレーションモジュール2144は、論理アドレスに対応するファイルのメタデータのKVを取得するために、論理アドレスに従ってアドレスマッピングモジュール2145に問い合わせてもよい。
【0124】
詳細については、
図5に示すファイルマイグレーション手順のステップS302の説明を参照し、ここでは詳細について再び説明しない。
【0125】
ステップS420:アドレスマッピングモジュール2145は、取得された論理アドレスに対応するファイルのメタデータのKVをマイグレーションモジュール2144に返信する。
【0126】
ステップS421:マイグレーションモジュール2144は、第1の書き込み時点が第2の書き込み時点と同じであるか否かを決定する。
【0127】
詳細については、
図5に示すファイルマイグレーション手順のステップS303の説明を参照し、ここでは詳細について再び説明しない。
【0128】
ステップS422:第1の書き込み時点及び第2の書き込み時点が同じである場合、マイグレーションモジュール2144は、ファイルのメタデータを更新するために、更新命令をアドレスマッピングモジュール2145に送出する。
【0129】
詳細については、
図5に示すファイルマイグレーション手順のステップS304の説明を参照し、ここでは詳細について再び説明しない。
【0130】
ステップS423:アドレスマッピングモジュール2145は、ファイルのメタデータが成功して更新されたことを示すために、更新命令の応答要求をマイグレーションモジュール2144に返信する。
【0131】
ステップS424:マイグレーションモジュール2144は、ファイルのメタデータのKVにおいてロック解除動作を実行する。
【0132】
詳細については、
図5に示すファイルマイグレーション手順のステップ
S304の説明を参照し、ここでは詳細について再び説明しない。
【0133】
更に、第1の書き込み時点及び第2の書き込み時点が異なる場合、ステップS425:KVにおいて動作を実行しないことを実行し、ステップS426:KVをロック解除することを実行する。
【0134】
ステップS416からステップS426は、全てのKVが処理されるまで循環的に実行される点に留意すべきである。
【0135】
全てのKVが処理された後に、ステップS427:スナップショットアダプタ2141がスキャニング完了命令をマイグレーションモジュール2144に送出することを実行する。
【0136】
ステップS428:マイグレーションモジュール2144は、ファイルマイグレーションが完了したことを整理及び制御モジュール2143にフィードバックする。
【0137】
ステップS429:整理及び制御モジュール2143は、スナップショット削除命令をスナップショットアダプタ2141に送出する。
【0138】
ステップS430:スナップショットアダプタ2141は、ファイルのメタデータのスナップショットを削除するために、スナップショット削除命令をスナップショットモジュール211に転送する。
【0139】
本発明のこの実施例では、ストレージデバイスは、ターゲットファイルのメタデータのスナップショットを取得し、スナップショットは、複数のデータブロックの論理アドレス及び第1の書き込み時点を含み、第1の書き込み時点は、スナップショットに記録された、データブロックをストレージデバイスに書き込む時点を示し、複数のデータブロックの論理アドレス及び複数のデータブロックの第1の書き込み時点から、ターゲットデータブロックの論理アドレス及びターゲットデータブロックの第1の書き込み時点を識別し、論理アドレスに従って、ターゲットファイルのメタデータから論理アドレスに対応する第2の書き込み時点を取得し、第2の書き込み時点は、ターゲットデータブロックをストレージデバイスに書き込む最新の時点を示し、第1の書き込み時点が第2の書き込み時点と同じである場合、これは、スナップショットが生成された後にターゲットデータブロックが変更されないことを示し、ターゲットデータブロックを予め割り当てられた連続的なストレージ空間にマイグレーションする。これにより、ディスクデフラグの目的を達成する。更に、本発明のこの実施例では、ターゲットファイルは、マイグレーション処理中にロックされる必要はない。スナップショットが生成された後に変更されないデータブロックを取得するため、ターゲットファイルのメタデータのスナップショットが取得され、変更されないデータブロックは、予め割り当てられた連続的なストレージ空間にマイグレーションされる。或る程度、本発明のこの実施例のファイルマイグレーション処理中に、ユーザによるファイルアクセスは影響を受けない可能性があり、これにより、ファイルアクセス効率を改善する。
【0140】
当業者は、本発明の各態様又は各態様の可能な実現方式がシステム、方法又はコンピュータプログラムプロダクトとして具体的に実現されてもよいことを認識し得る。従って、本発明の各態様又は各態様の可能な実現方式は、ハードウェアのみの実施例、ソフトウェアのみの実施例(ファームウェア、常駐ソフトウェア等を含む)、又はソフトウェアとハードウェアとの組み合わせの実施例の形式を使用してもよい。これらは、ここでは一律に“回路”、“モジュール”又は“システム”と呼ばれる。更に、本発明の各態様又は各態様の可能な実現方式は、コンピュータプログラムプロダクトの形式になってもよい。コンピュータプログラムプロダクトは、コンピュータ読み取り可能な媒体に記憶されたコンピュータ読み取り可能なプログラムコードを示す。
【0141】
コンピュータ読み取り可能な媒体は、コンピュータ読み取り可能な信号媒体又はコンピュータ読み取り可能な記憶媒体でもよい。コンピュータ読み取り可能な記憶媒体は、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラム可能読み取り専用メモリ(EPROM又はフラッシュメモリ)、光ファイバ及びコンパクトディスク読み取り専用メモリ(CD-ROM)のような、電子、磁気、光学、電磁気、赤外線若しくは半導体システム、デバイス若しくは装置、又はこれらのいずれか適切な組み合わせを含み、これらに限定されない。
【0142】
コンピュータのプロセッサは、コンピュータ読み取り可能な媒体に記憶されたコンピュータ読み取り可能なプログラムコードを読み取り、これにより、プロセッサは、フローチャートの各ステップ又はステップの組み合わせで指定された機能及び動作を実行することができ、ブロック図の各ブロック又はブロックの組み合わせで指定された機能及び動作を実現するように装置が生成される。
【0143】
全てのコンピュータ読み取り可能なプログラムコードは、ユーザコンピュータで実行されてもよく、いくつかがスタンドアローンのソフトウェアパッケージとしてユーザコンピュータで実行されてもよく、いくつかがリモートコンピュータで実行されつつ、いくつかがユーザのコンピュータで実行されてもよい。或いは、全てのコードがリモートコンピュータ又はサーバで実行されてもよい。また、或る別の実現対策では、フローチャートの各ステップ又はブロック図の各ブロックで指定された機能は、図示の順序で行われなくてもよい点に留意すべきである。例えば、関与する機能に依存する図面の2つの連続するステップ又は2つのブロックは、実際に実質的に同時に実行されてもよく、これらのブロックは場合によって逆の順序で実行されてもよい。
【0144】
当業者は、この明細書に開示された実施例に記載の例と組み合わせて、ユニット及びアルゴリズムのステップが電子ハードウェア又はコンピュータソフトウェアと電子ハードウェアとの組み合わせにより実現されてもよいことを認識し得る。機能がハードウェアにより実行されるかソフトウェアにより実行されるかは、技術的対策の特定の用途及び設計上の制約条件に依存する。当業者は、特定の用途毎に記載の機能を実現するために異なる方法を使用してもよいが、この実現は、本発明の範囲を超えるものとして考えられるべきではない。
【0145】
前述の説明は、本発明の単に具体的な実現方式に過ぎず、本発明の保護範囲を限定することを意図するものではない。本発明に開示された技術的範囲内で当業者により容易に把握される如何なる変更又は置換も、本発明の保護範囲内に入るものとする。従って、本発明の保護範囲は、特許請求の範囲の保護範囲に従うものとする。