(57)【特許請求の範囲】
【請求項１】
ストレージシステムに適用されるデータ格納方法であって、前記ストレージシステムは、ストレージデバイスと、ホストとを具備し、前記ストレージデバイスは、第１コントローラを備え、前記第１コントローラは、キャッシュ保護領域と、第１ライトキャッシュとを具備し、前記キャッシュ保護領域は、データ保護機能を提供し、
前記第１コントローラにより実行される前記方法は、
ファイル処理要求を受信するステップと、
前記ファイル処理要求を複数のファイル操作に分割し、それぞれのファイル操作に対してファイル処理を別々に実行し、複数のファイル操作情報を生成するステップと、
前記複数のファイル操作情報が前記ファイル処理要求に対応するデータおよびメタデータのすべてに対応することの決定に基づいて、前記複数のファイル操作情報を前記キャッシュ保護領域に書き込むステップと、
前記第１コントローラに障害が生じた後、再び電源が入った場合、前記キャッシュ保護領域から前記複数のファイル操作情報を復元するステップと、
前記ホストがデータ情報にアクセスできるように、前記複数のファイル操作情報に従って前記データ情報を取得し、前記データ情報を前記第１ライトキャッシュに書き込むステップと、
を具備し、
前記データ情報は、前記ファイル処理要求に対応する前記データと前記メタデータのすべて、または前記ファイル処理要求に対応する前記データと前記メタデータのアドレスのすべてであって、
前記データ情報は、前記ファイル処理要求に対応する前記データと前記メタデータのすべてを格納するために前記キャッシュ保護領域によって使用される形式とは異なる形式で格納され、
前記複数のファイル操作情報のすべてを前記キャッシュ保護領域に書き込む前記ステップは、
それぞれのファイル操作情報のための前記キャッシュ保護領域内の記憶域スペースを要求するステップと、
それぞれのファイル操作情報を前記要求された記憶域スペースに格納するステップと、
前記ファイル処理要求に対応する前記複数のファイル操作情報のすべてが前記キャッシュ保護領域に存在することを示すために、前記要求された記憶域スペースに格納された前記複数のファイル操作情報をデータ構造に編成するステップと、
前記キャッシュ保護領域に前記データ構造を記載した情報を格納するステップと、
を具備することを特徴とするデータ格納方法。
【請求項２】
前記ストレージデバイスは、メモリを備え、前記メモリは、保護領域を具備し、
前記方法は、
前記第１コントローラに障害がある場合、前記キャッシュ保護領域に対応する前記データ構造に従って、前記キャッシュ保護領域が、前記複数のファイル操作情報を具備していると判定するステップと、
電源障害保護プログラムを使用することにより、前記複数のファイル操作情報を前記メモリの前記保護領域に格納するステップと、
をさらに具備することを特徴とする請求項１に記載の方法。
【請求項３】
前記ファイル操作情報に従って、前記データ情報を取得するステップの後に、前記キャッシュ保護領域内に格納されている前記複数のファイル操作情報を削除するステップをさらに具備することを特徴とする請求項１から２のいずれか一項に記載の方法。
【請求項４】
前記ストレージデバイスは、第２コントローラを備えており、前記第２コントローラは、第２ライトキャッシュを具備し、
前記方法は、
前記第２コントローラが、前記複数のファイル操作情報に従って、前記ファイル処理要求に対応するデータ情報を取得し、前記データ情報を前記第２ライトキャッシュに書き込めるように、前記第１コントローラにより、前記複数のファイル操作情報を、前記第２コントローラに送信するステップをさらに具備することを特徴とする請求項１から３のいずれか一項に記載の方法。
【請求項５】
前記第１コントローラにより、前記複数のファイル操作情報を、前記第２コントローラに送信する前記ステップは、
前記第１コントローラにより、第１ミラーメッセージを前記第２コントローラに送信するステップであって、前記第１ミラーメッセージは、前記複数のファイル操作情報を具備する、ステップを含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記第１コントローラにより、前記複数のファイル操作情報を前記第２コントローラに送信する前記ステップは、
前記第１コントローラにより、複数の第２ミラーメッセージを前記第２コントローラに送信するステップであって、前記第２ミラーメッセージのそれぞれは、前記複数のファイル操作情報の１つを具備する、ステップを含むことを特徴とする請求項４に記載の方法。
【請求項７】
データストレージ装置であって、
ファイル処理要求を受信し、前記ファイル処理要求を複数のファイル操作に分割し、それぞれのファイル操作に対してファイル処理を別々に実行し、複数のファイル操作情報を生成するように構成されているファイル処理モジュールと、
前記複数のファイル操作情報が前記ファイル処理要求に対応するデータおよびメタデータのすべてに対応することの決定に基づいて、前記複数のファイル操作情報をキャッシュ保護領域に書き込むように構成されているライティングモジュールと、
第１コントローラに障害が生じた後、再び電源が入った場合、前記キャッシュ保護領域から前記複数のファイル操作情報を復元するように構成されている復元モジュールと、
を具備し、
前記ライティングモジュールは、ホストがデータ情報にアクセスできるように、前記複数のファイル操作情報に従って、前記データ情報を取得し、前記データ情報を第１ライトキャッシュに書き込むようにさらに構成され、
前記データ情報は、前記ファイル処理要求に対応する前記データと前記メタデータのすべて、または前記ファイル処理要求に対応する前記データと前記メタデータのアドレスのすべてであって、
前記データ情報は、前記ファイル処理要求に対応する前記データと前記メタデータのすべてを格納するために前記キャッシュ保護領域によって使用される形式とは異なる形式で格納され、
前記ライティングモジュールは、
それぞれのファイル操作情報のための前記キャッシュ保護領域内の記憶域スペースを要求し、
それぞれのファイル操作情報を前記要求された記憶域スペースに格納し、
前記ファイル処理要求に対応する前記複数のファイル操作情報のすべてが前記キャッシュ保護領域に存在することを示すために、前記要求された記憶域スペースに格納された前記複数のファイル操作情報をデータ構造に編成し、
前記キャッシュ保護領域に前記データ構造を記載した情報を格納する、
ことを特徴とするデータストレージ装置。
【請求項８】
保護モジュールをさらに具備し、
前記保護モジュールは、前記第１コントローラに障害がある場合、前記キャッシュ保護領域に対応する前記データ構造に従って、前記キャッシュ保護領域が前記複数のファイル操作情報を具備していることを判定し、電源障害保護プログラムを使用することにより、前記複数のファイル操作情報をメモリの保護領域に格納するように構成されていることを特徴とする請求項７に記載の装置。
【請求項９】
送信モジュールをさらに具備し、
前記送信モジュールは、第２コントローラが、前記複数のファイル操作情報に従って、前記ファイル処理要求に対応するデータ情報を取得し、前記データ情報を前記第２コントローラの第２ライトキャッシュに書き込むことができるように、前記複数のファイル操作情報を前記第２コントローラに送信するように構成されていることを特徴とする請求項７に記載の装置。
【請求項１０】
ストレージデバイスであって、
プロセッサと、
メモリと、
システムバスと、
通信インターフェースと、
を具備し、
前記プロセッサ、前記メモリ、及び前記通信インターフェースは、前記システムバスを使用して接続されるとともにお互いに通信し、
前記通信インターフェースは、ストレージデバイスと通信するように構成され、
前記メモリは、コンピュータ実行命令を格納するように構成され、
前記プロセッサは、前記コンピュータ実行命令を実行し、請求項１から６のいずれか一項に記載の方法を実施するように構成されていることを特徴とするストレージデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージテクノロジーに関する。より詳しくは、データ格納方法、データストレージ装置、及びストレージデバイスに関する。
【背景技術】
【０００２】
ファイルシステムを備えたストレージデバイスでは、前記ストレージデバイスに書き込まれるデータは、アトミック(atomic)でなければならない。不可分性(atomicity)は、トランザクションの完全な操作を指し、つまり、前記トランザクションに関連するデータは、完全に書き込まれるか、まったく書き込まれないかでなければならない。従来技術において、データ不可分性は、ディスクにおいて保証されている。キャッシュ内のデータは、通常アトミックでない。つまり、ディスクに格納されているデータだけが信頼できるデータとしてみなされ、ホストのために提供することができる。一般に、ストレージデバイスに障害があるならば、データは、キャッシュから復元する必要があり、前記キャッシュのデータが、ディスクに書き込まれる。前記キャッシュのデータが前記ディスクに書き込まれる場合、ログ手段が前記ディスクに書き込まれる前記データがアトミックであることを保証するために使用される。ホストが、前記ストレージデバイスに前記データのアクセスのためのアクセス要求を送信する場合、前記アトミックデータは、まず前記ディスクから取得される必要があり、その後、前記ホストに提供される。これが、前記ホストにより送信される前記アクセス要求の処理時間を長引かせる。
【発明の概要】
【課題を解決するための手段】
【０００３】
本発明の実施形態は、ホストのデータアクセス効率が向上するデータ格納方法、データストレージ装置、及びストレージデバイスを提供する。
【０００４】
第１の態様によれば、本発明の実施形態は、ストレージシステムに適用されるデータ格納方法を提供し、前記ストレージシステムは、ストレージデバイスと、ホストとを含み、前記ストレージデバイスは、第１コントローラを含み、前記第１コントローラは、キャッシュ保護領域と、第１ライトキャッシュとを含み、前記キャッシュ保護領域は、データ保護機能を提供し、
前記方法は、
前記第１コントローラにより、ファイル処理要求を受信し、前記ファイル処理要求を複数のファイル操作に分割し、それぞれのファイル操作に対してファイル処理を別々に実行し、複数のファイル操作情報を生成するステップと、
前記複数のファイル操作情報のすべてを前記キャッシュ保護領域に書き込むステップと、
前記第１コントローラに障害が生じた後、再び電源が入った場合、前記キャッシュ保護領域から前記複数のファイル操作情報を復元するステップと、
前記ホストがデータ情報にアクセスできるように、前記複数のファイル操作情報に従って前記データ情報を取得し、前記データ情報を前記第１ライトキャッシュに書き込むステップと、
を含む。
【０００５】
前記第１の態様に関して、第１の可能な実施方法において、前記複数のファイル操作情報のすべてを前記キャッシュ保護領域に書き込む前記ステップは、
それぞれのファイル操作情報のための前記キャッシュ保護領域内の記憶域スペースを要求するステップと、
それぞれのファイル操作情報を前記要求された記憶域スペースに格納するステップと、
前記複数のファイル操作情報のすべてが、対応する記憶域スペースに既に格納されていることを判定するステップと、
前記キャッシュ保護領域に対応するデータ構造において、前記複数のファイル操作情報が格納されている前記記憶域スペースにデータを格納するステップと、
を含む。
【０００６】
前記第１の態様に関して、第２の可能な実施方法において、前記複数のファイル操作情報のすべてを前記キャッシュ保護領域に書き込む前記ステップは、
それぞれのファイル操作情報を前記キャッシュ保護領域に連続的に送信するステップと、
前記複数のファイル操作情報のすべてが、前記キャッシュ保護領域に既に送信されていることを判定するステップと、
前記キャッシュ保護領域において受信した前記複数のファイル操作情報に対応するフラグを設定するステップであって、前記フラグは、前記複数のファイル操作情報のすべてが、前記キャッシュ保護領域に既に書き込まれていることを示すために使用される、ステップと、
を含む。
【０００７】
前記第１の態様の前記第１の可能な実施方法に関して、第３の可能な実施方法において、前記ストレージデバイスは、メモリを備え、前記メモリは、保護領域を具備し、
前記方法は、
前記第１コントローラに障害がある場合、前記キャッシュ保護領域に対応する前記データ構造に従って、前記キャッシュ保護領域が、前記複数のファイル操作情報を具備していると判定するステップと、
電源障害保護プログラムを使用することにより、前記複数のファイル操作情報を前記メモリの前記保護領域に格納するステップと、
をさらに具備する。
【０００８】
前記第１の態様の前記第２の可能な実施方法に関して、第４の可能な実施方法において、前記ストレージデバイスは、メモリを備え、前記メモリは、保護領域を具備し、
前記方法は、
前記第１コントローラに障害がある場合、前記フラグに従って、前記キャッシュ保護領域が、前記複数のファイル操作情報を具備していることを判定するステップと、
電源障害保護プログラムを使用することにより、前記複数のファイル操作情報を前記メモリの前記保護領域に格納するステップと、
をさらに具備する。
【０００９】
前記第１の態様に関して、第５の可能な実施方法において、前記ストレージデバイスは、第２コントローラを備えており、前記第２コントローラは、第２ライトキャッシュを具備し、
前記方法は、
前記第２コントローラが、前記複数のファイル操作情報に従って、前記ファイル処理要求に対応するデータ情報を取得し、前記データ情報を前記第２ライトキャッシュに書き込めるように、前記第１コントローラにより、前記複数のファイル操作情報を、前記第２コントローラに送信するステップをさらに具備する
【００１０】
第２の態様によると、本発明の実施形態は、ストレージシステムに適用されるデータ格納方法を提供し、前記ストレージシステムは、ストレージデバイスと、ホストとを具備し、前記ストレージデバイスは、第１コントローラと、第２コントローラと、メモリとを備え、前記第２コントローラは、ライトキャッシュを具備し、前記方法は、
前記第１コントローラにより、ファイル処理要求を受信し、前記ファイル処理要求を複数のファイル操作に分割し、それぞれのファイル操作に対してファイル処理を別々に実行し、複数のファイル操作情報を生成し、前記複数のファイル操作情報を前記第２コントローラに送信するステップと、
前記第１コントローラに障害がある場合、前記ホストがデータ情報にアクセス、又は、前記メモリのための前記ファイル処理要求に対応する操作を実行することができるように、前記第２コントローラにより、前記ファイル操作情報に従って前記データ情報を取得し、前記データ情報を前記ライトキャッシュに書き込むステップと、
を具備する。
【００１１】
前記第２の態様に関して、第１の可能な実施方法において、前記複数のファイル操作情報を前記第２コントローラに送信する前記ステップは、
前記第１コントローラにより、第１ミラーメッセージを前記第２コントローラに送信するステップを具備し、
前記第１ミラーメッセージは、前記複数のファイル操作情報を具備する。
【００１２】
前記第２の態様に関して、第２の可能な実施方法において、前記複数のファイル操作情報を前記第２コントローラに送信する前記ステップは、
前記第１コントローラにより、複数の第２ミラーメッセージを前記第２コントローラに送信するステップを具備し、
前記第２ミラーメッセージのそれぞれは、前記複数のファイル操作情報の１つを具備する。
【００１３】
前記第２の態様に関して、第３の可能な実施方法において、前記第２コントローラは、キャッシュ保護領域を具備しており、前記キャッシュ保護領域は、データ保護機能を提供し、
前記第２コントローラにより、前記ファイル操作情報に従ってデータ情報を取得し、前記データ情報を前記ライトキャッシュに書き込む前記ステップの前に、前記方法は、
前記第２コントローラにより、すべての前記ファイル操作情報を前記キャッシュ保護領域に書き込むステップをさらに具備する。
【００１４】
前記第２の態様の前記第３の可能な実施方法に関して、第４の可能な実施方法において、前記方法は、前記第２コントローラに障害があり、再び電源が入った場合、前記キャッシュ保護領域から、前記複数のファイル操作情報を復元するステップをさらに具備し、
前記第２コントローラにより、前記ファイル操作情報に従ってデータ情報を取得し、前記データ情報を前記ライトキャッシュに書き込む前記ステップは、
前記第２コントローラにより、前記キャッシュ保護領域内に格納されている前記複数のファイル操作情報に従って前記データ情報を取得し、前記データ情報を前記ライトキャッシュに書き込むステップを具備する。
【００１５】
前記第２の態様の前記第３の可能な実施方法に関して、第５の可能な実施方法において、前記第２コントローラにより、すべての前記ファイル操作情報を前記キャッシュ保護領域に書き込む前記ステップは、
それぞれのファイル操作情報のための前記キャッシュ保護領域内の記憶域スペースを要求するステップと、
それぞれのファイル操作情報を前記要求された記憶域スペースに格納するステップと、
前記複数のファイル操作情報のすべてが、対応する記憶域スペースに既に格納されていることを判定するステップと、
前記キャッシュ保護領域に対応するデータ構造において、前記複数のファイル操作情報が格納されている前記記憶域スペースにデータを格納するステップと、
を具備する。
【００１６】
前記第２の態様の前記第３の可能な実施方法に関して、第６の可能な実施方法において、前記第２コントローラにより、すべての前記ファイル操作情報を前記キャッシュ保護領域に書き込む前記ステップは、
それぞれのファイル操作情報を前記キャッシュ保護領域に連続的に送信するステップと、
前記複数のファイル操作情報のすべてが前記キャッシュ保護領域にすでに送信されていることを判定するステップと、
前記キャッシュ保護領域に受信した前記複数のファイル操作情報に対応するフラグを設定するステップであって、前記フラグは、前記複数のファイル操作情報のすべてが前記キャッシュ保護領域に既に書き込まれていることを示すために使用される、ステップと、
を具備する。
【００１７】
第３の態様によると、本発明は、データストレージ装置を提供し、
ファイル処理要求を受信し、前記ファイル処理要求を複数のファイル操作に分割し、それぞれのファイル操作に対してファイル処理を別々に実行し、複数のファイル操作情報を生成するように構成されているファイル処理モジュールと、
前記複数のファイル操作情報のすべてをキャッシュ保護領域に書き込むように構成されているライティングモジュールと、
第１コントローラに障害が生じた後、再び電源が入った場合、前記キャッシュ保護領域から前記複数のファイル操作情報を復元するように構成されている復元モジュールと、
を具備し、
前記ライティングモジュールは、ホストがデータ情報にアクセスできるように、前記複数のファイル操作情報に従って、前記データ情報を取得し、前記データ情報を第１ライトキャッシュに書き込むようにさらに構成されている。
【００１８】
前記第３の態様に関して、第１の可能な実施方法において、前記ライティングモジュールは、
それぞれのファイル操作情報のための前記キャッシュ保護領域内の記憶域スペースを要求し、
それぞれのファイル操作情報を前記要求された記憶域スペースに格納し、
前記複数のファイル操作情報のすべてが対応する記憶域スペースに既に格納されていることを判定し、
前記キャッシュ保護領域に対応するデータ構造において、前記複数のファイル操作情報が格納されている前記記憶域スペースにデータを格納する
ように構成されている。
【００１９】
前記第３の態様に関して、第２の可能な実施方法において、前記ライティングモジュールは、
それぞれのファイル操作情報を前記キャッシュ保護領域に連続的に送信し、
前記複数のファイル操作情報のすべてが前記キャッシュ保護領域に既に送信されていることを判定し、
前記キャッシュ保護領域に受信した前記複数のファイル操作情報に対応するフラグを設定するように構成され、
前記フラグは、前記複数のファイル操作情報のすべてが前記キャッシュ保護領域に既に書き込まれていることを示すために使用される。
【００２０】
前記第３の態様の前記第１の可能な実施方法に関して、第３の可能な実施方法において、前記装置は、保護モジュールをさらに具備し、
前記保護モジュールは、前記第１コントローラに障害がある場合、前記キャッシュ保護領域に対応する前記データ構造に従って、前記キャッシュ保護領域が前記複数のファイル操作情報を具備していることを判定し、電源障害保護プログラムを使用することにより、前記複数のファイル操作情報をメモリの保護領域に格納するように構成されている。
【００２１】
前記第３の態様の前記第２の可能な実施方法に関して、第４の可能な実施方法において、前記装置は、保護モジュールをさらに具備し、
前記保護モジュールは、前記第１コントローラに障害がある場合、前記フラグに従って、前記キャッシュ保護領域が前記複数のファイル操作情報を具備していることを判定し、電源障害保護プログラムを使用することにより、前記複数のファイル操作情報を、メモリの保護領域に格納するように構成されている。
【００２２】
前記第３の態様に関して、第５の可能な実施方法において、前記装置は、送信モジュールをさらに具備し、
前記送信モジュールは、第２コントローラが、前記複数のファイル操作情報に従って、前記ファイル処理要求に対応するデータ情報を取得できるように、前記複数のファイル操作情報を前記第２コントローラに送信し、前記データ情報を前記第２コントローラの第２ライトキャッシュに書き込むように構成されている。
【００２３】
第４の態様によると、本発明の実施形態は、ストレージデバイスを提供し、前記ストレージデバイスは、第１コントローラと、第２コントローラと、メモリと、を備えたストレージデバイスであって、前記第２コントローラは、ライトキャッシュを具備し、
前記第１コントローラは、ファイル処理要求を受信し、前記ファイル処理要求を複数のファイル操作に分割し、それぞれのファイル操作に対してファイル処理を別々に実行し、複数のファイル操作情報を生成し、前記複数のファイル操作情報を前記第２コントローラに送信するように構成されており、
前記第２コントローラは、前記第１コントローラに障害がある場合、ホストが、データ情報にアクセス、又は前記メモリのための前記ファイル処理要求に対応する操作を実行できるように、前記ファイル操作情報に従って、前記データ情報を取得し、前記データ情報を前記ライトキャッシュに書き込むように構成されている。
【００２４】
前記第４の態様に関して、第１の可能な実施方法において、前記第１コントローラは、第１ミラーメッセージを前記第２コントローラに送信するように特に構成され、
前記第１ミラーメッセージは、前記複数のファイル操作情報を具備する。
【００２５】
前記第４の態様に関して、第２の可能な実施方法において、前記第１コントローラは、複数の第２ミラーメッセージを前記第２コントローラに送信するように特に構成され、
それぞれの前記第２ミラーメッセージは、前記複数のファイル操作情報の１つを具備する。
【００２６】
前記第４の態様に関して、第３の可能な実施方法において、前記第２コントローラは、すべての前記ファイル操作情報をキャッシュ保護領域に書き込むようにさらに構成されている。
【００２７】
前記第４の態様の前記第３の可能な実施方法に関して、第４の可能な実施方法において、前記第２コントローラは、それぞれのファイル操作情報のための前記キャッシュ保護領域内の記憶域スペースを要求し、それぞれのファイル操作情報を前記要求された記憶域スペースに格納し、前記複数のファイル操作情報のすべてが既に対応する記憶域スペースに格納されていることを判定し、前記キャッシュ保護領域に対応するデータ構造において、前記複数のファイル操作情報が格納されている前記記憶域スペースにデータを格納するように特に構成されている。
【００２８】
前記第４の態様の前記第３の可能な実施方法に関して、第５の可能な実施方法において、前記第２コントローラは、それぞれのファイル操作情報を前記キャッシュ保護領域に連続的に送信し、前記複数のファイル操作情報のすべてが前記キャッシュ保護領域に既に送信されていることを判定し、前記キャッシュ保護領域に受信した前記複数のファイル操作情報に対応するフラグを設定するように特に構成され、
前記フラグは、前記複数のファイル操作情報のすべてが、前記キャッシュ保護領域に既に書き込まれていることを示すために使用される。
【００２９】
第５の態様によると、本発明の実施形態は、プロセッサと、メモリと、システムバスと、通信インターフェースと、を具備するストレージデバイスを提供し、
前記プロセッサ、前記メモリ、及び前記通信インターフェースは、前記システムバスを使用して接続されるとともにお互いに通信し、
前記通信インターフェースは、ストレージデバイスと通信するように構成され、
前記メモリは、コンピュータ実行命令を格納するように構成され、
前記プロセッサは、前記コンピュータ実行命令を実行し、前記第１の態様において説明されるデータ格納方法を実施するように構成されている。
【００３０】
本発明の実施形態において、ファイル処理要求に対応する複数のファイル操作情報のすべてがキャッシュ保護領域に書き込まれる。前記キャッシュ保護領域がデータ保護機能を提供するので、第１コントローラに障害が生じた後、電源が再び入れられた場合、前記複数のファイル操作情報は、前記キャッシュ保護領域から復元することができ、データ情報が前記複数のファイル操作情報に基づき取得され、第１ライトキャッシュに書き込まれる。前記複数のファイル操作情報すべてが前記キャッシュ保護領域に書き込まれるので、前記第１コントローラに障害が生じた後、電源が再び入れられた場合、前記キャッシュ保護領域から復元されるファイル操作情報もまた、全て揃っている。したがって、前記複数のファイル操作情報に従って取得された前記データ情報は、アトミックであり、ホストにより直接アクセス可能である。従来技術において、第１ライトキャッシュのデータ情報は、アトミックでなく、メモリ内のデータのみがアトミックである。したがって、従来技術において、前記第１ライトキャッシュの前記データ情報は、ホストにより直接アクセスできず、対応するデータは、前記ホストのために提供される前に前記メモリから読み出されなければならない。従来技術と比べ、本発明の実施形態は、前記ホストのデータアクセス効率性を改善する。
【００３１】
本発明の実施形態又は従来技術における技術的ソリューションをより明確に説明するため、以下で、前記実施形態又は従来技術を説明するために必要な添付の図面を簡単に紹介する。以降の記述における添付の図面は、いくつかの本発明の実施形態を示していることは明らかであり、当業者であれば、創造的な活動なしに、これらの添付の図面から他の図面を導き出しうる。
【図面の簡単な説明】
【００３２】
【図１】本発明の実施形態によるデータ格納方法のアプリケーションネットワーク構成の概略図である。
【図２】本発明の実施形態によるデータ格納方法のフローチャートである。
【図３】本発明の実施形態によるデータ構造の概略図である。
【図４】本発明の実施形態による他のデータ格納方法のアプリケーションネットワーク構成の概略図である。
【図５】本発明の実施形態による他のデータ格納方法のフローチャートである。
【図６】本発明の実施形態によるデータストレージ装置の概略構成図である。
【図７】本発明の実施形態によるストレージデバイスの概略構成図である。
【図８】本発明の実施形態による他のストレージデバイスの概略構成図である。
【発明を実施するための形態】
【００３３】
本発明の実施形態の目的、技術的ソリューション、及び利点をより明確にするために、以下では本発明の実施形態における添付の図面を参照して明確かつ完全に本発明の実施形態における前記技術的ソリューションを説明する。説明される実施形態は、本発明のすべての実施形態でなく一部であることは明らかである。本発明の実施形態に基づいて創造的な活動なしに当業者により得られる他のすべての実施形態は、本発明の保護範囲内に入る。
【００３４】
［本発明の実施形態におけるシステムアーキテクチャ］
本発明の実施形態により提供されるデータ格納方法は、ストレージシステムにおいて実施され得る。図１は、本発明の実施形態によるデータ格納方法のアプリケーションネットワーク構成の概略図である。図１に示されているように、前記ストレージシステムは、少なくとも１つのアプリケーションサーバ１１（図１では３台示されている）と、少なくとも１つのコントローラ２２と、１つのメモリ３３と、を具備する。
【００３５】
前記アプリケーションサーバ１１（ホストとも称される）は、従来技術において知られている例えば、サーバ又はデスクトップコンピュータなどの任意のコンピューティングデバイスを含んでよい。
【００３６】
前記コントローラ２２は、ＮＦＳ／ＣＩＦＳプロトコルを使用して前記アプリケーションサーバ１１にデータを送信し、例えばサーバやデスクトップコンピュータ等の従来技術において知られている任意のコンピューティングデバイスであってよい。前記コントローラ２２は、プロセッサと、キャッシュ（図中に示されていない）と、を具備する。前記プロセッサは、例えば、ファイル作成操作、ファイルオープン操作、ファイル読み出し操作、及びファイル書き込み操作といったファイル処理要求のための種々の操作を実行するように特に構成されている。前記キャッシュは、前記コントローラ内にあるメモリであり、容量はハードディスクより小さいが、スピードはハードディスクよりずっと速く、例えば、前記キャッシュは、ランダムアクセスメモリ（ＲＡＭ）であってよく、プログラムや短期的に使用するためのデータを格納するように主に構成されている。
【００３７】
前記コントローラ２２において、電源障害保護モジュールとミラーリングモジュール等のファイルシステム及び他のアプリケーションが、さらにインストールされている。前記電源障害保護モジュールは、前記システムに電源障害がある場合、ＢＢＵ又は他のバックアップ電源を通じて前記キャッシュのデータを前記メモリに書き込むように構成されており、前記ミラーリングモジュールは、ミラーチャネルを通じて他のコントローラ２２により送信されるデータを処理するように構成されている。
【００３８】
本発明の実施形態において、キャッシュは、一時的キャッシュ又はライトキャッシュ(write cache)を具備してもよい。一時的キャッシュは、ファイル処理要求に対応するデータ及びメタデータを一時的に格納するように構成されており、データ保護機能は提供しない。ライトキャッシュは、メモリに書き込まれるデータを格納するように構成されており、前記データ保護機能を提供する。一時的キャッシュがデータ保護機能を提供しないということは、前記システムに障害があるか、又は前記システムに電源障害がある場合、前記一時的キャッシュ内に格納されているすべてのデータが失われ、前記システムに電源が再び入った後であっても復元することができない、ということを意味する。ライトキャッシュが前記データ保護機能を提供するということは、前記システムに障害がある、又は前記システムに電源障害がある場合であっても前記ライトキャッシュ内に格納されているデータは失われない、ということを意味する。具体的には、前記データ保護機能は、電源障害保護機能であってよく、前記電源障害保護機能は、前記システムに電源障害が生じた後、前記ライトキャッシュが、前記ライトキャッシュに格納されているデータを前記メモリのディスク保護領域に書き込むための十分な電力を有するように、バックアップ電源（ＢＢＵ：Battery Back-Up）又は他の電源供給方法を使用することにより、電力が依然として供給し得ることを示しており、前記システムに電源が再び入った後、前記メモリの前記ディスク保護領域から前記ライトキャッシュに前記データをコピーできる。したがって、前記ライトキャッシュに格納されているデータは、信頼できると考えることができ、また失われることはない。
【００３９】
オプションとして、前記データ保護機能は、リセットキャッシュ保護機能であってもよく、前記リセットキャッシュ保護機能は、ライトキャッシュが継続的に電力を供給されていることを示しており、前記システムに電源障害がある場合、前記ライトキャッシュに格納されているデータを前記メモリに書き込む操作は実行されず、前記システムに再び電源が入った場合、前記ライトキャッシュの前記データは初期化されない。したがって、前記ライトキャッシュに格納されているデータは、依然として前記システムに電源障害が生じる前のデータである。同様に、この機能を有するライトキャッシュにおいて、前記ライトキャッシュに格納されているデータは、信頼できると考えることができ、また失われることはない。
【００４０】
オプションとして、前記データ保護機能は、ライトキャッシュのデータが失われないことを保証する他の機能であってもよく、本明細書に限定されるものではない。
【００４１】
本発明の実施形態において、一時的キャッシュとライトキャッシュは、同じ物理的エンティティ内、又は異なる物理的エンティティ内に配置されてよく、本明細書に限定されるものではない。前記一時的キャッシュと前記ライトキャッシュとが異なる物理的エンティティに配置されている場合、前記一時的キャッシュは、前記データ保護機能を提供せず、前記システムに電源障害がある場合、前記一時的キャッシュのデータは失われ、復元することができないが、前記ライトキャッシュは、前記データ保護機能を提供する。前記一時的キャッシュと前記ライトキャッシュとが同じ物理的エンティティ（例えばメモリモジュール）内に配置されている場合、電源障害保護モジュールは、前記一時的キャッシュに格納されているデータのための電源障害保護を提供しないと決定するが、前記ライトキャッシュに格納されているデータのための電源障害保護を提供する。
【００４２】
加えて、キャッシュ保護領域は、前記ライトキャッシュ内に作成されてよく、前記キャッシュ保護領域も前記データ保護機能を有している。前記一時的キャッシュの前記データが前記ライトキャッシュに書き込まれる必要がある場合、前記データ又は前記データに従って取得される情報は、まず前記キャッシュ保護領域に書き込まれてよく、その後、前記データ又は前記データに従って取得される前記情報が前記キャッシュ保護領域に正常に書き込まれると判定された後、前記データは、前記ライトキャッシュに書き込まれる。したがって、たとえ前記データが前記ライトキャッシュに書き込まれる前に前記システムに障害がある場合や、前記ライトキャッシへの書き込みが完了していない場合であっても、データは、データ又は前記キャッシュ保護領域に格納されている情報を使用することにより復元可能である。オプションとして、キャッシュスペースの一部は、前記キャッシュに分割されてもよく、前記キャッシュ保護領域として使用してもよく、または、他の独立したキャッシュを、前記キャッシュ保護領域として使用してもよく、ここでは限定しない。本発明の実施形態により指定されない限り、ライトキャッシュは、キャッシュ保護領域を除くキャッシュを示していることに注意すべきである。
【００４３】
前記キャッシュ保護領域における格納データの形式は、一時的キャッシュ又はライトキャッシュにおける物とは異なっていてもよい。例えば、本発明の実施形態において、前記一時的キャッシュ及び前記ライトキャッシュは、データページ(page)のユニット内にデータを格納し得る。データページのサイズは、４ｋ、８ｋ、又は１６ｋであってよく、ここでは限定しない。データページのサイズを一例として４ｋとして使用する。前記データサイズが８ｋの場合、２ページを占有する必要がある。とはいえ、前記キャッシュ保護領域は、コントロールリンク、リンクリスト、又はツリーなどのデータ構造の形式においてデータを格納してもよく、ここでは限定しない。したがって、前記キャッシュ保護領域におけるデータの格納形式は前記ライトキャッシュにおけるデータ格納形式とは異なりうるので、同じデータを格納する場合、前記キャッシュ保護領域は、記憶域スペースよりも占有しないことは理解し得る。
【００４４】
前記メモリ３３は、例えば、ハードディスクドライブ（ＨＤＤ：Hard Disk Drive）、ソリッドステートドライブ（ＳＳＤ：Solid State Drive）又は、ダイレクトアクセスストレージデバイス（ＤＡＳＤ：Direct Access Storage Device）などの従来技術において知られているストレージデバイスを具備してよい。
【００４５】
本発明の実施形態において、前記コントローラ２２及び前記メモリ３３は、まとめてストレージデバイスと称されうる。
【００４６】
特に断らない限り、本発明の実施形態における前記システムは、ストレージシステムとして参照され、本発明の実施形態における前記メモリは、不揮発性メモリを指す。
【００４７】
［データ格納方法］
以下では、本発明の実施形態により提供されるデータ格納方法を説明する。図２は、本発明の実施形態におけるデータ格納方法のフローチャートである。前記方法は、ストレージシステムに適用され、前記ストレージシステムは、ストレージデバイスと、ホストとを備え、前記ストレージデバイスは、第１コントローラと、メモリとを具備し、前記第１コントローラは、一時的キャッシュ、キャッシュ保護領域、及び第１ライトキャッシュを具備し、前記方法は、以下を具備する。
【００４８】
ステップ２１：  前記第１コントローラは、ファイル処理要求を受信する。
【００４９】
本発明の実施形態において、前記ファイル処理要求は、アプリケーションサーバ（ホストとも称される）により送信される。前記ファイル処理要求の操作タイプは、例えば、ファイル書き込み要求、ファイル修正要求、ファイル作成要求、又はファイル削除要求といった前記メモリに格納されているデータを修正するためのファイル処理要求であってよく、ここでは限定しない。異なるファイル処理要求は、異なるパラメータを含んでよい。例えば、ファイル書き込み要求を一例として使用するが、前記ファイル書き込み要求は、ファイルＩＤ，ファイルオフセット（offset）、ファイル長(length)、及び書き込まれるデータなどのパラメータを含んでいる。
【００５０】
ステップ２２：  前記ファイル処理要求を複数のファイル操作に分割し、それぞれのファイル操作を別々に処理し、複数のファイル操作情報を生成し、前記情報を前記一時的キャッシュに書き込む。
【００５１】
ファイルシステムを有するストレージデバイスでは、ファイル処理要求を処理する場合、前記ファイルシステムは、前記ファイル処理要求の操作タイプに従って、前記ファイル処理要求を複数のファイル操作に分割する必要がよくある。例えば、前記ファイルシステムは、ファイル書き込み要求をデータ修正ファイル操作及びメタデータ修正ファイル操作に分割する必要がある。他の例では、前記ファイルシステムは、ファイル作成要求を親ディレクトリ修正ファイル操作及びファイル作成のファイル操作に分割する必要があり、さらに他の例では、前記ファイルシステムは、ファイル名変更要求をソースディレクトリ修正ファイル操作及び更新先ディレクトリ修正ファイル操作に分割する必要がある。
【００５２】
オプションとして、前記ファイルシステムは、前記ファイル処理要求の前記操作タイプに従って、前記ファイル処理要求を前記複数のファイル操作に分割し、前記操作を別々に処理する場合、すべてのデータエントリの数、及び、前記ファイル処理要求に対応するメタデータエントリの数を記録してよい。
【００５３】
ファイル処理要求を処理する場合、前記第１コントローラは、前記ファイル処理要求から分割されたそれぞれのファイル操作に対し、意味変換（semantic conversion）又は他のファイル処理を連続的に実際に実行することは理解し得る。ファイル操作を処理するごとに、前記第１コントローラは、前記ファイル操作に対応するデータ及びメタデータを前記一時的キャッシュに書き込む。したがって、前記第１コントローラが最後のファイル操作を処理し、前記最後のファイル操作に対応するデータ及び前記メタデータを前記一時的キャッシュに書き込んだ後、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータもまた前記一時的キャッシュに書き込まれる。したがって、本発明の実施形態において、前記一時的キャッシュに格納されているデータは、すべての前記データと前記ファイル処理要求に対応する前記メタデータである。同様に、本発明の実施形態において、前記複数のファイル操作情報は、すべての前記データと前記ファイル処理要求に対応する前記メタデータである。
【００５４】
異なるファイル処理要求では、前記異なるファイル処理要求のために生成されたファイル操作情報もまた異なる。前記ファイル処理要求がファイル書き込み要求である場合、前記ファイル処理要求のファイル操作情報は、前記ファイル書き込み要求で搬送される、書き込まれるデータ、メタデータなどであってよい。前記ファイル処理要求がファイル修正要求の場合、前記ファイル修正要求のファイル操作情報は、前記ファイル修正要求で搬送される、書き込まれるデータ、メタデータなどであってよい。前記ファイル処理要求がファイル作成要求の場合、前記ファイル作成要求のファイル操作情報は、ディレクトリ情報、メタデータなどでありうる。前記ファイル処理要求がファイル削除要求の場合、前記ファイル削除要求のファイル操作情報は、ファイルスペースを開放するための特別なページデータ、削除後の前記データ及びメタデータなどでありうる。
【００５５】
以下のステップは、ファイル書き込み要求を一例として使用して説明されている。前記ファイル書き込み要求において、前記ファイル書き込み要求のために生成されるファイル操作情報は、ファイルＩＤ、ファイルオフセット（offset）、ファイル長（length）、書き込み時間、書き込まれるデータ、などを含んでよい。
【００５６】
本発明の実施形態において、前記一時的キャッシュは、データを一時的に格納するためにのみ使用されることに注意すべきである。前記一時的キャッシュに格納されている前記データは、離散しており、前記データは、特定のデータ構造を使用することにより管理されていない。前記一時的キャッシュに格納されている前記データは、前記アプリケーションサーバに対し直接提供できない。
【００５７】
ステップ２３：  前記複数のファイル操作情報を前記キャッシュ保護領域に書き込む。
【００５８】
具体的には、前記第１コントローラは、ファイルＩＤ，ファイルオフセット、ファイル長、書き込み時間、前記キャッシュ保護領域に書き込まれるデータなどの前記ファイル操作情報を書き込みうる。前記キャッシュ保護領域は、データ保護機能を提供する。前記ファイル操作情報が前記キャッシュ保護領域に正常に書き込まれた後には、前記ファイル操作情報は、システム障害のような理由により失われることはない。
【００５９】
任意の実施態様において、前記複数のファイル操作情報を前記キャッシュ保護領域へ書き込むことは、前記複数のファイル操作情報すべてが前記キャッシュ保護領域に書き込まれたことを示しており、すなわち、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記キャッシュ保護領域に書き込まれていることである。
【００６０】
例えば、前記キャッシュ保護領域は、特定のデータ構造を使用することによりデータを格納してよい。図３に示されているように、前記キャッシュ保護領域のデータは、コントロールリンクの形式で管理されうる。前記コントロールリンクは、複数のコントロールヘッダを含み、各コントロールヘッダは、ファイル処理要求に対応する。各コントロールヘッダのもとには、複数のスロット（slots）がマウントされており、各スロットは、各データ又は前記ファイル処理要求に対応する各メタデータを格納するために使用される。
【００６１】
具体的には、前記ファイル操作情報をトラバースし得る。まず、１つのスロットが前記コントロールリンクにおける第１のデータ（例えば、ファイルＩＤ）のために要求され、前記スロットが正常に要求された後、前記第１のデータが前記スロットに書き込まれる。そして、１つのスロットが第２のデータ（例えば、オフセット）のために要求され、前記スロットが正常に要求された後、前記第２のデータが前記スロットに書き込まれる。残りも、前記ファイル操作情報の最後のデータがスロットに書き込まれるまで、同様に処理される。そして、前記ファイル処理要求に対応するコントロールヘッダが前記コントロールリンクに追加されうる。
【００６２】
前記ファイル処理要求に対応する前記コントロールヘッダが前記コントロールリンクに追加された後は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記キャッシュ保護領域に正常にすでに書き込まれていることを示している。
【００６３】
他の例として、前記キャッシュ保護領域の前記データは、二分木の形式において管理されうる。前記二分木は、複数のルートノードを含み、各ルートノードはファイル処理要求に対応する。各ルートノードには、複数の終端ノードがマウントされている。それぞれの終端ノードは、それぞれのデータ又は前記ファイル処理要求に対応するそれぞれのメタデータを格納するために使用される。
【００６４】
具体的には、前記ファイル操作情報は、トラバースされ得る。まず、１つの終端ノードが前記二分木における第１のデータ（例えば、ファイルＩＤ）のために要求され、前記終端ノードが正常に要求された後、前記第１のデータが前記終端ノードに書き込まれる。そして、１つの終端ノードが第２のデータ（例えば、オフセット）のために要求され、前記終端ノードが正常に要求された後、前記第２のデータが前記終端ノードに書き込まれる。残りも最後のデータが終端ノードに書き込まれるまで同様に処理される。そして、前記ファイル処理要求に対応するルートノードが、前記二分木に追加され得る。
【００６５】
前記ファイル処理要求に対応するルートノードが前記二分木に追加された後は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記キャッシュ保護領域にすでに正常に書き込まれていることを示している。
【００６６】
コントロールリンク又は二分木は、キャッシュ保護領域で使用され、データを格納するためのデータ構造の様式である。加えて、Ｂツリー、Ｂ＋ツリー、赤黒木などのデータ構造がデータを格納するために使用されてもよいが、ここでは限定しない。
【００６７】
あるいは、前記キャッシュ保護領域は、コントロールリンク又は二分木などのデータ構造を使用してデータを格納する必要はない。前記第１コントローラは、前記ファイル操作情報をトラバースしうる。まず、前記第１コントローラは、前記キャッシュ保護領域における第１のデータ（例えば、ファイルＩＤ）のための記憶域スペースを要求し、前記記憶域スペースが正常に要求された後、前記キャッシュ保護領域の記憶域スペースに前記第１のデータを書き込む。そして、前記第１コントローラは、前記キャッシュ保護領域の第２のデータ（例えば、オフセット）のための記憶域スペースを要求し、前記記憶域スペースが正常に要求された後、前記キャッシュ保護領域の前記記憶域スペースに前記第２のデータを書き込む。残りは、前記キャッシュ保護領域の前記記憶域スペースに最後のデータが書き込まれるまで同様に処理する。そして、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが、正常に前記キャッシュ保護領域にすでに書きこまれたことを示すように、フラグ（例えば、真(true)）が前記キャッシュ保護領域に格納される前記ファイル操作情報にセットされ得る。オプションとして、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記キャッシュ保護領域に書き込まれたとは限らない場合、他のフラグ（例えば、偽(false)）がセットされてよい。
【００６８】
あるいは、前記ファイルシステムが前記ファイル処理要求を別々に処理するために複数のファイル操作に分割する場合、前記ファイルシステムは、統計を収集し、前記ファイル操作情報に含まれているすべてのデータエントリ及びメタデータエントリの数を記録し、カウンタ又は同様の機能を備えた前記第１コントローラ内のソフトウェアモジュールをセットする。前記カウンタの初期値は０である。前記ファイル操作情報に含まれている各データは、前記キャッシュ保護領域の前記要求された記憶域スペースに連続的に書き込まれる。データが正常に書き込まれる毎に、前記カウンタの値は１ずつ増加する。前記カウンタの値が前記ファイル操作情報に含まれるすべての前記データエントリ及び前記メタデータエントリの記録されている数と等しければ、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータは、前記キャッシュ保護領域に正常に既に書き込まれていることを示している。
【００６９】
オプションの実施態様において、前記複数のファイル操作情報を前記キャッシュ保護領域に書き込むことは、前記複数のファイル操作情報を前記キャッシュ保護領域に書き込む動作を指しており、すなわち、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記キャッシュ保護領域に書き込まれたかどうかを考慮する必要はない。
【００７０】
本発明の他の実施形態において、すべての前記複数のファイル操作情報が前記キャッシュ保護領域に書き込まれていない場合に、前記第１コントローラに障害があるならば、前記ファイル処理要求の処理は、失敗したとみなされる。
【００７１】
ステップ２４：  前記第１コントローラに障害がある場合、電源障害保護プログラムを使用することにより、前記キャッシュ保護領域に格納されている前記ファイル操作情報を前記メモリの保護領域にコピーする。
【００７２】
前記キャッシュ保護領域が前記データ保護機能を提供することから、前記第１コントローラに障害がある場合、前記電源障害保護プログラムが、前記キャッシュ保護領域に格納されている前記ファイル操作情報を前記メモリの前記保護領域にコピーするために使用されうるということは、先の説明から理解できる。したがって、前記キャッシュ保護領域に格納されている前記ファイル操作情報は、前記第１コントローラにある前記障害によっては失われない。前記メモリの前記保護領域は、前記メモリ内にあり、前記電源障害保護プログラムを使用することにより書き込まれたデータを格納するために使用される記憶域スペースを指す。オプションとして、前記ファイル操作情報は、前記キャッシュ保護領域に対応するデータ構造（例えば、コントロールリンク）を使用して検索することにより見つけてもよく、又は、前記ファイル操作情報は、「真」を含むフラグを使用して検索することにより見つけてもよいが、ここでは限定しない。
【００７３】
ステップ２３は、２つの異なる実施形態を有するため、ステップ２４は具体的な実装において異なる。
【００７４】
例えば、前記第１の実施方法がステップ２３（前記複数のファイル操作情報のすべてを前記キャッシュ保護領域に書き込む）で実行される場合、前記キャッシュ保護領域に格納されている前記ファイル操作情報のためには他の処理は実行されず、ステップ２４２（前記キャッシュ保護領域に格納されている前記ファイル操作情報を前記メモリの前記保護領域にコピーする）が実行される。
【００７５】
前記第２の実施方法がステップ２３（すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記キャッシュ保護領域に書き込まれたかどうかは考慮しない）で実行される場合、ステップ２４２が実行される前に、以下をさらに含む：
【００７６】
ステップ２４１：  前記ファイル操作情報がすべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含んでいるかどうかを判定する。
【００７７】
前記ファイル操作情報がすべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含んでいる場合、ステップ２４２：前記電源障害保護プログラムを使用することにより、前記キャッシュ保護領域に格納されている前記ファイル操作情報を前記メモリの前記保護領域にコピーする、が実行される。
【００７８】
前記ファイル操作情報がすべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含まない場合、電源障害保護処理は、前記キャッシュ保護領域に格納されている前記ファイル操作情報のためには実行されない。
【００７９】
本発明の実施形態において、ステップ２４はオプションのステップであることに留意すべきである。したがって、上述したように、電源障害保護機能に加えて、前記データ保護機能はリセットメモリ保護機能でもありうる。前記キャッシュ保護領域が前記リセットメモリ保護機能を備えている場合、前記第１コントローラに障害があっても、前記キャッシュ保護領域は依然として継続的に電力を供給することができ、前記第１コントローラに再び電源が入った後、前記キャッシュ保護領域のデータは、初期化されない。したがって、前記キャッシュ保護領域に格納されている前記データは失われない。
【００８０】
具体的には、前記ファイル操作情報がすべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含んでいるかどうかを判定することは、
前記キャッシュ保護領域における前記ファイル操作情報内に含まれている前記データエントリの数の統計を収集し、前記数を前記ファイルシステムに記録されている、すべての前記データエントリの数、及び、前記ファイル処理要求に対応する前記メタデータエントリの数と比較し、前記キャッシュ保護領域内の前記ファイル操作情報に含まれている前記データエントリの数が、前記ファイルシステム内に記録されている数と等しいならば、前記ファイル操作情報は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含んでいることを示している、又は、
前記キャッシュ保護領域に対応する前記データ構造（例えば、コントロールリンク）が前記ファイル処理要求に対応するデータ構造（例えば、コントロールヘッダ）を含んでいるかどうかをチェックし、前記コントロールリンクが前記コントロールヘッダを含んでいるならば、前記ファイル処理要求に対応する前記データ構造において格納されている前記複数のファイル操作情報は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含んでいる、ということを示している、又は、
前記キャッシュ保護領域に格納されている前記ファイル操作情報がフラグ（例えば、「真」）を含んでいるかどうかをチェックし、前記ファイル操作情報が「真」であるフラグを含んでいるならば、それは前記ファイル操作情報がすべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含んでいることを示している、ということでありうる。
【００８１】
加えて、本発明の他の実施態様において、ステップ２３が実行され、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記キャッシュ保護領域に書き込まれたかどうかを考慮せず、かつ、前記ファイル操作情報がすべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含むかどうかが判定されない場合、ステップ２４２：前記電源障害保護プログラムを使用することにより、前記キャッシュ保護領域に格納されている前記ファイル操作情報を前記メモリの前記保護領域へコピーする、が直接実行される。
【００８２】
本発明の実施形態において、前記キャッシュ保護領域に書き込まれる前記複数のファイル操作情報は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータでありうることに注意すべきである。本発明の他の実施形態において、前記キャッシュ保護領域に書き込まれる前記複数のファイル操作情報は、前記一時的キャッシュに格納されているすべての前記データ及び前記ファイル処理要求に対応する前記メタデータのアドレスであって良い。前記第１コントローラに障害があり、前記電源障害保護プログラムを使用することにより、前記キャッシュに格納されている前記データのために前記電源障害保護が提供される必要がある場合、前記一時的キャッシュに格納されているすべての前記データ及び前記ファイル処理要求に対応する前記メタデータが、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータの前記アドレスにしたがって、まず取得され、その後、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記メモリの前記保護領域にコピーされる。
【００８３】
ステップ２５：  前記第１コントローラに障害が発生した後、再び電源が入った場合、 前記キャッシュ保護領域から複数のファイル操作情報を復元する。
【００８４】
前記キャッシュ保護領域が前記電源障害保護機能を有する場合、前記メモリの前記保護領域に格納されている前記ファイル操作情報は、前記電源障害保護プログラムを使用することにより、前記キャッシュ保護領域にコピーされ得る。前記キャッシュ保護領域が前記リセットメモリ保護機能を有する場合、前記キャッシュ保護領域の前記データは初期化されない。
【００８５】
オプションとして、前記第１の実施方法（すべての前記複数のファイル操作情報を前記キャッシュ保護領域に書き込む）がステップ２３で実行される場合、ステップ２５２：前記メモリの前記保護領域に格納されている前記ファイル操作情報を前記キャッシュ保護領域にコピーする、が実行され得る。
【００８６】
オプションとして、前記第２の実施方法（すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記キャッシュ保護領域に書き込まれるかどうかを考慮しない)がステップ２３で実行され、ステップ２４において、前記ファイル操作情報がすべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含んでいることを判定した後、前記キャッシュ保護領域の前記ファイル操作情報が前記メモリの前記保護領域にコピーされた場合、ステップ２５２：前記メモリの前記保護領域に格納されている前記ファイル操作情報を前記キャッシュ保護領域にコピーする、が実行され得る。
【００８７】
オプションとして、前記第２の実施方法（すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記キャッシュ保護領域に書き込まれるかどうかを考慮しない）がステップ２３及びステップ２４において実行された場合、前記ファイル操作情報がすべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含むかどうかは判定されず、前記キャッシュ保護領域の前記ファイル操作情報は、前記メモリの前記保護領域に直接コピーされ、ステップ２５は以下を含みうる：
【００８８】
ステップ２５１：  前記メモリの前記保護領域に格納されている前記ファイル操作情報がすべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含んでいるかどうかを判定し、前記ファイル操作情報がすべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含んでいると判定された場合、ステップ２５２：前記電源障害保護プログラムを使用することにより、前記メモリの前記保護領域に格納されている前記ファイル操作情報を前記キャッシュ保護領域にコピーする、を実行する。
【００８９】
具体的には、前記ファイル操作情報がすべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含んでいるかどうかを判定することは、
前記メモリの前記保護領域に格納されている前記ファイル操作情報に含まれている前記データエントリの数の統計を収集し、前記数を前記ファイルシステムにより記録されている、すべての前記データエントリの数、及び、前記ファイル処理要求に対応する前記メタデータエントリの数と比較し、前記メモリの前記保護領域に格納されている前記ファイル操作情報に含まれている前記データエントリの数が前記ファイルシステムにより記録されている前記数と等しいならば、前記ファイル操作情報は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含んでいることを示している、又は
前記メモリの前記保護領域に格納されている前記ファイル操作情報がフラグ（例えば、「真」）を含んでいるかどうかをチェックし、前記ファイル操作情報が「真」であるフラグを含んでいるならば、前記ファイル操作情報は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含んでいることを示している、ということでありうる。
【００９０】
ステップ２６：  前記ホスト又は前記メモリが前記データ情報にアクセスできるように、前記複数のファイル操作情報にしたがってデータ情報を取得し、前記データ情報を前記第１ライトキャッシュに書き込む。
【００９１】
具体的には、前記データ情報は、前記キャッシュ保護領域内に格納されている前記複数のファイル操作情報に従って取得されてよい。前記データ情報は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータ、又は、前記キャッシュ保護領域に格納されているすべての前記データ及び前記メタデータのアドレスでありうる。前記データ情報が取得された後、前記データ情報は、前記第１ライトキャッシュに書き込まれる。
【００９２】
前記データ情報がすべての前記データ及び前記ファイル処理要求に対応する前記メタデータである場合、前記第１ライトキャッシュは、前記キャッシュ保護領域によりすべての前記データ及び前記ファイル処理要求に対応する前記メタデータを格納するために使用される形式とは異なる形式で、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータを格納することに注意をすべきである。例えば、前記第１ライトキャッシュは、前記データをページの形式で格納してもよく、前記キャッシュ保護領域は、前記データを例えばコントロールリンクのデータ構造の形式で格納してもよい。
【００９３】
前記第１コントローラに障害が発生した後、再び電源が入った場合、前記キャッシュ保護領域から復元される前記複数のファイル操作情報は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータに関することは先の説明から理解できる。したがって、前記複数のファイル操作情報に従って取得されるとともに前記第１ライトキャッシュに書き込まれる前記データ情報もまたすべての前記データ及び前記ファイル処理要求に対応する前記メタデータ、又は、前記キャッシュ保護領域に格納されているすべての前記データ及び前記メタデータのアドレスである。すなわち、前記ファイル処理要求に対応し前記第１ライトキャッシュに書き込まれる前記データは、不可分性の要件に合致する。したがって、前記データ情報は、前記ホスト又は前記メモリによりアクセスされ得る。
【００９４】
具体的には、前記ホストによる前記データ情報をアクセスすることは、前記ホストがファイルアクセス要求を前記第１コントローラに送信することを示し、前記ファイルアクセス要求は、前記ファイル処理要求に対応するデータにアクセスに使用される。例えば、前記ファイル処理要求がファイル書き込み要求である場合、前記ファイルアクセス要求は、前記ファイル書き込み要求に対応する書き込まれるデータにアクセスする必要がありうる。前記ファイルアクセス要求を受信した後、前記第１コントローラは、前記第１ライトキャッシュに格納されている書き込まれるデータを前記ホストに送信し得る。
【００９５】
具体的には、前記メモリにより前記データ情報にアクセスすることは、前記メモリに、前記第１ライトキャッシュに格納されているすべての前記データ及び前記ファイル処理要求に対応する前記メタデータを書き込むことを示している。前記第１ライトキャッシュの容量は、ハードディスクの容量より少ないため、前記第１ライトキャッシュに格納されている前記データが一定の閾値に達する場合、前記第１ライトキャッシュに格納されている前記データは、前記メモリに書き込まれる必要がある。
【００９６】
オプションとして、前記ファイル操作情報にしたがって前記データ情報が取得された後、前記キャッシュ保護領域に格納されている前記複数のファイル操作情報は削除してよい。
【００９７】
本発明の実施形態において、ファイル処理要求に対応するすべての複数のファイル操作情報は、キャッシュ保護領域に書き込まれる。前記キャッシュ保護領域がデータ保護機能を提供するので、第１コントローラに障害が生じた後に電源が再び入れられた場合、前記複数のファイル操作情報は、前記キャッシュ保護領域から復元することができ、前記複数のファイル操作情報にしたがってデータ情報が取得されるとともに第１ライトキャッシュに書き込まれる。すべての前記複数のファイル操作情報が前記キャッシュ保護領域に書き込まれるため、前記第１コントローラに障害が生じた後、再び電源が入った場合に前記キャッシュ保護領域から復元されるファイル操作情報もまた、全て揃っている。したがって、前記複数のファイル操作情報に従って取得される前記データ情報はアトミックであり、ホスト又はメモリにより直接アクセスし得る。従来技術においては、第１ライトキャッシュのデータ情報は、アトミックではなく、そしてメモリのデータだけがアトミックである。したがって、従来技術において、前記第１ライトキャッシュの前記データ情報は、ホストにより直接アクセスすることができず、対応するデータは前記ホストに提供される前に前記メモリから読み出さなければならない。従来技術と比較し、本発明の実施形態は、ホストのデータアクセス効率性を改善する。
【００９８】
前述の実施形態において、ステップ２６を実行した後、前記第１コントローラも、前記第１ライトキャッシュに格納されている前記データ情報に従って、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータを取得でき、前記データ及び前記メタデータを前記メモリに書き込むことができる。前記第１ライトキャッシュの容量が限定されているため、一般には、前記第１ライトキャッシュの前記データが一定の閾値に達する場合、前記第１ライトキャッシュに格納されている前記データは、前記メモリに書き込まれ得る。
【００９９】
オプションとして、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記メモリに書き込まれる場合、前記メモリに書き込まれない情報は、現在、前記メモリに書き込まれていないデータを示すために格納してもよい。前記第１コントローラに前記データ及び前記メタデータが前記メモリに書き込まれる処理において障害があるならば、前記メモリに書き込まれていない前記情報を前記メモリの前記保護領域に書き込むために、前記電源障害保護プログラムが使用されてもよい。前記第１コントローラの電源が再び入った後、前記メモリに書き込まれていない前記データは、前記メモリに書き込まれていない前記情報に従って取得でき、前記メモリに書き込まれていない前記データは、前記メモリに連続的に書き込まれる。したがって、これにより、前記メモリに既に書き込まれているデータを繰り返し書き込むことを避けられ、データの書き込み効率が改善される。
【０１００】
オプションとして、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記メモリに書き込まれた後、前記メモリに書き込まれていない前記情報は削除してもよい。
【０１０１】
加えて、本発明の実施形態は２つのコントローラを備えたストレージシステムにも適用できる。図４に示されているように、前記ストレージシステムは、少なくとも１つのアプリケーションサーバ１１（図３では３台示されている）と、２つのコントローラ２２と、１つのメモリ３３を備えている。
【０１０２】
前記アプリケーションサーバ１１、前記コントローラ２２、及び前記メモリ３３の構造及び機能は、前述した実施形態において説明したそれらと同様であり、詳細は繰り返して説明しない。
【０１０３】
違いは、本発明の実施形態は、２つのコントローラ２２を含むことができることであり、前記２つのコントローラ２２は、同じ物理的構造及び機能を備え、前記アプリケーションサーバ１１により送信されたファイル処理要求を受信でき、前記メモリ３３に格納されているデータにアクセスする。加えて、前記２つのコントローラ２２は互いに通信してもよく、例えば、ミラーチャネル又は他の方法を通じてデータを転送する。
【０１０４】
説明を容易にするため、前記２つのコントローラ２２を第１コントローラと、第２コントローラとに分類する。前記第１コントローラに含まれているライトキャッシュを、第１ライトキャッシュと呼ぶことにし、前記第２コントローラに含まれているライトキャッシュを第２ライトキャッシュと呼ぶ。
【０１０５】
前記第２ライトキャッシュは、前記第１ライトキャッシュと同様のハードウェア構造を有している。前記第１コントローラがプライマリコントローラであり、前記第２コントローラがセカンダリコントローラである場合、前記第２ライトキャッシュの属性は、ミラーであり、前記第２ライトキャッシュは、前記第１コントローラにより送信されるデータを受信するように構成されている。この場合において、前記第２ライトキャッシュのデータは、前記ホストに提供されたり、前記メモリに書き込まれたりしない。前記第２コントローラがプライマリコントローラであり、前記第１コントローラがセカンダリコントローラである場合、前記第２ライトキャッシュの属性は、ローカルである。この場合において、前記第２ライトキャッシュの前記データは、前記ホストに提供でき、又は、前記メモリに書き込むことができる。
【０１０６】
オプションとして、本発明の実施形態は、前記第１コントローラにより、前記複数のファイル操作情報を前記第２コントローラに送信することをさらに含んでよい。
【０１０７】
オプションとして、前記第１コントローラは、ステップ２２の後に、前記複数のファイル操作情報を前記第２コントローラに送信しうる。前記複数のファイル操作情報は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータであってよい。具体的には、前記第１コントローラは、ミラーメッセージを前記第２コントローラに送信しうる。前記ミラーメッセージは、前記複数のファイル操作情報を含む。又は、前記第１コントローラが前記ファイル処理要求を複数のファイル操作に分割し、それぞれのファイル操作を別々に処理する場合、前記第１コントローラは、ファイル操作を処理するとともに対応データを毎回生成した後、ミラーメッセージを前記第２コントローラに送信し得る。前記ミラーメッセージは、前記ファイル操作に対応するデータを含む。最後のミラーメッセージを前記第２コントローラに送信後、前記第１コントローラは、前記複数のファイル操作情報が既に送信されていることを前記第２コントローラに通知するために、確認メッセージを前記第２コントローラに送信し得る。
【０１０８】
オプションとして、前記第１コントローラは、ステップ２３の後、前記複数のファイル操作情報を前記第２コントローラに送信してもよい。送信方法について、前記第１コントローラがミラーメッセージを前記第２コントローラに送信し、前記ミラーメッセージは、前記複数のファイル操作情報を含んでいる、又は、前記第１コントローラは、複数のミラーメッセージを前記第２コントローラに送信し、各ミラーメッセージはファイル操作に対応するデータを含んでいる。最後のミラーメッセージを前記第２コントローラに送信した後、前記第１コントローラは、前記複数のファイル操作情報が既に送信されていることを前記第２コントローラに通知するために、確認メッセージを前記第２コントローラに送信する。
【０１０９】
オプションとして、前記第１コントローラは、ステップ２４の後、前記複数のファイル操作情報を前記第２コントローラに送信してもよい。具体的な送信方法としては、上述の方法と同様であり、詳細は繰り返して説明しない。
【０１１０】
前記複数のファイル操作情報を受信した後、前記第２コントローラは、まず、前記複数のファイル操作情報を前記キャッシュ保護領域に書き込み、前記複数のファイル操作情報が前記キャッシュ保護領域に既に正常に書き込まれた後、前記データ情報を第２ライトキャッシュに書き込む。前記データ情報は、前記キャッシュ保護領域に格納されている、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータを指すか、又はすべての前記データ及び前記ファイル処理要求に対応する前記メタデータのアドレスを指す。前記キャッシュ保護領域は、前記第２コントローラに含まれているキャッシュ保護領域を指すことに注意すべきである。
【０１１１】
したがって、前記第２ライトキャッシュに格納されているデータ情報は、前記第１ライトキャッシュに格納されている前記データ情報と一致する。前記第１コントローラに障害がある場合、前記第２コントローラは、前記第１コントローラに置き換えて作業を続けられるように、前記第２ライトキャッシュの前記属性をローカルに変更する。例えば、前記第２ライトキャッシュに格納されている前記データ情報にしたがって、前記ファイル処理要求に対応する操作が前記メモリに対し実行されるか、又は前記第２ライトキャッシュに格納されている前記データ情報が前記ホストに提供される。
【０１１２】
従来技術において、前記第１コントローラに障害がある場合、前記第２コントローラは、まず、前記メモリからログ情報を読み出す必要があり、前記ログ情報に従って前記データ情報を取得し、その後、前記ホストに前記情報を提供する。本発明の実施形態においては、前記第１コントローラに障害がある場合、前記第２コントローラは、前記ホストに対し、前記第２ライトキャッシュに格納されている前記データ情報を直接提供してもよい。以上から分かるように、本発明の実施形態においては前記ホストの前記データアクセス効率性が改善される。
【０１１３】
以下では、本発明の実施形態に従う他のデータ格納方法を詳細に説明する。前記方法は、ストレージシステムに適用される。前記ストレージシステムは、ストレージデバイスと、ホストと、を含んでいる。前記ストレージデバイスは、第１コントローラと、第２コントローラと、メモリと、を備えている。前記第２コントローラは、ライトキャッシュ及びキャッシュ保護領域を具備している。前記ライトキャッシュ及び前記キャッシュ保護領域は、データ保護機能を提供する。図５に示されているように、前記方法は、以下を含む：
【０１１４】
ステップ５１：  前記第１コントローラは、ファイル処理要求を受信し、前記ファイル処理要求を、複数のファイル操作に分割し、それぞれのファイル操作に対し別々にファイル処理を実行し、複数のファイル操作情報を生成する。
【０１１５】
前記ファイル処理要求は、アプリケーションサーバ（ホスト、とも称される）により送信される。前記ファイル処理要求の操作タイプは、例えば、ファイル書き込み要求、ファイル修正要求、ファイル作成要求、又はファイル削除要求等の、前記メモリに格納されているデータを修正するためのファイル処理要求でありうるがここでは限定しない。異なるファイル処理要求は、異なるパラメータを含みうる。例えば、ファイル書き込み要求を一例として使用すると、前記ファイル書き込み要求は、ファイルＩＤ、ファイルオフセット(offset)、ファイル長(length)、書き込まれるデータなどのパラメータを含んでいる。
【０１１６】
ファイルシステムを有するストレージデバイスにおいて、前記ファイルシステムは、前記ファイル処理要求を処理する場合、前記ファイル処理要求の操作タイプに従って、ファイル処理要求を複数のファイル操作に分割する必要がしばしばある。例えば、前記ファイルシステムはファイル書き込み要求を、データ修正ファイル操作と、メタデータ修正ファイル操作とに分割する必要がある。他の例では、前記ファイルシステムは、ファイル作成要求を、親ディレクトリ修正ファイル操作と、ファイル作成ファイル操作とに分割する必要がある。さらに別の例では、前記ファイルシステムは、ファイル名変更要求をソースディレクトリ修正ファイル操作と、更新先ディレクトリ修正ファイル操作とに分割する必要がある。
【０１１７】
オプションとして、前記ファイルシステムは、前記ファイル処理要求の前記操作タイプに従って、前記ファイル処理要求を前記複数のファイル操作に分割し、それぞれのファイル操作を別々に実行する場合、すべてのデータエントリの数、及び、前記ファイル処理要求に対応するメタデータエントリの数を記録してよい。
【０１１８】
ファイル処理要求を処理する場合、前記第１コントローラは、前記ファイル処理要求から分離されたそれぞれのファイル操作に対し、意味変換又は他のファイル処理を連続的に実際に実行することは理解し得る。ファイル操作を処理するごとに、前記第１コントローラは、前記ファイル操作に対応するデータ及びメタデータを一時的キャッシュに書き込む。したがって、前記第１コントローラが最後のファイル操作を処理し、前記最後のファイル操作に対応するデータ及び前記メタデータを前記一時的キャッシュに書き込んだ後、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータも前記一時的キャッシュに書き込まれる。したがって、本発明の実施形態において、前記一時的キャッシュに格納されているデータは、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータである。同様に、本発明の実施形態において、前記複数のファイル操作情報は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータである。
【０１１９】
異なるファイル処理要求において、前記異なるファイル処理要求に対し生成されたファイル操作情報もまた異なる。前記ファイル処理要求がファイル書き込み要求の場合、前記ファイル処理要求のファイル操作情報は、前記ファイル書き込み要求において搬送される書き込まれるデータ、メタデータ等でありうる。前記ファイル処理要求がファイル修正要求の場合、前記ファイル修正要求のファイル操作情報は、前記ファイル修正要求において搬送される、書き込まれるデータ、メタデータ等でありうる。前記ファイル処理要求がファイル作成要求の場合、前記ファイル作成要求のファイル操作情報は、ディレクトリ情報、メタデータなどでありうる。前記ファイル処理要求がファイル削除要求の場合、前記ファイル削除要求のファイル操作情報は、ファイルスペースを解放するための特別なページデータ、削除後の前記データ及びメタデータなどでありうる。
【０１２０】
以下のステップは、ファイル書き込み要求を一例として使用して説明されている。前記ファイル書き込み要求において、前記ファイル書き込み要求において生成されるファイル操作情報は、ファイルＩＤ、ファイルオフセット（offset）、ファイル長（length）、書き込み時間、書き込まれるデータ、などを含んでよい。
【０１２１】
ステップ５２：  前記複数のファイル操作情報を前記第２コントローラに書き込む。
【０１２２】
オプションとして、前記第１コントローラは、ミラーメッセージを前記第２コントローラに送信してもよい。前記ミラーメッセージは、前記複数のファイル操作情報を含んでいる、又は、前記第１コントローラが前記ファイル処理要求を複数のファイル操作に分割し、それぞれのファイル操作を別々に処理する場合、ファイル操作を処理し、対応するデータを毎回生成した後、前記第１コントローラは、ミラーメッセージを前記第２コントローラに送信してもよい。前記ミラーメッセージは、前記ファイル操作に対応するデータを含んでいる。最後のミラーメッセージを前記第２コントローラに送信した後、前記第１コントローラは、前記複数のファイル操作情報が既に送信されていることを前記第２コントローラに通知するために、確認メッセージを前記第２コントローラに送信してよい。
【０１２３】
ステップ５３：  前記第２コントローラは、すべての前記ファイル操作情報を前記キャッシュ保護領域に書き込む。
【０１２４】
具体的には、前記第２コントローラは、ファイルＩＤ、ファイルオフセット、ファイル長、書き込み時間、及び書き込まれるデータなどの前記ファイル操作情報を前記キャッシュ保護領域に書き込んでよい。前記キャッシュ保護領域は、データ保護機能を提供する。ファイル操作情報が前記キャッシュ保護領域に正常に書き込まれる場合、前記ファイル操作情報は、システム障害などを原因として失われない。
【０１２５】
前記複数のファイル操作情報を前記キャッシュ保護領域に書き込むことは、すべての前記複数のファイル操作情報が前記キャッシュ保護領域に書き込まれることを示しており、すなわち、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータは、前記キャッシュ保護領域に書き込まれることに注意すべきである。
【０１２６】
例えば、前記キャッシュ保護領域は特定のデータ構造を使用することによりデータを格納する。図３に示されているように、前記キャッシュ保護領域のデータは、コントロールリンクの形式において管理され得る。前記コントロールリンクは、複数のコントロールヘッダを含み、それぞれのコントロールヘッダは、ファイル処理要求に対応する。それぞれのコントロールヘッダのもとには、複数のスロット（slots）がマウントされており、各スロットは、各データ又は前記ファイル処理要求に対応する各メタデータを格納するために使用される。
【０１２７】
具体的には、前記ファイル操作情報をトラバースしうる。まず、１つのスロットが前記コントロールリンクにおける第１のデータ（例えば、ファイルＩＤ）のために要求され、前記スロットが正常に要求された後、前記第１のデータが前記スロットに書き込まれる。そして、１つのスロットが第２のデータ（例えば、オフセット）のために要求され、前記スロットが正常に要求された後、前記第２のデータが前記スロットに書き込まれる。残りも、前記ファイル操作情報の最後のデータがスロットに書き込まれるまで、同様に処理される。そして、前記ファイル処理要求に対応するコントロールヘッダが前記コントロールリンクに追加されうる。
【０１２８】
前記ファイル処理要求に対応する前記コントロールヘッダが前記コントロールリンクに追加された後は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記キャッシュ保護領域に正常にすでに書き込まれていることを示している。
【０１２９】
他の例として、前記キャッシュ保護領域の前記データは、二分木の形式において管理されうる。前記二分木は、複数のルートノードを含み、各ルートノードはファイル処理要求に対応する。各ルートノードには、複数の終端ノードがマウントされている。それぞれの終端ノードは、それぞれのデータ又は前記ファイル処理要求に対応するそれぞれのメタデータを格納するために使用される。
【０１３０】
具体的には、前記ファイル操作情報は、トラバースされ得る。まず、１つの終端ノードが前記二分木における第１のデータ（例えば、ファイルＩＤ）のために要求され、前記終端ノードが正常に要求された後、前記第１のデータが前記終端ノードに書き込まれる。そして、１つの終端ノードが第２のデータ（例えば、オフセット）のために要求され、前記終端ノードが正常に要求された後、前記第２のデータが前記終端ノードに書き込まれる。残りも最後のデータが終端ノードに書き込まれるまで同様に処理される。そして、前記ファイル処理要求に対応するルートノードが、前記二分木に追加され得る。
【０１３１】
前記ファイル処理要求に対応するルートノードが前記二分木に追加された後は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記キャッシュ保護領域にすでに正常に書き込まれていることを示している。
【０１３２】
コントロールリンク又は二分木は、キャッシュ保護領域で使用されるデータを格納するためのデータ構造の様式である。加えて、Ｂツリー、Ｂ＋ツリー、赤黒木などのデータ構造がデータを格納するために使用されてもよいが、ここでは限定しない。
【０１３３】
あるいは、前記キャッシュ保護領域は、コントロールリンク又は二分木などのデータ構造を使用してデータを格納する必要はない。前記第１コントローラは、前記ファイル操作情報をトラバースしうる。まず、前記第１コントローラは、前記キャッシュ保護領域における第１のデータ（例えば、ファイルＩＤ）のための記憶域スペースを要求し、前記記憶域スペースが正常に要求された後、前記キャッシュ保護領域の記憶域スペースに前記第１のデータを書き込む。そして、前記第１コントローラは、前記キャッシュ保護領域の第２のデータ（例えば、オフセット）のための記憶域スペースを要求し、前記記憶域スペースが正常に要求された後、前記キャッシュ保護領域の前記記憶域スペースに前記第２のデータを書き込む。残りは、前記キャッシュ保護領域の前記記憶域スペースに最後のデータが書き込まれるまで同様に処理する。そして、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが、正常に前記キャッシュ保護領域にすでに書きこまれたことを示すように、フラグ（例えば、真(true)）が前記キャッシュ保護領域に格納される前記ファイル操作情報にセットされ得る。オプションとして、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記キャッシュ保護領域に書き込まれたとは限らない場合、他のフラグ（例えば、偽(false)）がセットされてよい。
【０１３４】
あるいは、前記ファイルシステムが前記ファイル処理要求を別々に処理するために複数のファイル操作に分割する場合、前記ファイルシステムは、前記ファイル操作情報に含まれているすべてのデータエントリ及びメタデータエントリの数の統計を収集し、記録し、カウンタ又は同様の機能を備えた前記第２コントローラ内のソフトウェアモジュールをセットしてもよい。前記カウンタの初期値は０である。前記ファイル操作情報に含まれている各データは、前記キャッシュ保護領域の前記要求された記憶域スペースに連続的に書き込まれる。データが正常に書き込まれる毎に、前記カウンタの値は１ずつ増加する。前記カウンタの値が前記ファイル操作情報に含まれるすべての前記データエントリ及び前記メタデータエントリの記録されている数と等しければ、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータは、前記キャッシュ保護領域に正常に既に書き込まれていることを示している。
【０１３５】
ステップ５４：  前記第２コントローラは、前記ファイル操作情報にしたがってデータ情報を取得し、前記データ情報を前記ライトキャッシュに書き込む。
【０１３６】
具体的には、前記データ情報は、前記キャッシュ保護領域に格納されている、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータであるか、又は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータのアドレスである。
【０１３７】
前記第１コントローラに障害がある場合、前記第２コントローラは、前記ライトキャッシュに格納されている前記データ情報を前記ホストに対し提供するか、又は、前記ファイル処理要求に対応する操作、例えばファイル作成、ファイル削除、ファイルに書き込み、を前記メモリに対し実行する。
【０１３８】
ステップ５３は、オプションのステップであり、前記データ情報を前記ライトキャッシュに書き込む処理において前記第２コントローラに障害がある場合、前記キャッシュ保護領域内に格納されている前記複数のファイル操作情報に従って前記データ情報を復元し、前記データ情報を前記ライトキャッシュに書き込むために使用されることに注意すべきである。
【０１３９】
同様に、本発明の実施形態は、
前記第２コントローラに障害がある場合、前記キャッシュ保護領域に対応するデータ構造に従って、前記キャッシュ保護領域が前記複数のファイル操作情報を含んでいることを判定し、電源障害保護プログラムを使用することにより、前記複数のファイル操作情報を前記メモリの保護領域に格納するか、又は、
前記第２コントローラに障害がある場合、前記フラグに従って、前記キャッシュ保護領域が前記複数のファイル操作情報を含んでいることを判定し、電源障害保護プログラムを使用することにより、前記複数のファイル操作情報を前記メモリの保護領域に格納することを含んでよい。
【０１４０】
具体的な実施態様については、前述の実施形態におけるステップ２３からステップ２６を参照することとし、ここでは再び詳細には説明しない。
【０１４１】
オプションとして、本発明の実施形態は、前記第１コントローラが前記複数のファイル操作情報を前記第１コントローラの前記キャッシュ保護領域に書き込んだ後、前記第１コントローラに障害があり、再び電源が入った場合、前記第１コントローラの前記キャッシュ保護領域から前記複数のファイル操作を復元し、前記ファイル操作情報に従って、前記データ情報を取得し、前記データ情報を前記第１コントローラの前記ライトキャッシュに書き込むことも含んでよい。具体的な実施態様については、前述の実施形態におけるステップ２３からステップ２６を参照することとし、ここでは再び詳細には説明しない。
【０１４２】
従来技術において、データ不可分性は、前記メモリにおいて保証されており、前記ライトキャッシュのデータは、直接前記ホストに対し提供できない。したがって、前記第１コントローラに障害がある場合、前記第２コントローラは、前記メモリから対応するログ情報を読み出し、前記ログ情報に従って、前記ライトキャッシュから前記データ情報を復元し、前記情報を前記ホストに提供する必要がある。しかし、本発明の実施形態において、障害が生じる前に、前記第１コントローラが前記複数のファイル操作情報を前記第２コントローラに送信し、前記第２コントローラが前記複数のファイル操作情報に従って、前記データ情報を取得し、前記データ情報を前記ライトキャッシュに書き込むので、前記第１コントローラに障害がある場合、前記第２コントローラは、前記ライトキャッシュのデータを前記ホストに直接提供できる、又は、前記ファイル処理要求に対応する操作を前記メモリに対し実行し得る。
【０１４３】
［本発明の実施形態による装置］
本発明の実施形態は、データストレージ装置を提供し、図６に示すように、前記装置は、
ファイル処理要求を受信し、前記ファイル処理要求を複数のファイル操作に分割し、それぞれのファイル操作に対してファイル処理を別々に実行し、複数のファイル操作情報を生成するように構成されているファイル処理モジュール６１と、
すべての前記複数のファイル操作情報をキャッシュ保護領域に書き込むように構成されているライティングモジュール６２と、
前記第１コントローラに障害が発生した後、電源が再び入った場合、前記キャッシュ保護領域から前記複数のファイル操作情報を復元するように構成されている復元モジュール６３と、を含み、
前記ライティングモジュール６２は、前記ホストが前記データ情報にアクセスできるように、前記複数のファイル操作情報に従ってデータ情報を取得し、前記データ情報を第１ライトキャッシュに書き込むようにさらに構成されている。
【０１４４】
オプションとして、前記ライティングモジュール６２は、
それぞれのファイル操作情報のための前記キャッシュ保護領域内の記憶域スペースを要求し、
それぞれのファイル操作情報を前記要求された記憶域スペースに格納し、
すべての前記複数のファイル操作情報が対応する記憶域スペースに既に格納されていることを判定し、
前記キャッシュ保護領域に対応するデータ構造において、前記複数のファイル操作情報が格納されている前記記憶域スペースにデータを格納するように特に構成されている。
【０１４５】
オプションとして、前記ライティングモジュール６２は、
それぞれのファイル操作情報を前記キャッシュ保護領域に連続的にに送信し、
すべての前記複数のファイル操作情報が前記キャッシュ保護領域に既に送信されていることを判定し、
前記キャッシュ保護領域に受信されている前記複数のファイル操作情報を正常データとしてマークするように特に構成され、
前記正常データは、すべての前記複数のファイル操作情報が前記キャッシュ保護領域に既に書き込まれていることを示すために使用される。
【０１４６】
オプションとして、前記装置は、
前記第１コントローラに障害がある場合、前記キャッシュ保護領域に対応する前記データ構造に従って、前記キャッシュ保護領域が前記複数のファイル操作情報を含んでいることを判定し、電源障害保護プログラム使用することにより、前記複数のファイル操作情報をメモリの保護領域に格納するように構成されている保護モジュール６４、または、
前記第１コントローラに障害がある場合、前記フラグに従って、前記キャッシュ保護領域が前記複数のファイル操作情報を含んでいることを判定し、電源障害保護プログラムを使用することにより、前記複数のファイル操作情報をメモリの保護領域に格納するように構成されている保護モジュール６４、をさらに具備してもよい。
【０１４７】
オプションとして、前記装置は、
前記キャッシュ保護領域内に格納されている前記複数のファイル操作情報を削除するように構成されている削除モジュール６５をさらに具備してもよい。
【０１４８】
オプションとして、前記装置は、
前記第２コントローラが、前記複数のファイル操作情報に従って、前記ファイル処理要求に対応するデータ情報を取得し、前記データ情報を前記第２コントローラの前記第２ライトキャッシュに書き込めるように、前記複数のファイル操作情報を前記第２コントローラに送信するように構成されている送信モジュール６６をさらに具備してもよい。
【０１４９】
本発明の実施形態により提供される前記装置は、前述の実施形態において説明された前記第１コントローラでセットしてよく、前述の実施形態において説明された前記データ格納方法を実行するように構成されている。種々のモジュールの機能の詳細な説明については、前記方法の実施形態においてなされた説明を参照することとし、ここでは再度詳細は説明しない。
【０１５０】
図７は、本発明の実施形態によるストレージデバイスを示している。前記ストレージデバイスは、第１コントローラ７１と、第２コントローラ７２と、メモリと、を備え、前記第２コントローラは、ライトキャッシュを具備している。
【０１５１】
前記第１コントローラ７１は、ファイル処理要求を受信し、前記ファイル処理要求を複数のファイル操作に分割し、それぞれのファイル操作に対し別々のファイル処理を実行し、複数のファイル操作情報を生成し、前記複数のファイル操作情報を前記第２コントローラ７２に送信するように構成されている。
【０１５２】
オプションとして、前記第１コントローラ７１は、第１ミラーメッセージを前記第２コントローラ７２に送信するように特に構成されており、前記第１ミラーメッセージは、前記複数のファイル操作情報を具備する。
【０１５３】
オプションとして、前記第１コントローラ７１は、複数の第２ミラーメッセージを前記第２コントローラ７２に送信するように特に構成されており、それぞれの前記第２ミラーメッセージは、前記複数のファイル操作情報の１つを含んでいる。
【０１５４】
前記第２コントローラ７２は、前記第１コントローラ７１に障害がある場合、ホストが前記データ情報にアクセスするか、又は、前記メモリに対し前記ファイル処理要求に対応する操作を実行できるように、前記ファイル操作情報に従ってデータ情報を取得し、前記データ情報を前記ライトキャッシュに書き込むように構成されている。
【０１５５】
オプションとして、前記第２コントローラ７２は、すべての前記ファイル操作情報を前記キャッシュ保護領域に書き込むようにさらに構成されている。
【０１５６】
具体的には、前記第２コントローラ７２は、それぞれのファイル操作情報のための前記キャッシュ保護領域内の記憶域スペースを要求し、前記要求された記憶域スペースにそれぞれのファイル操作情報を格納し、すべての前記複数のファイル操作情報が対応する記憶域スペースに既に格納されていることを判定し、前記キャッシュ保護領域に対応するデータ構造において、データを前記複数のファイル操作情報が格納されている前記記憶域スペースに格納するように構成されているか、又は、
前記第２コントローラ７２は、それぞれのファイル操作情報を前記キャッシュ保護領域に連続的に送信し、すべての前記複数のファイル操作情報が前記キャッシュ保護領域に既に送信されていることを判定し、前記キャッシュ保護領域に受信されている前記複数のファイル操作情報に対応するフラグをセットし、前記フラグは、すべての前記複数のファイル操作情報は前記キャッシュ保護領域に既に書き込まれていることを示すために使用されるように構成されている。
【０１５７】
オプションとして、前記第２コントローラ７２は、前記キャッシュ保護領域に対応する前記データ構造に従って、前記キャッシュ保護領域は前記複数のファイル操作情報を含んでいることを判定し、電源障害保護プログラムを使用することにより、前記メモリの保護領域の前記複数のファイル操作情報を格納するようにさらに構成されている。
【０１５８】
オプションとして、前記第２コントローラ７２は、前記フラグに従って、前記キャッシュ保護領域が前記複数のファイル操作情報を含んでいることを判定し、電源障害保護プログラムを使用することにより、前記複数のファイル操作情報を前記メモリの保護領域に格納するようにさらに構成されている。
【０１５９】
本発明の実施形態による前記ストレージデバイスは、前述の実施形態において説明したように、少なくとも２つのコントローラを備え、前述の実施形態において説明された前記データ格納方法を実行するように構成されているストレージデバイスである。前記コントローラの機能の詳細な説明は、前記方法の実施形態においてされた説明を参照することとし、ここでは再度詳細に説明しない。
【０１６０】
図８は、本発明の実施形態によるストレージデバイスを示している。前記ストレージデバイスは、
プロセッサ１０１と、メモリ１０２と、システムバス(単に「バス」とも)１０５と、通信インターフェース１０３とを具備している。前記プロセッサ１０１、前記メモリ１０２、及び前記通信インターフェース１０３は、前記システムバス１０５を使用することにより接続され、互いに通信する。
【０１６１】
前記プロセッサ１０１は、シングルコア又はマルチコアの中央演算処理ユニット、特定用途向け集積回路(ASIC)、又は本発明の実施形態を実施するように構成されている１つまたは複数の集積回路であってよい。
【０１６２】
前記メモリ１０２は、例えば、少なくとも１つのディスクメモリなどの、ハイスピードＲＡＭメモリ又は、不揮発性メモリ(non-volatile memory)であってよい。
【０１６３】
前記通信インターフェース１０３は、ストレージデバイスと通信するように構成されている。
【０１６４】
前記メモリ１０２は、コンピュータ実行命令１０２１を格納するように構成されている。具体的には、前記コンピュータ実行命令１０２１は、プログラムコードを含みうる。
【０１６５】
コンピュータが実行されている場合、前記プロセッサ１０１は、前記コンピュータ実行命令１０２１を実行し、図２に示されている方法のプロシージャを実行できる。
【０１６６】
便利かつ簡潔な説明のために、前述したデバイス及びモジュールの動作処理の詳細は、対応する前述の方法の実施形態における処理を参照することで、当業者であれば明確に理解し得るので、ここでは再度詳細な説明はしない。
【０１６７】
本発明で提供されるいくつかの実施形態において、開示されたデバイス及び方法は他の方法においても実施し得ることは理解され得る。例えば、説明されたデバイスの実施形態は単なる例示にすぎない。例えば、モジュールの分割は、単なる論理機能による分割であり、実際の実装における他の分割であってもよい。例えば、複数のモジュール又は構成要素は、組み合わせたり、他のデバイスに組み込まれたり、又はいくつかの特徴は無視又は実行されなくてもよい。加えて、表示され、又は考察された相互結合又は直接結合又は通信接続は、いくつかの通信インターフェースを通じて実装してよい。前記デバイス間又はモジュール間の間接結合又は通信接続は、電気的、機械的、または他の形式で実装してよい。
【０１６８】
別々の部分として説明されたモジュールは、物理的に分かれていても、分かれていなくてもよく、モジュールとして示された部分は、物理的なモジュールであってもそうでなくてもよく、一か所に配置されても、複数のネットワークのサブモジュールに対して分散してもよい。全部または一部のモジュールは、前記実施形態のソリューションの目的を達成するための実際の必要性に従って選択してよい。
【０１６９】
加えて、本発明の実施形態の機能モジュールは、１つの処理モジュールに統合しても、物理的に単体でそれぞれのモジュールが存在していても、又は２以上のモジュールが１つのモジュールに統合されてもよい。
【０１７０】
前記実施形態のステップの全部又は一部は、ハードウェア又は適切なハードウェアに指示するプログラムにより実施されてもよいことは、当業者であれば理解し得る。前記プログラムは、コンピュータ可読記録媒体に格納されてもよい。前記記録媒体は、読み取り専用メモリ、磁気ディスク、又は光ディスクを含んでもよい。
【０１７１】
最後に、前述した実施形態は、単に、本発明の技術的ソリューションを説明するためのものであり、本発明を限定するものではないことに注意すべきである。前述の実施形態を参照しながら本発明を詳細に説明したが、当業者であれば、そのような修正又は置換により、技術的ソリューションに対応する本質が本発明の実施形態の技術的ソリューションの範囲から逸脱しない限り、前述の実施形態において説明された技術的ソリューションを修正したり、一部又はすべての技術的特徴に等価な置換をしたりすることができることを理解すべきである。
【符号の説明】
【０１７２】
１１      アプリケーションサーバ
２２      コントローラ
３３      メモリ
６１      ファイル処理モジュール
６２      ライティングモジュール
６３      復元モジュール
６４      保護モジュール
６５      削除モジュール
６６      送信モジュール
７１      第１コントローラ
７２      第２コントローラ
１０１    プロセッサ
１０２    メモリ
１０３    通信インターフェース
１０２１  コンピュータ実行命令
【図１】
0006264666.tif 000002
【図２】
0006264666.tif 000003
【図３】
0006264666.tif 000004
【図４】
0006264666.tif 000005
【図５】
0006264666.tif 000006
【図６】
0006264666.tif 000007
【図７】
0006264666.tif 000008
【図８】
0006264666.tif 000009