(57)【要約】  本発明の実施例は、ファイルマイグレーション方法及び装置、並びにストレージデバイスを提供する。この方法は、ストレージデバイスにより、ターゲットファイルのメタデータのスナップショットを取得するステップであり、スナップショットは、複数のデータブロックの論理アドレス及び複数のデータブロックの第１の書き込み時点を含むステップと、複数のデータブロックの論理アドレス及び複数のデータブロックの第１の書き込み時点から、ターゲットデータブロックの論理アドレス及びターゲットデータブロックの第１の書き込み時点を識別するステップと、ターゲットデータブロックの論理アドレスに従って、ターゲットファイルのメタデータからターゲットデータブロックの論理アドレスに対応する第２の書き込み時点を取得するステップであり、ターゲットファイルのメタデータは、ターゲットデータブロックの論理アドレス及び第２の書き込み時点を含むステップと、第１の書き込み時点が第２の書き込み時点と同じであると決定された場合、ターゲットデータブロックを予め割り当てられた連続的なストレージ空間にマイグレーションするステップとを含む。ターゲットファイルは、予め割り当てられた連続的なストレージ空間にマイグレーションされてもよく、これにより、ディスクデフラグの目的を達成する。
2016535910.tif 000002
【特許請求の範囲】
【請求項１】
ファイルマイグレーション方法であり、前記方法は、ストレージデバイスに適用され、前記ストレージデバイスは、ターゲットファイルを記憶し、前記ターゲットファイルは、複数のデータブロックを有する方法であって、
前記ストレージデバイスにより、前記ターゲットファイルのメタデータのスナップショットを取得するステップであり、前記スナップショットは、前記複数のデータブロックの論理アドレス及び前記複数のデータブロックの第１の書き込み時点を有し、前記第１の書き込み時点は、前記スナップショットに記録された、前記データブロックを前記ストレージデバイスに書き込む時点を示すステップと、
前記複数のデータブロックの前記論理アドレス及び前記複数のデータブロックの前記第１の書き込み時点から、ターゲットデータブロックの論理アドレス及び前記ターゲットデータブロックの第１の書き込み時点を識別するステップと、
前記ターゲットデータブロックの前記論理アドレスに従って、前記ターゲットファイルの前記メタデータから前記ターゲットデータブロックの前記論理アドレスに対応する第２の書き込み時点を取得するステップであり、前記ターゲットファイルの前記メタデータは、前記ターゲットデータブロックの前記論理アドレス及び前記第２の書き込み時点を有し、前記第２の書き込み時点は、前記ターゲットデータブロックを前記ストレージデバイスに書き込む最新の時点を示すステップと、
前記第１の書き込み時点が前記第２の書き込み時点と同じであると決定された場合、前記ターゲットデータブロックを予め割り当てられた連続的なストレージ空間にマイグレーションするステップと
を有する方法。
【請求項２】
前記連続的なストレージ空間を予め割り当てるステップであり、前記ストレージ空間のサイズは、前記ターゲットファイルのサイズ未満ではないステップを更に有する、請求項１に記載の方法。
【請求項３】
前記ストレージ空間において物理アドレスを前記ターゲットデータブロックに割り当てるステップを更に有し、
前記ターゲットデータブロックを予め割り当てられた連続的なストレージ空間にマイグレーションするステップは、前記ターゲットデータブロックを前記物理アドレスに対応するストレージ空間に書き込むステップを有する、請求項１又は２に記載の方法。
【請求項４】
前記ストレージ空間において物理アドレスを前記ターゲットデータブロックに割り当てた後に、
前記物理アドレスと、前記ターゲットデータブロックを前記物理アドレスに対応する前記ストレージ空間に書き込む時点とを、前記ターゲットファイルの前記メタデータに記憶するステップを更に有する、請求項３に記載の方法。
【請求項５】
前記ターゲットデータブロックの前記論理アドレスに対応する前記第２の書き込み時点が、前記ターゲットデータブロックの前記論理アドレスに従って、前記ターゲットファイルの前記メタデータから取得された場合、
前記ターゲットデータブロックの前記論理アドレスに対応する前記第２の書き込み時点が取得された後、且つ、前記物理アドレスと、前記ターゲットデータブロックを前記物理アドレスに対応する前記ストレージ空間に書き込む前記時点とが前記ターゲットファイルの前記メタデータに記憶される前に、前記ターゲットデータブロックの前記論理アドレス及び前記第２の書き込み時点が変更できないように、前記ターゲットデータブロックの前記論理アドレス及び前記第２の書き込み時点においてロック動作を実行するステップを更に有する、請求項４に記載の方法。
【請求項６】
前記ストレージデバイスにより、前記ターゲットファイルのメタデータのスナップショットを取得するステップは、
前記ストレージデバイスにより、予め設定された時点が到達した場合、又はファイルマイグレーション命令が受信された場合、前記ターゲットファイルの前記メタデータの前記スナップショットを取得するステップを有する、請求項１ないし５のうちいずれか１項に記載の方法。
【請求項７】
ファイルマイグレーション装置であり、前記装置は、ストレージデバイスに位置し、前記ストレージデバイスは、ターゲットファイルを記憶し、前記ターゲットファイルは、複数のデータブロックを有し、前記装置は、デフラグモジュールを有する装置であって、
前記デフラグモジュールは、
前記ターゲットファイルのメタデータのスナップショットを取得するように構成されたスナップショット取得モジュールであり、前記スナップショットは、前記複数のデータブロックの論理アドレス及び前記複数のデータブロックの第１の書き込み時点を有し、前記第１の書き込み時点は、前記スナップショットに記録された、前記データブロックを前記ストレージデバイスに書き込む時点を示すスナップショット取得モジュールと、
前記ターゲットファイルの前記メタデータの前記スナップショット及び前記ターゲットファイルの前記メタデータを記憶するように構成されたアドレスマッピングモジュールと
を有し、
前記スナップショット取得モジュールは、前記複数のデータブロックの前記論理アドレス及び前記複数のデータブロックの前記第１の書き込み時点から、ターゲットデータブロックの論理アドレス及び前記ターゲットデータブロックの第１の書き込み時点を識別するように更に構成され、
前記デフラグモジュールは、
前記ターゲットデータブロックの前記論理アドレスに従って、前記アドレスマッピングモジュールに記憶された前記ターゲットファイルの前記メタデータから前記ターゲットデータブロックの前記論理アドレスに対応する第２の書き込み時点を取得するように構成されたマイグレーションモジュールであり、前記ターゲットファイルの前記メタデータは、前記ターゲットデータブロックの前記論理アドレス及び前記第２の書き込み時点を有し、前記第２の書き込み時点は、前記ターゲットデータブロックを前記ストレージデバイスに書き込む最新の時点を示すマイグレーションモジュールを有し、
前記マイグレーションモジュールは、前記第１の書き込み時点が前記第２の書き込み時点と同じであると決定された場合、前記ターゲットデータブロックを予め割り当てられた連続的なストレージ空間にマイグレーションするように更に構成される装置。
【請求項８】
前記ファイルマイグレーション装置は、前記連続的なストレージ空間を予め割り当てるように構成された空間管理モジュールであり、前記ストレージ空間のサイズは、前記ターゲットファイルのサイズ未満ではない空間管理モジュールを更に有する、請求項７に記載の装置。
【請求項９】
前記マイグレーションモジュールは、前記ストレージ空間において物理アドレスを前記ターゲットデータブロックに割り当てるように更に構成され、
前記マイグレーションモジュールは、前記ターゲットデータブロックを前記物理アドレスに対応するストレージ空間に書き込むように具体的に構成される、請求項７又は８に記載の装置。
【請求項１０】
前記マイグレーションモジュールは、前記ストレージ空間において前記物理アドレスが前記ターゲットデータブロックに割り当てられた後に、前記物理アドレスと、前記ターゲットデータブロックを前記物理アドレスに対応する前記ストレージ空間に書き込む時点とを、前記ターゲットファイルの前記メタデータに記憶するように更に構成される、請求項９に記載の装置。
【請求項１１】
前記マイグレーションモジュールは、前記ターゲットデータブロックの前記論理アドレスに対応する前記第２の書き込み時点が取得された後、且つ、前記物理アドレスと、前記ターゲットデータブロックを前記物理アドレスに対応する前記ストレージ空間に書き込む前記時点とが前記ターゲットファイルの前記メタデータに記憶される前に、前記ターゲットデータブロックの前記論理アドレス及び前記第２の書き込み時点が変更できないように、前記ターゲットデータブロックの前記論理アドレス及び前記第２の書き込み時点においてロック動作を実行するように更に構成される、請求項１０に記載の装置。
【請求項１２】
前記デフラグモジュールは、トリガーを更に有し、
前記トリガーは、予め設定された時点を設定するように或いはファイルマイグレーション命令を受信するように構成され、
前記スナップショット取得モジュールは、前記予め設定された時点が到達した場合、又は前記ファイルマイグレーション命令が受信された場合、前記ターゲットファイルの前記メタデータの前記スナップショットを取得するように具体的に構成される、請求項７ないし１１のうちいずれか１項に記載の装置。
【請求項１３】
ストレージデバイスであり、前記ストレージデバイスは、コントローラとディスクとを有し、前記コントローラは、プロセッサと通信インタフェースとを有するストレージデバイスであって、
前記通信インタフェースは、前記ディスクと通信するように構成され、
前記プロセッサは、
ターゲットファイルのメタデータのスナップショットを取得し、前記スナップショットは、複数のデータブロックの論理アドレス及び前記複数のデータブロックの第１の書き込み時点を有し、前記第１の書き込み時点は、前記スナップショットに記録された、前記データブロックを前記ディスクに書き込む時点を示し、
前記複数のデータブロックの前記論理アドレス及び前記複数のデータブロックの前記第１の書き込み時点から、ターゲットデータブロックの論理アドレス及び前記ターゲットデータブロックの第１の書き込み時点を識別し、
前記ターゲットデータブロックの前記論理アドレスに従って、前記ターゲットファイルの前記メタデータから前記ターゲットデータブロックの前記論理アドレスに対応する第２の書き込み時点を取得し、前記ターゲットファイルの前記メタデータは、前記ターゲットデータブロックの前記論理アドレス及び前記第２の書き込み時点を有し、前記第２の書き込み時点は、前記ターゲットデータブロックを前記ディスクに書き込む最新の時点を示し、
前記第１の書き込み時点が前記第２の書き込み時点と同じであると決定された場合、前記ターゲットデータブロックを予め割り当てられた連続的なストレージ空間にマイグレーションするように構成されるストレージデバイス。
【請求項１４】
前記プロセッサは、前記連続的なストレージ空間を予め割り当てるように更に構成され、前記ストレージ空間のサイズは、前記ターゲットファイルのサイズ未満ではない、請求項１３に記載のストレージデバイス。
【請求項１５】
前記プロセッサは、前記ストレージ空間において物理アドレスを前記ターゲットデータブロックに割り当てるように更に構成され、
前記プロセッサは、前記ターゲットデータブロックを前記物理アドレスに対応するストレージ空間に書き込むように具体的に構成される、請求項１３又は１４に記載のストレージデバイス。
【請求項１６】
前記プロセッサは、前記ストレージ空間において前記物理アドレスが前記ターゲットデータブロックに割り当てられた後に、前記物理アドレスと、前記ターゲットデータブロックを前記物理アドレスに対応する前記ストレージ空間に書き込む時点とを、前記ターゲットファイルの前記メタデータに記憶するように更に構成される、請求項１５に記載のストレージデバイス。
【請求項１７】
前記プロセッサは、前記ターゲットデータブロックの前記論理アドレスに対応する前記第２の書き込み時点が、前記ターゲットデータブロックの前記論理アドレスに従って、前記ターゲットファイルの前記メタデータから取得された場合、前記ターゲットデータブロックの前記論理アドレスに対応する前記第２の書き込み時点が取得された後、且つ、前記物理アドレスと、前記ターゲットデータブロックを前記物理アドレスに対応する前記ストレージ空間に書き込む前記時点とが前記ターゲットファイルの前記メタデータに記憶される前に、前記ターゲットデータブロックの前記論理アドレス及び前記第２の書き込み時点が変更できないように、前記ターゲットデータブロックの前記論理アドレス及び前記第２の書き込み時点においてロック動作を実行するように更に構成される、請求項１６に記載のストレージデバイス。
【請求項１８】
前記プロセッサは、予め設定された時点が到達した場合、又はファイルマイグレーション命令が受信された場合、前記ストレージデバイスにより前記ターゲットファイルの前記メタデータの前記スナップショットを取得するように具体的に構成される、請求項１３ないし１７のうちいずれか１項に記載のストレージデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は、ストレージ技術の分野に関し、特にファイルマイグレーション方法及び装置、並びにストレージデバイスに関する。
【背景技術】
【０００２】
ファイルシステムは、ユーザデータを記憶及び整理するためのデータ構造であり、ユーザにとって簡単且つ便利なデータアクセスを提供する。ファイルシステムを提供するストレージデバイスについて、ストレージデバイスのディスクのストレージ空間はユーザに対してトランスペアレントであり、ユーザは、ディスクに記憶されたデータの具体的な位置を気にかける必要はなく、単にディレクトリ又はファイルにアクセスすることにより、データにアクセスし得る。
【０００３】
リダイレクト・オン・ライト（フルネーム：Redirection  On  Write、略してROW）ファイルシステムは、リダイレクト・オン・ライトの方式でデータを書き込むファイルシステムを示す。新たなユーザデータが書き込まれる場合又は元のユーザデータが変更される場合、新たなデータは、元の古いデータを上書きせず、データは、ストレージデバイスの新たに割り当てられた空間に書き込まれる。新たなデータが成功して書き込まれた後に、古いデータのストレージ空間が解放される。しかし、新たなデータが絶えず書き込まれると、新たなストレージ空間がストレージデバイスで絶えず割り当てられ、同時に、古いデータのストレージ空間が絶えず解放される。しかし、解放されたストレージ空間の不連続性のため、新たなデータは古いデータの解放されたストレージ空間に書き込まれることができず、ディスクにおけるストレージ空間フラグメント化の問題を生じる。従って、ストレージ空間をデフラグすることが必要である。デフラグは、小さい不連続な利用可能なストレージ空間を大きい連続的なストレージ空間に整理することを示す。
【発明の概要】
【０００４】
本発明の実施例は、ターゲットファイルが予め割り当てられた連続的なストレージ空間にマイグレーションされることができ、これにより、ディスクデフラグの目的を達成するような、ファイルマイグレーション方法及び装置、並びにストレージデバイスを提供する。
【０００５】
本発明の実施例の第１の態様は、ファイルマイグレーション方法を提供し、この方法は、ストレージデバイスに適用され、ストレージデバイスは、ターゲットファイルを記憶し、ターゲットファイルは、複数のデータブロックを含む。この方法は、ストレージデバイスにより、ターゲットファイルのメタデータのスナップショットを取得するステップであり、スナップショットは、複数のデータブロックの論理アドレス及び複数のデータブロックの第１の書き込み時点を含み、第１の書き込み時点は、スナップショットに記録された、データブロックをストレージデバイスに書き込む時点を示すステップと、複数のデータブロックの論理アドレス及び複数のデータブロックの第１の書き込み時点から、ターゲットデータブロックの論理アドレス及びターゲットデータブロックの第１の書き込み時点を識別するステップと、ターゲットデータブロックの論理アドレスに従って、ターゲットファイルのメタデータからターゲットデータブロックの論理アドレスに対応する第２の書き込み時点を取得するステップであり、ターゲットファイルのメタデータは、ターゲットデータブロックの論理アドレス及び第２の書き込み時点を含み、第２の書き込み時点は、ターゲットデータブロックをストレージデバイスに書き込む最新の時点を示すステップと、第１の書き込み時点が第２の書き込み時点と同じであると決定された場合、ターゲットデータブロックを予め割り当てられた連続的なストレージ空間にマイグレーションするステップとを含む。
【０００６】
第１の態様を参照して、第１の可能な実現方式では、この方法は、連続的なストレージ空間を予め割り当てるステップであり、ストレージ空間のサイズは、ターゲットファイルのサイズ未満ではないステップを更に含む。
【０００７】
第１の態様又は第１の態様の第１の可能な実現方式を参照して、第２の可能な実現方式では、この方法は、ストレージ空間において物理アドレスをターゲットデータブロックに割り当てるステップを更に含み、ターゲットデータブロックを予め割り当てられた連続的なストレージ空間にマイグレーションするステップは、ターゲットデータブロックを物理アドレスに対応するストレージ空間に書き込むステップを含む。
【０００８】
第１の態様の第２の可能な実現方式を参照して、第３の可能な実現方式では、ストレージ空間において物理アドレスをターゲットデータブロックに割り当てた後に、この方法は、物理アドレスと、ターゲットデータブロックを物理アドレスに対応するストレージ空間に書き込む時点とを、ターゲットファイルのメタデータに記憶するステップを更に含む。
【０００９】
第１の態様の第３の可能な実現方式を参照して、第４の可能な実現方式では、ターゲットデータブロックの論理アドレスに対応する第２の書き込み時点が、ターゲットデータブロックの論理アドレスに従って、ターゲットファイルのメタデータから取得された場合、この方法は、ターゲットデータブロックの論理アドレスに対応する第２の書き込み時点が取得された後、且つ、物理アドレスと、ターゲットデータブロックを物理アドレスに対応するストレージ空間に書き込む時点とがターゲットファイルのメタデータに記憶される前に、ターゲットデータブロックの論理アドレス及び第２の書き込み時点が変更できないように、ターゲットデータブロックの論理アドレス及び第２の書き込み時点においてロック動作を実行するステップを更に含む。
【００１０】
第１の態様又は第１の態様の第１の可能な実現方式から第１の態様の第４の可能な実現方式を参照して、本発明の第５の可能な実現方式では、ストレージデバイスにより、ターゲットファイルのメタデータのスナップショットを取得するステップは、ストレージデバイスにより、予め設定された時点が到達した場合、又はファイルマイグレーション命令が受信された場合、ターゲットファイルのメタデータのスナップショットを取得するステップを含む。
【００１１】
本発明の実施例の第２の態様は、ファイルマイグレーション装置を提供し、この装置は、ストレージデバイスに位置し、ストレージデバイスは、ターゲットファイルを記憶し、ターゲットファイルは、複数のデータブロックを含む。この装置は、デフラグモジュールを含み、デフラグモジュールは、ターゲットファイルのメタデータのスナップショットを取得するように構成されたスナップショット取得モジュールであり、スナップショットは、複数のデータブロックの論理アドレス及び複数のデータブロックの第１の書き込み時点を含み、第１の書き込み時点は、スナップショットに記録された、データブロックをストレージデバイスに書き込む時点を示すスナップショット取得モジュールと、ターゲットファイルのメタデータのスナップショット及びターゲットファイルのメタデータを記憶するように構成されたアドレスマッピングモジュールとを含み、スナップショット取得モジュールは、複数のデータブロックの論理アドレス及び複数のデータブロックの第１の書き込み時点から、ターゲットデータブロックの論理アドレス及びターゲットデータブロックの第１の書き込み時点を識別するように更に構成され、デフラグモジュールは、ターゲットデータブロックの論理アドレスに従って、アドレスマッピングモジュールに記憶されたターゲットファイルのメタデータからターゲットデータブロックの論理アドレスに対応する第２の書き込み時点を取得するように構成されたマイグレーションモジュールであり、ターゲットファイルのメタデータは、ターゲットデータブロックの論理アドレス及び第２の書き込み時点を含み、第２の書き込み時点は、ターゲットデータブロックをストレージデバイスに書き込む最新の時点を示すマイグレーションモジュールを含み、マイグレーションモジュールは、第１の書き込み時点が第２の書き込み時点と同じであると決定された場合、ターゲットデータブロックを予め割り当てられた連続的なストレージ空間にマイグレーションするように更に構成される。
【００１２】
第２の態様を参照して、第１の可能な実現方式では、ファイルマイグレーション装置は、連続的なストレージ空間を予め割り当てるように構成された空間管理モジュールであり、ストレージ空間のサイズは、ターゲットファイルのサイズ未満ではない空間管理モジュールを更に含む。
【００１３】
第２の態様又は第２の態様の第１の可能な実現方式を参照して、第２の可能な実現方式では、マイグレーションモジュールは、ストレージ空間において物理アドレスをターゲットデータブロックに割り当てるように更に構成され、マイグレーションモジュールは、ターゲットデータブロックを物理アドレスに対応するストレージ空間に書き込むように具体的に構成される。
【００１４】
第２の態様の第２の可能な実現方式を参照して、第３の可能な実現方式では、マイグレーションモジュールは、ストレージ空間において物理アドレスがターゲットデータブロックに割り当てられた後に、物理アドレスと、ターゲットデータブロックを物理アドレスに対応するストレージ空間に書き込む時点とを、ターゲットファイルのメタデータに記憶するように更に構成される。
【００１５】
第２の態様の第３の可能な実現方式を参照して、第４の可能な実現方式では、マイグレーションモジュールは、ターゲットデータブロックの論理アドレスに対応する第２の書き込み時点が取得された後、且つ、物理アドレスと、ターゲットデータブロックを物理アドレスに対応するストレージ空間に書き込む時点とがターゲットファイルのメタデータに記憶される前に、ターゲットデータブロックの論理アドレス及び第２の書き込み時点が変更できないように、ターゲットデータブロックの論理アドレス及び第２の書き込み時点においてロック動作を実行するように更に構成される。
【００１６】
第２の態様又は第２の態様の第１の可能な実現方式から第２の態様の第４の可能な実現方式を参照して、本発明の第５の可能な実現方式では、デフラグモジュールは、トリガーを更に含み、トリガーは、予め設定された時点を設定するように或いはファイルマイグレーション命令を受信するように構成され、スナップショット取得モジュールは、予め設定された時点が到達した場合、又はファイルマイグレーション命令が受信された場合、ターゲットファイルのメタデータのスナップショットを取得するように具体的に構成される。
【００１７】
本発明の実施例の第３の態様は、ストレージデバイスを提供し、ストレージデバイスは、コントローラとディスクとを含み、コントローラは、プロセッサと通信インタフェースとを含み、通信インタフェースは、ディスクと通信するように構成され、プロセッサは、ターゲットファイルのメタデータのスナップショットを取得し、スナップショットは、複数のデータブロックの論理アドレス及び複数のデータブロックの第１の書き込み時点を含み、第１の書き込み時点は、スナップショットに記録された、データブロックをディスクに書き込む時点を示し、複数のデータブロックの論理アドレス及び複数のデータブロックの第１の書き込み時点から、ターゲットデータブロックの論理アドレス及びターゲットデータブロックの第１の書き込み時点を識別し、ターゲットデータブロックの論理アドレスに従って、ターゲットファイルのメタデータからターゲットデータブロックの論理アドレスに対応する第２の書き込み時点を取得し、ターゲットファイルのメタデータは、ターゲットデータブロックの論理アドレス及び第２の書き込み時点を含み、第２の書き込み時点は、ターゲットデータブロックをディスクに書き込む最新の時点を示し、第１の書き込み時点が第２の書き込み時点と同じであると決定された場合、ターゲットデータブロックを予め割り当てられた連続的なストレージ空間にマイグレーションするように構成される。
【００１８】
第３の態様を参照して、第１の可能な実現方式では、プロセッサは、連続的なストレージ空間を予め割り当てるように更に構成され、ストレージ空間のサイズは、ターゲットファイルのサイズ未満ではない。
【００１９】
第３の態様又は第３の態様の第１の可能な実現方式を参照して、第２の可能な実現方式では、プロセッサは、ストレージ空間において物理アドレスをターゲットデータブロックに割り当てるように更に構成され、プロセッサは、ターゲットデータブロックを物理アドレスに対応するストレージ空間に書き込むように具体的に構成される。
【００２０】
第３の態様の第２の可能な実現方式を参照して、第３の可能な実現方式では、プロセッサは、ストレージ空間において物理アドレスがターゲットデータブロックに割り当てられた後に、物理アドレスと、ターゲットデータブロックを物理アドレスに対応するストレージ空間に書き込む時点とを、ターゲットファイルのメタデータに記憶するように更に構成される。
【００２１】
第３の態様の第３の可能な実現方式を参照して、第４の可能な実現方式では、プロセッサは、ターゲットデータブロックの論理アドレスに対応する第２の書き込み時点が、ターゲットデータブロックの論理アドレスに従って、ターゲットファイルのメタデータから取得された場合、ターゲットデータブロックの論理アドレスに対応する第２の書き込み時点が取得された後、且つ、物理アドレスと、ターゲットデータブロックを物理アドレスに対応するストレージ空間に書き込む時点とがターゲットファイルのメタデータに記憶される前に、ターゲットデータブロックの論理アドレス及び第２の書き込み時点が変更できないように、ターゲットデータブロックの論理アドレス及び第２の書き込み時点においてロック動作を実行するように更に構成される。
【００２２】
第３の態様又は第３の態様の第１の可能な実現方式から第３の態様の第４の可能な実現方式を参照して、本発明の第５の可能な実現方式では、プロセッサは、予め設定された時点が到達した場合、又はファイルマイグレーション命令が受信された場合、ストレージデバイスによりターゲットファイルのメタデータのスナップショットを取得するように具体的に構成される。
【００２３】
本発明の実施例では、ストレージデバイスは、ターゲットファイルのメタデータのスナップショットを取得し、スナップショットは、複数のデータブロックの論理アドレス及び複数のデータブロックの第１の書き込み時点を含み、第１の書き込み時点は、スナップショットに記録された、データブロックをストレージデバイスに書き込む時点を示し、複数のデータブロックの論理アドレス及び複数のデータブロックの第１の書き込み時点から、ターゲットデータブロックの論理アドレス及びターゲットデータブロックの第１の書き込み時点を識別し、論理アドレスに従って、ターゲットファイルのメタデータから論理アドレスに対応する第２の書き込み時点を取得し、第２の書き込み時点は、ターゲットデータブロックをストレージデバイスに書き込む最新の時点を示し、第１の書き込み時点が第２の書き込み時点と同じであると決定された場合、これは、スナップショットが生成された後にターゲットデータブロックが変更されないことを示し、ターゲットデータブロックが予め割り当てられた連続的なストレージ空間にマイグレーションされる。このように、全体のターゲットファイルが連続的なストレージ空間にマイグレーションされることができ、これにより、ディスクデフラグの目的を達成する。
【図面の簡単な説明】
【００２４】
本発明の実施例の技術的対策を明確に説明するために、以下に、本発明の実施例を説明するために必要な添付図面について簡単に紹介する。明らかに、以下の説明において、添付図面は、本発明の単にいくつかの実施例を示しているに過ぎず、当業者は、創造的取り組みを行うことなく、依然としてこれらの添付図面から他の図面を導き得る。
【図１】本発明の実施例によるストレージシステムの構成図
【図２】本発明の実施例によるコントローラのハードウェアの構成
【図３】本発明の実施例によるファイルシステムの論理構成の概略図
【図４】本発明の実施例によるファイルのメタデータのB+ツリーの概略図
【図５】本発明の実施例によるファイルマイグレーション方法の概略フローチャート
【図６】本発明の実施例によるファイルのメタデータのスナップショットのB+ツリーの概略図
【図７Ａ】本発明の実施例によるファイルの単位でのデフラグの概略フローチャート
【図７Ｂ】本発明の実施例によるファイルの単位でのデフラグの概略フローチャート
【発明を実施するための形態】
【００２５】
本発明の実施例は、ターゲットファイルが連続的なストレージ空間にマイグレーションされることができ、これによりディスクのストレージ空間においてデフラグの目的を達成するような、ファイルマイグレーション方法、ファイルマイグレーション装置、及びストレージデバイスを提供する。
【００２６】
従来技術では、デフラグがファイルの単位でストレージ空間において実行される場合、一般的に、ユーザがファイルを変更することを妨げるため、ファイルは、マイグレーション処理中にロックされる必要がある。ファイルは、複数のデータブロックを含み、従って、従来技術では、ファイルは、データブロックが順次にマイグレーションされた後にのみロック解除される。このことは、ユーザによるファイルアクセスに影響を与える。本発明の実施例では、デフラグの目的が達成されることができるだけでなく、ファイルがファイルマイグレーション処理中にロックされない可能性がある。スナップショットが生成された後に変更されないデータブロックを更に取得するため、ファイルのメタデータのスナップショットが取得され、データブロックは、予め割り当てられた連続的なストレージ空間にマイグレーションされ、これにより、ファイルマイグレーション処理がユーザに対してトランスペアレントである。
【００２７】
本発明の実施例では、ファイルのメタデータは、ファイル情報を記述するデータを示し、ファイルに含まれるデータブロックの論理アドレス及び物理アドレス、論理アドレスと物理アドレスとの間のマッピング関係、並びにデータブロックをストレージデバイスに書き込む時点のような情報を含む。
【００２８】
以下に、本発明の実施例を詳細に説明し始める。
【００２９】
図１は、本発明の実施例によるストレージシステムの構成図である。図１に示すストレージシステムは、少なくとも１つのアプリケーションサーバ10と、少なくとも１つのストレージデバイス20とを含む。アプリケーションサーバ10は、従来技術のいずれか既知のコンピューティングデバイス、例えば、ホスト、サーバ、又はデスクトップコンピュータを含んでもよい。アプリケーション（application）11は、アプリケーションサーバ10で実行し、ユーザは、アプリケーション11を使用することにより、様々なファイル処理要求をストレージデバイス20に送出してもよい。
【００３０】
ストレージデバイス20は、ネットワーク上でNFS/CIFSプロトコルを使用することにより、アプリケーションサーバ11とのデータ送信を実行してもよく、ストレージデバイス20は、従来技術のファイルシステムを含むいずれか既知のストレージデバイス、例えば、ストレージアレイ又はストレージサーバでもよい。
【００３１】
ストレージデバイス20は、コントローラ21と、複数のディスク31とを含む。コントローラ21は、従来技術のいずれか既知のコンピューティングデバイス、例えば、サーバ又はデスクトップコンピュータを含んでもよい。ファイルシステム210及び他のアプリケーションは、コントローラにインストールされる。コントローラ21は、ファイル生成動作、ファイルオープニング動作、ファイル読み取り動作、及びファイル書き込み動作のようなファイル処理要求のための様々な動作を実行するように構成される。ストレージデバイス20に含まれる複数のディスク31は、ファイルを記憶するストレージ空間を提供するように構成される。
【００３２】
以下に、コントローラ21のハードウェアの構成を説明する。図２を参照すると、図２は、本発明の実施例のコントローラ21の構成図である。図２に示すように、コントローラ21は、プロセッサ（processor）118と、キャッシュ（cache）120と、メモリ（memory）122と、通信バス（略してバス）126と、通信インタフェース（Communication  Interface）128とを主に含む。プロセッサ118、キャッシュ120、メモリ122、及び通信インタフェース128は、通信バス126を使用することにより相互に通信する。
【００３３】
通信インタフェース128は、アプリケーションサーバ10又はディスク31と通信するように構成される。
【００３４】
メモリ122は、プログラム124を記憶するように構成され、メモリ122は、高速RAMメモリを含んでもよく、或いは、不揮発性メモリ（non-volatile  memory）、例えば、少なくとも１つのディスクメモリを更に含んでもよい。メモリ122は、ランダムアクセスメモリ（Random-Access  Memory、RAM）、磁気ディスク、ハードディスク、光ディスク、ソリッドステートディスク（Solid  State  Disk、SSD）、又は不揮発性メモリのような、プログラムコードを記憶することができるいずれかの過渡的でない（non-transitory）機械読み取り可能な記憶媒体でもよいことが認識され得る。
【００３５】
プログラム124は、プログラムコードを含んでもよく、プログラムコードは、ファイルシステム210及び他のプログラムコードを含む。
【００３６】
キャッシュ120（Cache）は、アプリケーションサーバ10から受信したデータ又はディスク31から読み取られたデータを一時的に記憶するように構成される。キャッシュ120は、RAM、ROM、フラッシュメモリ（Flash  memory）、又はソリッドステートディスク（Solid  State  Disk、SSD）のような、データを記憶し得るいずれかの過渡的でない（non-transitory）機械読み取り可能な記憶媒体でもよく、これは、ここでは限定されない。
【００３７】
更に、メモリ122及びキャッシュ120は、統合されてもよく、別々に配置されてもよく、これは、本発明のこの実施例では限定されない。
【００３８】
プロセッサ118は、中央処理装置CPU又は特定用途向け集積回路ASIC（Application  Specific  Integrated  Circuit）でもよく、或いは、本発明のこの実施例を実現する１つ以上の集積回路として構成されてもよい。本発明のこの実施例では、プロセッサ118は、アプリケーションサーバ10から様々なファイル処理要求を受信し、ファイルシステム210を使用することによりファイル処理要求についてファイルマイグレーション動作、ファイル読み取り動作、及びファイル書き込み動作のような様々な動作を実行するように構成されてもよい。
【００３９】
ファイルシステム210は、ストレージデバイス20のデータを記憶及び整理する方法であり、データアクセス及び検索を容易にする。ファイルシステム210は、ディスクのような物理デバイスにより使用されるデータブロックの概念を置換するために、ファイルの抽象的な論理概念及びツリーディレクトリを使用する。ストレージデバイス20がデータを記憶するためにファイルシステム210を使用した後に、ユーザは、データが実際に記憶されるデータブロックのディスクアドレスを気にかける必要はなく、ファイルが属するディレクトリ及びファイル名を記憶しさえすればよい。同様に、新たなデータを書き込む前に、ユーザは、どのアドレスブロックが使用されていないかを気にかける必要はない。ディスクのストレージ空間管理（割り当て及び解放）機能は、ファイルシステム210により自動的に実現され、ユーザは、データが書き込まれたファイルを記憶しさえすればよい。ストレージデバイス20に記憶されたデータは、ファイルの形式でユーザに表示されるが、ディスク31に記憶されたファイルは、データブロックの単位で留まる点に留意すべきである。従って、１つのファイルは、複数のデータブロックを含んでもよい。
【００４０】
この実施例のファイルシステム210は、リダイレクト・オン・ライト（フルネーム：Redirection  On  Write、略してROW）ファイルシステムである。新たなユーザデータが書き込まれる場合又は元のユーザデータが変更される場合、新たなデータは、元の古いデータを上書きせず、新たなデータは、ストレージデバイス20の新たに割り当てられた空間に書き込まれる。新たなデータが成功して書き込まれた後に、古いデータのストレージ空間が解放される。しかし、新たなデータが絶えず書き込まれると、新たなストレージ空間がストレージデバイス20のディスク空間で絶えず割り当てられ、元の連続的なユーザデータは、複数の変更によって不連続になり、これにより、データのアクセス性能に影響を与える。従って、ストレージデバイス20のディスク空間のデフラグを実行するために、この実施例では、デフラグモジュールがファイルシステム210に追加される。
【００４１】
以下に、ファイルシステム210の論理構成を説明する。図３を参照すると、図３は、本発明の実施例のファイルシステム210の論理構成の概略図である。図３に示すように、ファイルシステム210は、デフラグモジュール214と、空間管理モジュール212とを主に含む。デフラグモジュール214は、ターゲットファイルに含まれるデータブロックをマイグレーションするように構成され、空間管理モジュール212は、マイグレーションされたデータブロックを記憶するために、１つの連続的なストレージ空間を予め割り当てるように構成される。
【００４２】
具体的に、デフラグモジュール214は、スナップショット取得モジュール2140と、アドレスマッピングモジュール2145と、マイグレーションモジュール2144とを含んでもよい。スナップショット取得モジュール2140は、ターゲットファイルのメタデータのスナップショットを取得するように構成される。アドレスマッピングモジュール2145は、ターゲットファイルのメタデータのスナップショット及びターゲットファイルのメタデータを記憶するように構成される。マイグレーションモジュール2144は、ターゲットファイルのメタデータを求めてアドレスマッピングモジュール2145を検索するように構成され、マイグレーションモジュール2144は、ターゲットファイルに含まれるデータを予め割り当てられた連続的なストレージ空間にマイグレーションするように更に構成される。
【００４３】
更に、スナップショット取得モジュール2140は、整理及び制御モジュール2143と、スナップショットアダプタ2141とを含んでもよい。整理及び制御モジュール2143は、全体のデフラグ手順を制御し、他のモジュールの作業を協調させることによりデフラグ機能を実現するように構成される。スナップショットアダプタ2141は、ターゲットファイルのメタデータのスナップショットを生成するように構成されてもよい。しかし、或るシナリオでは、ファイルシステム210がスナップショットを生成するように構成されたモジュール（例えば、スナップショットモジュール211）を既に含む場合、スナップショットアダプタ2141は、単にスナップショットモジュール211とデータ交換を実行するように構成されてもよい。例えば、スナップショットアダプタ2141は、スナップショットモジュール211に対してスナップショットを生成してスナップショットについての情報を記憶することを要求するためのスナップショット要求を送出する。
【００４４】
更に、任意選択で、デフラグモジュール214は、トリガー2142を更に含んでもよい。トリガー2142は、デフラグを開始するために使用され、ファイルシステム210のためのデフラグタイミング及びデフラグポリシーを提供する。具体的に、タイマがトリガー2142に設定されてもよく、デフラグタスクは、予め設定された時点が到達した場合に開始される。或いは、他のトリガー条件が設定され、デフラグタスクは、予め設定された条件が満たされた場合に開始される。更に、トリガー2142は、デフラグタスクを開始するために、ファイルマイグレーション命令、デフラグ命令又は同様の命令を受信するように更に構成される。更に、デフラグポリシーは、トリガー2142に構成される。例えば、デフラグはファイルの単位で実行されるか、デフラグはディレクトリの単位で実行されるか、或いは、デフラグは全てのファイルの単位で実行される。
【００４５】
任意選択で、ファイルシステム210は、ディスク31に記憶されたデータを読み書きする機能を実現するように構成されたデータIOモジュール213を更に含んでもよい。例えば、マイグレーション対象のデータブロックを決定する場合、マイグレーションモジュール2144は、データブロックをデータIOモジュール213に送出し、データIOモジュール213は、データブロックを、空間管理モジュール212により予め割り当てられた連続的なストレージ空間に書き込む。データブロックが成功して書き込まれた後に、新たなメタデータは、アドレスマッピングモジュール2145に記憶されてもよい。ここで、新たなメタデータは、データブロックの論理アドレス、データブロックが書き込まれたストレージ空間の物理アドレス、論理アドレスと物理アドレスとの間のマッピング関係、及びデータブロックを書き込む時点のような情報を含む。マイグレーションの後に、データブロックの論理アドレスが変化しないままである一方で、データブロックの物理アドレスが変化する点に留意すべきである。しかし、物理アドレスは、アプリケーションサーバ10に不可視であり、従って、データブロックのマイグレーション処理及び全体のファイルのマイグレーション処理ですら、アプリケーションサーバ10に対してトランスペアレントである。
【００４６】
ファイルシステム210は、本発明のこの実施例で一時的に説明していない他の機能モジュールを更に含んでもよいことが認識され得る。
【００４７】
図３に示す実施例では、ファイルシステム210は、スナップショットアダプタ2141と、スナップショットモジュール211との双方を含む点に留意すべきである。スナップショットモジュール211は、スナップショット生成動作を実行するように構成される。スナップショットアダプタ2141は、スナップショットモジュール211に対してスナップショットを生成してスナップショットについての情報を記憶すること等を要求するために、スナップショットモジュール211とデータ交換を実行するように構成される。しかし、或るシナリオでは、スナップショットモジュール211の機能は、スナップショットアダプタ2141に統合されてもよく、スナップショットアダプタ2141は、スナップショット生成動作を実行する。要するに、図３に示すファイルシステム210のモジュール分割は、本発明のこの実施例の単なる例示的な説明であり、前述の機能を実現することができるいずれかのモジュールは、本発明のこの実施例の保護範囲内に入るものとする。
【００４８】
この実施例では、アドレスマッピングモジュール2145は、論理アドレスと物理アドレスとの間のマッピング関係を管理するために、アドレスマッピングツリー（例えば、B+ツリー）を使用してもよい。図４は、ファイルシステムに対応するB+ツリーの概略図である。
【００４９】
ここで、ファイルシステムに対応するB+ツリーは、ストレージデバイスにおいて全てのファイルのメタデータを管理するために使用されるB+ツリーを示す点に留意すべきである。B+ツリーは、ルートノードと、様々なレベルのインデックスと、複数のリーフノードとを含む。ルートノードは、B+ツリーの入り口であり、ルートノードを通じてB+ツリーに入ってもよい。各リーフノードは、キー値（フルネーム：Key-Value、略してKV）ペアを記憶する。この実施例では、Keyフィールド及びValueフィールドの具体的な定義が以下の表に示される。
【表１】
2016535910.tif 000003
【００５０】
Keyフィールドは、論理オフセット又は論理開始アドレスとも呼ばれる論理アドレスを記憶するために使用される。Valueフィールドは、２つの部分の内容を記憶する。一方の部分は書き込み時点であり、他方の部分は物理アドレスである。物理アドレスは、ディスクに記憶されており、論理アドレスが向けられたデータブロックの具体的な位置である。書き込み時点は、論理アドレスが向けられたデータブロックをディスクに書き込む時点を示す。書き込み時点の表現形式は、64ビットのシリアル番号でもよく、順序を表す数字又は文字でもよく、他の方式でもよい。書き込み時点の形式は、本発明のこの実施例では限定されない。更に、書き込み時点は、論理アドレスが向けられたデータブロックがディスクに書き込まれる前に割り当てられた時点でもよいが、必ずしもデータブロックをディスクに書き込む実際の時点であるとは限らないことが認識され得る。
【００５１】
図４から、Valueフィールドが物理アドレスを記憶し、各物理アドレスがファイルのメタデータ又はディレクトリのメタデータに向けられてもよいことが認識され得る。従って、ファイルのサブツリー（ファイルに対応するB+ツリー）は、ファイルシステムに対応するB+ツリーを使用することにより取得されてもよい。同様に、ファイルに対応するB+ツリーはまた、様々なレベルのインデックスと、複数のリーフノードとを含む。各リーフノードは、KVペアを記憶し、Keyフィールド及びValueフィールドの定義は、前述の表に示すものと同じである。１つのファイルは、複数のデータブロックにより形成され、従って、ファイルのサブツリーにおいてValueフィールドに記憶された物理アドレスは、１つ以上のデータブロックのメタデータに向けられてもよい。
【００５２】
以下に、本発明の実施例のファイルマイグレーション方法の手順を説明する。本発明のこの実施例のファイルマイグレーション方法は、図２に示すストレージデバイスに適用されてもよい。図５は、本発明の実施例のファイルマイグレーション方法のフローチャートである。図５に示すように、この方法は以下を含む。
【００５３】
ステップS301A：プロセッサ118は、ターゲットファイルのメタデータのスナップショットを取得する。ターゲットファイルは、複数のデータブロックを含み、スナップショットは、複数のデータブロックの論理アドレス及び複数のデータブロックの第１の書き込み時点を含み、第１の書き込み時点は、スナップショットに記録された、データブロックをストレージデバイスに書き込む時点を示す。
【００５４】
図４に示すB+ツリーを参照すると、ターゲットファイルのメタデータは、ファイルに対応するB+ツリーに記憶され、B+ツリーの各リーフノードは、Key-Value（KV）ペアを記憶する。Keyフィールドは、各データブロックの論理アドレスを記憶するための検索値として使用され、Valueフィールドは、各データブロックの物理アドレスと、各データブロックをストレージデバイス20に書き込む時点とを記憶するための値として使用される。
【００５５】
任意選択で、ステップS301Aは、予め設定された時点が到達した場合、又はファイルマイグレーション命令が受信された場合に実行されてもよい。詳細については、図３のトリガー2142及び関係する説明を参照し、ここでは詳細について再び説明しない。
【００５６】
ステップS301Aにおいて、プロセッサ118は、ターゲットファイルのメタデータのスナップショットを生成する必要がある。スナップショットは、具体的な書き込み時点（コピーを開始する書き込み時点）における対応するデータのイメージを示す。スナップショットが生成された後に、ターゲットファイルのメタデータについてフリーズフレーム（freeze-frame）イメージが生成されてもよい。このイメージは変更されない。図４を参照すると、ターゲットファイルのメタデータは、図４に示すファイルに対応するB+ツリーに従って整理される。図６に示すように、ターゲットファイルのメタデータのスナップショットは、ファイルに対応するフリーズフレームのB+ツリーの他のB+ツリーである。スナップショットが冒頭に生成された場合、データブロックは一時的に変更されない。従って、ターゲットファイルのメタデータに対応するB+ツリー（略して、ファイルに対応するB+ツリー）のルートノードは、スナップショットに対応するB+ツリーのルートノードと異なるが、リーフノードは共有されてもよい。
【００５７】
しかし、スナップショットが生成された後に、プロセッサ118は、データブロックの変更要求を受信してもよい。変更要求は、データブロックを変更するために使用される。プロセッサ118の変更方式は、１つの新たなストレージ空間を変更データブロックに割り当て、変更データブロックを新たに割り当てられたストレージ空間に書き込み、変更データブロックが成功して書き込まれた後に、変更前のデータブロックが位置するストレージ空間を解放することである。
【００５８】
次に、対応して、プロセッサ118は、変更要求に従ってKVを生成し、新たに生成されたKVを記憶するために、ファイルに対応するB+ツリーにおいて新たなリーフノードを追加してもよい。この場合、新たに生成されたKVのKeyフィールドは、変更データブロックの論理アドレスを依然として記憶する。Valueフィールドの物理アドレスは、変更データブロックが記憶された新たに割り当てられたストレージ空間のアドレスであり、Valueフィールドの書き込み時点は、変更データブロックを新たに割り当てられたストレージ空間に書き込む時点を示す。論理アドレスは変化しないため、書き込み時点は、論理アドレスが向けられたデータブロックの最新の書き込み時点である。新たなリーフノードは、ファイルに対応するB+ツリーのリーフノードであり、スナップショットに対応するB+ツリーと共有されないことが認識され得る。従って、ファイルに対応するB+ツリー及びスナップショットに対応するB+ツリーは、いくつかのリーフノードを共有するが、ファイルに対応するB+ツリーのValueフィールドに記憶された書き込み時点により示される意味は、スナップショットに対応するB+ツリーに記憶された書き込み時点により示される意味とは異なる。２つの書き込み時点を区別するために、この実施例では、スナップショットに対応するB+ツリーに記憶された書き込み時点は、第１の書き込み時点と呼ばれ、ファイルに対応するB+ツリーに記憶された書き込み時点は、第２の書き込み時点と呼ばれる。第１の書き込み時点は、スナップショットに記録された、データブロックをストレージデバイスに書き込む時点を示し、第２の書き込み時点は、データブロックの最新の書き込み時点を示す。
【００５９】
ステップS301B：プロセッサ118は、複数のデータブロックの論理アドレス及び複数のデータブロックの第１の書き込み時点から、ターゲットデータブロックの論理アドレス及びターゲットデータブロックの第１の書き込み時点を識別する。
【００６０】
この実施例では、説明を容易にするために、ターゲットファイルの１つのデータブロックが、マイグレーション手順を説明するための例として使用され、このデータブロックは、ターゲットデータブロックと呼ばれる。ターゲットデータブロックを除くターゲットファイルの他のデータブロックも、同じ方法を使用することによりマイグレーションされることが認識され得る。
【００６１】
スナップショットに対応するB+ツリーは、ターゲットファイルに含まれる各データブロックのKVを記憶するため、スナップショットに対応するB+ツリーが取得された後に、ターゲットファイルに含まれる各データブロックのKVが取得される。プロセッサ118は、ターゲットデータブロックに対応するKVを取得するために、各データブロックに対応するKVにおいてスキャニングを実行してもよい。Keyフィールドは、ターゲットデータブロックの論理アドレスを含み、Valueフィールドは、ターゲットデータブロックの第１の書き込み時点を含む。
【００６２】
ステップS302：プロセッサ118は、ターゲットデータブロックの論理アドレスに従って、ターゲットファイルのメタデータからターゲットデータブロックの論理アドレスに対応する第２の書き込み時点を取得する。ターゲットファイルのメタデータは、ターゲットデータブロックの論理アドレス及び第２の書き込み時点を含み、第２の書き込み時点は、ターゲットデータブロックをストレージデバイスに書き込む最新の時点を示す。
【００６３】
ステップS302において、ターゲットファイルのメタデータは、ファイルに対応するB+ツリーを示す。ステップS301Aにおいて、ターゲットデータブロックの論理アドレスが取得され、従って、論理アドレスに対応するKVは、論理アドレスに従ってファイルに対応するB+ツリーを検索することにより取得されてもよい。Keyフィールドは、論理アドレスを記憶するために使用され、Valueフィールドは、第２の書き込み時点を記憶するために使用される（ステップS301Aの説明を参照）。従って、第２の書き込み時点が更に取得されてもよい。
【００６４】
ステップS303：プロセッサ118は、第１の書き込み時点が第２の書き込み時点と同じであると決定された場合、ターゲットデータブロックを予め割り当てられた連続的なストレージ空間にマイグレーションする。
【００６５】
具体的に、プロセッサ118が第１の書き込み時点及び第２の書き込み時点を取得した後に、これら２つが同じであるか否かが決定されてもよい。これら２つが同じである場合、これは、スナップショットが生成された後にターゲットデータブロックが変更されないことを示し、従って、ターゲットデータブロックが予め割り当てられた連続的なストレージ空間にマイグレーションされてもよい。これら２つが異なる場合、これは、スナップショットが生成された後にターゲットデータブロックが変更され、変更データブロックが新たなストレージ空間に既に書き込まれたことを示し、このようなターゲットデータブロックは、マイグレーションされる必要はない。
【００６６】
従って、予め割り当てられた連続的なストレージ空間は、ステップS301Aが実行される前に割り当てられてもよく、ステップS301Aの後且つステップ303の前に割り当てられてもよい。具体的に、連続的な空間のサイズは、ターゲットファイルのマイグレーションされたデータブロックを記憶するのに十分な空間が存在し、これにより、デフラグの目的を達成するように、ターゲットファイルのサイズ未満でないことが必要である。ストレージ空間の割り当て方式は、十分なストレージ空間を一度に割り当てることでもよく、ストレージ空間を複数回割り当てることでもよい。割り当てられたストレージ空間の合計サイズは、ターゲットファイルのサイズ未満ではない。
【００６７】
本発明のこの実施例では、ストレージデバイスは、ターゲットファイルのメタデータのスナップショットを取得し、スナップショットは、複数のデータブロックの論理アドレス及び第１の書き込み時点を含み、第１の書き込み時点は、スナップショットに記録された、データブロックをストレージデバイスに書き込む時点を示し、複数のデータブロックの論理アドレス及び複数のデータブロックの第１の書き込み時点から、ターゲットデータブロックの論理アドレス及びターゲットデータブロックの第１の書き込み時点を識別し、論理アドレスに従って、ターゲットファイルのメタデータから論理アドレスに対応する第２の書き込み時点を取得し、第２の書き込み時点は、ターゲットデータブロックをストレージデバイスに書き込む最新の時点を示し、第１の書き込み時点が第２の書き込み時点と同じである場合、これは、スナップショットが生成された後にターゲットデータブロックが変更されないことを示し、ターゲットデータブロックを予め割り当てられた連続的なストレージ空間にマイグレーションする。これにより、ディスクデフラグの目的を達成する。更に、本発明のこの実施例では、ターゲットファイルは、マイグレーション処理中にロックされる必要はない。スナップショットが生成された後に変更されないデータブロックを取得するため、ターゲットファイルのメタデータのスナップショットが取得され、変更されないデータブロックは、予め割り当てられた連続的なストレージ空間にマイグレーションされる。或る程度、本発明のこの実施例のファイルマイグレーション処理中に、ユーザによるファイルアクセスは影響を受けない可能性があり、これにより、ファイルアクセス効率を改善する。
【００６８】
前述のステップS303において、予め割り当てられたストレージ空間は、大きい連続的なストレージ空間であり、予め割り当てられたストレージ空間のサイズは、ターゲットファイルのサイズ未満ではない。従って、ターゲットデータブロックが予め割り当てられたストレージ空間に書き込まれる前に、物理アドレスは、ストレージ空間においてターゲットデータブロックに割り当てられる必要があり、物理アドレスが割り当てられた後に、ターゲットデータブロックは、物理アドレスに対応するストレージ空間に書き込まれる。
【００６９】
次に、対応して、図５に示すファイルマイグレーション方法は以下を更に含んでもよい。
【００７０】
ステップS304：プロセッサ118は、ターゲットデータブロックの論理アドレスと、マイグレーション後の物理アドレスと、ターゲットデータブロックを物理アドレスに対応するストレージ空間に書き込む時点とを、ファイルに対応するB+ツリーに記憶する。
【００７１】
ここで、ターゲットデータブロックを物理アドレスに対応するストレージ空間に書き込む時点は、ターゲットデータブロックをストレージデバイスに書き込む最新の時点、すなわち、前述の第２の書き込み時点を示すことが認識され得る。
【００７２】
図６を参照すると、ステップS304は、具体的に、新たなリーフノードを生成し、新たなリーフノードをファイルに対応するB+ツリーに追加し、新たなリーフノードとファイルに対応するB+ツリーのルートノードとの間の様々なレベルのインデックスを変更することでもよい。新たなリーフノードは、新たなKVを記憶するために使用され、Keyフィールドは、論理アドレスを記憶するために使用され、Valueフィールドは、マイグレーション後の物理アドレスと、ターゲットデータブロックを物理アドレスに対応するストレージ空間に書き込む時点とを記憶するために使用される。ここで、時点は、厳密な意味での時点でなくてもよく、割り当てられたシリアル番号又は他の形式でもよい点に留意すべきである。
【００７３】
更に、図５に示すファイルマイグレーション方法は以下を更に含んでもよい。
【００７４】
論理アドレスに従ってターゲットファイルのメタデータから論理アドレスに対応する第２の書き込み時点を取得した場合、プロセッサ118は、論理アドレスに対応する第２の書き込み時点が取得された後、且つ、物理アドレスがストレージ空間においてターゲットデータブロックに割り当てられる前に、論理アドレス及び第２の書き込み時点が変更できないように、論理アドレス及び第２の書き込み時点においてロック動作を実行する。
【００７５】
この実施例では、論理アドレス及び第２の書き込み時点においてロック動作を実行することは、具体的に、ファイルに対応するB+ツリーで、論理アドレスに対応するKVが位置するリーフノードにおいてロック動作を実行することでもよい。ロック動作を実行する目的は、ターゲットデータブロックが変更されることを妨げることである。具体的なロック動作は、様々な既存のロックアルゴリズムを使用することにより実現されてもよく、ここでは詳細について説明しない。
【００７６】
対応して、この実施例は、プロセッサ118により、論理アドレス及び第２の書き込み時点においてロック解除動作を実行することを更に含んでもよい。ロック解除動作が実行された後に、ターゲットデータブロックは変更されてもよい。
【００７７】
ロック解除動作がステップS304の後に実行されるという条件で、ロック解除のタイミングは、この実施例では限定されない点に留意すべきである。ロック解除動作は、プロセッサ118がターゲットデータブロックを物理アドレスに対応するストレージ空間に書き込む前に実行されてもよく、或いは、プロセッサ118がターゲットデータブロックを物理アドレスに対応するストレージ空間に書き込んだ後に実行されてもよい。
【００７８】
論理アドレス及び第２の書き込み時点におけるロック動作の実行と、論理アドレス及び第２の書き込み時点におけるロック解除動作の実行との間の期間中に、ターゲットデータブロックのメタデータとしての論理アドレス及び第２の書き込み時点は変更できないことが認識され得る。これは、ターゲットデータブロックが変更できないことを意味する。例えば、この期間中に、プロセッサ118がターゲットデータブロックを変更するために使用される変更要求を受信した場合、変更要求の実行は、ロック解除動作が論理アドレス及び第２の書き込み時点において実行される前に一時停止される。変更要求は、本発明のこの実施例において単なる例であり、他のアクセス要求、例えば、読み取り要求の実行も一時停止される点に留意すべきである。
【００７９】
しかし、ターゲットファイルについて、論理アドレス及び第２の書き込み時点におけるロック動作の実行と、論理アドレス及び第２の書き込み時点におけるロック解除動作の実行との間の期間中に、ターゲットデータブロックが変更できないが、ターゲットデータブロックを除く他のデータブロックの変更要求又は他のアクセス要求は、依然として受信されてもよい。本発明のこの実施例では、ロックされる対象は、ターゲットデータブロックのメタデータであり、他のデータブロックは影響を受けない。このように、本発明のこの実施例のファイルマイグレーション方法を使用することにより、マイグレーションされるファイルのユーザアクセスはできる限り影響を受けず、これにより、ユーザ体験を改善する。
【００８０】
ターゲットファイルの１つのデータブロックをマイグレーションすることが、図５に示すファイルマイグレーション方法を説明する例として使用される。ターゲットファイルの全てのデータブロックのマイグレーションが同じように完了した後に、ターゲットファイルの単位でのデフラグ作業も完了する。
【００８１】
ディスク空間のデフラグ作業の単位は、ファイルでもよく、ディレクトリでもよい。ディレクトリの単位でのデフラグ手順は、図５に示すファイルの単位でのデフラグ手順と同様であり、ここでは詳細について再び説明しない。
【００８２】
更に、ストレージデバイス20に記憶された全てのファイルも、ディスク空間のデフラグ作業の単位として使用されてもよい。このシナリオでは、図５に示す方法の手順は、全てのファイルのマイグレーションが完了するまで循環的に実行されてもよい。或いは、システムリソースを低減するために、ステップS301Aにおいて、全てのファイルのメタデータ（すなわち、図４に示すファイルシステムに対応するB+ツリー）のスナップショットが取得されてもよく、全てのデータブロックのマイグレーションが完了するまで、スナップショットに記録された各ファイルの各データブロックのKVが順次に取得される。この具体的な手順は、図５に示す実施例のものと同様であり、ここでは詳細について再び説明しない。
【００８３】
図３を参照して、以下に、本発明の実施例によるファイルマイグレーション装置を説明する。この装置は、ストレージデバイスに位置し、ストレージデバイスは、ターゲットファイルを記憶し、ターゲットファイルは、複数のデータブロックを含む。ファイルマイグレーション装置は、図３に示すファイルシステム210と同じ構成を有する。具体的に、ファイルマイグレーション装置は、デフラグモジュール214を含み、デフラグモジュール214は、スナップショット取得モジュール2140と、アドレスマッピングモジュール2145と、マイグレーションモジュール2144とを含む。
【００８４】
スナップショット取得モジュール2140は、ターゲットファイルのメタデータのスナップショットを取得するように構成され、スナップショットは、複数のデータブロックの論理アドレス及び複数のデータブロックの第１の書き込み時点を含み、第１の書き込み時点は、スナップショットに記録された、データブロックをストレージデバイスに書き込む時点を示す。
【００８５】
アドレスマッピングモジュール2145は、ターゲットファイルのメタデータのスナップショット及びターゲットファイルのメタデータを記憶するように構成される。
【００８６】
スナップショット取得モジュール2140は、複数のデータブロックの論理アドレス及び複数のデータブロックの第１の書き込み時点から、ターゲットデータブロックの論理アドレス及びターゲットデータブロックの第１の書き込み時点を識別するように更に構成される。
【００８７】
マイグレーションモジュール2144は、ターゲットデータブロックの論理アドレスに従って、アドレスマッピングモジュールに記憶されたターゲットファイルのメタデータからターゲットデータブロックの論理アドレスに対応する第２の書き込み時点を取得するように構成され、ターゲットファイルのメタデータは、ターゲットデータブロックの論理アドレス及び第２の書き込み時点を含み、第２の書き込み時点は、ターゲットデータブロックをストレージデバイスに書き込む最新の時点を示す。
【００８８】
マイグレーションモジュール2144は、第１の書き込み時点が第２の書き込み時点と同じであると決定された場合、ターゲットデータブロックを予め割り当てられた連続的なストレージ空間にマイグレーションするように更に構成される。
【００８９】
任意選択で、ファイルマイグレーション装置は、連続的なストレージ空間を予め割り当てるように構成された空間管理モジュール212を更に含み、ストレージ空間のサイズは、ターゲットファイルのサイズ未満ではない。
【００９０】
任意選択で、マイグレーションモジュール2144は、ストレージ空間において物理アドレスをターゲットデータブロックに割り当てるように更に構成される。マイグレーションモジュール2144は、ストレージ空間において物理アドレスがターゲットデータブロックに割り当てられた後に、物理アドレスと、ターゲットデータブロックを物理アドレスに対応するストレージ空間に書き込む時点とを、ターゲットファイルのメタデータに記憶するように更に構成される。
【００９１】
任意選択で、マイグレーションモジュール2144は、ターゲットデータブロックの論理アドレスに対応する第２の書き込み時点が取得された後、且つ、物理アドレスと、ターゲットデータブロックを物理アドレスに対応するストレージ空間に書き込む時点とがターゲットファイルのメタデータに記憶される前に、ターゲットデータブロックの論理アドレス及び第２の書き込み時点が変更できないように、ターゲットデータブロックの論理アドレス及び第２の書き込み時点においてロック動作を実行するように更に構成される。
【００９２】
任意選択で、デフラグモジュール214は、トリガー2142を更に含む。
【００９３】
トリガー2142は、予め設定された時点を設定するように或いはファイルマイグレーション命令を受信するように構成される。
【００９４】
対応して、スナップショット取得モジュール2140は、予め設定された時点が到達した場合、又はファイルマイグレーション命令が受信された場合、ターゲットファイルのメタデータのスナップショットを取得するように具体的に構成される。
【００９５】
図３を参照して、以下に、どのようにモジュールがデフラグ作業を実現するために相互に協調するかを説明するための具体的な例を使用する。
【００９６】
図７Ａ及び図７Ｂを参照すると、図７Ａ及び図７Ｂは、ファイルの単位でのデフラグの概略フローチャートである。以下のステップに記載するファイルは、図５に示すファイルマイグレーション手順におけるターゲットファイルでもよく、以下のステップに記載するモジュールの定義及び機能は、図３に示すモジュールのものと同じである。図７Ａ及び図７Ｂに示すように、この方法は以下を含む。
【００９７】
ステップS401：デフラグタスクが定期的にトリガーされる。
【００９８】
例えば、ユーザは、タイマを使用することによりデフラグタスクを定期的にトリガーしてもよく、或いは、ユーザは、デフラグタスクを手動で開始する。
【００９９】
ステップS402：トリガー2142は、整理及び制御モジュール2143に対してデフラグタスクを開始するように命令するために、命令を整理及び制御モジュール2143に送出する。
【０１００】
ステップS403：整理及び制御モジュール2143は、ファイルのメタデータを求めてアドレスマッピングモジュール2145に記憶されたアドレスマッピングツリーを検索することを要求するために、クエリ命令をアドレスマッピングモジュール2145に送出する。
【０１０１】
具体的に、アドレスマッピングツリーのファイルのメタデータは、図４又は図６に示すファイルに対応するB+ツリーでもよい。
【０１０２】
ステップS404：アドレスマッピングモジュール2145は、ファイルのメタデータについての情報を整理及び制御モジュール2143に返信する。この情報は、ファイルシステムにおけるファイルのメタデータの位置情報でもよい。
【０１０３】
ステップS405：整理及び制御モジュール2143は、ファイルのメタデータのスナップショットを生成することを要求するために、スナップショット生成命令をスナップショットアダプタ2141に送出する。スナップショット生成命令は、ファイルのメタデータについての情報を含んでもよい。
【０１０４】
ステップS406：スナップショットアダプタ2141は、スナップショット生成命令をスナップショットモジュール211に転送する。
【０１０５】
ステップS407：スナップショットモジュール211は、ファイルのメタデータのスナップショットを生成してスナップショットをアドレスマッピングモジュール2145に記憶するために、アドレスマッピングモジュール2145にアクセスする。
【０１０６】
具体的に、スナップショットモジュール211は、ファイルのメタデータについての情報に従って、アドレスマッピングモジュール2145においてファイルのメタデータを見つけて、スナップショットを生成してもよい。スナップショットを生成する方式については、図５に示すファイルマイグレーション手順のステップS301Aの説明を参照し、ここでは詳細について再び説明しない。
【０１０７】
ステップS408：アドレスマッピングモジュール2145は、ファイルのメタデータのスナップショットが成功して生成及び記憶されたことを示すために、スナップショット生成命令の応答要求をスナップショットモジュール211に返信する。
【０１０８】
更に、応答要求は、スナップショットについての情報を含み、スナップショットについての情報は、アドレスマッピングモジュール2145に記憶されたスナップショットのアドレスのような情報を含む。
【０１０９】
ステップS409：スナップショットモジュール211は、ファイルのメタデータのスナップショットが成功して生成及び記憶されたことを示すために、スナップショット生成命令の応答要求をスナップショットアダプタ2141に返信する。
【０１１０】
更に、応答要求は、ステップS408におけるスナップショットについての情報を含む。
【０１１１】
ステップS410：スナップショットアダプタ2141は、スナップショットについての情報を記憶する。
【０１１２】
ステップS411：スナップショットアダプタ2141は、スナップショットが成功して生成及び記憶されたことを示すために、スナップショット生成命令の応答要求を整理及び制御モジュール2143に返信する。
【０１１３】
ステップS412：整理及び制御モジュール2143は、ファイルマイグレーション命令をマイグレーションモジュール2144に送出する。
【０１１４】
ステップS413：マイグレーションモジュール2144は、連続的なストレージ空間を申請するために、空間申請命令を空間管理モジュール212に送出する。連続的なストレージ空間のサイズは、ファイルのサイズ未満ではない。
【０１１５】
具体的に、このステップの実現については、図５に示すファイルマイグレーション手順のステップS303の説明を参照し、ここでは詳細について再び説明しない。
【０１１６】
ステップS414：空間管理モジュール212は、ストレージ空間が成功して割り当てられたことを示すために、空間割り当て命令の応答要求をマイグレーションモジュール2144に返信する。
【０１１７】
ステップS415：マイグレーションモジュール2144は、スナップショットをスキャニングすることを要求するために、スキャニング要求をスナップショットアダプタ2141に送出する。
【０１１８】
ステップS416：スナップショットアダプタ2141は、第１のKVを取得するために、クエリ命令をアドレスマッピングモジュール2145に送出する。
【０１１９】
具体的に、クエリ命令は、スナップショットについての情報を含む。スナップショットについての情報は、アドレスマッピングモジュール2145に記憶されたスナップショットのアドレスを含み、従って、アドレスマッピングモジュール2145は、アドレスに従ってファイルのメタデータのスナップショットをスナップショットアダプタ2141に送出してもよい。図５に示す実施例のステップS301Aにおいて、ファイルのメタデータのスナップショットは、スナップショットに対応するB+ツリーを示し、スナップショットアダプタ2141は、第１のデータブロックのKV（略して第１のKV）を取得するために、B+ツリーのルートノードから検索を開始してもよいことが理解され得る。データブロックのKVについては、図５に示すファイルマイグレーション手順のステップS301Aにおけるターゲットデータブロックに対応するKVの説明を参照し、ここでは詳細について再び説明しない。
【０１２０】
ステップS417：スナップショットアダプタ2141は、第１のKVをマイグレーションモジュール2144に送出する。
【０１２１】
ステップS418：マイグレーションモジュール2144は、ファイルのメタデータのKVにおいてロック動作を実行する。
【０１２２】
ステップS419：マイグレーションモジュール2144は、ファイルのメタデータのKVを取得するために、クエリ命令をアドレスマッピングモジュール2145に送出する。
【０１２３】
第１のKVのKeyフィールドは、論理アドレスを記憶し、従って、マイグレーションモジュール2144は、論理アドレスに対応するファイルのメタデータのKVを取得するために、論理アドレスに従ってアドレスマッピングモジュール2145に問い合わせてもよい。
【０１２４】
詳細については、図５に示すファイルマイグレーション手順のステップS302の説明を参照し、ここでは詳細について再び説明しない。
【０１２５】
ステップS420：アドレスマッピングモジュール2145は、取得された論理アドレスに対応するファイルのメタデータのKVをマイグレーションモジュール2144に返信する。
【０１２６】
ステップS421：マイグレーションモジュール2144は、第１の書き込み時点が第２の書き込み時点と同じであるか否かを決定する。
【０１２７】
詳細については、図５に示すファイルマイグレーション手順のステップS303の説明を参照し、ここでは詳細について再び説明しない。
【０１２８】
ステップS422：第１の書き込み時点及び第２の書き込み時点が同じである場合、マイグレーションモジュール2144は、ファイルのメタデータを更新するために、更新命令をアドレスマッピングモジュール2145に送出する。
【０１２９】
詳細については、図５に示すファイルマイグレーション手順のステップS304の説明を参照し、ここでは詳細について再び説明しない。
【０１３０】
ステップS423：アドレスマッピングモジュール2145は、ファイルのメタデータが成功して更新されたことを示すために、更新命令の応答要求をマイグレーションモジュール2144に返信する。
【０１３１】
ステップS424：マイグレーションモジュール2144は、ファイルのメタデータのKVにおいてロック解除動作を実行する。
【０１３２】
詳細については、図５に示すファイルマイグレーション手順のステップS305の説明を参照し、ここでは詳細について再び説明しない。
【０１３３】
更に、第１の書き込み時点及び第２の書き込み時点が異なる場合、ステップS425：KVにおいて動作を実行しないことを実行し、ステップS426：KVをロック解除することを実行する。
【０１３４】
ステップS416からステップS426は、全てのKVが処理されるまで循環的に実行される点に留意すべきである。
【０１３５】
全てのKVが処理された後に、ステップS427：スナップショットアダプタ2141がスキャニング完了命令をマイグレーションモジュール2144に送出することを実行する。
【０１３６】
ステップS428：マイグレーションモジュール2144は、ファイルマイグレーションが完了したことを整理及び制御モジュール2143にフィードバックする。
【０１３７】
ステップS429：整理及び制御モジュール2143は、スナップショット削除命令をスナップショットアダプタ2141に送出する。
【０１３８】
ステップS430：スナップショットアダプタ2141は、ファイルのメタデータのスナップショットを削除するために、スナップショット削除命令をスナップショットモジュール211に転送する。
【０１３９】
本発明のこの実施例では、ストレージデバイスは、ターゲットファイルのメタデータのスナップショットを取得し、スナップショットは、複数のデータブロックの論理アドレス及び第１の書き込み時点を含み、第１の書き込み時点は、スナップショットに記録された、データブロックをストレージデバイスに書き込む時点を示し、複数のデータブロックの論理アドレス及び複数のデータブロックの第１の書き込み時点から、ターゲットデータブロックの論理アドレス及びターゲットデータブロックの第１の書き込み時点を識別し、論理アドレスに従って、ターゲットファイルのメタデータから論理アドレスに対応する第２の書き込み時点を取得し、第２の書き込み時点は、ターゲットデータブロックをストレージデバイスに書き込む最新の時点を示し、第１の書き込み時点が第２の書き込み時点と同じである場合、これは、スナップショットが生成された後にターゲットデータブロックが変更されないことを示し、ターゲットデータブロックを予め割り当てられた連続的なストレージ空間にマイグレーションする。これにより、ディスクデフラグの目的を達成する。更に、本発明のこの実施例では、ターゲットファイルは、マイグレーション処理中にロックされる必要はない。スナップショットが生成された後に変更されないデータブロックを取得するため、ターゲットファイルのメタデータのスナップショットが取得され、変更されないデータブロックは、予め割り当てられた連続的なストレージ空間にマイグレーションされる。或る程度、本発明のこの実施例のファイルマイグレーション処理中に、ユーザによるファイルアクセスは影響を受けない可能性があり、これにより、ファイルアクセス効率を改善する。
【０１４０】
当業者は、本発明の各態様又は各態様の可能な実現方式がシステム、方法又はコンピュータプログラムプロダクトとして具体的に実現されてもよいことを認識し得る。従って、本発明の各態様又は各態様の可能な実現方式は、ハードウェアのみの実施例、ソフトウェアのみの実施例（ファームウェア、常駐ソフトウェア等を含む）、又はソフトウェアとハードウェアとの組み合わせの実施例の形式を使用してもよい。これらは、ここでは一律に“回路”、“モジュール”又は“システム”と呼ばれる。更に、本発明の各態様又は各態様の可能な実現方式は、コンピュータプログラムプロダクトの形式になってもよい。コンピュータプログラムプロダクトは、コンピュータ読み取り可能な媒体に記憶されたコンピュータ読み取り可能なプログラムコードを示す。
【０１４１】
コンピュータ読み取り可能な媒体は、コンピュータ読み取り可能な信号媒体又はコンピュータ読み取り可能な記憶媒体でもよい。コンピュータ読み取り可能な記憶媒体は、ランダムアクセスメモリ（RAM）、読み取り専用メモリ（ROM）、消去可能プログラム可能読み取り専用メモリ（EPROM又はフラッシュメモリ）、光ファイバ及びコンパクトディスク読み取り専用メモリ（CD-ROM）のような、電子、磁気、光学、電磁気、赤外線若しくは半導体システム、デバイス若しくは装置、又はこれらのいずれか適切な組み合わせを含み、これらに限定されない。
【０１４２】
コンピュータのプロセッサは、コンピュータ読み取り可能な媒体に記憶されたコンピュータ読み取り可能なプログラムコードを読み取り、これにより、プロセッサは、フローチャートの各ステップ又はステップの組み合わせで指定された機能及び動作を実行することができ、ブロック図の各ブロック又はブロックの組み合わせで指定された機能及び動作を実現するように装置が生成される。
【０１４３】
全てのコンピュータ読み取り可能なプログラムコードは、ユーザコンピュータで実行されてもよく、いくつかがスタンドアローンのソフトウェアパッケージとしてユーザコンピュータで実行されてもよく、いくつかがリモートコンピュータで実行されつつ、いくつかがユーザのコンピュータで実行されてもよい。或いは、全てのコードがリモートコンピュータ又はサーバで実行されてもよい。また、或る別の実現対策では、フローチャートの各ステップ又はブロック図の各ブロックで指定された機能は、図示の順序で行われなくてもよい点に留意すべきである。例えば、関与する機能に依存する図面の２つの連続するステップ又は２つのブロックは、実際に実質的に同時に実行されてもよく、これらのブロックは場合によって逆の順序で実行されてもよい。
【０１４４】
当業者は、この明細書に開示された実施例に記載の例と組み合わせて、ユニット及びアルゴリズムのステップが電子ハードウェア又はコンピュータソフトウェアと電子ハードウェアとの組み合わせにより実現されてもよいことを認識し得る。機能がハードウェアにより実行されるかソフトウェアにより実行されるかは、技術的対策の特定の用途及び設計上の制約条件に依存する。当業者は、特定の用途毎に記載の機能を実現するために異なる方法を使用してもよいが、この実現は、本発明の範囲を超えるものとして考えられるべきではない。
【０１４５】
前述の説明は、本発明の単に具体的な実現方式に過ぎず、本発明の保護範囲を限定することを意図するものではない。本発明に開示された技術的範囲内で当業者により容易に把握される如何なる変更又は置換も、本発明の保護範囲内に入るものとする。従って、本発明の保護範囲は、特許請求の範囲の保護範囲に従うものとする。
【図１】
2016535910.tif 000004
【図２】
2016535910.tif 000005
【図３】
2016535910.tif 000006
【図４】
2016535910.tif 000007
【図５】
2016535910.tif 000008
【図６】
2016535910.tif 000009
【図７Ａ】
2016535910.tif 000010
【図７Ｂ】
2016535910.tif 000011
【手続補正書】
【提出日】平成28年3月1日(2016.3.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ファイルマイグレーション方法であり、前記方法は、ストレージデバイスに適用され、前記ストレージデバイスは、ターゲットファイルを記憶し、前記ターゲットファイルは、複数のデータブロックを有する方法であって、
前記ストレージデバイスにより、前記ターゲットファイルのメタデータのスナップショットを取得するステップであり、前記スナップショットは、前記複数のデータブロックの論理アドレス及び前記複数のデータブロックの第１の書き込み時点を有し、前記第１の書き込み時点は、前記スナップショットに記録された、前記データブロックを前記ストレージデバイスに書き込む時点を示すステップと、
前記複数のデータブロックの前記論理アドレス及び前記複数のデータブロックの前記第１の書き込み時点から、ターゲットデータブロックの論理アドレス及び前記ターゲットデータブロックの第１の書き込み時点を識別するステップと、
前記ターゲットデータブロックの前記論理アドレスに従って、前記ターゲットファイルの前記メタデータから前記ターゲットデータブロックの前記論理アドレスに対応する第２の書き込み時点を取得するステップであり、前記ターゲットファイルの前記メタデータは、前記ターゲットデータブロックの前記論理アドレス及び前記第２の書き込み時点を有し、前記第２の書き込み時点は、前記ターゲットデータブロックを前記ストレージデバイスに書き込む最新の時点を示すステップと、
前記第１の書き込み時点が前記第２の書き込み時点と同じであると決定された場合、前記ターゲットデータブロックを予め割り当てられた連続的なストレージ空間にマイグレーションするステップと
を有する方法。
【請求項２】
前記連続的なストレージ空間を予め割り当てるステップであり、前記ストレージ空間のサイズは、前記ターゲットファイルのサイズ未満ではないステップを更に有する、請求項１に記載の方法。
【請求項３】
前記ストレージ空間において物理アドレスを前記ターゲットデータブロックに割り当てるステップを更に有し、
前記ターゲットデータブロックを予め割り当てられた連続的なストレージ空間にマイグレーションするステップは、前記ターゲットデータブロックを前記物理アドレスに対応するストレージ空間に書き込むステップを有する、請求項１又は２に記載の方法。
【請求項４】
前記ストレージ空間において物理アドレスを前記ターゲットデータブロックに割り当てた後に、
前記物理アドレスと、前記ターゲットデータブロックを前記物理アドレスに対応する前記ストレージ空間に書き込む時点とを、前記ターゲットファイルの前記メタデータに記憶するステップを更に有する、請求項３に記載の方法。
【請求項５】
前記ターゲットデータブロックの前記論理アドレスに対応する前記第２の書き込み時点が、前記ターゲットデータブロックの前記論理アドレスに従って、前記ターゲットファイルの前記メタデータから取得された場合、
前記ターゲットデータブロックの前記論理アドレスに対応する前記第２の書き込み時点が取得された後、且つ、前記物理アドレスと、前記ターゲットデータブロックを前記物理アドレスに対応する前記ストレージ空間に書き込む前記時点とが前記ターゲットファイルの前記メタデータに記憶される前に、前記ターゲットデータブロックの前記論理アドレス及び前記第２の書き込み時点が変更できないように、前記ターゲットデータブロックの前記論理アドレス及び前記第２の書き込み時点においてロック動作を実行するステップを更に有する、請求項４に記載の方法。
【請求項６】
前記ストレージデバイスにより、前記ターゲットファイルのメタデータのスナップショットを取得するステップは、
前記ストレージデバイスにより、予め設定された時点が到達した場合、又はファイルマイグレーション命令が受信された場合、前記ターゲットファイルの前記メタデータの前記スナップショットを取得するステップを有する、請求項１ないし５のうちいずれか１項に記載の方法。
【請求項７】
ファイルマイグレーション装置であり、前記装置は、ストレージデバイスに位置し、前記ストレージデバイスは、ターゲットファイルを記憶し、前記ターゲットファイルは、複数のデータブロックを有し、前記装置は、デフラグモジュールを有する装置であって、
前記デフラグモジュールは、
前記ターゲットファイルのメタデータのスナップショットを取得するように構成されたスナップショット取得モジュールであり、前記スナップショットは、前記複数のデータブロックの論理アドレス及び前記複数のデータブロックの第１の書き込み時点を有し、前記第１の書き込み時点は、前記スナップショットに記録された、前記データブロックを前記ストレージデバイスに書き込む時点を示すスナップショット取得モジュールと、
前記ターゲットファイルの前記メタデータの前記スナップショット及び前記ターゲットファイルの前記メタデータを記憶するように構成されたアドレスマッピングモジュールと
を有し、
前記スナップショット取得モジュールは、前記複数のデータブロックの前記論理アドレス及び前記複数のデータブロックの前記第１の書き込み時点から、ターゲットデータブロックの論理アドレス及び前記ターゲットデータブロックの第１の書き込み時点を識別するように更に構成され、
前記デフラグモジュールは、
前記ターゲットデータブロックの前記論理アドレスに従って、前記アドレスマッピングモジュールに記憶された前記ターゲットファイルの前記メタデータから前記ターゲットデータブロックの前記論理アドレスに対応する第２の書き込み時点を取得するように構成されたマイグレーションモジュールであり、前記ターゲットファイルの前記メタデータは、前記ターゲットデータブロックの前記論理アドレス及び前記第２の書き込み時点を有し、前記第２の書き込み時点は、前記ターゲットデータブロックを前記ストレージデバイスに書き込む最新の時点を示すマイグレーションモジュールを有し、
前記マイグレーションモジュールは、前記第１の書き込み時点が前記第２の書き込み時点と同じであると決定された場合、前記ターゲットデータブロックを予め割り当てられた連続的なストレージ空間にマイグレーションするように更に構成される装置。
【請求項８】
前記ファイルマイグレーション装置は、前記連続的なストレージ空間を予め割り当てるように構成された空間管理モジュールであり、前記ストレージ空間のサイズは、前記ターゲットファイルのサイズ未満ではない空間管理モジュールを更に有する、請求項７に記載の装置。
【請求項９】
前記マイグレーションモジュールは、前記ストレージ空間において物理アドレスを前記ターゲットデータブロックに割り当てるように更に構成され、
前記マイグレーションモジュールは、前記ターゲットデータブロックを前記物理アドレスに対応するストレージ空間に書き込むように構成される、請求項７又は８に記載の装置。
【請求項１０】
前記マイグレーションモジュールは、前記ストレージ空間において前記物理アドレスが前記ターゲットデータブロックに割り当てられた後に、前記物理アドレスと、前記ターゲットデータブロックを前記物理アドレスに対応する前記ストレージ空間に書き込む時点とを、前記ターゲットファイルの前記メタデータに記憶するように更に構成される、請求項９に記載の装置。
【請求項１１】
前記マイグレーションモジュールは、前記ターゲットデータブロックの前記論理アドレスに対応する前記第２の書き込み時点が取得された後、且つ、前記物理アドレスと、前記ターゲットデータブロックを前記物理アドレスに対応する前記ストレージ空間に書き込む前記時点とが前記ターゲットファイルの前記メタデータに記憶される前に、前記ターゲットデータブロックの前記論理アドレス及び前記第２の書き込み時点が変更できないように、前記ターゲットデータブロックの前記論理アドレス及び前記第２の書き込み時点においてロック動作を実行するように更に構成される、請求項１０に記載の装置。
【請求項１２】
前記デフラグモジュールは、トリガーを更に有し、
前記トリガーは、予め設定された時点を設定するように或いはファイルマイグレーション命令を受信するように構成され、
前記スナップショット取得モジュールは、前記予め設定された時点が到達した場合、又は前記ファイルマイグレーション命令が受信された場合、前記ターゲットファイルの前記メタデータの前記スナップショットを取得するように構成される、請求項７ないし１１のうちいずれか１項に記載の装置。
【請求項１３】
ストレージデバイスであり、前記ストレージデバイスは、コントローラとディスクとを有し、前記コントローラは、プロセッサと通信インタフェースとを有するストレージデバイスであって、
前記通信インタフェースは、前記ディスクと通信するように構成され、
前記プロセッサは、
ターゲットファイルのメタデータのスナップショットを取得し、前記スナップショットは、複数のデータブロックの論理アドレス及び前記複数のデータブロックの第１の書き込み時点を有し、前記第１の書き込み時点は、前記スナップショットに記録された、前記データブロックを前記ディスクに書き込む時点を示し、
前記複数のデータブロックの前記論理アドレス及び前記複数のデータブロックの前記第１の書き込み時点から、ターゲットデータブロックの論理アドレス及び前記ターゲットデータブロックの第１の書き込み時点を識別し、
前記ターゲットデータブロックの前記論理アドレスに従って、前記ターゲットファイルの前記メタデータから前記ターゲットデータブロックの前記論理アドレスに対応する第２の書き込み時点を取得し、前記ターゲットファイルの前記メタデータは、前記ターゲットデータブロックの前記論理アドレス及び前記第２の書き込み時点を有し、前記第２の書き込み時点は、前記ターゲットデータブロックを前記ディスクに書き込む最新の時点を示し、
前記第１の書き込み時点が前記第２の書き込み時点と同じであると決定された場合、前記ターゲットデータブロックを予め割り当てられた連続的なストレージ空間にマイグレーションするように構成されるストレージデバイス。
【請求項１４】
前記プロセッサは、前記連続的なストレージ空間を予め割り当てるように更に構成され、前記ストレージ空間のサイズは、前記ターゲットファイルのサイズ未満ではない、請求項１３に記載のストレージデバイス。
【請求項１５】
前記プロセッサは、前記ストレージ空間において物理アドレスを前記ターゲットデータブロックに割り当てるように更に構成され、
前記プロセッサは、前記ターゲットデータブロックを前記物理アドレスに対応するストレージ空間に書き込むように構成される、請求項１３又は１４に記載のストレージデバイス。
【請求項１６】
前記プロセッサは、前記ストレージ空間において前記物理アドレスが前記ターゲットデータブロックに割り当てられた後に、前記物理アドレスと、前記ターゲットデータブロックを前記物理アドレスに対応する前記ストレージ空間に書き込む時点とを、前記ターゲットファイルの前記メタデータに記憶するように更に構成される、請求項１５に記載のストレージデバイス。
【請求項１７】
前記プロセッサは、前記ターゲットデータブロックの前記論理アドレスに対応する前記第２の書き込み時点が、前記ターゲットデータブロックの前記論理アドレスに従って、前記ターゲットファイルの前記メタデータから取得された場合、前記ターゲットデータブロックの前記論理アドレスに対応する前記第２の書き込み時点が取得された後、且つ、前記物理アドレスと、前記ターゲットデータブロックを前記物理アドレスに対応する前記ストレージ空間に書き込む前記時点とが前記ターゲットファイルの前記メタデータに記憶される前に、前記ターゲットデータブロックの前記論理アドレス及び前記第２の書き込み時点が変更できないように、前記ターゲットデータブロックの前記論理アドレス及び前記第２の書き込み時点においてロック動作を実行するように更に構成される、請求項１６に記載のストレージデバイス。
【請求項１８】
前記プロセッサは、予め設定された時点が到達した場合、又はファイルマイグレーション命令が受信された場合、前記ストレージデバイスにより前記ターゲットファイルの前記メタデータの前記スナップショットを取得するように構成される、請求項１３ないし１７のうちいずれか１項に記載のストレージデバイス。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００３０
【補正方法】変更
【補正の内容】
【００３０】
ストレージデバイス20は、ネットワーク上でNFS/CIFSプロトコルを使用することにより、アプリケーションサーバ10とのデータ送信を実行してもよく、ストレージデバイス20は、従来技術のファイルシステムを含むいずれか既知のストレージデバイス、例えば、ストレージアレイ又はストレージサーバでもよい。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０１３２
【補正方法】変更
【補正の内容】
【０１３２】
詳細については、図５に示すファイルマイグレーション手順のステップS304の説明を参照し、ここでは詳細について再び説明しない。
【国際調査報告】
2016535910.tif 000012
2016535910.tif 000013
2016535910.tif 000014
2016535910.tif 000015