(58)【調査した分野】(Int.Cl.,DB名)
データ格納方法であって、前記方法は、ストレージシステムに適用され、前記ストレージシステムは、ストレージデバイスと、ホストとを具備し、前記ストレージデバイスは、第1コントローラと、第2コントローラと、メモリとを具備し、前記第2コントローラは、データ保護機能を有するキャッシュ保護領域と、ライトキャッシュを具備し、
前記方法は、
前記第1コントローラにより、ファイル処理要求を受信するステップと、
前記第1コントローラにより、前記ファイル処理要求を複数のファイル操作に分割するステップと、
前記第1コントローラにより、それぞれの前記複数のファイル操作に対してファイル処理を別々に実行し、複数のファイル操作情報を生成するステップと、
前記第1コントローラにより、前記ファイル処理要求に対応する前記複数のファイル操作情報のすべてを前記第2コントローラへ送信するステップと、
前記第2コントローラにより、前記ファイル処理要求に対応する前記複数のファイル操作情報のすべてを前記キャッシュ保護領域に書き込むステップと、
前記第2コントローラにより、電源障害保護プログラムを使用することにより、前記第2コントローラの障害に基づいて、前記ファイル処理要求に対応する前記複数のファイル操作情報のすべてを前記メモリの保護領域に格納するステップと、
前記第2コントローラにより、前記第2コントローラが再び電源が入ったことを判定するステップと、
前記第2コントローラにより、前記ファイル処理要求に対応する前記複数のファイル操作情報のすべてを前記保護領域から前記キャッシュ保護領域へコピーするステップと、
前記第2コントローラにより、前記ファイル処理要求に対応する前記複数のファイル操作情報のすべてに従って、前記ファイル処理要求のデータ情報を取得するステップと、
前記第1コントローラに障害がある場合に、前記ホストが前記データ情報にアクセスするために、前記第2コントローラにより、前記データ情報を前記ライトキャッシュに書き込むステップと、
を具備することを特徴とするデータ格納方法。
ストレージデバイスであって、前記ストレージデバイスは、第1コントローラ、第2コントローラ、メモリを具備し、前記第2コントローラは、データ保護機能を有するキャッシュ保護領域と、ライトキャッシュを具備し、
前記第1コントローラは、ファイル処理要求を受信し、前記ファイル処理要求を複数のファイル操作へ分割し、前記ファイル処理要求に対応する複数のファイル操作情報を生成するためにそれぞれの前記複数のファイル操作に対してファイル処理を別々に実行し、前記ファイル処理要求に対応する前記複数のファイル操作情報のすべてを前記第2コントローラへ送信するように構成され、
前記第2コントローラは、前記ファイル処理要求に対応する前記複数のファイル操作情報のすべてを前記キャッシュ保護領域に書き込み、前記第2コントローラの障害に基づいて、前記ファイル処理要求に対応する前記複数のファイル操作情報のすべてを前記メモリの保護領域に格納し、前記第2コントローラが再び電源が入ったことを判定し、前記ファイル処理要求に対応する前記複数のファイル操作情報のすべてを前記保護領域から前記キャッシュ保護領域へコピーし、前記ファイル処理要求に対応する前記複数のファイル操作情報のすべてに従って、前記ファイル処理要求のデータ情報を取得し、前記第1コントローラに障害がある場合に、ホストが前記データ情報にアクセスするために、前記データ情報を前記ライトキャッシュに書き込むように構成される、
ストレージデバイス。
前記第1コントローラが、前記第2コントローラへ第1ミラーメッセージを送信するように構成され、前記第1ミラーメッセージが前記複数のファイル操作情報のすべてを具備する、
請求項8に記載のストレージデバイス。
前記第1コントローラが、前記第2コントローラへ複数の第2ミラーメッセージを送信するように特に構成され、前記第2ミラーメッセージのそれぞれが前記複数のファイル操作情報のすべてのうち1つを具備する、
請求項8に記載のストレージデバイス。
前記第2コントローラが、ファイル操作情報のそれぞれのために前記キャッシュ保護領域の格納スペースを要求し、要求された格納スペースに各ファイル操作情報を格納し、前記ファイル処理要求に対応する前記複数のファイル操作情報のすべてがキャッシュ保護領域内にあることを示すために、前記要求された格納スペースに格納された前記複数のファイル操作情報をデータ構造にまとめ、前記キャッシュ保護領域内の前記データ構造を記載する情報を記憶するように特に構成される
請求項8に記載のストレージデバイス。
前記第2コントローラが、連続的に前記キャッシュ保護領域へファイル操作情報のそれぞれを送信し、前記複数のファイル操作情報のすべてが前記キャッシュ保護領域へ既に送信されていることを判定し、前記キャッシュ保護領域内の受信された前記複数のファイル操作情報のすべてに対応するフラグを設定するように特に構成され、前記フラグは、前記複数のファイル操作情報のすべてが前記キャッシュ保護領域へ既に書き込まれていることを示すために使用される、
請求項8に記載のストレージデバイス。
前記複数のファイル操作情報のすべてを前記メモリの前記保護領域に格納する前に、前記第2コントローラが、前記複数のファイル操作情報のすべてが前記キャッシュ保護領域に既に格納されていることを、前記キャッシュ保護領域に対応する前記データ構造に基づいて判定するようにさらに構成される、
請求項11に記載のストレージデバイス。
前記複数のファイル操作情報のすべてを前記メモリの前記保護領域に格納する前に、前記第2コントローラが、前記複数のファイル操作情報のすべてが前記キャッシュ保護領域に既に格納されていることを、フラグに基づいて判定するようにさらに構成される、
請求項12に記載のストレージデバイス。
【発明の概要】
【課題を解決するための手段】
【0003】
本発明の実施形態は、ホストのデータアクセス効率が向上するデータ格納方法、データストレージ装置、及びストレージデバイスを提供する。
【0004】
第1の態様によれば、本発明の実施形態は、ストレージシステムに適用されるデータ格納方法を提供し、前記ストレージシステムは、ストレージデバイスと、ホストとを含み、前記ストレージデバイスは、第1コントローラを含み、前記第1コントローラは、キャッシュ保護領域と、第1ライトキャッシュとを含み、前記キャッシュ保護領域は、データ保護機能を提供し、
前記方法は、
前記第1コントローラにより、ファイル処理要求を受信し、前記ファイル処理要求を複数のファイル操作に分割し、それぞれのファイル操作に対してファイル処理を別々に実行し、複数のファイル操作情報を生成するステップと、
前記複数のファイル操作情報のすべてを前記キャッシュ保護領域に書き込むステップと、
前記第1コントローラに障害が生じた後、再び電源が入った場合、前記キャッシュ保護領域から前記複数のファイル操作情報を復元するステップと、
前記ホストがデータ情報にアクセスできるように、前記複数のファイル操作情報に従って前記データ情報を取得し、前記データ情報を前記第1ライトキャッシュに書き込むステップと、
を含む。
【0005】
前記第1の態様に関して、第1の可能な実施方法において、前記複数のファイル操作情報のすべてを前記キャッシュ保護領域に書き込む前記ステップは、
それぞれのファイル操作情報のための前記キャッシュ保護領域内の記憶域スペースを要求するステップと、
それぞれのファイル操作情報を前記要求された記憶域スペースに格納するステップと、
前記複数のファイル操作情報のすべてが、対応する記憶域スペースに既に格納されていることを判定するステップと、
前記キャッシュ保護領域に対応するデータ構造において、前記複数のファイル操作情報が格納されている前記記憶域スペースにデータを格納するステップと、
を含む。
【0006】
前記第1の態様に関して、第2の可能な実施方法において、前記複数のファイル操作情報のすべてを前記キャッシュ保護領域に書き込む前記ステップは、
それぞれのファイル操作情報を前記キャッシュ保護領域に連続的に送信するステップと、
前記複数のファイル操作情報のすべてが、前記キャッシュ保護領域に既に送信されていることを判定するステップと、 前記キャッシュ保護領域において受信した前記複数のファイル操作情報に対応するフラグを設定するステップであって、前記フラグは、前記複数のファイル操作情報のすべてが、前記キャッシュ保護領域に既に書き込まれていることを示すために使用される、ステップと、
を含む。
【0007】
前記第1の態様の前記第1の可能な実施方法に関して、第3の可能な実施方法において、前記ストレージデバイスは、メモリを備え、前記メモリは、保護領域を具備し、
前記方法は、
前記第1コントローラに障害がある場合、前記キャッシュ保護領域に対応する前記データ構造に従って、前記キャッシュ保護領域が、前記複数のファイル操作情報を具備していると判定するステップと、
電源障害保護プログラムを使用することにより、前記複数のファイル操作情報を前記メモリの前記保護領域に格納するステップと、
をさらに具備する。
【0008】
前記第1の態様の前記第2の可能な実施方法に関して、第4の可能な実施方法において、前記ストレージデバイスは、メモリを備え、前記メモリは、保護領域を具備し、
前記方法は、
前記第1コントローラに障害がある場合、前記フラグに従って、前記キャッシュ保護領域が、前記複数のファイル操作情報を具備していることを判定するステップと、
電源障害保護プログラムを使用することにより、前記複数のファイル操作情報を前記メモリの前記保護領域に格納するステップと、
をさらに具備する。
【0009】
前記第1の態様に関して、第5の可能な実施方法において、前記ストレージデバイスは、第2コントローラを備えており、前記第2コントローラは、第2ライトキャッシュを具備し、
前記方法は、
前記第2コントローラが、前記複数のファイル操作情報に従って、前記ファイル処理要求に対応するデータ情報を取得し、前記データ情報を前記第2ライトキャッシュに書き込めるように、前記第1コントローラにより、前記複数のファイル操作情報を、前記第2コントローラに送信するステップをさらに具備する
【0010】
第2の態様によると、本発明の実施形態は、ストレージシステムに適用されるデータ格納方法を提供し、前記ストレージシステムは、ストレージデバイスと、ホストとを具備し、前記ストレージデバイスは、第1コントローラと、第2コントローラと、メモリとを備え、前記第2コントローラは、ライトキャッシュを具備し、前記方法は、
前記第1コントローラにより、ファイル処理要求を受信し、前記ファイル処理要求を複数のファイル操作に分割し、それぞれのファイル操作に対してファイル処理を別々に実行し、複数のファイル操作情報を生成し、前記複数のファイル操作情報を前記第2コントローラに送信するステップと、
前記第1コントローラに障害がある場合、前記ホストがデータ情報にアクセス、又は、前記メモリのための前記ファイル処理要求に対応する操作を実行することができるように、前記第2コントローラにより、前記ファイル操作情報に従って前記データ情報を取得し、前記データ情報を前記ライトキャッシュに書き込むステップと、
を具備する。
【0011】
前記第2の態様に関して、第1の可能な実施方法において、前記複数のファイル操作情報を前記第2コントローラに送信する前記ステップは、 前記第1コントローラにより、第1ミラーメッセージを前記第2コントローラに送信するステップを具備し、
前記第1ミラーメッセージは、前記複数のファイル操作情報を具備する。
【0012】
前記第2の態様に関して、第2の可能な実施方法において、前記複数のファイル操作情報を前記第2コントローラに送信する前記ステップは、
前記第1コントローラにより、複数の第2ミラーメッセージを前記第2コントローラに送信するステップを具備し、
前記第2ミラーメッセージのそれぞれは、前記複数のファイル操作情報の1つを具備する。
【0013】
前記第2の態様に関して、第3の可能な実施方法において、前記第2コントローラは、キャッシュ保護領域を具備しており、前記キャッシュ保護領域は、データ保護機能を提供し、
前記第2コントローラにより、前記ファイル操作情報に従ってデータ情報を取得し、前記データ情報を前記ライトキャッシュに書き込む前記ステップの前に、前記方法は、
前記第2コントローラにより、すべての前記ファイル操作情報を前記キャッシュ保護領域に書き込むステップをさらに具備する。
【0014】
前記第2の態様の前記第3の可能な実施方法に関して、第4の可能な実施方法において、前記方法は、前記第2コントローラに障害があり、再び電源が入った場合、前記キャッシュ保護領域から、前記複数のファイル操作情報を復元するステップをさらに具備し、
前記第2コントローラにより、前記ファイル操作情報に従ってデータ情報を取得し、前記データ情報を前記ライトキャッシュに書き込む前記ステップは、
前記第2コントローラにより、前記キャッシュ保護領域内に格納されている前記複数のファイル操作情報に従って前記データ情報を取得し、前記データ情報を前記ライトキャッシュに書き込むステップを具備する。
【0015】
前記第2の態様の前記第3の可能な実施方法に関して、第5の可能な実施方法において、前記第2コントローラにより、すべての前記ファイル操作情報を前記キャッシュ保護領域に書き込む前記ステップは、
それぞれのファイル操作情報のための前記キャッシュ保護領域内の記憶域スペースを要求するステップと、
それぞれのファイル操作情報を前記要求された記憶域スペースに格納するステップと、
前記複数のファイル操作情報のすべてが、対応する記憶域スペースに既に格納されていることを判定するステップと、
前記キャッシュ保護領域に対応するデータ構造において、前記複数のファイル操作情報が格納されている前記記憶域スペースにデータを格納するステップと、
を具備する。
【0016】
前記第2の態様の前記第3の可能な実施方法に関して、第6の可能な実施方法において、前記第2コントローラにより、すべての前記ファイル操作情報を前記キャッシュ保護領域に書き込む前記ステップは、
それぞれのファイル操作情報を前記キャッシュ保護領域に連続的に送信するステップと、
前記複数のファイル操作情報のすべてが前記キャッシュ保護領域にすでに送信されていることを判定するステップと、
前記キャッシュ保護領域に受信した前記複数のファイル操作情報に対応するフラグを設定するステップであって、前記フラグは、前記複数のファイル操作情報のすべてが前記キャッシュ保護領域に既に書き込まれていることを示すために使用される、ステップと、を具備する。
【0017】
第3の態様によると、本発明の実施形態は、データストレージ装置を提供し、
ファイル処理要求を受信し、前記ファイル処理要求を複数のファイル操作に分割し、それぞれのファイル操作に対してファイル処理を別々に実行し、複数のファイル操作情報を生成するように構成されているファイル処理モジュールと、
前記複数のファイル操作情報のすべてをキャッシュ保護領域に書き込むように構成されているライティングモジュールと、
第1コントローラに障害が生じた後、再び電源が入った場合、前記キャッシュ保護領域から前記複数のファイル操作情報を復元するように構成されている復元モジュールと、
を具備し、
前記ライティングモジュールは、ホストがデータ情報にアクセスできるように、前記複数のファイル操作情報に従って、前記データ情報を取得し、前記データ情報を第1ライトキャッシュに書き込むようにさらに構成されている。
【0018】
前記第3の態様に関して、第1の可能な実施方法において、前記ライティングモジュールは、
それぞれのファイル操作情報のための前記キャッシュ保護領域内の記憶域スペースを要求し、
それぞれのファイル操作情報を前記要求された記憶域スペースに格納し、
前記複数のファイル操作情報のすべてが対応する記憶域スペースに既に格納されていることを判定し、
前記キャッシュ保護領域に対応するデータ構造において、前記複数のファイル操作情報が格納されている前記記憶域スペースにデータを格納する
ように構成されている。
【0019】
前記第3の態様に関して、第2の可能な実施方法において、前記ライティングモジュールは、
それぞれのファイル操作情報を前記キャッシュ保護領域に連続的に送信し、
前記複数のファイル操作情報のすべてが前記キャッシュ保護領域に既に送信されていることを判定し、
前記キャッシュ保護領域に受信した前記複数のファイル操作情報に対応するフラグを設定するように構成され、
前記フラグは、前記複数のファイル操作情報のすべてが前記キャッシュ保護領域に既に書き込まれていることを示すために使用される。
【0020】
前記第3の態様の前記第1の可能な実施方法に関して、第3の可能な実施方法において、前記装置は、保護モジュールをさらに具備し、
前記保護モジュールは、前記第1コントローラに障害がある場合、前記キャッシュ保護領域に対応する前記データ構造に従って、前記キャッシュ保護領域が前記複数のファイル操作情報を具備していることを判定し、電源障害保護プログラムを使用することにより、前記複数のファイル操作情報をメモリの保護領域に格納するように構成されている。
【0021】
前記第3の態様の前記第2の可能な実施方法に関して、第4の可能な実施方法において、前記装置は、保護モジュールをさらに具備し、
前記保護モジュールは、前記第1コントローラに障害がある場合、前記フラグに従って、前記キャッシュ保護領域が前記複数のファイル操作情報を具備していることを判定し、電源障害保護プログラムを使用することにより、前記複数のファイル操作情報を、メモリの保護領域に格納するように構成されている。
【0022】
前記第3の態様に関して、第5の可能な実施方法において、前記装置は、送信モジュールをさらに具備し、
前記送信モジュールは、第2コントローラが、前記複数のファイル操作情報に従って、前記ファイル処理要求に対応するデータ情報を取得できるように、前記複数のファイル操作情報を前記第2コントローラに送信し、前記データ情報を前記第2コントローラの第2ライトキャッシュに書き込むように構成されている。
【0023】
第4の態様によると、本発明の実施形態は、ストレージデバイスを提供し、前記ストレージデバイスは、第1コントローラと、第2コントローラと、メモリと、を備えたストレージデバイスであって、前記第2コントローラは、ライトキャッシュを具備し、
前記第1コントローラは、ファイル処理要求を受信し、前記ファイル処理要求を複数のファイル操作に分割し、それぞれのファイル操作に対してファイル処理を別々に実行し、複数のファイル操作情報を生成し、前記複数のファイル操作情報を前記第2コントローラに送信するように構成されており、
前記第2コントローラは、前記第1コントローラに障害がある場合、ホストが、データ情報にアクセス、又は前記メモリのための前記ファイル処理要求に対応する操作を実行できるように、前記ファイル操作情報に従って、前記データ情報を取得し、前記データ情報を前記ライトキャッシュに書き込むように構成されている。
【0024】
前記第4の態様に関して、第1の可能な実施方法において、前記第1コントローラは、第1ミラーメッセージを前記第2コントローラに送信するように特に構成され、
前記第1ミラーメッセージは、前記複数のファイル操作情報を具備する。
【0025】
前記第4の態様に関して、第2の可能な実施方法において、前記第1コントローラは、複数の第2ミラーメッセージを前記第2コントローラに送信するように特に構成され、
それぞれの前記第2ミラーメッセージは、前記複数のファイル操作情報の1つを具備する。
【0026】
前記第4の態様に関して、第3の可能な実施方法において、前記第2コントローラは、すべての前記ファイル操作情報をキャッシュ保護領域に書き込むようにさらに構成されている。
【0027】
前記第4の態様の前記第3の可能な実施方法に関して、第4の可能な実施方法において、前記第2コントローラは、それぞれのファイル操作情報のための前記キャッシュ保護領域内の記憶域スペースを要求し、それぞれのファイル操作情報を前記要求された記憶域スペースに格納し、前記複数のファイル操作情報のすべてが既に対応する記憶域スペースに格納されていることを判定し、前記キャッシュ保護領域に対応するデータ構造において、前記複数のファイル操作情報が格納されている前記記憶域スペースにデータを格納するように特に構成されている。
【0028】
前記第4の態様の前記第3の可能な実施方法に関して、第5の可能な実施方法において、前記第2コントローラは、それぞれのファイル操作情報を前記キャッシュ保護領域に連続的に送信し、前記複数のファイル操作情報のすべてが前記キャッシュ保護領域に既に送信されていることを判定し、前記キャッシュ保護領域に受信した前記複数のファイル操作情報に対応するフラグを設定するように特に構成され、
前記フラグは、前記複数のファイル操作情報のすべてが、前記キャッシュ保護領域に既に書き込まれていることを示すために使用される。
【0029】
第5の態様によると、本発明の実施形態は、プロセッサと、メモリと、システムバスと、通信インターフェースと、を具備するストレージデバイスを提供し、 前記プロセッサ、前記メモリ、及び前記通信インターフェースは、前記システムバスを使用して接続されるとともにお互いに通信し、
前記通信インターフェースは、ストレージデバイスと通信するように構成され、
前記メモリは、コンピュータ実行命令を格納するように構成され、
前記プロセッサは、前記コンピュータ実行命令を実行し、前記第1の態様において説明されるデータ格納方法を実施するように構成されている。
【0030】
本発明の実施形態において、ファイル処理要求に対応する複数のファイル操作情報のすべてがキャッシュ保護領域に書き込まれる。前記キャッシュ保護領域がデータ保護機能を提供するので、第1コントローラに障害が生じた後、電源が再び入れられた場合、前記複数のファイル操作情報は、前記キャッシュ保護領域から復元することができ、データ情報が前記複数のファイル操作情報に基づき取得され、第1ライトキャッシュに書き込まれる。前記複数のファイル操作情報すべてが前記キャッシュ保護領域に書き込まれるので、前記第1コントローラに障害が生じた後、電源が再び入れられた場合、前記キャッシュ保護領域から復元されるファイル操作情報もまた、全て揃っている。したがって、前記複数のファイル操作情報に従って取得された前記データ情報は、アトミックであり、ホストにより直接アクセス可能である。従来技術において、第1ライトキャッシュのデータ情報は、アトミックでなく、メモリ内のデータのみがアトミックである。したがって、従来技術において、前記第1ライトキャッシュの前記データ情報は、ホストにより直接アクセスできず、対応するデータは、前記ホストのために提供される前に前記メモリから読み出されなければならない。従来技術と比べ、本発明の実施形態は、前記ホストのデータアクセス効率性を改善する。
【0031】
本発明の実施形態又は従来技術における技術的ソリューションをより明確に説明するため、以下で、前記実施形態又は従来技術を説明するために必要な添付の図面を簡単に紹介する。以降の記述における添付の図面は、いくつかの本発明の実施形態を示していることは明らかであり、当業者であれば、創造的な活動なしに、これらの添付の図面から他の図面を導き出しうる。
【発明を実施するための形態】
【0033】
本発明の実施形態の目的、技術的ソリューション、及び利点をより明確にするために、以下では本発明の実施形態における添付の図面を参照して明確かつ完全に本発明の実施形態における前記技術的ソリューションを説明する。説明される実施形態は、本発明のすべての実施形態でなく一部であることは明らかである。本発明の実施形態に基づいて創造的な活動なしに当業者により得られる他のすべての実施形態は、本発明の保護範囲内に入る。
【0034】
[本発明の実施形態におけるシステムアーキテクチャ]
本発明の実施形態により提供されるデータ格納方法は、ストレージシステムにおいて実施され得る。
図1は、本発明の実施形態によるデータ格納方法のアプリケーションネットワーク構成の概略図である。
図1に示されているように、前記ストレージシステムは、少なくとも1つのアプリケーションサーバ11(
図1では3台示されている)と、少なくとも1つのコントローラ22と、1つのメモリ33と、を具備する。
【0035】
前記アプリケーションサーバ11(ホストとも称される)は、従来技術において知られている例えば、サーバ又はデスクトップコンピュータなどの任意のコンピューティングデバイスを含んでよい。
【0036】
前記コントローラ22は、NFS/CIFSプロトコルを使用して前記アプリケーションサーバ11にデータを送信し、例えばサーバやデスクトップコンピュータ等の従来技術において知られている任意のコンピューティングデバイスであってよい。前記コントローラ22は、プロセッサと、キャッシュ(図中に示されていない)と、を具備する。前記プロセッサは、例えば、ファイル作成操作、ファイルオープン操作、ファイル読み出し操作、及びファイル書き込み操作といったファイル処理要求のための種々の操作を実行するように特に構成されている。前記キャッシュは、前記コントローラ内にあるメモリであり、容量はハードディスクより小さいが、スピードはハードディスクよりずっと速く、例えば、前記キャッシュは、ランダムアクセスメモリ(RAM)であってよく、プログラムや短期的に使用するためのデータを格納するように主に構成されている。
【0037】
前記コントローラ22において、電源障害保護モジュールとミラーリングモジュール等のファイルシステム及び他のアプリケーションが、さらにインストールされている。前記電源障害保護モジュールは、前記システムに電源障害がある場合、BBU又は他のバックアップ電源を通じて前記キャッシュのデータを前記メモリに書き込むように構成されており、前記ミラーリングモジュールは、ミラーチャネルを通じて他のコントローラ22により送信されるデータを処理するように構成されている。
【0038】
本発明の実施形態において、キャッシュは、一時的キャッシュ又はライトキャッシュ(write cache)を具備してもよい。一時的キャッシュは、ファイル処理要求に対応するデータ及びメタデータを一時的に格納するように構成されており、データ保護機能は提供しない。ライトキャッシュは、メモリに書き込まれるデータを格納するように構成されており、前記データ保護機能を提供する。一時的キャッシュがデータ保護機能を提供しないということは、前記システムに障害があるか、又は前記システムに電源障害がある場合、前記一時的キャッシュ内に格納されているすべてのデータが失われ、前記システムに電源が再び入った後であっても復元することができない、ということを意味する。ライトキャッシュが前記データ保護機能を提供するということは、前記システムに障害がある、又は前記システムに電源障害がある場合であっても前記ライトキャッシュ内に格納されているデータは失われない、ということを意味する。具体的には、前記データ保護機能は、電源障害保護機能であってよく、前記電源障害保護機能は、前記システムに電源障害が生じた後、前記ライトキャッシュが、前記ライトキャッシュに格納されているデータを前記メモリのディスク保護領域に書き込むための十分な電力を有するように、バックアップ電源(BBU:Battery Back-Up)又は他の電源供給方法を使用することにより、電力が依然として供給し得ることを示しており、前記システムに電源が再び入った後、前記メモリの前記ディスク保護領域から前記ライトキャッシュに前記データをコピーできる。したがって、前記ライトキャッシュに格納されているデータは、信頼できると考えることができ、また失われることはない。
【0039】
オプションとして、前記データ保護機能は、リセットキャッシュ保護機能であってもよく、前記リセットキャッシュ保護機能は、ライトキャッシュが継続的に電力を供給されていることを示しており、前記システムに電源障害がある場合、前記ライトキャッシュに格納されているデータを前記メモリに書き込む操作は実行されず、前記システムに再び電源が入った場合、前記ライトキャッシュの前記データは初期化されない。したがって、前記ライトキャッシュに格納されているデータは、依然として前記システムに電源障害が生じる前のデータである。同様に、この機能を有するライトキャッシュにおいて、前記ライトキャッシュに格納されているデータは、信頼できると考えることができ、また失われることはない。
【0040】
オプションとして、前記データ保護機能は、ライトキャッシュのデータが失われないことを保証する他の機能であってもよく、本明細書に限定されるものではない。
【0041】
本発明の実施形態において、一時的キャッシュとライトキャッシュは、同じ物理的エンティティ内、又は異なる物理的エンティティ内に配置されてよく、本明細書に限定されるものではない。前記一時的キャッシュと前記ライトキャッシュとが異なる物理的エンティティに配置されている場合、前記一時的キャッシュは、前記データ保護機能を提供せず、前記システムに電源障害がある場合、前記一時的キャッシュのデータは失われ、復元することができないが、前記ライトキャッシュは、前記データ保護機能を提供する。前記一時的キャッシュと前記ライトキャッシュとが同じ物理的エンティティ(例えばメモリモジュール)内に配置されている場合、電源障害保護モジュールは、前記一時的キャッシュに格納されているデータのための電源障害保護を提供しないと決定するが、前記ライトキャッシュに格納されているデータのための電源障害保護を提供する。
【0042】
加えて、キャッシュ保護領域は、前記ライトキャッシュ内に作成されてよく、前記キャッシュ保護領域も前記データ保護機能を有している。前記一時的キャッシュの前記データが前記ライトキャッシュに書き込まれる必要がある場合、前記データ又は前記データに従って取得される情報は、まず前記キャッシュ保護領域に書き込まれてよく、その後、前記データ又は前記データに従って取得される前記情報が前記キャッシュ保護領域に正常に書き込まれると判定された後、前記データは、前記ライトキャッシュに書き込まれる。したがって、たとえ前記データが前記ライトキャッシュに書き込まれる前に前記システムに障害がある場合や、前記ライトキャッシへの書き込みが完了していない場合であっても、データは、データ又は前記キャッシュ保護領域に格納されている情報を使用することにより復元可能である。オプションとして、キャッシュスペースの一部は、前記キャッシュに分割されてもよく、前記キャッシュ保護領域として使用してもよく、または、他の独立したキャッシュを、前記キャッシュ保護領域として使用してもよく、ここでは限定しない。本発明の実施形態により指定されない限り、ライトキャッシュは、キャッシュ保護領域を除くキャッシュを示していることに注意すべきである。
【0043】
前記キャッシュ保護領域における格納データの形式は、一時的キャッシュ又はライトキャッシュにおける物とは異なっていてもよい。例えば、本発明の実施形態において、前記一時的キャッシュ及び前記ライトキャッシュは、データページ(page)のユニット内にデータを格納し得る。データページのサイズは、4k、8k、又は16kであってよく、ここでは限定しない。データページのサイズを一例として4kとして使用する。前記データサイズが8kの場合、2ページを占有する必要がある。とはいえ、前記キャッシュ保護領域は、コントロールリンク、リンクリスト、又はツリーなどのデータ構造の形式においてデータを格納してもよく、ここでは限定しない。したがって、前記キャッシュ保護領域におけるデータの格納形式は前記ライトキャッシュにおけるデータ格納形式とは異なりうるので、同じデータを格納する場合、前記キャッシュ保護領域は、記憶域スペースよりも占有しないことは理解し得る。
【0044】
前記メモリ33は、例えば、ハードディスクドライブ(HDD:Hard Disk Drive)、ソリッドステートドライブ(SSD:Solid State Drive)又は、ダイレクトアクセスストレージデバイス(DASD:Direct Access Storage Device)などの従来技術において知られているストレージデバイスを具備してよい。
【0045】
本発明の実施形態において、前記コントローラ22及び前記メモリ33は、まとめてストレージデバイスと称されうる。
【0046】
特に断らない限り、本発明の実施形態における前記システムは、ストレージシステムとして参照され、本発明の実施形態における前記メモリは、不揮発性メモリを指す。
【0047】
[データ格納方法]
以下では、本発明の実施形態により提供されるデータ格納方法を説明する。
図2は、本発明の実施形態におけるデータ格納方法のフローチャートである。前記方法は、ストレージシステムに適用され、前記ストレージシステムは、ストレージデバイスと、ホストとを備え、前記ストレージデバイスは、第1コントローラと、メモリとを具備し、前記第1コントローラは、一時的キャッシュ、キャッシュ保護領域、及び第1ライトキャッシュを具備し、前記方法は、以下を具備する。
【0048】
ステップ21: 前記第1コントローラは、ファイル処理要求を受信する。
【0049】
本発明の実施形態において、前記ファイル処理要求は、アプリケーションサーバ(ホストとも称される)により送信される。前記ファイル処理要求の操作タイプは、例えば、ファイル書き込み要求、ファイル修正要求、ファイル作成要求、又はファイル削除要求といった前記メモリに格納されているデータを修正するためのファイル処理要求であってよく、ここでは限定しない。異なるファイル処理要求は、異なるパラメータを含んでよい。例えば、ファイル書き込み要求を一例として使用するが、前記ファイル書き込み要求は、ファイルID,ファイルオフセット(offset)、ファイル長(length)、及び書き込まれるデータなどのパラメータを含んでいる。
【0050】
ステップ22: 前記ファイル処理要求を複数のファイル操作に分割し、それぞれのファイル操作を別々に処理し、複数のファイル操作情報を生成し、前記情報を前記一時的キャッシュに書き込む。
【0051】
ファイルシステムを有するストレージデバイスでは、ファイル処理要求を処理する場合、前記ファイルシステムは、前記ファイル処理要求の操作タイプに従って、前記ファイル処理要求を複数のファイル操作に分割する必要がよくある。例えば、前記ファイルシステムは、ファイル書き込み要求をデータ修正ファイル操作及びメタデータ修正ファイル操作に分割する必要がある。他の例では、前記ファイルシステムは、ファイル作成要求を親ディレクトリ修正ファイル操作及びファイル作成のファイル操作に分割する必要があり、さらに他の例では、前記ファイルシステムは、ファイル名変更要求をソースディレクトリ修正ファイル操作及び更新先ディレクトリ修正ファイル操作に分割する必要がある。
【0052】
オプションとして、前記ファイルシステムは、前記ファイル処理要求の前記操作タイプに従って、前記ファイル処理要求を前記複数のファイル操作に分割し、前記操作を別々に処理する場合、すべてのデータエントリの数、及び、前記ファイル処理要求に対応するメタデータエントリの数を記録してよい。
【0053】
ファイル処理要求を処理する場合、前記第1コントローラは、前記ファイル処理要求から分割されたそれぞれのファイル操作に対し、意味変換(semantic conversion)又は他のファイル処理を連続的に実際に実行することは理解し得る。ファイル操作を処理するごとに、前記第1コントローラは、前記ファイル操作に対応するデータ及びメタデータを前記一時的キャッシュに書き込む。したがって、前記第1コントローラが最後のファイル操作を処理し、前記最後のファイル操作に対応するデータ及び前記メタデータを前記一時的キャッシュに書き込んだ後、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータもまた前記一時的キャッシュに書き込まれる。したがって、本発明の実施形態において、前記一時的キャッシュに格納されているデータは、すべての前記データと前記ファイル処理要求に対応する前記メタデータである。同様に、本発明の実施形態において、前記複数のファイル操作情報は、すべての前記データと前記ファイル処理要求に対応する前記メタデータである。
【0054】
異なるファイル処理要求では、前記異なるファイル処理要求のために生成されたファイル操作情報もまた異なる。前記ファイル処理要求がファイル書き込み要求である場合、前記ファイル処理要求のファイル操作情報は、前記ファイル書き込み要求で搬送される、書き込まれるデータ、メタデータなどであってよい。前記ファイル処理要求がファイル修正要求の場合、前記ファイル修正要求のファイル操作情報は、前記ファイル修正要求で搬送される、書き込まれるデータ、メタデータなどであってよい。前記ファイル処理要求がファイル作成要求の場合、前記ファイル作成要求のファイル操作情報は、ディレクトリ情報、メタデータなどでありうる。前記ファイル処理要求がファイル削除要求の場合、前記ファイル削除要求のファイル操作情報は、ファイルスペースを開放するための特別なページデータ、削除後の前記データ及びメタデータなどでありうる。
【0055】
以下のステップは、ファイル書き込み要求を一例として使用して説明されている。前記ファイル書き込み要求において、前記ファイル書き込み要求のために生成されるファイル操作情報は、ファイルID、ファイルオフセット(offset)、ファイル長(length)、書き込み時間、書き込まれるデータ、などを含んでよい。
【0056】
本発明の実施形態において、前記一時的キャッシュは、データを一時的に格納するためにのみ使用されることに注意すべきである。前記一時的キャッシュに格納されている前記データは、離散しており、前記データは、特定のデータ構造を使用することにより管理されていない。前記一時的キャッシュに格納されている前記データは、前記アプリケーションサーバに対し直接提供できない。
【0057】
ステップ23: 前記複数のファイル操作情報を前記キャッシュ保護領域に書き込む。
【0058】
具体的には、前記第1コントローラは、ファイルID,ファイルオフセット、ファイル長、書き込み時間、前記キャッシュ保護領域に書き込まれるデータなどの前記ファイル操作情報を書き込みうる。前記キャッシュ保護領域は、データ保護機能を提供する。前記ファイル操作情報が前記キャッシュ保護領域に正常に書き込まれた後には、前記ファイル操作情報は、システム障害のような理由により失われることはない。
【0059】
任意の実施態様において、前記複数のファイル操作情報を前記キャッシュ保護領域へ書き込むことは、前記複数のファイル操作情報すべてが前記キャッシュ保護領域に書き込まれたことを示しており、すなわち、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記キャッシュ保護領域に書き込まれていることである。
【0060】
例えば、前記キャッシュ保護領域は、特定のデータ構造を使用することによりデータを格納してよい。
図3に示されているように、前記キャッシュ保護領域のデータは、コントロールリンクの形式で管理されうる。前記コントロールリンクは、複数のコントロールヘッダを含み、各コントロールヘッダは、ファイル処理要求に対応する。各コントロールヘッダのもとには、複数のスロット(slots)がマウントされており、各スロットは、各データ又は前記ファイル処理要求に対応する各メタデータを格納するために使用される。
【0061】
具体的には、前記ファイル操作情報をトラバースし得る。まず、1つのスロットが前記コントロールリンクにおける第1のデータ(例えば、ファイルID)のために要求され、前記スロットが正常に要求された後、前記第1のデータが前記スロットに書き込まれる。そして、1つのスロットが第2のデータ(例えば、オフセット)のために要求され、前記スロットが正常に要求された後、前記第2のデータが前記スロットに書き込まれる。残りも、前記ファイル操作情報の最後のデータがスロットに書き込まれるまで、同様に処理される。そして、前記ファイル処理要求に対応するコントロールヘッダが前記コントロールリンクに追加されうる。
【0062】
前記ファイル処理要求に対応する前記コントロールヘッダが前記コントロールリンクに追加された後は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記キャッシュ保護領域に正常にすでに書き込まれていることを示している。
【0063】
他の例として、前記キャッシュ保護領域の前記データは、二分木の形式において管理されうる。前記二分木は、複数のルートノードを含み、各ルートノードはファイル処理要求に対応する。各ルートノードには、複数の終端ノードがマウントされている。それぞれの終端ノードは、それぞれのデータ又は前記ファイル処理要求に対応するそれぞれのメタデータを格納するために使用される。
【0064】
具体的には、前記ファイル操作情報は、トラバースされ得る。まず、1つの終端ノードが前記二分木における第1のデータ(例えば、ファイルID)のために要求され、前記終端ノードが正常に要求された後、前記第1のデータが前記終端ノードに書き込まれる。そして、1つの終端ノードが第2のデータ(例えば、オフセット)のために要求され、前記終端ノードが正常に要求された後、前記第2のデータが前記終端ノードに書き込まれる。残りも最後のデータが終端ノードに書き込まれるまで同様に処理される。そして、前記ファイル処理要求に対応するルートノードが、前記二分木に追加され得る。
【0065】
前記ファイル処理要求に対応するルートノードが前記二分木に追加された後は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記キャッシュ保護領域にすでに正常に書き込まれていることを示している。
【0066】
コントロールリンク又は二分木は、キャッシュ保護領域で使用され、データを格納するためのデータ構造の様式である。加えて、Bツリー、B+ツリー、赤黒木などのデータ構造がデータを格納するために使用されてもよいが、ここでは限定しない。
【0067】
あるいは、前記キャッシュ保護領域は、コントロールリンク又は二分木などのデータ構造を使用してデータを格納する必要はない。前記第1コントローラは、前記ファイル操作情報をトラバースしうる。まず、前記第1コントローラは、前記キャッシュ保護領域における第1のデータ(例えば、ファイルID)のための記憶域スペースを要求し、前記記憶域スペースが正常に要求された後、前記キャッシュ保護領域の記憶域スペースに前記第1のデータを書き込む。そして、前記第1コントローラは、前記キャッシュ保護領域の第2のデータ(例えば、オフセット)のための記憶域スペースを要求し、前記記憶域スペースが正常に要求された後、前記キャッシュ保護領域の前記記憶域スペースに前記第2のデータを書き込む。残りは、前記キャッシュ保護領域の前記記憶域スペースに最後のデータが書き込まれるまで同様に処理する。そして、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが、正常に前記キャッシュ保護領域にすでに書きこまれたことを示すように、フラグ(例えば、真(true))が前記キャッシュ保護領域に格納される前記ファイル操作情報にセットされ得る。オプションとして、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記キャッシュ保護領域に書き込まれたとは限らない場合、他のフラグ(例えば、偽(false))がセットされてよい。
【0068】
あるいは、前記ファイルシステムが前記ファイル処理要求を別々に処理するために複数のファイル操作に分割する場合、前記ファイルシステムは、統計を収集し、前記ファイル操作情報に含まれているすべてのデータエントリ及びメタデータエントリの数を記録し、カウンタ又は同様の機能を備えた前記第1コントローラ内のソフトウェアモジュールをセットする。前記カウンタの初期値は0である。前記ファイル操作情報に含まれている各データは、前記キャッシュ保護領域の前記要求された記憶域スペースに連続的に書き込まれる。データが正常に書き込まれる毎に、前記カウンタの値は1ずつ増加する。前記カウンタの値が前記ファイル操作情報に含まれるすべての前記データエントリ及び前記メタデータエントリの記録されている数と等しければ、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータは、前記キャッシュ保護領域に正常に既に書き込まれていることを示している。
【0069】
オプションの実施態様において、前記複数のファイル操作情報を前記キャッシュ保護領域に書き込むことは、前記複数のファイル操作情報を前記キャッシュ保護領域に書き込む動作を指しており、すなわち、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記キャッシュ保護領域に書き込まれたかどうかを考慮する必要はない。
【0070】
本発明の他の実施形態において、すべての前記複数のファイル操作情報が前記キャッシュ保護領域に書き込まれていない場合に、前記第1コントローラに障害があるならば、前記ファイル処理要求の処理は、失敗したとみなされる。
【0071】
ステップ24: 前記第1コントローラに障害がある場合、電源障害保護プログラムを使用することにより、前記キャッシュ保護領域に格納されている前記ファイル操作情報を前記メモリの保護領域にコピーする。
【0072】
前記キャッシュ保護領域が前記データ保護機能を提供することから、前記第1コントローラに障害がある場合、前記電源障害保護プログラムが、前記キャッシュ保護領域に格納されている前記ファイル操作情報を前記メモリの前記保護領域にコピーするために使用されうるということは、先の説明から理解できる。したがって、前記キャッシュ保護領域に格納されている前記ファイル操作情報は、前記第1コントローラにある前記障害によっては失われない。前記メモリの前記保護領域は、前記メモリ内にあり、前記電源障害保護プログラムを使用することにより書き込まれたデータを格納するために特に使用される記憶域スペースを指す。オプションとして、前記ファイル操作情報は、前記キャッシュ保護領域に対応するデータ構造(例えば、コントロールリンク)を使用して検索することにより見つけてもよく、又は、前記ファイル操作情報は、「真」を含むフラグを使用して検索することによりであってもよいが、ここでは限定しない。
【0073】
ステップ23は、2つの異なる実施形態を有するため、ステップ24は具体的な実装において異なる。
【0074】
例えば、前記第1の実施方法がステップ23(前記複数のファイル操作情報のすべてを前記キャッシュ保護領域に書き込む)で実行される場合、前記キャッシュ保護領域に格納されている前記ファイル操作情報のためには他の処理は実行されず、ステップ242(前記キャッシュ保護領域に格納されている前記ファイル操作情報を前記メモリの前記保護領域にコピーする)が実行される。
【0075】
前記第2の実施方法がステップ23(すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記キャッシュ保護領域に書き込まれたかどうかは考慮しない)で実行される場合、ステップ242が実行される前に、以下をさらに含む:
【0076】
ステップ241: 前記ファイル操作情報がすべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含んでいるかどうかを判定する。
【0077】
前記ファイル操作情報がすべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含んでいる場合、ステップ242:前記電源障害保護プログラムを使用することにより、前記キャッシュ保護領域に格納されている前記ファイル操作情報を前記メモリの前記保護領域にコピーする、が実行される。
【0078】
前記ファイル操作情報がすべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含まない場合、電源障害保護処理は、前記キャッシュ保護領域に格納されている前記ファイル操作情報のためには実行されない。
【0079】
本発明の実施形態において、ステップ24はオプションのステップであることに留意すべきである。したがって、上述したように、電源障害保護機能に加えて、前記データ保護機能はリセットメモリ保護機能でもありうる。前記キャッシュ保護領域が前記リセットメモリ保護機能を備えている場合、前記第1コントローラに障害があっても、前記キャッシュ保護領域は依然として継続的に電力を供給することができ、前記第1コントローラに再び電源が入った後、前記キャッシュ保護領域のデータは、初期化されない。したがって、前記キャッシュ保護領域に格納されている前記データは失われない。
【0080】
具体的には、前記ファイル操作情報がすべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含んでいるかどうかを判定することは、
前記キャッシュ保護領域における前記ファイル操作情報内に含まれている前記データエントリの数の統計を収集し、前記数を前記ファイルシステムに記録されている、すべての前記データエントリの数、及び、前記ファイル処理要求に対応する前記メタデータエントリの数と比較し、前記キャッシュ保護領域内の前記ファイル操作情報に含まれている前記データエントリの数が、前記ファイルシステム内に記録されている数と等しいならば、前記ファイル操作情報は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含んでいることを示している、又は、
前記キャッシュ保護領域に対応する前記データ構造(例えば、コントロールリンク)が前記ファイル処理要求に対応するデータ構造(例えば、コントロールヘッダ)を含んでいるかどうかをチェックし、前記コントロールリンクが前記コントロールヘッダを含んでいるならば、前記ファイル処理要求に対応する前記データ構造において格納されている前記複数のファイル操作情報は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含んでいる、ということを示している、又は、
前記キャッシュ保護領域に格納されている前記ファイル操作情報がフラグ(例えば、「真」)を含んでいるかどうかをチェックし、前記ファイル操作情報が「真」であるフラグを含んでいるならば、それは前記ファイル操作情報がすべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含んでいることを示している、ということでありうる。
【0081】
加えて、本発明の他の実施態様において、ステップ23が実行され、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記キャッシュ保護領域に書き込まれたかどうかを考慮せず、かつ、前記ファイル操作情報がすべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含むかどうかが判定されない場合、ステップ242:前記電源障害保護プログラムを使用することにより、前記キャッシュ保護領域に格納されている前記ファイル操作情報を前記メモリの前記保護領域へコピーする、が直接実行される。
【0082】
本発明の実施形態において、前記キャッシュ保護領域に書き込まれる前記複数のファイル操作情報は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータでありうることに注意すべきである。本発明の他の実施形態において、前記キャッシュ保護領域に書き込まれる前記複数のファイル操作情報は、前記一時的キャッシュに格納されているすべての前記データ及び前記ファイル処理要求に対応する前記メタデータのアドレスであって良い。前記第1コントローラに障害があり、前記電源障害保護プログラムを使用することにより、前記キャッシュに格納されている前記データのために前記電源障害保護が提供される必要がある場合、前記一時的キャッシュに格納されているすべての前記データ及び前記ファイル処理要求に対応する前記メタデータが、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータの前記アドレスにしたがって、まず取得され、その後、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記メモリの前記保護領域にコピーされる。
【0083】
ステップ25: 前記第1コントローラに障害が発生した後、再び電源が入った場合、 前記キャッシュ保護領域から複数のファイル操作情報を復元する。
【0084】
前記キャッシュ保護領域が前記電源障害保護機能を有する場合、前記メモリの前記保護領域に格納されている前記ファイル操作情報は、前記電源障害保護プログラムを使用することにより、前記キャッシュ保護領域にコピーされ得る。前記キャッシュ保護領域が前記リセットメモリ保護機能を有する場合、前記キャッシュ保護領域の前記データは初期化されない。
【0085】
オプションとして、前記第1の実施方法(すべての前記複数のファイル操作情報を前記キャッシュ保護領域に書き込む)がステップ23で実行される場合、ステップ252:前記メモリの前記保護領域に格納されている前記ファイル操作情報を前記キャッシュ保護領域にコピーする、が実行され得る。
【0086】
オプションとして、前記第2の実施方法(すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記キャッシュ保護領域に書き込まれるかどうかを考慮しない)がステップ23で実行され、ステップ24において、前記ファイル操作情報がすべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含んでいることを判定した後、前記キャッシュ保護領域の前記ファイル操作情報が前記メモリの前記保護領域にコピーされた場合、ステップ252:前記メモリの前記保護領域に格納されている前記ファイル操作情報を前記キャッシュ保護領域にコピーする、が実行され得る。
【0087】
オプションとして、前記第2の実施方法(すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記キャッシュ保護領域に書き込まれるかどうかを考慮しない)がステップ23及びステップ24において実行された場合、前記ファイル操作情報がすべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含むかどうかは判定されず、前記キャッシュ保護領域の前記ファイル操作情報は、前記メモリの前記保護領域に直接コピーされ、ステップ25は以下を含みうる:
【0088】
ステップ251: 前記メモリの前記保護領域に格納されている前記ファイル操作情報がすべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含んでいるかどうかを判定し、前記ファイル操作情報がすべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含んでいると判定された場合、ステップ252:前記電源障害保護プログラムを使用することにより、前記メモリの前記保護領域に格納されている前記ファイル操作情報を前記キャッシュ保護領域にコピーする、を実行する。
【0089】
具体的には、前記ファイル操作情報がすべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含んでいるかどうかを判定することは、
前記メモリの前記保護領域に格納されている前記ファイル操作情報に含まれている前記データエントリの数の統計を収集し、前記数を前記ファイルシステムにより記録されている、すべての前記データエントリの数、及び、前記ファイル処理要求に対応する前記メタデータエントリの数と比較し、前記メモリの前記保護領域に格納されている前記ファイル操作情報に含まれている前記データエントリの数が前記ファイルシステムにより記録されている前記数と等しいならば、前記ファイル操作情報は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含んでいることを示している、又は
前記メモリの前記保護領域に格納されている前記ファイル操作情報がフラグ(例えば、「真」)を含んでいるかどうかをチェックし、前記ファイル操作情報が「真」であるフラグを含んでいるならば、前記ファイル操作情報は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータを含んでいることを示している、ということでありうる。
【0090】
ステップ26: 前記ホスト又は前記メモリが前記データ情報にアクセスできるように、前記複数のファイル操作情報にしたがってデータ情報を取得し、前記データ情報を前記第1ライトキャッシュに書き込む。
【0091】
具体的には、前記データ情報は、前記キャッシュ保護領域内に格納されている前記複数のファイル操作情報に従って取得されてよい。前記データ情報は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータ、又は、前記キャッシュ保護領域に格納されているすべての前記データ及び前記メタデータのアドレスでありうる。前記データ情報が取得された後、前記データ情報は、前記第1ライトキャッシュに書き込まれる。
【0092】
前記データ情報がすべての前記データ及び前記ファイル処理要求に対応する前記メタデータである場合、前記第1ライトキャッシュは、前記キャッシュ保護領域によりすべての前記データ及び前記ファイル処理要求に対応する前記メタデータを格納するために使用される形式とは異なる形式で、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータを格納することに注意をすべきである。例えば、前記第1ライトキャッシュは、前記データをページの形式で格納してもよく、前記キャッシュ保護領域は、前記データを例えばコントロールリンクのデータ構造の形式で格納してもよい。
【0093】
前記第1コントローラに障害が発生した後、再び電源が入った場合、前記キャッシュ保護領域から復元される前記複数のファイル操作情報は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータに関することは先の説明から理解できる。したがって、前記複数のファイル操作情報に従って取得されるとともに前記第1ライトキャッシュに書き込まれる前記データ情報もまたすべての前記データ及び前記ファイル処理要求に対応する前記メタデータ、又は、前記キャッシュ保護領域に格納されているすべての前記データ及び前記メタデータのアドレスである。すなわち、前記ファイル処理要求に対応し前記第1ライトキャッシュに書き込まれる前記データは、不可分性の要件に合致する。したがって、前記データ情報は、前記ホスト又は前記メモリによりアクセスされ得る。
【0094】
具体的には、前記ホストによる前記データ情報をアクセスすることは、前記ホストがファイルアクセス要求を前記第1コントローラに送信することを示し、前記ファイルアクセス要求は、前記ファイル処理要求に対応するデータにアクセスに使用される。例えば、前記ファイル処理要求がファイル書き込み要求である場合、前記ファイルアクセス要求は、前記ファイル書き込み要求に対応する書き込まれるデータにアクセスする必要がありうる。前記ファイルアクセス要求を受信した後、前記第1コントローラは、前記第1ライトキャッシュに格納されている書き込まれるデータを前記ホストに送信し得る。
【0095】
具体的には、前記メモリにより前記データ情報にアクセスすることは、前記メモリに、前記第1ライトキャッシュに格納されているすべての前記データ及び前記ファイル処理要求に対応する前記メタデータを書き込むことを示している。前記第1ライトキャッシュの容量は、ハードディスクの容量より少ないため、前記第1ライトキャッシュに格納されている前記データが一定の閾値に達する場合、前記第1ライトキャッシュに格納されている前記データは、前記メモリに書き込まれる必要がある。
【0096】
オプションとして、前記ファイル操作情報にしたがって前記データ情報が取得された後、前記キャッシュ保護領域に格納されている前記複数のファイル操作情報は削除してよい。
【0097】
本発明の実施形態において、ファイル処理要求に対応するすべての複数のファイル操作情報は、キャッシュ保護領域に書き込まれる。前記キャッシュ保護領域がデータ保護機能を提供するので、第1コントローラに障害が生じた後に電源が再び入れられた場合、前記複数のファイル操作情報は、前記キャッシュ保護領域から復元することができ、前記複数のファイル操作情報にしたがってデータ情報が取得されるとともに第1ライトキャッシュに書き込まれる。すべての前記複数のファイル操作情報が前記キャッシュ保護領域に書き込まれるため、前記第1コントローラに障害が生じた後、再び電源が入った場合に前記キャッシュ保護領域から復元されるファイル操作情報もまた、全て揃っている。したがって、前記複数のファイル操作情報に従って取得される前記データ情報はアトミックであり、ホスト又はメモリにより直接アクセスし得る。従来技術においては、第1ライトキャッシュのデータ情報は、アトミックではなく、そしてメモリのデータだけがアトミックである。したがって、従来技術において、前記第1ライトキャッシュの前記データ情報は、ホストにより直接アクセスすることができず、対応するデータは前記ホストに提供される前に前記メモリから読み出さなければならない。従来技術と比較し、本発明の実施形態は、ホストのデータアクセス効率性を改善する。
【0098】
前述の実施形態において、ステップ26を実行した後、前記第1コントローラも、前記第1ライトキャッシュに格納されている前記データ情報に従って、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータを取得でき、前記データ及び前記メタデータを前記メモリに書き込むことができる。前記第1ライトキャッシュの容量が限定されているため、一般には、前記第1ライトキャッシュの前記データが一定の閾値に達する場合、前記第1ライトキャッシュに格納されている前記データは、前記メモリに書き込まれ得る。
【0099】
オプションとして、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記メモリに書き込まれる場合、前記メモリに書き込まれない情報は、現在、前記メモリに書き込まれていないデータを示すために格納してもよい。前記第1コントローラに前記データ及び前記メタデータが前記メモリに書き込まれる処理において障害があるならば、前記メモリに書き込まれていない前記情報を前記メモリの前記保護領域に書き込むために、前記電源障害保護プログラムが使用されてもよい。前記第1コントローラの電源が再び入った後、前記メモリに書き込まれていない前記データは、前記メモリに書き込まれていない前記情報に従って取得でき、前記メモリに書き込まれていない前記データは、前記メモリに連続的に書き込まれる。したがって、これにより、前記メモリに既に書き込まれているデータを繰り返し書き込むことを避けられ、データの書き込み効率が改善される。
【0100】
オプションとして、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記メモリに書き込まれた後、前記メモリに書き込まれていない前記情報は削除してもよい。
【0101】
加えて、本発明の実施形態は2つのコントローラを備えたストレージシステムにも適用できる。
図4に示されているように、前記ストレージシステムは、少なくとも1つのアプリケーションサーバ11(
図3では3台示されている)と、2つのコントローラ22と、1つのメモリ33を備えている。
【0102】
前記アプリケーションサーバ11、前記コントローラ22、及び前記メモリ33の構造及び機能は、前述した実施形態において説明したそれらと同様であり、詳細は繰り返して説明しない。
【0103】
違いは、本発明の実施形態は、2つのコントローラ22を含むことができることであり、前記2つのコントローラ22は、同じ物理的構造及び機能を備え、前記アプリケーションサーバ11により送信されたファイル処理要求を受信でき、前記メモリ33に格納されているデータにアクセスする。加えて、前記2つのコントローラ22は互いに通信してもよく、例えば、ミラーチャネル又は他の方法を通じてデータを転送する。
【0104】
説明を容易にするため、前記2つのコントローラ22を第1コントローラと、第2コントローラとに分類する。前記第1コントローラに含まれているライトキャッシュを、第1ライトキャッシュと呼ぶことにし、前記第2コントローラに含まれているライトキャッシュを第2ライトキャッシュと呼ぶ。
【0105】
前記第2ライトキャッシュは、前記第1ライトキャッシュと同様のハードウェア構造を有している。前記第1コントローラがプライマリコントローラであり、前記第2コントローラがセカンダリコントローラである場合、前記第2ライトキャッシュの属性は、ミラーであり、前記第2ライトキャッシュは、前記第1コントローラにより送信されるデータを受信するように構成されている。この場合において、前記第2ライトキャッシュのデータは、前記ホストに提供されたり、前記メモリに書き込まれたりしない。前記第2コントローラがプライマリコントローラであり、前記第1コントローラがセカンダリコントローラである場合、前記第2ライトキャッシュの属性は、ローカルである。この場合において、前記第2ライトキャッシュの前記データは、前記ホストに提供でき、又は、前記メモリに書き込むことができる。
【0106】
オプションとして、本発明の実施形態は、前記第1コントローラにより、前記複数のファイル操作情報を前記第2コントローラに送信することをさらに含んでよい。
【0107】
オプションとして、前記第1コントローラは、ステップ22の後に、前記複数のファイル操作情報を前記第2コントローラに送信しうる。前記複数のファイル操作情報は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータであってよい。具体的には、前記第1コントローラは、ミラーメッセージを前記第2コントローラに送信しうる。前記ミラーメッセージは、前記複数のファイル操作情報を含む。又は、前記第1コントローラが前記ファイル処理要求を複数のファイル操作に分割し、それぞれのファイル操作を別々に処理する場合、前記第1コントローラは、ファイル操作を処理するとともに対応データを毎回生成した後、ミラーメッセージを前記第2コントローラに送信し得る。前記ミラーメッセージは、前記ファイル操作に対応するデータを含む。最後のミラーメッセージを前記第2コントローラに送信後、前記第1コントローラは、前記複数のファイル操作情報が既に送信されていることを前記第2コントローラに通知するために、確認メッセージを前記第2コントローラに送信し得る。
【0108】
オプションとして、前記第1コントローラは、ステップ23の後、前記複数のファイル操作情報を前記第2コントローラに送信してもよい。送信方法について、前記第1コントローラがミラーメッセージを前記第2コントローラに送信し、前記ミラーメッセージは、前記複数のファイル操作情報を含んでいる、又は、前記第1コントローラは、複数のミラーメッセージを前記第2コントローラに送信し、各ミラーメッセージはファイル操作に対応するデータを含んでいる。最後のミラーメッセージを前記第2コントローラに送信した後、前記第1コントローラは、前記複数のファイル操作情報が既に送信されていることを前記第2コントローラに通知するために、確認メッセージを前記第2コントローラに送信する。
【0109】
オプションとして、前記第1コントローラは、ステップ24の後、前記複数のファイル操作情報を前記第2コントローラに送信してもよい。具体的な送信方法としては、上述の方法と同様であり、詳細は繰り返して説明しない。
【0110】
前記複数のファイル操作情報を受信した後、前記第2コントローラは、まず、前記複数のファイル操作情報を前記キャッシュ保護領域に書き込み、前記複数のファイル操作情報が前記キャッシュ保護領域に既に正常に書き込まれた後、前記データ情報を第2ライトキャッシュに書き込む。前記データ情報は、前記キャッシュ保護領域に格納されている、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータを指すか、又はすべての前記データ及び前記ファイル処理要求に対応する前記メタデータのアドレスを指す。前記キャッシュ保護領域は、前記第2コントローラに含まれているキャッシュ保護領域を指すことに注意すべきである。
【0111】
したがって、前記第2ライトキャッシュに格納されているデータ情報は、前記第1ライトキャッシュに格納されている前記データ情報と一致する。前記第1コントローラに障害がある場合、前記第2コントローラは、前記第1コントローラに置き換えて作業を続けられるように、前記第2ライトキャッシュの前記属性をローカルに変更する。例えば、前記第2ライトキャッシュに格納されている前記データ情報にしたがって、前記ファイル処理要求に対応する操作が前記メモリに対し実行されるか、又は前記第2ライトキャッシュに格納されている前記データ情報が前記ホストに提供される。
【0112】
従来技術において、前記第1コントローラに障害がある場合、前記第2コントローラは、まず、前記メモリからログ情報を読み出す必要があり、前記ログ情報に従って前記データ情報を取得し、その後、前記ホストに前記情報を提供する。本発明の実施形態においては、前記第1コントローラに障害がある場合、前記第2コントローラは、前記ホストに対し、前記第2ライトキャッシュに格納されている前記データ情報を直接提供してもよい。以上から分かるように、本発明の実施形態においては前記ホストの前記データアクセス効率性が改善される。
【0113】
以下では、本発明の実施形態に従う他のデータ格納方法を詳細に説明する。前記方法は、ストレージシステムに適用される。前記ストレージシステムは、ストレージデバイスと、ホストと、を含んでいる。前記ストレージデバイスは、第1コントローラと、第2コントローラと、メモリと、を備えている。前記第2コントローラは、ライトキャッシュ及びキャッシュ保護領域を具備している。前記ライトキャッシュ及び前記キャッシュ保護領域は、データ保護機能を提供する。
図5に示されているように、前記方法は、以下を含む:
【0114】
ステップ51: 前記第1コントローラは、ファイル処理要求を受信し、前記ファイル処理要求を、複数のファイル操作に分割し、それぞれのファイル操作に対し別々にファイル処理を実行し、複数のファイル操作情報を生成する。
【0115】
前記ファイル処理要求は、アプリケーションサーバ(ホスト、とも称される)により送信される。前記ファイル処理要求の操作タイプは、例えば、ファイル書き込み要求、ファイル修正要求、ファイル作成要求、又はファイル削除要求等の、前記メモリに格納されているデータを修正するためのファイル処理要求でありうるがここでは限定しない。異なるファイル処理要求は、異なるパラメータを含みうる。例えば、ファイル書き込み要求を一例として使用すると、前記ファイル書き込み要求は、ファイルID、ファイルオフセット(offset)、ファイル長(length)、書き込まれるデータなどのパラメータを含んでいる。
【0116】
ファイルシステムを有するストレージデバイスにおいて、前記ファイルシステムは、前記ファイル処理要求を処理する場合、前記ファイル処理要求の操作タイプに従って、ファイル処理要求を複数のファイル操作に分割する必要がしばしばある。例えば、前記ファイルシステムはファイル書き込み要求を、データ修正ファイル操作と、メタデータ修正ファイル操作とに分割する必要がある。他の例では、前記ファイルシステムは、ファイル作成要求を、親ディレクトリ修正ファイル操作と、ファイル作成ファイル操作とに分割する必要がある。さらに別の例では、前記ファイルシステムは、ファイル名変更要求をソースディレクトリ修正ファイル操作と、更新先ディレクトリ修正ファイル操作とに分割する必要がある。
【0117】
オプションとして、前記ファイルシステムは、前記ファイル処理要求の前記操作タイプに従って、前記ファイル処理要求を前記複数のファイル操作に分割し、それぞれのファイル操作を別々に実行する場合、すべてのデータエントリの数、及び、前記ファイル処理要求に対応するメタデータエントリの数を記録してよい。
【0118】
ファイル処理要求を処理する場合、前記第1コントローラは、前記ファイル処理要求から分離されたそれぞれのファイル操作に対し、意味変換又は他のファイル処理を連続的に実際に実行することは理解し得る。ファイル操作を処理するごとに、前記第1コントローラは、前記ファイル操作に対応するデータ及びメタデータを一時的キャッシュに書き込む。したがって、前記第1コントローラが最後のファイル操作を処理し、前記最後のファイル操作に対応するデータ及び前記メタデータを前記一時的キャッシュに書き込んだ後、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータも前記一時的キャッシュに書き込まれる。したがって、本発明の実施形態において、前記一時的キャッシュに格納されているデータは、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータである。同様に、本発明の実施形態において、前記複数のファイル操作情報は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータである。
【0119】
異なるファイル処理要求において、前記異なるファイル処理要求に対し生成されたファイル操作情報もまた異なる。前記ファイル処理要求がファイル書き込み要求の場合、前記ファイル処理要求のファイル操作情報は、前記ファイル書き込み要求において搬送される書き込まれるデータ、メタデータ等でありうる。前記ファイル処理要求がファイル修正要求の場合、前記ファイル修正要求のファイル操作情報は、前記ファイル修正要求において搬送される、書き込まれるデータ、メタデータ等でありうる。前記ファイル処理要求がファイル作成要求の場合、前記ファイル作成要求のファイル操作情報は、ディレクトリ情報、メタデータなどでありうる。前記ファイル処理要求がファイル削除要求の場合、前記ファイル削除要求のファイル操作情報は、ファイルスペースを解放するための特別なページデータ、削除後の前記データ及びメタデータなどでありうる。
【0120】
以下のステップは、ファイル書き込み要求を一例として使用して説明されている。前記ファイル書き込み要求において、前記ファイル書き込み要求において生成されるファイル操作情報は、ファイルID、ファイルオフセット(offset)、ファイル長(length)、書き込み時間、書き込まれるデータ、などを含んでよい。
【0121】
ステップ52: 前記複数のファイル操作情報を前記第2コントローラに書き込む。
【0122】
オプションとして、前記第1コントローラは、ミラーメッセージを前記第2コントローラに送信してもよい。前記ミラーメッセージは、前記複数のファイル操作情報を含んでいる、又は、前記第1コントローラが前記ファイル処理要求を複数のファイル操作に分割し、それぞれのファイル操作を別々に処理する場合、ファイル操作を処理し、対応するデータを毎回生成した後、前記第1コントローラは、ミラーメッセージを前記第2コントローラに送信してもよい。前記ミラーメッセージは、前記ファイル操作に対応するデータを含んでいる。最後のミラーメッセージを前記第2コントローラに送信した後、前記第1コントローラは、前記複数のファイル操作情報が既に送信されていることを前記第2コントローラに通知するために、確認メッセージを前記第2コントローラに送信してよい。
【0123】
ステップ53: 前記第2コントローラは、すべての前記ファイル操作情報を前記キャッシュ保護領域に書き込む。
【0124】
具体的には、前記第2コントローラは、ファイルID、ファイルオフセット、ファイル長、書き込み時間、及び書き込まれるデータなどの前記ファイル操作情報を前記キャッシュ保護領域に書き込んでよい。前記キャッシュ保護領域は、データ保護機能を提供する。ファイル操作情報が前記キャッシュ保護領域に正常に書き込まれる場合、前記ファイル操作情報は、システム障害などを原因として失われない。
【0125】
前記複数のファイル操作情報を前記キャッシュ保護領域に書き込むことは、すべての前記複数のファイル操作情報が前記キャッシュ保護領域に書き込まれることを示しており、すなわち、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータは、前記キャッシュ保護領域に書き込まれることに注意すべきである。
【0126】
例えば、前記キャッシュ保護領域は特定のデータ構造を使用することによりデータを格納する。
図3に示されているように、前記キャッシュ保護領域のデータは、コントロールリンクの形式において管理され得る。前記コントロールリンクは、複数のコントロールヘッダを含み、それぞれのコントロールヘッダは、ファイル処理要求に対応する。それぞれのコントロールヘッダのもとには、複数のスロット(slots)がマウントされており、各スロットは、各データ又は前記ファイル処理要求に対応する各メタデータを格納するために使用される。
【0127】
具体的には、前記ファイル操作情報をトラバースしうる。まず、1つのスロットが前記コントロールリンクにおける第1のデータ(例えば、ファイルID)のために要求され、前記スロットが正常に要求された後、前記第1のデータが前記スロットに書き込まれる。そして、1つのスロットが第2のデータ(例えば、オフセット)のために要求され、前記スロットが正常に要求された後、前記第2のデータが前記スロットに書き込まれる。残りも、前記ファイル操作情報の最後のデータがスロットに書き込まれるまで、同様に処理される。そして、前記ファイル処理要求に対応するコントロールヘッダが前記コントロールリンクに追加されうる。
【0128】
前記ファイル処理要求に対応する前記コントロールヘッダが前記コントロールリンクに追加された後は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記キャッシュ保護領域に正常にすでに書き込まれていることを示している。
【0129】
他の例として、前記キャッシュ保護領域の前記データは、二分木の形式において管理されうる。前記二分木は、複数のルートノードを含み、各ルートノードはファイル処理要求に対応する。各ルートノードには、複数の終端ノードがマウントされている。それぞれの終端ノードは、それぞれのデータ又は前記ファイル処理要求に対応するそれぞれのメタデータを格納するために使用される。
【0130】
具体的には、前記ファイル操作情報は、トラバースされ得る。まず、1つの終端ノードが前記二分木における第1のデータ(例えば、ファイルID)のために要求され、前記終端ノードが正常に要求された後、前記第1のデータが前記終端ノードに書き込まれる。そして、1つの終端ノードが第2のデータ(例えば、オフセット)のために要求され、前記終端ノードが正常に要求された後、前記第2のデータが前記終端ノードに書き込まれる。残りも最後のデータが終端ノードに書き込まれるまで同様に処理される。そして、前記ファイル処理要求に対応するルートノードが、前記二分木に追加され得る。
【0131】
前記ファイル処理要求に対応するルートノードが前記二分木に追加された後は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記キャッシュ保護領域にすでに正常に書き込まれていることを示している。
【0132】
コントロールリンク又は二分木は、キャッシュ保護領域で使用されるデータを格納するためのデータ構造の様式である。加えて、Bツリー、B+ツリー、赤黒木などのデータ構造がデータを格納するために使用されてもよいが、ここでは限定しない。
【0133】
あるいは、前記キャッシュ保護領域は、コントロールリンク又は二分木などのデータ構造を使用してデータを格納する必要はない。前記第1コントローラは、前記ファイル操作情報をトラバースしうる。まず、前記第1コントローラは、前記キャッシュ保護領域における第1のデータ(例えば、ファイルID)のための記憶域スペースを要求し、前記記憶域スペースが正常に要求された後、前記キャッシュ保護領域の記憶域スペースに前記第1のデータを書き込む。そして、前記第1コントローラは、前記キャッシュ保護領域の第2のデータ(例えば、オフセット)のための記憶域スペースを要求し、前記記憶域スペースが正常に要求された後、前記キャッシュ保護領域の前記記憶域スペースに前記第2のデータを書き込む。残りは、前記キャッシュ保護領域の前記記憶域スペースに最後のデータが書き込まれるまで同様に処理する。そして、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが、正常に前記キャッシュ保護領域にすでに書きこまれたことを示すように、フラグ(例えば、真(true))が前記キャッシュ保護領域に格納される前記ファイル操作情報にセットされ得る。オプションとして、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータが前記キャッシュ保護領域に書き込まれたとは限らない場合、他のフラグ(例えば、偽(false))がセットされてよい。
【0134】
あるいは、前記ファイルシステムが前記ファイル処理要求を別々に処理するために複数のファイル操作に分割する場合、前記ファイルシステムは、前記ファイル操作情報に含まれているすべてのデータエントリ及びメタデータエントリの数の統計を収集し、記録し、カウンタ又は同様の機能を備えた前記第2コントローラ内のソフトウェアモジュールをセットしてもよい。前記カウンタの初期値は0である。前記ファイル操作情報に含まれている各データは、前記キャッシュ保護領域の前記要求された記憶域スペースに連続的に書き込まれる。データが正常に書き込まれる毎に、前記カウンタの値は1ずつ増加する。前記カウンタの値が前記ファイル操作情報に含まれるすべての前記データエントリ及び前記メタデータエントリの記録されている数と等しければ、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータは、前記キャッシュ保護領域に正常に既に書き込まれていることを示している。
【0135】
ステップ54: 前記第2コントローラは、前記ファイル操作情報にしたがってデータ情報を取得し、前記データ情報を前記ライトキャッシュに書き込む。
【0136】
具体的には、前記データ情報は、前記キャッシュ保護領域に格納されている、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータであるか、又は、すべての前記データ及び前記ファイル処理要求に対応する前記メタデータのアドレスである。
【0137】
前記第1コントローラに障害がある場合、前記第2コントローラは、前記ライトキャッシュに格納されている前記データ情報を前記ホストに対し提供するか、又は、前記ファイル処理要求に対応する操作、例えばファイル作成、ファイル削除、ファイルに書き込み、を前記メモリに対し実行する。
【0138】
ステップ53は、オプションのステップであり、前記データ情報を前記ライトキャッシュに書き込む処理において前記第2コントローラに障害がある場合、前記キャッシュ保護領域内に格納されている前記複数のファイル操作情報に従って前記データ情報を復元し、前記データ情報を前記ライトキャッシュに書き込むために使用されることに注意すべきである。
【0139】
同様に、本発明の実施形態は、
前記第2コントローラに障害がある場合、前記キャッシュ保護領域に対応するデータ構造に従って、前記キャッシュ保護領域が前記複数のファイル操作情報を含んでいることを判定し、電源障害保護プログラムを使用することにより、前記複数のファイル操作情報を前記メモリの保護領域に格納するか、又は、
前記第2コントローラに障害がある場合、前記フラグに従って、前記キャッシュ保護領域が前記複数のファイル操作情報を含んでいることを判定し、電源障害保護プログラムを使用することにより、前記複数のファイル操作情報を前記メモリの保護領域に格納することを含んでよい。
【0140】
具体的な実施態様については、前述の実施形態におけるステップ23からステップ26を参照することとし、ここでは再び詳細には説明しない。
【0141】
オプションとして、本発明の実施形態は、前記第1コントローラが前記複数のファイル操作情報を前記第1コントローラの前記キャッシュ保護領域に書き込んだ後、前記第1コントローラに障害があり、再び電源が入った場合、前記第1コントローラの前記キャッシュ保護領域から前記複数のファイル操作を復元し、前記ファイル操作情報に従って、前記データ情報を取得し、前記データ情報を前記第1コントローラの前記ライトキャッシュに書き込むことも含んでよい。具体的な実施態様については、前述の実施形態におけるステップ23からステップ26を参照することとし、ここでは再び詳細には説明しない。
【0142】
従来技術において、データ不可分性は、前記メモリにおいて保証されており、前記ライトキャッシュのデータは、直接前記ホストに対し提供できない。したがって、前記第1コントローラに障害がある場合、前記第2コントローラは、前記メモリから対応するログ情報を読み出し、前記ログ情報に従って、前記ライトキャッシュから前記データ情報を復元し、前記情報を前記ホストに提供する必要がある。しかし、本発明の実施形態において、障害が生じる前に、前記第1コントローラが前記複数のファイル操作情報を前記第2コントローラに送信し、前記第2コントローラが前記複数のファイル操作情報に従って、前記データ情報を取得し、前記データ情報を前記ライトキャッシュに書き込むので、前記第1コントローラに障害がある場合、前記第2コントローラは、前記ライトキャッシュのデータを前記ホストに直接提供できる、又は、前記ファイル処理要求に対応する操作を前記メモリに対し実行し得る。
【0143】
[本発明の実施形態による装置]
本発明の実施形態は、データストレージ装置を提供し、
図6に示すように、前記装置は、
ファイル処理要求を受信し、前記ファイル処理要求を複数のファイル操作に分割し、それぞれのファイル操作に対してファイル処理を別々に実行し、複数のファイル操作情報を生成するように構成されているファイル処理モジュール61と、
すべての前記複数のファイル操作情報をキャッシュ保護領域に書き込むように構成されているライティングモジュール62と、
前記第1コントローラに障害が発生した後、電源が再び入った場合、前記キャッシュ保護領域から前記複数のファイル操作情報を復元するように構成されている復元モジュール63と、を含み、
前記ライティングモジュール62は、前記ホストが前記データ情報にアクセスできるように、前記複数のファイル操作情報に従ってデータ情報を取得し、前記データ情報を第1ライトキャッシュに書き込むようにさらに構成されている。
【0144】
オプションとして、前記ライティングモジュール62は、
それぞれのファイル操作情報のための前記キャッシュ保護領域内の記憶域スペースを要求し、
それぞれのファイル操作情報を前記要求された記憶域スペースに格納し、
すべての前記複数のファイル操作情報が対応する記憶域スペースに既に格納されていることを判定し、
前記キャッシュ保護領域に対応するデータ構造において、前記複数のファイル操作情報が格納されている前記記憶域スペースにデータを格納するように特に構成されている。
【0145】
オプションとして、前記ライティングモジュール62は、
それぞれのファイル操作情報を前記キャッシュ保護領域に連続的にに送信し、
すべての前記複数のファイル操作情報が前記キャッシュ保護領域に既に送信されていることを判定し、
前記キャッシュ保護領域に受信されている前記複数のファイル操作情報を正常データとしてマークするように特に構成され、
前記正常データは、すべての前記複数のファイル操作情報が前記キャッシュ保護領域に既に書き込まれていることを示すために使用される。
【0146】
オプションとして、前記装置は、
前記第1コントローラに障害がある場合、前記キャッシュ保護領域に対応する前記データ構造に従って、前記キャッシュ保護領域が前記複数のファイル操作情報を含んでいることを判定し、電源障害保護プログラム使用することにより、前記複数のファイル操作情報をメモリの保護領域に格納するように構成されている保護モジュール64、または、
前記第1コントローラに障害がある場合、前記フラグに従って、前記キャッシュ保護領域が前記複数のファイル操作情報を含んでいることを判定し、電源障害保護プログラムを使用することにより、前記複数のファイル操作情報をメモリの保護領域に格納するように構成されている保護モジュール64、をさらに具備してもよい。
【0147】
オプションとして、前記装置は、
前記キャッシュ保護領域内に格納されている前記複数のファイル操作情報を削除するように構成されている削除モジュール65をさらに具備してもよい。
【0148】
オプションとして、前記装置は、
前記第2コントローラが、前記複数のファイル操作情報に従って、前記ファイル処理要求に対応するデータ情報を取得し、前記データ情報を前記第2コントローラの前記第2ライトキャッシュに書き込めるように、前記複数のファイル操作情報を前記第2コントローラに送信するように構成されている送信モジュール66をさらに具備してもよい。
【0149】
本発明の実施形態により提供される前記装置は、前述の実施形態において説明された前記第1コントローラでセットしてよく、前述の実施形態において説明された前記データ格納方法を実行するように構成されている。種々のモジュールの機能の詳細な説明については、前記方法の実施形態においてなされた説明を参照することとし、ここでは再度詳細は説明しない。
【0150】
図7は、本発明の実施形態によるストレージデバイスを示している。前記ストレージデバイスは、第1コントローラ71と、第2コントローラ72と、メモリと、を備え、前記第2コントローラは、ライトキャッシュを具備している。
【0151】
前記第1コントローラ71は、ファイル処理要求を受信し、前記ファイル処理要求を複数のファイル操作に分割し、それぞれのファイル操作に対し別々のファイル処理を実行し、複数のファイル操作情報を生成し、前記複数のファイル操作情報を前記第2コントローラ72に送信するように構成されている。
【0152】
オプションとして、前記第1コントローラ71は、第1ミラーメッセージを前記第2コントローラ72に送信するように特に構成されており、前記第1ミラーメッセージは、前記複数のファイル操作情報を具備する。
【0153】
オプションとして、前記第1コントローラ72は、複数の第2ミラーメッセージを前記第2コントローラ72に送信するように特に構成されており、それぞれの前記第2ミラーメッセージは、前記複数のファイル操作情報の1つを含んでいる。
【0154】
前記第2コントローラ72は、前記第1コントローラ71に障害がある場合、ホストが前記データ情報にアクセスするか、又は、前記メモリに対し前記ファイル処理要求に対応する操作を実行できるように、前記ファイル操作情報に従ってデータ情報を取得し、前記データ情報を前記ライトキャッシュに書き込むように構成されている。
【0155】
オプションとして、前記第2コントローラ72は、すべての前記ファイル操作情報を前記キャッシュ保護領域に書き込むようにさらに構成されている。
【0156】
具体的には、前記第2コントローラ72は、それぞれのファイル操作情報のための前記キャッシュ保護領域内の記憶域スペースを要求し、前記要求された記憶域スペースにそれぞれのファイル操作情報を格納し、すべての前記複数のファイル操作情報が対応する記憶域スペースに既に格納されていることを判定し、前記キャッシュ保護領域に対応するデータ構造において、データを前記複数のファイル操作情報が格納されている前記記憶域スペースに格納するように構成されているか、又は、
前記第2コントローラ72は、それぞれのファイル操作情報を前記キャッシュ保護領域に連続的に送信し、すべての前記複数のファイル操作情報が前記キャッシュ保護領域に既に送信されていることを判定し、前記キャッシュ保護領域に受信されている前記複数のファイル操作情報に対応するフラグをセットし、前記フラグは、すべての前記複数のファイル操作情報は前記キャッシュ保護領域に既に書き込まれていることを示すために使用されるように構成されている。
【0157】
オプションとして、前記第2コントローラ72は、前記キャッシュ保護領域に対応する前記データ構造に従って、前記キャッシュ保護領域は前記複数のファイル操作情報を含んでいることを判定し、電源障害保護プログラムを使用することにより、前記メモリの保護領域の前記複数のファイル操作情報を格納するようにさらに構成されている。
【0158】
オプションとして、前記第2コントローラ72は、前記フラグに従って、前記キャッシュ保護領域が前記複数のファイル操作情報を含んでいることを判定し、電源障害保護プログラムを使用することにより、前記複数のファイル操作情報を前記メモリの保護領域に格納するようにさらに構成されている。
【0159】
本発明の実施形態による前記ストレージデバイスは、前述の実施形態において説明したように、少なくとも2つのコントローラを備え、前述の実施形態において説明された前記データ格納方法を実行するように構成されているストレージデバイスである。前記コントローラの機能の詳細な説明は、前記方法の実施形態においてされた説明を参照することとし、ここでは再度詳細に説明しない。
【0160】
図8は、本発明の実施形態によるストレージデバイスを示している。前記ストレージデバイスは、
プロセッサ101と、メモリ102と、システムバス(単に「バス」とも)105と、通信インターフェース103とを具備している。前記プロセッサ101、前記メモリ102、及び前記通信インターフェース103は、前記システムバス105を使用することにより接続され、互いに通信する。
【0161】
前記プロセッサ101は、シングルコア又はマルチコアの中央演算処理ユニット、特定用途向け集積回路(ASIC)、又は本発明の実施形態を実施するように構成されている1つまたは複数の集積回路であってよい。
【0162】
前記メモリ102は、例えば、少なくとも1つのディスクメモリなどの、ハイスピードRAMメモリ又は、不揮発性メモリ(non-volatile memory)であってよい。
【0163】
前記通信インターフェース103は、ストレージデバイスと通信するように構成されている。
【0164】
前記メモリ102は、コンピュータ実行命令1021を格納するように構成されている。具体的には、前記コンピュータ実行命令1021は、プログラムコードを含みうる。
【0165】
コンピュータが実行されている場合、前記プロセッサ101は、前記コンピュータ実行命令1021を実行し、
図2に示されている方法のプロシージャを実行できる。
【0166】
便利かつ簡潔な説明のために、前述したデバイス及びモジュールの動作処理の詳細は、対応する前述の方法の実施形態における処理を参照することで、当業者であれば明確に理解し得るので、ここでは再度詳細な説明はしない。
【0167】
本発明で提供されるいくつかの実施形態において、開示されたデバイス及び方法は他の方法においても実施し得ることは理解され得る。例えば、説明されたデバイスの実施形態は単なる例示にすぎない。例えば、モジュールの分割は、単なる論理機能による分割であり、実際の実装における他の分割であってもよい。例えば、複数のモジュール又は構成要素は、組み合わせたり、他のデバイスに組み込まれたり、又はいくつかの特徴は無視又は実行されなくてもよい。加えて、表示され、又は考察された相互結合又は直接結合又は通信接続は、いくつかの通信インターフェースを通じて実装してよい。前記デバイス間又はモジュール間の間接結合又は通信接続は、電気的、機械的、または他の形式で実装してよい。
【0168】
別々の部分として説明されたモジュールは、物理的に分かれていても、分かれていなくてもよく、モジュールとして示された部分は、物理的なモジュールであってもそうでなくてもよく、一か所に配置されても、複数のネットワークのサブモジュールに対して分散してもよい。全部または一部のモジュールは、前記実施形態のソリューションの目的を達成するための実際の必要性に従って選択してよい。
【0169】
加えて、本発明の実施形態の機能モジュールは、1つの処理モジュールに統合しても、物理的に単体でそれぞれのモジュールが存在していても、又は2以上のモジュールが1つのモジュールに統合されてもよい。
【0170】
前記実施形態のステップの全部又は一部は、ハードウェア又は適切なハードウェアに指示するプログラムにより実施されてもよいことは、当業者であれば理解し得る。前記プログラムは、コンピュータ可読記録媒体に格納されてもよい。前記記録媒体は、読み取り専用メモリ、磁気ディスク、又は光ディスクを含んでもよい。
【0171】
最後に、前述した実施形態は、単に、本発明の技術的ソリューションを説明するためのものであり、本発明を限定するものではないことに注意すべきである。前述の実施形態を参照しながら本発明を詳細に説明したが、当業者であれば、そのような修正又は置換により、技術的ソリューションに対応する本質が本発明の実施形態の技術的ソリューションの範囲から逸脱しない限り、前述の実施形態において説明された技術的ソリューションを修正したり、一部又はすべての技術的特徴に等価な置換をしたりすることができることを理解すべきである。