(57)【要約】  ファイルシステムのデータにアクセスするための方法、およびファイルシステムが、本発明の実施形態によって提供される。ファイルシステムは、少なくとも１つのコンピューティングノードと、複数のストレージノードと、を含む。この方法は、コンピューティングノードによって、ターゲット論理ボリュームに対してトリガされたマウント要求を、ターゲットストレージノードに送信することであって、ターゲットストレージノードは、複数のストレージノードのうちのいずれか１つであり、ターゲット論理ボリュームは、複数のストレージノードの少なくとも一部のストレージリソースに対応している、送信することと、コンピューティングノードによって、ターゲットストレージノードによって送信されたターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を受信することと、ターゲット論理ボリュームのデータ状態を復元するために、コンピューティングノードによって、ログセグメントおよびチェックポイントの格納場所情報に従って、ログセグメントおよびチェックポイントのログメタデータを読み取ることと、コンピューティングノードによって、ターゲット論理ボリュームのデータ状態に基づいて、データアクセス処理を実行することと、を含む。複数のコンピューティングノードがターゲット論理ボリュームにアクセスすると、様々なストレージノードによって維持されるターゲット論理ボリュームのログ情報に基づいて、複数のコンピューティングノードの読み取りおよび書き込みの整合性を維持することができる。さらに、読み取りおよび書き込みを同期して実行することができ、したがって、読み取りと書き込みの競合を回避することができる。
2021525926.tif 000002
【特許請求の範囲】
【請求項１】
ファイルシステムのデータにアクセスするための方法であって、前記ファイルシステムは、少なくとも１つのコンピューティングノードと、複数のストレージノードと、を含み、前記方法は、
前記コンピューティングノードによって、ターゲット論理ボリュームに対してトリガされたマウント要求を、ターゲットストレージノードに送信することであって、前記ターゲットストレージノードは、前記複数のストレージノードのうちのいずれか１つであり、前記ターゲット論理ボリュームは、前記複数のストレージノードの少なくとも一部のストレージリソースに対応している、送信することと、
前記コンピューティングノードによって、前記ターゲットストレージノードによって送信された前記ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を受信することと、
前記ターゲット論理ボリュームのデータ状態を復元するために、前記コンピューティングノードによって、前記ログセグメントおよび前記チェックポイントの前記格納場所情報に従って、前記ログセグメントおよび前記チェックポイントのログメタデータを読み取ることと、
前記コンピューティングノードによって、前記ターゲット論理ボリュームの前記データ状態に基づいて、データアクセス処理を実行することと、を含む、方法。
【請求項２】
前記コンピューティングノードによって、前記ターゲット論理ボリュームに対してトリガされた前記マウント要求を、前記ターゲットストレージノードに送信することは、
前記コンピューティングノードによって、データ書き込みプロセスによってトリガされたマウント操作に応答して、前記ターゲットストレージノードに、第１のマウント要求を送信することであって、前記第１のマウント要求は、前記ターゲット論理ボリュームの識別子と、ユーザ情報と、書き込み／読み取りマウントモードの識別子と、を含む、送信することを含み、
前記コンピューティングノードによって、前記ターゲットストレージノードによって送信された前記ターゲット論理ボリュームに対応する前記ログセグメントおよび前記チェックポイントの前記格納場所情報を受信することは、
前記ターゲットストレージノードが、前記ユーザ情報が前記ターゲット論理ボリュームのユーザ権限検証に合格したと判定し、前記ターゲット論理ボリュームが、現在、前記読み取り／書き込みマウントモードでマウントされていないと判定した後、前記コンピューティングノードによって、前記ターゲットストレージノードによって送信された前記ターゲット論理ボリュームに対応する前記ログセグメントおよび前記チェックポイントの前記格納場所情報を受信することを含む、請求項１に記載の方法。
【請求項３】
前記コンピューティングノードによって、前記ターゲット論理ボリュームの前記データ状態に基づいて、前記データアクセス処理を実行することは、
前記コンピューティングノードによって、前記データ書き込みプロセスによってトリガされたファイル準備書き込み操作に応答して、メタデータのみを含む第１のログを生成することであって、前記第１のログは、現時点での最後のログシリアル番号ｉ＋１がインクリメントされた後のログシリアル番号ｉと、前記ファイル準備書き込み操作に対応するファイル情報と、を含む、生成することと、
前記コンピューティングノードによって、前記ターゲット論理ボリュームに対応する最後のログセグメントが位置する第１のデータチャンクと、前記ターゲットストレージノードおよびルートサーバを通じて、前記第１のデータチャンクに対応する第１のストレージノードと、を判定することと、
前記コンピューティングノードによって、前記第１のログを前記第１のデータチャンクに追加するように要求するために、かつ前記第１のストレージノードに前記第１のログをキャッシュするように要求するために、ログ格納要求を、前記第１のストレージノードに送信することと、を含む、請求項２に記載の方法。
【請求項４】
前記コンピューティングノードによって、前記ターゲット論理ボリュームに対応する前記最後のログセグメントが位置する前記第１のデータチャンクと、前記ターゲットストレージノードおよび前記ルートサーバを通じて、前記第１のデータチャンクに対応する前記第１のストレージノードと、を判定することは、
前記コンピューティングノードによって、前記ターゲット論理ボリュームに対応する前記最後のログセグメントが位置するデータチャンクをクエリするための第１のクエリ要求を、前記ターゲットストレージノードに送信することと、
前記コンピューティングノードによって、前記ターゲットストレージノードによって送信された前記第１のデータチャンクの識別子を受信することであって、前記第１のデータチャンクの前記識別子は、ログセグメントの識別子と前記ターゲットストレージノードによって維持される前記ターゲット論理ボリュームのデータチャンクの識別子との間の対応関係に基づいて判定される、受信することと、
前記コンピューティングノードによって、前記第１のデータチャンクの前記識別子に対応するストレージノードをクエリするための第２のクエリ要求を、前記ルートサーバに送信することと、
前記コンピューティングノードによって、前記ルートサーバによって送信された前記第１のストレージノードの識別子を受信することであって、前記第１のストレージノードの前記識別子は、データチャンクの識別子とストレージノードの識別子との間の維持された対応関係に基づいて、前記ルートサーバによって判定される、受信することと、を含む、請求項３に記載の方法。
【請求項５】
前記コンピューティングノードによって、前記ターゲット論理ボリュームの前記データ状態に基づいて、前記データアクセス処理を実行することは、
前記コンピューティングノードによって、前記データ書き込みプロセスによって送信されたデータ書き込み要求に応答して、第２のログを生成することであって、前記データ書き込み要求は、書き込まれたデータと、前記書き込まれたデータに対応するファイル情報と、を含み、前記第２のログは、メタデータと、前記書き込まれたデータと、を含み、前記メタデータは、前記現時点での最後のログシリアル番号ｉ＋１がインクリメントされた後のログシリアル番号ｉ＋２と、前記ファイル情報と、を含む、生成することと、
前記コンピューティングノードによって、前記ターゲット論理ボリュームに対応する前記最後のログセグメントが位置する第２のデータチャンクと、前記ターゲットストレージノードおよび前記ルートサーバを通じて、前記第２のデータチャンクに対応する第２のストレージノードと、を判定することと、
前記コンピューティングノードによって、前記第２のログを前記第２のデータチャンクに追加するように要求するために、かつ前記第２のストレージノードに前記第２のログにメタデータをキャッシュするように要求するために、ログ保存要求を、前記第２のストレージノードに送信することと、を含む、請求項３に記載の方法。
【請求項６】
前記最後のログセグメントが閉鎖条件に到達した場合、前記コンピューティングノードが、前記最後のログセグメントを閉鎖し、新しいチェックポイントを生成し、前記ターゲットストレージノードに新しいログセグメントを前記最後のログセグメントとして要求することをさらに含み、
前記閉鎖条件は、事前設定された数に到達した前記最後のログセグメントに含まれるログの数、または事前設定された容量値に到達した前記最後のログセグメントに対応するデータの量である、請求項３に記載の方法。
【請求項７】
前記コンピューティングノードによって、前記ターゲット論理ボリュームに対してトリガされた前記マウント要求を、前記ターゲットストレージノードに送信することは、
前記コンピューティングノードによって、データ読み取りプロセスによってトリガされたマウント操作に応答して、前記ターゲットストレージノードに、第２のマウント要求を送信することであって、前記第２のマウント要求は、前記ターゲット論理ボリュームの識別子と、ユーザ情報と、読み取り専用マウントモードの識別子と、を含む、送信することを含み、
前記コンピューティングノードによって、前記ターゲットストレージノードによって送信された前記ターゲット論理ボリュームに対応する前記ログセグメントおよび前記チェックポイントの前記格納場所情報を受信することは、
前記ユーザ情報が前記ターゲット論理ボリュームのユーザ権限検証に合格したと判定した後、前記コンピューティングノードによって、前記ターゲットストレージノードによって送信された前記ターゲット論理ボリュームに対応する前記ログセグメントおよび前記チェックポイントの前記格納場所情報を受信することを含む、請求項１に記載の方法。
【請求項８】
前記コンピューティングノードによって、前記ターゲット論理ボリュームの前記データ状態に基づいて、前記データアクセス処理を実行することは、
前記データ読み取りプロセスによって以前に読み取られたログシリアル番号ｊ、前記ログシリアル番号ｊに対応する第３のデータチャンク、および第３のストレージノードに基づいて、前記コンピューティングノードが、前記データ読み込み処理によってトリガされたファイル読み込み操作に応答して、前記ログシリアル番号ｊの後にキャッシュされたログのメタデータを取得するために、データ同期要求を、前記第３のストレージノードに送信することと、
前記コンピューティングノードが、前記第３のストレージノードから前記ログシリアル番号ｊの後にキャッシュされた前記ログの表示情報および前記メタデータを受信することであって、前記キャッシュされたログに対応するログシリアル番号は、ｊ＋１〜ｊ＋ｍであり、前記表示情報は、前記ログシリアル番号ｊ＋ｍに対応するログセグメントが閉鎖されたかどうかを示すために使用される、受信することと、
前記コンピューティングノードが、前記ログシリアル番号ｊの後にキャッシュされた前記ログの前記メタデータおよび前記表示情報に従って、前記ターゲット論理ボリュームの前記データ状態を更新することと、を含む、請求項７に記載の方法。
【請求項９】
前記コンピューティングノードが、前記ログシリアル番号ｊの後にキャッシュされた前記ログの前記メタデータおよび前記表示情報に従って、前記ターゲット論理ボリュームの前記データ状態を更新することは、
前記コンピューティングノードが、前記ログシリアル番号ｊ＋ｍに対応するログセグメントが閉鎖されていないことを前記表示情報が示している場合、前記ログシリアル番号ｊ＋１〜ｊ＋ｍを有する前記キャッシュされたログの前記メタデータに従って、前記ターゲット論理ボリュームの前記データ状態を更新することを含む、請求項８に記載の方法。
【請求項１０】
前記コンピューティングノードが、前記ログシリアル番号ｊの後にキャッシュされた前記ログの前記メタデータおよび前記表示情報に従って、前記ターゲット論理ボリュームの前記データ状態を更新することは、
前記表示情報が、前記ログシリアル番号ｊ＋ｍに対応するログセグメントが閉鎖されたことを示している場合、前記コンピューティングノードが、前記ターゲットストレージノードおよびルートサーバを通じて、前記ログシリアル番号ｊ＋ｍの後にキャッシュされたログ（複数可）を格納するそれぞれの第４のデータチャンク（複数可）と、前記第４のデータチャンクに対応するそれぞれの第４のストレージノード（複数可）と、を判定することと、
前記コンピューティングノードが、前記ログシリアル番号ｊ＋ｍの後の前記キャッシュされたログ（複数可）のメタデータを取得するために、データ同期要求を前記第４のストレージノード（複数可）に送信することと、
前記コンピューティングノードが、ログシリアル番号ｊ＋１〜ｊ＋ｍを有する前記キャッシュされたログ（複数可）の前記メタデータ、および前記ログシリアル番号ｊ＋ｍの後の前記キャッシュされたログのメタデータに従って、前記ターゲット論理ボリュームの前記データ状態を更新することと、を含む、請求項８に記載の方法。
【請求項１１】
前記コンピューティングノードによって、前記ターゲット論理ボリュームの前記データ状態に基づいて、前記データアクセス処理を実行することは、
前記コンピューティングノードによって、前記データ読み取りプロセスによって送信されたデータ読み取り要求に応答して、第５のストレージノードを通じて第５のデータチャンクからデータを読み取るために、前記ターゲットストレージノードおよびルートサーバを通じて、読み取られるファイル情報に対応する前記第５のストレージノードと、前記第５のデータチャンクと、を判定することであって、前記データ読み取り要求は、読み取られる前記ファイル情報を含む、判定すること、を含む、請求項８に記載の方法。
【請求項１２】
ファイルシステムのデータにアクセスするための方法であって、前記ファイルシステムは、少なくとも１つのコンピューティングノードと、複数のストレージノードと、を含み、前記方法は、
ターゲットストレージノードによって、コンピューティングノードによって送信されたターゲット論理ボリュームに対応するマウント要求を受信することであって、前記ターゲットストレージノードは、前記複数のストレージノードのうちのいずれか１つである、受信することと、
前記ターゲットストレージノードによって、データアクセス処理を実行するためのログセグメントおよびチェックポイントの格納場所情報に基づいて、前記コンピューティングノードが、前記ターゲット論理ボリュームのデータ状態を復元することができるようにするために、前記ターゲット論理ボリュームに対応する前記ログセグメントおよび前記チェックポイントの前記格納場所情報を、前記コンピューティングノードに送信することであって、前記ターゲット論理ボリュームは、前記複数のストレージノード内のストレージリソースの少なくとも一部に対応する、送信することと、を含む、方法。
【請求項１３】
前記ターゲットストレージノードによって、前記コンピューティングノードによって送信された前記ターゲット論理ボリュームに対応する前記マウント要求を受信することは、
前記ターゲットストレージノードによって、前記コンピューティングノードによって送信された第１のマウント要求を受信することであって、前記第１のマウント要求が、読み取り／書き込みマウントモードの識別子と、前記ターゲット論理ボリュームの識別子と、ユーザ情報と、を含み、前記読み取り／書き込みマウントモードの前記識別子が、前記コンピューティングノード内のデータ書き込みプロセスに対応する、受信することを含み、
前記ターゲットストレージノードによって、前記ターゲット論理ボリュームに対応する前記ログセグメントおよび前記チェックポイントの前記格納場所情報を、前記コンピューティングノードに送信することは、
前記ユーザ情報が前記ターゲット論理ボリュームのユーザ権限検証に合格したと判定し、前記ターゲット論理ボリュームが、現在、前記読み取り／書き込みモードでマウントされていないと判定した後、前記ターゲットストレージノードによって、前記ターゲット論理ボリュームに対応する前記ログセグメントおよび前記チェックポイントの前記格納場所情報を、前記コンピューティングノードに送信することを含む、請求項１２に記載の方法。
【請求項１４】
前記ターゲットストレージノードによって、前記コンピューティングノードによって送信された前記ターゲット論理ボリュームに対応する前記マウント要求を受信することは、
前記ターゲットストレージノードによって、前記コンピューティングノードによって送信された第２のマウント要求を受信することであって、前記第２のマウント要求が、読み取り専用マウントモードの識別子と、前記ターゲット論理ボリュームの識別子と、ユーザ情報と、を含み、前記読み取り専用マウントモードの前記識別子が、前記コンピューティングノード内のデータ読み取りプロセスに対応する、受信することを含み、
前記ターゲットストレージノードによって、前記ターゲット論理ボリュームに対応する前記ログセグメントおよび前記チェックポイントの前記格納場所情報を、前記コンピューティングノードに送信することは、
前記ユーザ情報が前記ターゲット論理ボリュームのユーザ権限検証に合格したと判定した後、前記ターゲットストレージノードによって、前記ターゲット論理ボリュームに対応する前記ログセグメントおよび前記チェックポイントの前記格納場所情報を、前記コンピューティングノードに送信することを含む、請求項１２に記載の方法。
【請求項１５】
前記ターゲットストレージノードによって、前記コンピューティングノードによって送信されたクエリ要求を受信することであって、前記クエリ要求は、前記ターゲット論理ボリュームに対応するターゲットログセグメントが位置するデータチャンクをクエリするために使用される、受信することと、
前記ターゲットストレージノードによって、ログセグメントの識別子と前記ターゲット論理ボリュームのデータチャンクの識別子との間の維持された対応関係に従って、前記ターゲットログセグメントが位置する前記データチャンクの識別子を判定することと、
前記ターゲットストレージノードによって、前記データチャンクの前記識別子を、前記コンピューティングノードに送信することと、をさらに含む、請求項１２に記載の方法。
【請求項１６】
対応するデータ状態を復元するために、前記ターゲットストレージノードによって、前記ターゲット論理ボリュームに対応するＫ個のログセグメント、およびＫ個のログセグメントに対応するチェックポイントを選択することと、
前記Ｋ個のログセグメント内のＭ個のログセグメントのガベージ比率が事前設定された閾値に到達したと判定したことに応答して、前記ターゲットストレージノードは、前記Ｍ個のログセグメント内の無効なログをクリアし、ルートサーバに新しいデータチャンク（複数可）を要求し、前記クリアした後、前記Ｍ個のログセグメントを前記新しいデータチャンク（複数可）に書き込み、前記Ｍ個のログセグメントが位置する元のデータチャンクを再要求し、ただしＫ≧Ｍ≧１であり、前記Ｍ個のログセグメントと前記データチャンクとの間の対応関係を更新することと、をさらに含む、請求項１２〜１５のいずれか一項に記載の方法。
【請求項１７】
ファイルシステムであって、
少なくとも１つのコンピューティングノードと、複数のストレージノードと、前記複数のストレージノードを管理するために使用される複数のルートサーバと、を含み、
前記少なくとも１つのコンピューティングノードの任意のコンピューティングノードは、ターゲット論理ボリュームに対してトリガされたマウント要求を、前記複数のストレージノードの任意のストレージノードに送信することと、前記任意のストレージノードによって送信された前記ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を受信することと、前記ターゲット論理ボリュームのデータ状態を復元するために、前記ログセグメントおよび前記チェックポイントの前記格納場所情報に従って、前記ログセグメントおよび前記チェックポイントのログメタデータを読み取ることと、前記ターゲット論理ボリュームの前記データ状態に基づいて、データアクセス処理を実行することと、を行うように構成されており、前記ターゲット論理ボリュームが、前記複数のストレージノード内のストレージリソースの少なくとも一部に対応しており、
前記任意のストレージノードは、前記ターゲット論理ボリュームに対応する前記ログセグメントおよび前記チェックポイントの前記格納場所情報を取得することと、前記ログセグメントおよび前記チェックポイントの前記格納場所情報を、前記任意のコンピューティングノードに送信することと、を行うように構成されている、ファイルシステム。
【請求項１８】
ファイルシステムのデータにアクセスするための方法であって、前記ファイルシステムは、少なくとも１つのコンピューティングノードおよび複数のストレージノードを含み、前記方法は、
前記コンピューティングノード内のデータアクセスプロセスによってトリガされたマウント操作に応答して、前記コンピューティングノード内のファイルシステムアクセスプロセスによって、ターゲット論理ボリュームのマウント要求を、任意のストレージノード内の論理ボリュームサービスプロセスに送信することであって、前記ターゲット論理ボリュームが、前記複数のストレージノードのストレージリソースの少なくとも一部に対応する、送信することと、
前記ファイルシステムアクセスプロセスによって、前記論理ボリュームサービスプロセスによって送信された前記ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を受信することと、
前記ターゲット論理ボリュームのデータ状態を復元するために、前記ファイルシステムアクセスプロセスによって、前記ログセグメントおよび前記チェックポイントの前記格納場所情報に従って、前記ログセグメントおよび前記チェックポイントのログメタデータを読み取ることと、
前記ファイルシステムアクセスプロセスによって、前記ターゲット論理ボリュームの前記データ状態に基づいて、データアクセス処理を実行することと、を含む、方法。
【請求項１９】
前記データアクセスプロセスは、データ書き込みプロセスであり、前記コンピューティングノード内のファイルシステムアクセスプロセスによって、前記コンピューティングノード内の前記データアクセスプロセスによってトリガされた前記マウント操作に応答して、前記ターゲット論理ボリュームの前記マウント要求を、前記任意のストレージノード内の前記論理ボリュームサービスプロセスに送信することは、
前記ファイルシステムアクセスプロセスが、前記データ書き込みプロセスによってトリガされたマウント操作に応答して、前記論理ボリュームサービスプロセスに第１のマウント要求を送信することであって、前記第１のマウント要求は、前記ターゲット論理ボリュームの識別子と、ユーザ情報と、読み取り／書き込みマウントモードの識別子と、を含む、送信することを含み、
前記ファイルシステムアクセスプロセスによって、前記論理ボリュームサービスプロセスによって送信された前記ターゲット論理ボリュームに対応する前記ログセグメントおよびチェックポイントの前記格納場所情報を受信することが、
前記ファイルシステムアクセスプロセスによって、前記ユーザ情報が前記ターゲット論理ボリュームのユーザ権限検証に合格したと判定し、前記ターゲット論理ボリュームが、現在、前記読み取り／書き込みマウントモードでマウントされていないと判定した後、前記論理ボリュームサービスプロセスによって送信された前記ターゲット論理ボリュームに対応する前記ログセグメントおよびチェックポイントの前記格納場所情報を受信することを含む、請求項１８に記載の方法。
【請求項２０】
前記ファイルシステムアクセスプロセスによって、前記ターゲット論理ボリュームの前記データ状態に基づいて、前記データアクセス処理を実行することは、
前記ファイルシステムアクセスプロセスによって、前記データ書き込みプロセスによってトリガされたファイル準備書き込み操作に応答して、メタデータのみを含む第１のログを生成することであって、前記第１のログは、現時点での最後のログシリアル番号ｉがインクリメントされた後のログシリアル番号ｉ＋１と、前記ファイル準備書き込み要求に対応するファイル情報と、を含む、生成することと、
前記ファイルシステムアクセスプロセスによって、前記ターゲット論理ボリュームに対応する最後のログセグメントが位置する第１のデータチャンクと、前記論理ボリュームサービスプロセスおよびルートサーバを通じて、前記第１のデータチャンクに対応する第１のデータチャンクサービスプロセスと、を判定することであって、前記ルートサーバが、各ストレージノード内のデータチャンクサービスプロセスを管理するように構成されている、判定することと、
前記ファイルシステムアクセスプロセスによって、前記第１のログを前記第１のデータチャンクに追加するように要求するために、かつ前記第１のデータチャンクサービスプロセスに前記第１のログをキャッシュするように要求するために、ログ保存要求を、前記第１のデータチャンクサービスプロセスに送信することと、を含む、請求項１９に記載の方法。
【請求項２１】
前記ファイルシステムアクセスプロセスによって、前記ターゲット論理ボリュームに対応する前記最後のログセグメントが位置する前記第１のデータチャンクと、前記論理ボリュームサービスプロセスおよび前記ルートサーバを通じて、前記第１のデータチャンクに対応する前記第１のデータチャンクサービスプロセスと、を判定することは、
前記ファイルシステムアクセスプロセスによって、前記ターゲット論理ボリュームに対応する前記最後のログセグメントが位置するデータチャンクをクエリするための第１のクエリ要求を、前記論理ボリュームサービスプロセスに送信することと、
前記ファイルシステムアクセスプロセスによって、前記論理ボリュームサービスプロセスによって送信された前記第１のデータチャンクの識別子を受信することであって、前記第１のデータチャンクの前記識別子は、ログセグメントの識別子と前記ターゲット論理ボリュームのデータチャンクの識別子との間の維持された対応関係に基づいて、前記論理ボリュームサービスプロセスによって判定される、受信することと、
前記ファイルシステムアクセスプロセスによって、前記第１のデータチャンクの前記識別子に対応するデータチャンクサービスプロセスをクエリするための第２のクエリ要求を、ルートサーバに送信することと、
前記ファイルシステムアクセスプロセスによって、前記ルートサーバによって送信された前記第１のデータチャンクサービスプロセスの識別子を受信することであって、前記第１のデータチャンクサービスプロセスの前記識別子は、データチャンクの識別子とデータチャンクサービスプロセスの識別子との間の維持された対応関係に基づいて、前記ルートサーバによって判定される、受信することと、を含む、請求項２０に記載の方法。
【請求項２２】
前記ファイルシステムアクセスプロセスによって、前記ターゲット論理ボリュームの前記データ状態に基づいて、前記データアクセス処理を実行することは、
前記ファイルシステムアクセスプロセスによって、前記データ書き込みプロセスによって送信されたデータ書き込み要求に応答して、第２のログを生成することであって、前記データ書き込み要求は、書き込まれたデータと、前記書き込まれたデータに対応するファイル情報と、を含み、前記第２のログは、メタデータと、前記書き込まれたデータと、を含み、前記メタデータは、前記現時点での最後のログシリアル番号ｉ＋１がインクリメントされた後のログシリアル番号ｉ＋２と、前記ファイル情報と、を含む、生成することと、
前記ファイルシステムアクセスプロセスによって、前記ターゲット論理ボリュームに対応する最後のログセグメントが位置する第２のデータチャンクと、前記論理ボリュームサービスプロセスおよび前記ルートサーバを通じて、前記第２のデータチャンクに対応する第２のデータチャンクサービスプロセスと、を判定することと、
前記ファイルシステムアクセスプロセスによって、前記第２のログを前記第２のデータチャンクに追加するように要求するために、かつ前記第２のデータチャンクサービスプロセスに前記第２のログにメタデータをキャッシュするように要求するために、ログ保存要求を、前記第２のデータチャンクサービスプロセスに送信することと、を含む、請求項２０に記載の方法。
【請求項２３】
新しいチェックポイントを生成することと、前記論理ボリュームサービスプロセスに新しいログセグメントを前記最後のログセグメントとして要求すること、をさらに含み、前記最後のログセグメントが閉鎖条件に到達した場合、前記ファイルシステムアクセスプロセスは、前記最後のログセグメントを閉鎖し、前記閉鎖条件は、事前設定された数に到達した前記最後のログセグメントに含まれるログの数、または事前設定された容量値に到達した前記最後のログセグメントに対応するデータの量である、請求項２０に記載の方法。
【請求項２４】
前記データアクセスプロセスは、データ読み取りプロセスであり、前記コンピューティングノード内の前記ファイルシステムアクセスプロセスによって、前記コンピューティングノード内の前記データアクセスプロセスによってトリガされた前記マウント操作に応答して、前記ターゲット論理ボリュームの前記マウント要求を、前記任意のストレージノード内の前記論理ボリュームサービスプロセスに送信することは、
前記ファイルシステムアクセスプロセスによって、前記データ読み取りプロセスによってトリガされたマウント操作に応答して、前記論理ボリュームサービスプロセスに、第２のマウント要求を送信することであって、前記第２のマウント要求は、前記ターゲット論理ボリュームの識別子と、ユーザ情報と、読み取り専用マウントモードの識別子と、を含む、送信することを含み、
前記ファイルシステムアクセスプロセスによって、前記論理ボリュームサービスプロセスによって送信された前記ターゲット論理ボリュームに対応する前記ログセグメントおよび前記チェックポイントの前記格納場所情報を受信することは、
前記ユーザ情報が前記ターゲット論理ボリュームのユーザ権限検証に合格したと判定した後、前記ファイルシステムアクセスプロセスによって、前記論理ボリュームサービスプロセスによって送信された前記ターゲット論理ボリュームに対応する前記ログセグメントおよび前記チェックポイントの前記格納場所情報を受信することを含む、請求項１８に記載の方法。
【請求項２５】
前記ファイルシステムアクセスプロセスによって、前記ターゲット論理ボリュームの前記データ状態に基づいて、前記データアクセス処理を実行することは、
前記ファイルシステムアクセスプロセスは、データ読み取りプロセスによって以前に読み取られたログシリアル番号ｊ、前記ログシリアル番号ｊに対応する第３のデータチャンク、および第３のストレージノードに基づいて、前記データ読み取りプロセスによってトリガされたファイル準備読み取り操作に応答して、前記ログシリアル番号ｊの後にキャッシュされたログ（複数可）のメタデータを取得するために、データ同期要求を、第３のデータチャンクサービスプロセスに送信し、
前記ファイルシステムアクセスプロセスが、前記第３のストレージノードから前記ログシリアル番号ｊの後にキャッシュされた前記ログ（複数可）の前記メタデータおよび表示情報を受信することであって、前記キャッシュされたログに対応するログシリアル番号は、ｊ＋１〜ｊ＋ｍであり、前記表示情報は、前記ログシリアル番号ｊ＋ｍに対応するログセグメントが閉鎖されたかどうかを示すために使用される、受信することと、
前記ファイルシステムアクセスプロセスが、前記ログシリアル番号ｊの後にキャッシュされた前記ログ（複数可）の前記メタデータおよび前記表示情報に従って、前記ターゲット論理ボリュームの前記データ状態を更新することと、を含む、請求項２４に記載の方法。
【請求項２６】
前記ファイルシステムアクセスプロセスが、前記ログシリアル番号ｊの後にキャッシュされた前記ログ（複数可）の前記メタデータおよび前記表示情報に従って、前記ターゲット論理ボリュームの前記データ状態を更新することは、
前記ファイルシステムアクセスプロセスが、前記ログシリアル番号ｊ＋ｍに対応するログセグメントが閉鎖していないことを前記表示情報が示している場合、前記ログシリアル番号ｊ＋１〜ｊ＋ｍを有するキャッシュされたログのメタデータに従って、前記ターゲット論理ボリュームの前記データ状態を更新することを含む、請求項２５に記載の方法。
【請求項２７】
前記ファイルシステムアクセスプロセスが、前記ログシリアル番号ｊの後にキャッシュされた前記ログ（複数可）の前記メタデータおよび前記表示情報に従って、前記ターゲット論理ボリュームの前記データ状態を更新することは、
前記表示情報が、前記ログシリアル番号ｊ＋ｍに対応するログセグメントが閉鎖されたことを示している場合、前記ファイルシステムアクセスプロセスが、ターゲットストレージノードおよびルートサーバを通じて、前記ログシリアル番号ｊ＋ｍの後にキャッシュされたログ（複数可）を格納するそれぞれの第４のデータチャンク（複数可）と、前記第４のデータチャンク（複数可）に対応するそれぞれの第４のストレージノード（複数可）と、を判定することと、
前記ファイルシステムアクセスプロセスが、前記ログシリアル番号ｊ＋ｍの後に前記キャッシュされたログ（複数可）のメタデータを取得するために、データ同期要求を前記第４のストレージノード（複数可）に送信することと、
前記ファイルシステムアクセスプロセスが、ログシリアル番号ｊ＋１〜ｊ＋ｍを有する前記キャッシュされたログ（複数可）の前記メタデータ、および前記ログシリアル番号ｊ＋ｍの後の前記キャッシュされたログのメタデータに従って、前記ターゲット論理ボリュームの前記データ状態を更新することと、を含む、請求項２５に記載の方法。
【請求項２８】
前記ファイルシステムアクセスプロセスによって、前記ターゲット論理ボリュームの前記データ状態に基づいて、前記データアクセス処理を実行することは、
前記ファイルシステムアクセスプロセスが、前記データ読み取りプロセスによって送信されたデータ読み取り要求を受信することであって、前記データ読み取り要求が、読み取られるファイル情報を含む、受信することと、
前記ファイルシステムアクセスプロセスが、第５のデータチャンクサービスプロセスを通じて、第５のデータチャンクからデータを読み取るために、前記論理ボリュームサービスプロセスおよびルートサーバを通じて読み取られる前記ファイル情報に対応する前記第５のデータチャンクサービスプロセスおよび前記第５のデータチャンクを判定することを含む、請求項２５に記載の方法。
【請求項２９】
ファイルシステムのデータにアクセスするための方法であって、前記ファイルシステムは、少なくとも１つのコンピューティングノードと、複数のストレージノードと、を含み、前記方法は、
ストレージノード内の論理ボリュームサービスプロセスによって、コンピューティングノード内のファイルシステムアクセスプロセスによって送信されたターゲット論理ボリュームに対応するマウント要求を受信することと、
前記ファイルシステムアクセスプロセスに、データアクセス処理の前記ターゲット論理ボリュームのデータ状態を復元させるために、前記論理ボリュームサービスプロセスによって、前記ターゲット論理ボリュームに対応する第１のログセグメントおよびチェックポイントの格納場所情報を、前記第１のログセグメントおよび前記チェックポイントの前記格納場所情報に基づいて、前記ファイルシステムアクセスプロセスに送信することであって、前記ターゲット論理ボリュームは、前記複数のストレージノード内のストレージリソースの少なくとも一部に対応し、前記ストレージノードは、前記複数のストレージノードのうちのいずれか１つである、送信することと、を含む、方法。
【請求項３０】
前記ストレージノード内の前記論理ボリュームサービスプロセスによって、前記コンピューティングノード内の前記ファイルシステムアクセスプロセスによって送信された前記ターゲット論理ボリュームに対応する前記マウント要求を受信することは、
前記論理ボリュームサービスプロセスによって、前記ファイルシステムアクセスプロセスによって送信された第１のマウント要求を受信することであって、前記第１のマウント要求は、読み取り／書き込みマウントモードの識別子と、前記ターゲット論理ボリュームの識別子と、ユーザ情報と、を含む、受信することを含み、
前記論理ボリュームサービスプロセスによって、前記ターゲット論理ボリュームに対応する前記第１のログセグメントおよび前記チェックポイントの格納場所情報を、前記ファイルシステムアクセスプロセスに送信することは、
前記ユーザ情報が前記ターゲット論理ボリュームのユーザ権限検証に合格したと判定し、前記ターゲット論理ボリュームが、現在、読み取り／書き込みマウントモードでマウントされていないと判定した後、前記論理ボリュームサービスプロセスによって、前記ターゲット論理ボリュームに対応する前記第１のログセグメントおよび前記チェックポイントの格納場所情報を、前記ファイルシステムアクセスプロセスに送信することを含む、請求項２９に記載の方法。
【請求項３１】
前記ストレージノード内の前記論理ボリュームサービスプロセスによって、前記コンピューティングノード内の前記ファイルシステムアクセスプロセスによって送信された前記ターゲット論理ボリュームに対応する前記マウント要求を受信することは、
前記論理ボリュームサービスプロセスによって、前記ファイルシステムアクセスプロセスによって送信された第２のマウント要求を受信することであって、前記第２のマウント要求は、読み取り専用マウントモードの識別子と、前記ターゲット論理ボリュームの識別子と、ユーザ情報と、を含む、受信することを含み、
前記論理ボリュームサービスプロセスによって、前記ターゲット論理ボリュームに対応する前記第１のログセグメントおよび前記チェックポイントの格納場所情報を、前記ファイルシステムアクセスプロセスに送信することは、
前記ユーザ情報が前記ターゲット論理ボリュームのユーザ権限検証に合格したと判定した後、前記論理ボリュームサービスプロセスによって、前記ターゲット論理ボリュームに対応する前記第１のログセグメントおよび前記チェックポイントの格納場所情報を、前記ファイルシステムアクセスプロセスに送信することを含む、請求項２９に記載の方法。
【請求項３２】
前記論理ボリュームサービスプロセスによって、前記ファイルシステムアクセスプロセスによって送信されたクエリ要求を受信することであって、前記クエリ要求は、前記ターゲット論理ボリュームに対応するターゲットログセグメントが位置するデータチャンクをクエリするために使用される、受信することと、
前記論理ボリュームサービスプロセスによって、ログセグメントの識別子とデータチャンクの識別子との間の維持された対応関係に従って、前記ターゲットログセグメントが位置する前記データチャンクの識別子を判定することと、
前記論理ボリュームサービスプロセスによって、前記データチャンクの前記識別子を、前記ファイルシステムアクセスプロセスに送信することと、をさらに含む、請求項２９に記載の方法。
【請求項３３】
前記論理ボリュームサービスプロセスによって、前記ストレージノード内のガベージコレクションサービスプロセスによって送信された前記ターゲット論理ボリュームに対応する第３のマウント要求を受信することと、
前記論理ボリュームサービスプロセスによって、前記ターゲット論理ボリュームに対応する第２のログセグメントおよびチェックポイントの格納場所情報を、前記ガベージコレクションサービスプロセスに送信して、前記ガベージコレクションサービスプロセスが、前記第２のログセグメントおよびチェックポイントからＫ個のログセグメントおよびチェックポイントを選択できるようにして、対応するデータ状態を復元し、前記Ｋ個のログセグメント内のＭ個のログセグメントのそれぞれのガベージ比率が事前設定された閾値に到達した、ただしＫ≧Ｍ≧１、と判定したことに応答して、Ｍ個のログセグメントが位置する元のデータチャンクを再要求することと、をさらに含む、請求項２９〜３２のいずれか一項に記載の方法。
【請求項３４】
前記論理ボリュームサービスプロセスによって、前記ガベージコレクションサービスプロセスによって送信されたログセグメント更新通知を受信することであって、前記ログセグメント更新通知が、Ｍ個のログセグメントと、前記Ｍ個のログセグメントが位置する新しいデータチャンクとの間の対応関係を含む、受信することと、
前記論理ボリュームサービスプロセスによって、元の対応関係を、前記Ｍ個のログセグメントと前記データチャンクとの間の前記対応関係に更新することと、をさらに含む、請求項３３に記載の方法。
【請求項３５】
ファイルシステムであって、
少なくとも１つのコンピューティングノードと、複数のストレージノードと、前記複数のストレージノード内のデータチャンクサービスプロセスを管理するために使用される複数のルートサーバと、を含み、
各コンピューティングノードは、データアクセスプロセスと、ファイルシステムアクセスプロセスとを有し、
各ストレージノードは、論理ボリュームサービスプロセスおよびデータチャンクサービスプロセスを有し、前記データチャンクサービスプロセスが、対応するストレージノードに格納されている各データチャンクの読み取りおよび書き込み管理に使用され、
前記ファイルシステムアクセスプロセスは、対応するコンピューティングノード内の前記データアクセスプロセスによってトリガされたマウント操作に応答することと、ターゲット論理ボリュームのマウント要求を、任意のストレージノードの前記論理ボリュームサービスプロセスに送信することと、前記論理ボリュームサービスプロセスによって送信された前記ターゲット論理ボリュームに対応する第１のログセグメントおよびチェックポイントの格納場所情報を受信することと、前記ターゲット論理ボリュームのデータ状態を復元するために、前記第１のログセグメントおよび前記チェックポイントの前記格納場所情報に基づいて、前記第１のログセグメントおよび前記チェックポイントのメタデータを読み取ることと、前記ターゲット論理ボリュームの前記データ状態に基づいて、データアクセス処理を実行することと、を行うように構成されており、前記第１のログセグメントのリストが、前記ターゲット論理ボリュームのメタデータに対応しており、前記ターゲット論理ボリュームが、前記複数のストレージノード内のストレージリソースの少なくとも一部に対応しており、
前記論理ボリュームサービスプロセスは、前記ファイルシステムアクセスプロセスによって送信された前記マウント要求を受信することと、前記ターゲット論理ボリュームに対応する前記第１のログセグメントおよび前記チェックポイントの前記格納場所情報を、前記ファイルシステムアクセスプロセスに送信することと、を行うように構成されている、ファイルシステム。
【請求項３６】
各ストレージノードは、ガベージコレクションサービスプロセスをさらに含み、
前記論理ボリュームサービスプロセスはさらに、前記対応するストレージノード内の前記ガベージコレクションサービスプロセスによって送信された前記ターゲット論理ボリュームに対応するマウント要求を受信することと、前記ターゲット論理ボリュームに対応する第２のログセグメントおよびチェックポイントの格納場所情報を、前記ガベージコレクションサービスプロセスに送信することと、前記ガベージコレクションサービスプロセスから、Ｍ個のログセグメントと、前記Ｍ個のログセグメントが位置する新しいデータチャンクとの間の対応関係を含むログセグメント更新通知を受信することと、前記Ｍ個のログセグメントと前記データチャンクとの間の前記対応関係によって、元の対応関係を更新することと、を行うように構成されており、
前記ガベージコレクションサービスプロセスは、対応するデータ状態を復元するために、前記第２のログセグメントおよびチェックポイントからＫ個のログセグメントおよびチェックポイントを選択することと、前記Ｋ個のログセグメント内の前記Ｍ個のログセグメントのそれぞれのガベージ比率が事前設定された閾値に到達したと判定し、クリア処理の後、前記Ｍ個のログセグメントを前記新しいデータチャンクに書き込むように、ルートサーバに前記新しいデータチャンクを要求することに応答して、前記Ｍ個のログセグメント内の無効なログをクリアすることと、前記Ｍ個のログセグメントが位置する元のデータチャンクに対応するデータチャンクサービスプロセスに、リサイクル通知を送信し、その結果、前記データチャンクサービスプロセスが、前記元のデータチャンクを再要求し、ただしＫ≧Ｍ≧１であり、前記ログセグメント更新通知を、前記論理ボリュームサービスプロセスに送信するようにすることと、を行うように構成されている、請求項３５に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２０１８年６月１日に出願され、「Ｆｉｌｅ  Ｓｙｓｔｅｍ  Ｄａｔａ  Ａｃｃｅｓｓ  Ｍｅｔｈｏｄ  ａｎｄ  Ｆｉｌｅ  Ｓｙｓｔｅｍ」と題された中国特許出願第２０１８／１０５５８０７１．１号の優先権を主張するものであり、その全体が参照により本明細書に組み込まれる。
【０００２】
本出願は、インターネット技術の技術分野に関し、具体的には、ファイルシステムデータアクセス方法およびファイルシステムに関する。
【背景技術】
【０００３】
コンピュータは、ファイルシステムを通じてデータを管理し、格納する。情報爆発の時代には、膨大な量のデータのストレージ容量、データバックアップ、データセキュリティなどのニーズを満たすために、様々なタイプのネットワークサービスによって生成されるデータの量が指数関数的に増加している。これにより、分散ファイルシステムが登場した。簡単に言えば、分散ファイルシステム、多くのストレージノードで構成されるファイルシステムネットワークであり、これは、特定の場所に固定されている従来のファイルシステムを、任意の数の場所にある複数のファイルシステムに拡張する。したがって、分散ファイルシステムが使用されるとき、ユーザは、どのストレージノードにデータが格納されるか、またはどのストレージノードからデータが取得されるかを気にする必要はなく、ローカルファイルシステムが使用されているかのようにデータを管理および格納するだけで済む。
【０００４】
場合によっては、ユーザは、複数のマシン（ストレージノードと比較してコンピューティングノードと呼ぶことができる）がファイルシステムを共有することを望んでいる。一般的なシナリオでは、あるマシンが、データを書き込み、ユーザのアクセス要求を処理している間に、他のマシンは、共有ファイルシステムを通じて、データ分析またはバックアップなどのために、リアルタイムで最新の書き込まれたデータを読み取ることができる。
【０００５】
コンピュータネットワーク技術の発達に伴い、ネットワーク技術の用途の数が増え、ネットワークベースの共有ファイルシステムも広く利用されている。現在、ファイルシステムの共有は、ネットワークファイルシステム（ＮＦＳ）および共通インターネットファイルシステム（ＣＩＦＳ）などの技術を採用することによって実施されている。
【０００６】
しかしながら、一般的に使用されるＮＦＳ／ＣＩＦＳネットワーク共有ファイルシステムには、性能とスケーラビリティの面でボトルネックがあり、これらは、主に次のように反映される。複数のクライアント（コンピューティングノード内のアプリケーションクライアント）による読み取りデータと書き込みデータの両方のアクセス整合性をサポートするために、通常、独立した調整サーバがファイルシステムに展開されて、複雑なロック競合メカニズムを提供することによって、すべてのアクセス要求を調整する。したがって、任意のクライアントは、データの読み取りおよび書き込みを行う前に、調整サーバにロックを要求する必要がある。データアクセスの量が増えると、調整サーバがボトルネックを引き起こし、システムのスケーラビリティが低下する可能性がある。さらに、複数のクライアントが同じファイルデータを読み書きする必要があるとき、ロックの競合が発生する。そのため、ロックを取得していないクライアントがデータの読み取りおよび書き込みを行う前に、クライアントは、別のクライアントがデータの読み取りおよび書き込みを完了するのを待つ必要があり、これによって、データの読み取りおよび書き込みの遅延が増加し、すなわち、深刻な読み取りと書き込みの競合が発生する。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記を考慮して、本発明の実施形態は、ファイルシステムに関連付けられたデータアクセスの性能を改善するためのファイルシステムデータアクセス方法およびファイルシステムを提供する。
【課題を解決するための手段】
【０００８】
第１の態様では、本発明の実施形態は、コンピューティングノードによって実行されるファイルシステムのデータにアクセスするための方法を提供する。ファイルシステムは、少なくとも１つのコンピューティングノードと、複数のストレージノードと、を含む。本方法は以下を含む。
コンピューティングノードによって、ターゲット論理ボリュームに対してトリガされたマウント要求を、ターゲットストレージノードに送信することであって、ターゲットストレージノードは、複数のストレージノードのうちのいずれか１つであり、ターゲット論理ボリュームは、複数のストレージノードの少なくとも一部のストレージリソースに対応している、送信することと、
コンピューティングノードによって、ターゲットストレージノードによって送信されたターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を受信することと、
ターゲット論理ボリュームのデータ状態を復元するために、コンピューティングノードによって、ログセグメントおよびチェックポイントの格納場所情報に従って、ログセグメントおよびチェックポイントのログメタデータを読み取ることと、
コンピューティングノードによって、ターゲット論理ボリュームのデータ状態に基づいて、データアクセス処理を実行することと、を含む。
【０００９】
第２の態様では、本発明の実施形態は、ファイルシステムのデータにアクセスするための方法を提供し、これは、コンピューティングノード内のファイルシステムアクセスプロセスによって具体的に実行される。ファイルシステムは、少なくとも１つのコンピューティングノードと、複数のストレージノードと、を含む。本方法は以下を含む。
ターゲット論理ボリュームについてのコンピューティングノード内のデータアクセスプロセスによってトリガされたマウント要求に応答して、コンピューティングノード内のファイルシステムアクセスプロセスによって、ストレージノード内の論理ボリュームサービスプロセスを通じて、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を取得することと、
ターゲット論理ボリュームのデータ状態を復元するために、ファイルシステムアクセスプロセスによって、ログセグメントおよびチェックポイントの格納場所情報に従って、ログセグメントおよびチェックポイントのログメタデータを読み取ることと、
ファイルシステムアクセスプロセスによって、ターゲット論理ボリュームのデータ状態に基づいて、データアクセス処理を実行することと、を含む。
【００１０】
第３の態様では、本発明の実施形態は、プロセッサと、メモリと、を含むコンピューティングノードを提供し、メモリは、１つ以上のコンピュータ命令を格納するように構成されており、１つ以上のコンピュータ命令は、プロセッサによって実行されると、第１の態様または第２の態様で、ファイルシステムデータアクセス方法を実施する。そのような電子デバイスは、他のデバイスまたは通信ネットワークと通信するように構成された通信インターフェースも含み得る。
【００１１】
本発明の実施形態は、コンピュータによって実行されると、コンピュータに、第１の態様または第２の態様で、ファイルシステムデータアクセス方法を実施させるコンピュータプログラムを格納するように構成されたコンピュータ記憶媒体を提供する。
【００１２】
第４の態様では、本発明の実施形態は、ストレージノードによって実行されるファイルシステムのデータにアクセスするための方法を提供する。ファイルシステムは、少なくとも１つのコンピューティングノードと、複数のストレージノードと、を含む。本方法は、以下を含む。
ターゲットストレージノードによって、コンピューティングノードによって送信されたターゲット論理ボリュームに対応するマウント要求を受信することであって、ターゲットストレージノードは、複数のストレージノードのうちのいずれか１つである、受信することと、
ターゲットストレージノードによって、コンピューティングノードが、ログセグメントおよびチェックポイントの格納場所情報に基づいて、データアクセス処理のために使用されるターゲット論理ボリュームのデータ状態を復元するために、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を、コンピューティングノードに送信することであって、ターゲット論理ボリュームは、複数のストレージノード内のストレージリソースの少なくとも一部に対応する、送信することと、を含む。
【００１３】
第５の態様では、本発明の実施形態は、ファイルシステムのデータにアクセスするための方法を提供し、これは、ストレージノード内の論理ボリュームサービスプロセスによって実行される。ファイルシステムは、少なくとも１つのコンピューティングノードと、複数のストレージノードと、を含む。本方法は以下を含む。
ストレージノード内の論理ボリュームサービスプロセスによって、コンピューティングノード内のファイルシステムアクセスプロセスによって送信されたターゲット論理ボリュームに対応するマウント要求を受信することと、
ファイルシステムアクセスプロセスに、第１のログセグメントおよびチェックポイントの格納場所情報に基づいて、データアクセス処理のターゲット論理ボリュームのデータ状態を復元させるために、論理ボリュームサービスプロセスによって、ターゲット論理ボリュームに対応する第１のログセグメントおよびチェックポイントの格納場所情報を、ファイルシステムアクセスプロセスに送信することであって、ターゲット論理ボリュームは、複数のストレージノード内のストレージリソースの少なくとも一部に対応し、ストレージノードは、複数のストレージノードのうちのいずれか１つである、送信することと、を含む。
【００１４】
第６の態様では、本発明の実施形態は、プロセッサと、メモリと、を含むストレージノードを提供し、メモリは、１つ以上のコンピュータ命令を格納するように構成されており、１つ以上のコンピュータ命令は、プロセッサによって実行されると、第４の態様または第５の態様で、ファイルシステムデータアクセス方法を実施する。そのような電子デバイスは、他のデバイスまたは通信ネットワークと通信するように構成された通信インターフェースも含み得る。
【００１５】
本発明の実施形態は、コンピュータによって実行されると、コンピュータに、第４の態様または第５の態様でファイルシステムデータアクセス方法を実施させるコンピュータプログラムを格納するように構成されたコンピュータ記憶媒体を提供する。
【００１６】
第７の態様では、本発明の実施形態は、ファイルシステムを提供し、ファイルシステムは、
少なくとも１つのコンピューティングノードと、複数のストレージノードと、複数のストレージノードを管理するように構成された複数のルートサーバと、を含み、
少なくとも１つのコンピューティングノードの任意のコンピューティングノードは、ターゲット論理ボリュームに対してトリガされたマウント要求を、複数のストレージノードの任意のストレージノードに送信することと、任意のストレージノードからのターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を受信することと、ターゲット論理ボリュームのデータ状態を復元するために、ログセグメントおよびチェックポイントの格納場所情報に従って、ログセグメントおよびチェックポイントのログメタデータを読み取ることと、ターゲット論理ボリュームのデータ状態に基づいて、データアクセス処理を実行することと、を行うように構成されており、ターゲット論理ボリュームが、複数のストレージノード内のストレージリソースの少なくとも一部に対応しており、
任意のストレージノードは、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を取得することと、ログセグメントおよびチェックポイントの格納場所情報を、任意のコンピューティングノードに送信することと、を行うように構成されている。
【００１７】
第８の態様では、本発明の実施形態は、ファイルシステムを提供し、ファイルシステムは、
少なくとも１つのコンピューティングノードと、複数のストレージノードと、複数のストレージノード内のデータチャンクサービスを管理するために構成された複数のルートサーバと、を含み、
各コンピューティングノードは、データアクセスプロセスと、ファイルシステムアクセスプロセスとを有し、
各ストレージノードは、論理ボリュームサービスプロセスおよびデータチャンクサービスプロセスを有し、データチャンクサービスプロセスが、それぞれのストレージノードに格納されている各データチャンクの読み取りおよび書き込み管理を実行するように構成されており、
対応するコンピューティングノード内のデータアクセスプロセスによってトリガされたマウント操作に応答して、ファイルシステムアクセスプロセスは、ターゲット論理ボリュームのマウント要求を、ターゲットストレージノード内の論理ボリュームサービスプロセスに送信し、論理ボリュームサービスプロセスから、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの第１の格納場所情報を受信し、ログセグメントおよびチェックポイントの第１の格納場所情報に従って、ログセグメントおよびチェックポイントのログメタデータを読み取って、ターゲット論理ボリュームのデータ状態を復元し、ターゲット論理ボリュームのデータ状態に基づいて、データアクセス処理を実行し、ターゲット論理ボリュームが、複数のストレージノード内のストレージリソースの少なくとも一部に対応しており、
論理ボリュームサービスプロセスは、ファイルシステムアクセスプロセスによって送信されたマウント要求を受信することと、ターゲット論理ボリュームに対応する第１のログセグメントおよびチェックポイントの格納場所情報を、ファイルシステムアクセスプロセスに送信することと、を行うように構成されている。
【００１８】
本発明の実施形態によって提供されるファイルシステムデータアクセス方法およびファイルシステムは、少なくとも１つのコンピューティングノードと、複数のストレージノードと、複数のストレージノードを管理するために使用される複数のルートサーバと、を含み、データは、ファイルシステムにデータチャンクの単位で格納される。各ストレージノードは、それぞれのストレージノードに格納されている各データチャンクに対して読み取りおよび書き込み管理を実行する。複数のコンピューティングノード内の異なるサービスアプリケーション、または同じコンピューティングノード内の異なるサービスアプリケーションは、複数のストレージノードのリソースを共有することができる。言い換えれば、異なるサービスアプリケーションは、複数のストレージノードに基づいて、対応する論理ボリュームを構築することができ、すなわち、各論理ボリュームは、複数のストレージノードのリソースの少なくとも一部に対応する。加えて、各ストレージノードは、共有ファイルシステムの複数の論理ボリュームのログ情報を維持する。例えば、ログ情報は、各ストレージノードに論理ボリュームサービスプロセスを展開することによって維持することができる。このファイルシステムに基づいて、任意のコンピューティングノード内の任意のサービスアプリケーションがデータにアクセスする必要があり、特定の論理ボリューム（ターゲット論理ボリュームと呼ばれる）のマウント要求を任意のストレージノード（ターゲットストレージノードと呼ばれる）にトリガするとき、ターゲットストレージノードは、ターゲット論理ボリュームに対応するログセグメントリストおよびチェックポイントリストを取得する。ログセグメントリストは、ターゲット論理ボリュームの様々なログのメタデータを格納する。したがって、コンピューティングノードは、取得されたログセグメントリストおよびチェックポイントリストに基づいて、メモリ内のターゲット論理ボリュームの最新のデータ状態を復元することができる。そのため、コンピューティングノードは、ターゲット論理ボリュームの最新のデータ状態に基づいて、データ書き込みまたはデータ読み取りなどのデータアクセス処理を実行することができる。上述のコンピューティングノードおよびストレージノードで構成される分散ファイルシステムにおいて、複数のコンピューティングノードがターゲット論理ボリュームへのアクセスを実行するとき（例えば、複数のコンピューティングノードがターゲット論理ボリュームに対応するデータの読み取りおよび書き込みを行う必要があるとき）、複数のコンピューティングノードは、ストレージノードで維持されているターゲット論理ボリュームのログ情報に基づいて、良好な読み取りと書き込みの整合性を維持することができ、読み取りと書き込みを同期して実行することができるため、読み取りと書き込みの競合を回避することができる。
【図面の簡単な説明】
【００１９】
本発明の実施形態または既存の技術の技術的解決策をより明確に説明するために、実施形態または既存の技術を説明するために必要な図面を本明細書で簡単に説明する。明らかに、本明細書に記載の図面は、本発明のいくつかの実施形態を表す。当業者は、いかなる創造的な努力もすることなく、これらの図面に基づいて他の図面を取得することができる。
【００２０】
【図１】本発明の実施形態によって提供されるファイルシステムのアーキテクチャ図である。
【図２】本発明の実施形態によって提供される別のファイルシステムのアーキテクチャ図である。
【図３】図２に示されるファイルシステムに対応する論理的な階層化アーキテクチャ図である。
【図４ａ】本発明の実施形態に係るファイルシステムのデータにアクセスするための方法のフローチャートである。
【図４ｂ】本発明の実施形態によって提供される別のファイルシステムデータアクセス方法のフローチャートである。
【図５ａ】図４ａに示される実施形態におけるステップ４０４ａの実装プロセスのフローチャートである。
【図５ｂ】図４ｂに示される実施形態におけるステップ４０４ｂの実装プロセスのフローチャートである。
【図６ａ】本発明の実施形態に係るファイルシステムのデータにアクセスするためのさらに別の方法のフローチャートである。
【図６ｂ】本発明の実施形態に係るファイルシステムのデータにアクセスするための別の方法のフローチャートである。
【図７ａ】図６ａに示される実施形態におけるステップ６０４ａの実装プロセスのフローチャートである。
【図７ｂ】図６ｂに示される実施形態におけるステップ６０４ｂの実装プロセスのフローチャートである。
【図８ａ】本発明の実施形態に係るファイルシステムのデータにアクセスするためのさらに別の方法のフローチャートである。
【図８ｂ】本発明の実施形態に係るファイルシステムのデータにアクセスするための別の方法のフローチャートである。
【図９】本発明の実施形態によって提供されるファイルシステムデータアクセス装置の概略構造図である。
【図１０】図９に示される実施形態によって提供されるファイルシステムデータアクセス装置に対応するコンピューティングノードの概略構造図である。
【図１１】本発明の実施形態によって提供される別のファイルシステムデータアクセス装置の概略構造図である。
【図１２】図１１に示される実施形態によって提供されるファイルシステムデータアクセス装置に対応するストレージノードの概略構造図である。
【発明を実施するための形態】
【００２１】
本発明の実施形態の目的、技術的解決策、および利点をより明確にするために、本発明の実施形態における技術的解決策を、本発明の実施形態における添付図面と併せて、明確および完全に説明する。明らかに、記載されている実施形態は、本開示の実施形態のいくつかを表しているにすぎず、すべてを表しているわけではない。本発明のこれらの実施形態に基づいて、当業者によって独創的な努力なしに取得される他のすべての実施形態は、本発明の保護の範囲内にあるものとする。
【００２２】
本発明の実施形態で使用される用語は、特定の実施形態を説明する目的のためだけであり、本発明を限定することを意図していない。本発明の実施形態および添付の特許請求の範囲で使用される「ａ」、「ｓａｉｄ」および「ｔｈｅ」の単数形は、複数形も含むことを意図している。他の意味が文脈で明確に示されていない限り、「複数」は一般に少なくとも２つを含むが、少なくとも１つを含むことを除外するものではない。
【００２３】
本文中で使用される「および／または」という用語は、関連するオブジェクトを説明する単なる関連関係であり、３つのタイプの関係が存在し得ることを意味することを理解されたい。例えば、Ａおよび／またはＢは、Ａが単独で存在する、ＡとＢの両方が存在する、Ｂが単独で存在するという３つのタイプの状況を意味する場合がある。加えて、本文中の記号「／」は、一般に、その前後の関連オブジェクトが「または」の関係にあることを表す。
【００２４】
本発明の実施形態では、第１、第２、第３などの用語を使用してＸＸＸを説明する場合があるが、これらのＸＸＸは、これらの用語に限定されないことを理解されたい。これらの用語は、ＸＸＸを区別するためにのみ使用される。例えば、本発明の実施形態の範囲から逸脱することなく、第１のＸＸＸは、第２のＸＸＸと呼ばれてもよく、同様に、第２のＸＸＸは、第１のＸＸＸと呼ばれてもよい。
【００２５】
文脈に応じて、本明細書で使用される「〜の場合（ｉｆ）」および「〜の場合（ｉｎ  ｃａｓｅ）」という単語は、「〜のとき（ａｔ  ｔｈｅ  ｔｉｍｅ  ｗｈｅｎ）」または「〜のとき（ｗｈｅｎ）」または「それを判定することに応答して」または「それを検出することに応答して」と解釈することができる。同様に、文脈に応じて、「判定する場合」または「（記述された状態またはイベントを）検出する場合」というフレーズは、「判定するとき」または「判定することに応答して」または「（記述された状態またはイベントを）検出するとき」」または「（記述された状態またはイベント）の検出に応答して」と解釈することができる。
【００２６】
「含む（ｉｎｃｌｕｄｉｎｇ）」、「含む（ｃｏｎｔａｉｎｉｎｇ）」という用語、またはそれらの他の変形は、非排他的な包含をカバーすることを意図しており、その結果、一連の要素を含む製品またはシステムは、それらの要素だけでなく、明示的に列挙されていない他の要素を含むか、またはそのような製品またはシステムに固有の要素も含むことに留意されたい。それ以上の制限なしに、「〜を含む」という文によって定義される要素は、そのような要素を含む製品またはシステム内の他の同一の要素の存在を排除するものではない。
【００２７】
加えて、以下の方法の実施形態におけるステップシーケンスは単なる例であり、厳密に限定されない。
【００２８】
図１は、本発明の実施形態によって提供されるファイルシステムのアーキテクチャ図である。ファイルシステムは、分散ファイルシステムである。図１に示されるように、ファイルシステムは、少なくとも１つのコンピューティングノードと、複数のストレージノードと、複数のストレージノードを管理するように構成された複数のルートサーバ（ＲＳ、ルートサーバの略語）と、を含む。
【００２９】
コンピューティングノードは、多くの場合、１つ以上のサービスアプリケーションが展開されているアプリケーションサーバに対応する。
【００３０】
複数のストレージノードは、多くの場合、異なる地理的場所に展開されたストレージサーバに対応し、複数のコンピューティングノードが複数のストレージノードのストレージリソースを共有することができる。各ストレージノードでは、データは、チャンク単位で読み書きされ、各チャンクは、特定のサイズに事前設定されている。
【００３１】
複数のコンピューティングノードによるファイルシステムの共有は、主に、ファイルシステムの複数のストレージノードによって提供されるストレージリソースに基づいて、異なるユーザが、それぞれのコンピューティングノード内のサービスアプリケーションの論理ボリュームを作成することができるという点で具体化される。論理ボリュームは、物理ファイルシステムに基づいて作成された論理ファイルシステムと見なすことができる。異なる論理ボリュームは、複数のストレージノード内の異なるストレージリソースに対応しており、すなわち、異なる論理ボリュームが異なるストレージリソースを占有する。通常、各論理ボリュームは、複数のストレージノード内のストレージリソースの一部に対応する。しかしながら、複数のストレージノードが特定のサービスアプリケーションによってのみ使用されているとき、そのようなサービスアプリケーションに対応する論理ボリュームは、複数のストレージノードのすべてのストレージリソースに対応することができる。したがって、各論理ボリュームは、複数のストレージノード内のストレージリソースの少なくとも一部に対応していると見なすことができる。
【００３２】
複数のＲＳは、相互バックアップ関係にあり、格納されているコンテンツは同じである。格納されているコンテンツは、主に、データチャンク識別子とストレージノード識別子との間の対応関係である。言い換えると、各ＲＳは、各ストレージノードに格納されているデータチャンクを認識している。実際のアプリケーションでは、ストレージノードごとに、そこで実行されているデータチャンクサービスプロセスが、それぞれのストレージノードの実際のデータ読み取りおよび書き込み処理を実行し、データチャンクサービスプロセスは、ストレージノードと１対１の対応を有する。したがって、ルートサーバは、データチャンク識別子とデータチャンクサービスプロセス識別子との間の対応関係を維持していると見なすこともできる。
【００３３】
任意のルートサーバによる複数のストレージノードの管理は、データチャンク識別子とストレージノード識別子（複数可）／データチャンクサービスプロセス識別子（複数可）との間の対応関係の上述の維持に反映されるだけではなく、実際のアプリケーションでは、どのルートサーバでも、ファイルシステムのすべてのターゲットおよびファイルスペース、各ファイルのデータチャンクリストなどの情報を記録することができる。さらに、ストレージノードの分散およびスケジューリングも、各ストレージノードのストレージ負荷に応じて実行することができる。
【００３４】
実際のアプリケーションでは、少なくとも１つのコンピューティングノードのいずれかのコンピューティングノード内の特定のサービスアプリケーションが、新しいサービスデータの書き込みまたはサービスデータの読み取りなど、データアクセスを実行する必要がある場合、対応する論理ボリューム（ターゲット論理ボリュームと呼ばれる）のデータアクセスプロセスをトリガするために、データアクセスプロセスがアクティブ化される。そのようなデータアクセスプロセスは、データ書き込みプロセスまたはデータ読み取りプロセスであり得る。
【００３５】
この時点で、ターゲット論理ボリュームのデータにアクセスするプロセス中：
任意のコンピューティングノードは、ターゲット論理ボリュームに対してトリガされたマウント要求を、複数のストレージノードの任意のストレージノード（以下、ターゲットストレージノードと呼ぶ）に送信することと、ターゲットストレージノードによって送信されたターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を受信することと、ターゲット論理ボリュームのデータ状態を復元するために、ログセグメントおよびチェックポイントの格納場所情報に従って、ログセグメントおよびチェックポイントのログメタデータを読み取ることと、ターゲット論理ボリュームのデータ状態に基づいて、データアクセス処理を実行することと、を行うように構成されている。
【００３６】
ターゲットストレージノードは、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を取得し、ログセグメントおよびチェックポイントの格納場所情報を、任意のコンピューティングノードに送信するように構成されている。
【００３７】
ターゲット論理ボリュームは、複数のログセグメントおよびチェックポイントに対応し、ログセグメントおよびチェックポイントは対応関係を有する。例えば、チェックポイント（１０００）は、ログセグメント［１−１０００］の後に生成される。各ログセグメントは、複数のログを含む。ログは、データおよびメタデータで構成され、一部のログは、メタデータのみを含み得る。簡単に言うと、メタデータは、例えば、誰がどのファイルのデータに対していつ読み取り／書き込みアクセスを実行したかなど、ターゲット論理ボリュームに対応する様々なファイルに対して実行されたデータアクセスに関する関連情報を記録する。上述のデータアクセス関連情報に加えて、メタデータは、ログシリアル番号も含む。ログシリアル番号に基づいて、データの読み取りおよび書き込みの整合性を確実にすることができ、これについては、後続の実施形態で説明する。
【００３８】
加えて、各ログセグメントは、ファイルシステムが異常なときに、チェックポイントに基づいてデータを復元するために使用されるチェックポイントに対応している。ログがログセグメントの形式で編成されているのは、ログに基づくファイルシステムの例外から迅速に復元するためである。
【００３９】
本発明の実施形態では、複数のストレージノードを複数のサービスアプリケーションによって共有することができるので、任意のサービスアプリケーションについて、複数のストレージノードは、特定の区別をすることなく全体として見なされる。したがって、任意のコンピューティングノードが、その中の特定のサービスアプリケーションによるトリガに基づいて、対応するターゲット論理ボリュームのマウント要求を発行する必要があるとき、任意のコンピューティングノードは、任意のストレージノードにマウント要求を送信して、ターゲット論理ボリュームのマウントを要求することができる。これに基づいて、各ストレージノードは、各論理ボリュームに対応するそれぞれのログセグメントおよびそれぞれのチェックポイントの格納場所情報を維持し、格納場所情報は、各ログセグメントおよび各チェックポイントがどのデータチャンクに配置されるかを記述する。
【００４０】
現在マウント要求を受信しているストレージノードが、高い負荷圧力または他の理由によりマウント要求に応答することができない場合、ストレージノードがマウント要求を他のストレージノードに転送して処理することができることは理解できる。
【００４１】
ターゲットストレージノードは、前述のコンピューティングノードによって送信されたマウント要求を受信すると、マウント要求に含まれるターゲット論理ボリュームの識別子に従って、どの論理ボリュームのマウントが要求されているかを認識し、したがって、ローカルに維持されている各論理ボリュームのログセグメントおよびチェックポイントの格納場所情報の中から、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を取得し、コンピューティングノードに返す。次いで、コンピューティングノードは、ターゲット論理ボリュームのデータ状態を復元するために、ログセグメントおよびチェックポイントの取得された格納場所情報に従って、対応する格納場所から対応するログメタデータを読み取る。具体的には、コンピューティングノードは、ターゲット論理ボリュームのデータ状態を復元するために、メモリ内のログセグメントおよびチェックポイントのログメタデータを再生する。このデータ状態は、ターゲット論理ボリュームの最新のデータ状態を反映し、すなわち、現時点までのターゲット論理ボリュームに対応する各ファイル内のデータの最新の状態を反映する。これに基づいて、コンピューティングノードは、データ書き込みおよびデータ読み取りの処理など、後続のデータアクセス処理を実行することができる。データアクセス処理のプロセスは、本実施形態では詳細に説明されていない後続の方法の実施形態で詳細に説明される。
【００４２】
ターゲットストレージノードによるログセグメントおよびチェックポイントの格納場所情報の上述の維持は、例えば、チャンク１にログセグメント［０−２０００］を記録し、チャンク２にログセグメント［２００１−２２００］を記録し、チャンク７にチェックポイント（２０００）を記録するなど、各ログセグメントおよび各チェックポイントの識別子とストレージノードのデータチャンク識別子との間の対応関係を維持することとして具体化できることに留意されたい。したがって、任意選択の実施形態では、ターゲットストレージノードはまた、そのような対応関係に基づいて、様々なストレージノードの対応するデータチャンクからログセグメントおよびチェックポイントの対応するメタデータを取得し、それをコンピューティングノードに返してもよい。
【００４３】
ターゲットストレージノードによってコンピューティングノードに送信されるターゲット論理ボリュームに対応するログセグメントおよびチェックポイントは、これには限定されないが、ターゲット論理ボリュームの最後のログセグメントおよび最後のチェックポイントの格納場所情報である可能性があることに留意されたい。これは、一般的な状況では、チェックポイント（２０００）のみを読み取る必要があり、ログセグメントおよびチェックポイントの上記の例に基づいて、ターゲット論理ボリュームの最新のデータ状態を復元するときに、ログセグメント［２００１−２２００］の各ログのメタデータを再生する必要があるためである。これは、チェックポイント（２０００）が、ログセグメント［２００１−２２００］の前にターゲット論理ボリュームのデータ状態を記録するためである。
【００４４】
加えて、コンピューティングノードは、ターゲット論理ボリュームにアクセスするために、後続のアクセスを実行するために、最初に、ターゲット論理ボリュームをローカルにマウントする必要があることに留意されたい。しかしながら、本発明の実施形態では、ターゲット論理ボリュームをマウントするプロセス中、ターゲット論理ボリュームの最新のデータ状態は、各ストレージノードで維持される各論理ボリュームのログセグメントおよびチェックポイント情報に基づいて復元される。そのため、各コンピューティングノードは、ターゲット論理ボリュームの最新のデータ状態を取得して、複数のコンピューティングノードがターゲット論理ボリュームにアクセスするとき、読み取りと書き込みの整合性を確実にすることができる。
【００４５】
上記の図１に示されるアーキテクチャは、ハードウェア物理ノードの観点からの導入である。実際には、複数のストレージノードのストレージリソースを共有するために複数のコンピューティングノードをサポートするために、関連するソフトウェアモジュールが各コンピューティングノードおよび各ストレージノードに展開される。このようなソフトウェアモジュールは、様々なタイプのサービスプロセスとして具体化することができる。したがって、図２に示される実施形態と併せて、本発明の実施形態によって提供されるファイルシステムの詳細な内部アーキテクチャが、以下でさらに導入される。
【００４６】
図２に示されるように、ファイルシステムは、少なくとも１つのコンピューティングノード（図２に示されるホスト１およびホスト２）と、複数のストレージノードと、複数のストレージノードのデータチャンクサービスプロセス（チャンクサーバ、略してＣＳ）を管理するために使用される複数のルートサーバ（ルートサーバ、略してＲＳ）と、を含む。
【００４７】
各コンピューティングノードは、データアクセスプロセスと、ファイルシステムアクセスプロセスとを有する。
【００４８】
各ストレージノードは、論理ボリュームサービスプロセス（ボリュームサーバ、略してＶＳ）と、ＣＳとを有する。ＣＳは、対応するストレージノードに格納されている各データチャンク（チャンク）の読み取りおよび書き込み管理を実行するように構成されている。
【００４９】
実際のアプリケーションでは、各コンピューティングノード内のデータアクセスプロセスは、図２に示されるように、データ書き込みプロセス（ライタ）またはデータ読み取りプロセス（リーダ）であり得る。データアクセスプロセスは、通常、コンピューティングノード内のサービスアプリケーションによって開始される。
【００５０】
各コンピューティングノード内のファイルシステムアクセスプロセスは、対応するターゲット論理ボリュームにアクセスするためのアクセスポートである。実際のアプリケーションでは、任意選択で、ファイルシステムアクセスプロセスは、図２のユーザモードファイルシステム（ユーザスペースのファイルシステム、略してＦＵＳＥ）に基づいて実装されるユーザモードファイルシステムアクセスプロセス（ヒューズワーカ）である場合がある。ＶＦＳ、／ｄｅｖ／ｆｕｓｅ、およびヒューズワーカは、Ｆｕｓｅのコンポーネントモジュールである。ファイルシステムアクセスプロセスは、Ｆｕｓｅアーキテクチャに依存せずに実装され得ること、またはヒューズワーカの関連機能は、Ｌｕｓｔｒｅ／ＧＰＦＳおよび他のファイルシステムなどに類似したオペレーティングシステムカーネルに実装され得ることに留意されたい。
【００５１】
加えて、任意選択の実施形態では、図２に示されるように、各ストレージノードは、ガベージコレクションサービスプロセス（ガベージコレクタ、略してＦｕｓｅ）も含む。
【００５２】
要約すると、ＶＳ、ＧＣ、およびＣＳのサービスプロセスを各ストレージノードに展開することができる。
【００５３】
加えて、コンピューティングノード、ストレージノード、およびルートサーバの前述の構成に基づいて、本発明の実施形態によって提供されるファイルシステムは、論理的に階層的な構造を有すると見なすことができることに留意されたい。図３は、そのような階層構造をより直感的な方法で示しており、図３に示されるＶＳ、ＧＣ、およびＣＳの数は、この階層構造を説明するためにのみ使用されており、ストレージノードとの対応する関係を明示しない。というのは、これらのサービスプロセスとストレージノードは、通常、１対１で対応しているからである。図３からわかるように、ファイルシステムは、最上層、中間層、および最下層を含む３層構造と見なすことができる。
【００５４】
最下層は、データチャンクサービス（チャンクサービス）層であり、追加専用モードで分散チャンク読み取りおよび書き込みサービスを上向きに提供する。ユーザは、チャンクを作成し、コピー数を指定し、追加専用モードでデータを書き込み、正常に書き込まれたデータをリアルタイムで一貫して読み取り、データの読み取りを高速化するために、メモリまたは高速メディアにキャッシュするチャンクデータの一部を指定することが可能である。チャンクサービス層は、主に、２つの役割で構成されており、１つはＣＳであり、対応するストレージノード内のすべてのチャンク情報を管理し、チャンクの読み取りおよび書き込みサービスを提供するために使用され、もう１つはＲＳであり、すべてのＣＳ、すなわち、すべてのストレージノード内のＣＳを管理するために使用され、ＣＳ識別子とチャンク識別子との間の対応関係を維持することが可能である。
【００５５】
中間層は、ボリュームサービス層であり、論理ボリュームを上向きに作成／削除／マウント／アンマウントするためのサービスを提供し、２つの役割で構成され、１つはＶＳであり、各論理ボリュームのメタデータを管理するために使用され、主に、各論理ボリュームのログセグメントのメンテナンス、およびログの回復を加速するためにチェックポイントが位置する格納場所の情報を含んでおり、もう１つはＧＣであり、ファイルシステムのガベージスペースを再生するために使用され、ファイルシステムの回復プロセスを高速化するために定期的にチェックポイントを生成する。
【００５６】
最上層は、ファイルシステムアクセス層であり、２つの部分を含み、１つは、標準のＰｏｓｉｘインターフェースを呼び出すことによって、ファイルデータにアクセスするためのデータアクセスプロセス（ライタ／リーダなど）であり、もう１つは、Ｆｕｓｅフレームワークに基づくファイルシステムアクセスプロセス（ヒューズワーカ）を含み、ユーザモードファイルシステムの管理、読み取り、書き込みを実行するためのヒューズワーカを提供するユーザモードファイルシステム（Ｆｕｓｅ）である。
【００５７】
要約すると、図２および図３に示されるファイルシステムアーキテクチャでは、任意のコンピューティングノード内の特定のサービスアプリケーションがデータアクセスプロセスを開始し、サービスアプリケーションに対応するターゲット論理ボリュームにアクセスする必要があるとき、マウント操作がトリガされる。この時点で、
コンピューティングノード内のデータアクセスプロセスによってトリガされたマウント操作に応答して、コンピューティングノード内のファイルシステムアクセスプロセスは、ターゲット論理ボリュームのマウント要求を、任意のストレージノード内の論理ボリュームサービスプロセスに送信し、論理ボリュームサービスプロセスから、ターゲット論理ボリュームに対応する第１のログセグメントおよびチェックポイントの格納場所情報を受信し、それによって、第１のログセグメントおよびチェックポイントの格納場所情報に従って、第１のログセグメントおよびチェックポイントのログメタデータを読み取って、ターゲット論理ボリュームのデータ状態を復元し、ターゲット論理ボリュームのデータ状態に基づいて、データアクセス処理を実行し、
論理ボリュームサービスプロセスは、ファイルシステムアクセスプロセスによって送信されたマウント要求を受信することと、ターゲット論理ボリュームに対応する第１のログセグメントおよびチェックポイントの格納場所情報を、ファイルシステムアクセスプロセスに送信することと、を行うように構成されている。
【００５８】
任意選択で、第１のログセグメントおよびチェックポイントは、現時点でのターゲット論理ボリュームの最後のログセグメントおよび最後のチェックポイントであり得る。
【００５９】
上記からわかるように、論理ボリュームサービスプロセスは、各ストレージノードに展開され、論理ボリュームサービスプロセスは、各論理ボリュームに対応するログセグメント（複数可）およびチェックポイント（複数可）の格納場所情報を維持する。論理ボリュームサービスプロセスは、ストレージノードの開始時に開始することができる。加えて、異なるストレージノードの論理ボリュームサービスプロセスは、各ストレージノードの論理ボリュームサービスプロセスが、すべての論理ボリュームのログセグメントおよびチェックポイントの格納場所情報を維持することを確実にするために、相互バックアップ関係を有する。
【００６０】
上述の分散ファイルシステムでは、複数のコンピューティングノードがターゲット論理ボリュームにアクセスしているとき（例えば、複数のコンピューティングノードがターゲット論理ボリュームに対応するデータの読み取りおよび書き込みを行う必要があるとき）、複数のコンピューティングノードは、各ストレージノードで維持されているターゲット論理ボリュームのログ情報に基づいて、良好な読み取りおよび書き込みの整合性を維持することができ、読み取りおよび書き込みを同期的に実行することができるため、読み取りと書き込みの競合を回避することができる。
【００６１】
ファイルシステムのデータにアクセスするための方法は、図１〜図３に示されるファイルシステムアーキテクチャを参照して本明細書で詳細に説明される。
【００６２】
データ書き込みの完全なプロセスは、図４ａ〜図５ｂに示される実施形態を参照して以下に導入される。
【００６３】
図４ａは、本発明の実施形態によって提供されるファイルシステムのデータにアクセスするための方法のフローチャートである。本発明の実施形態によって提供される方法は、図１に示されるようなアーキテクチャ下でコンピューティングノードによって実行され得る。図４ａに示されるように、本方法は、以下のステップを含む。
【００６４】
４０１ａ：コンピューティングノードは、データ書き込みプロセスによってトリガされたマウント操作に応答して、ターゲットストレージノードに、第１のマウント要求を送信し、第１のマウント要求は、ターゲット論理ボリュームの識別子と、ユーザ情報と、書き込み／読み取りマウントモードの識別子と、を含む。
【００６５】
図１に示される実施形態からわかるように、ターゲットストレージノードは、複数のストレージノードのうちのいずれか１つである。
【００６６】
本実施形態では、特定のコンピューティングノード内のサービスアプリケーションがデータ書き込み処理を実行する必要がある状況を導入する。したがって、サービスアプリケーションは、コンピューティングノード内のデータ書き込みプロセスを開始する。本実施形態の前述の説明からわかるように、サービスアプリケーションに対応するターゲット論理ボリュームにアクセスする必要があるとき、ターゲット論理ボリュームを、コンピューティングノードにローカルにマウントする必要がある。したがって、本実施形態は、最初に、データ書き込みシナリオでターゲット論理ボリュームをマウントするプロセスを導入する。
【００６７】
コンピューティングノード内のデータ書き込みプロセスが開始された後、データ書き込みプロセスは、マウント操作をトリガする。マウント操作は、データ書き込みプロセスによってコンピューティングノードのプロセッサに送信されるマウント通知と見なすことができる。マウント操作に基づいて、コンピューティングノードは、ターゲット論理ボリュームの識別子と、ユーザ情報と、書き込み／読み取りマウントモードの識別子と、を含む、第１のマウント要求を、ターゲットストレージノードと呼ばれる任意のストレージノードに送信する。
【００６８】
ユーザ情報は、ユーザアカウント、ユーザ名などの情報であり得る。読み取り可能／書き込み可能マウントモードの識別子は、データ書き込みプロセスに対応する。言い換えれば、本発明の実施形態では、データ書き込みプロセスは、論理ボリュームを書き込み／読み取りモードでマウントすることができる。この読み取り／書き込みマウントモードは、同じターゲット論理ボリュームに対して、１つのデータ書き込みプロセスのみが同時にデータを書き込むことができることを意味する。
【００６９】
４０２ａ：コンピューティングノードは、ターゲットストレージノードが、ユーザ情報がターゲット論理ボリュームのユーザ権限検証に合格したと判定した後、ターゲットストレージノードによって送信されたターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を受信し、ターゲット論理ボリュームは現在読み取り／書き込みマウントモードでマウントされていないと判定する。
【００７０】
コンピューティングノードから第１のマウント要求を受信した後、ターゲットストレージノードは、読み取り／書き込みマウントモードの識別子に基づいて、この時点でデータ書き込みプロセスがターゲット論理ボリュームにアクセスする必要があることを認識する。このとき、一方では、ターゲットストレージノードは、第１のマウント要求のユーザ情報に基づいて、ユーザがターゲット論理ボリュームにアクセスする権限を有しているかどうかを確認する。一方、ターゲットストレージノードは、ターゲット論理ボリュームが現在他のデータ書き込みプロセスによって占有されているかどうか、すなわち、ターゲット論理ボリュームが、現在読み取り／書き込みマウントモードでマウントされているかどうかを判定する必要がある。
【００７１】
実際のアプリケーションでは、任意選択で、各ストレージノードは、ユーザ権限の検証を実装するためのユーザホワイトリストなど、各論理ボリュームのユーザ権限情報を維持することができる。加えて、各ストレージノードは、各論理ボリュームのマウント状態情報を相互に同期させ、すなわち、各論理ボリュームがどのようなタイプのマウントモードでマウントされているか、あるいはマウントされていない場合、各論理ボリュームに関する関連情報を同期させる。これに基づいて、ターゲット論理ボリュームが現在読み取り／書き込みマウントモードでマウントされているかどうかの判定を実現することができる。
【００７２】
ユーザが許可検証に合格したと判定し、ターゲット論理ボリュームが現在読み取り／書き込みモードでマウントされていないと判定すると、ターゲットストレージノードは、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報をコンピューティングノードへ返すことができる。
【００７３】
４０３ａ：コンピューティングノードは、ターゲット論理ボリュームのデータ状態を復元するために、ログセグメントおよびチェックポイントの格納場所情報に従って、ログセグメントおよびチェックポイントのログメタデータを読み取る。
【００７４】
コンピューティングノードは、格納場所情報に従って対応する格納場所から各ログを読み取り、これは、具体的に、ログ内のメタデータを読み取り、その結果、メタデータの各部分は、ターゲット論理ボリュームの最新のデータ状態を復元するために、最後のログシリアル番号ｉを有するログに到達するまで、メモリ内で順番に再生される。
【００７５】
４０４ａ：コンピューティングノードは、ターゲット論理ボリュームのデータ状態に基づいて、データアクセス処理を実行する。
【００７６】
ターゲット論理ボリュームの最新のデータ状態を復元した後、コンピューティングノードは、後続のデータ書き込みプロセスを実行することができる。データ書き込みプロセスは、多くの場合、ファイル準備フェーズと、データ書き込みフェーズと、を含み、これらは、図５ａに示されるように、後続の実施形態で説明される。
【００７７】
図４ａに示される前述の実施形態は、コンピューティングノードおよびストレージノードのノードまたはデバイスの役割に関して説明される。本発明の実施形態によって提供されるファイルシステムのデータにアクセスするための方法を実施するプロセスは、図２または図３に示される論理システムアーキテクチャに基づいて、図４ｂに示される実施形態と併せて以下に説明される。
【００７８】
図４ｂは、本発明の実施形態によって提供されるファイルシステムのデータにアクセスするための別の方法のフローチャートである。本発明の実施形態によって提供される方法は、図２または図３に示されるアーキテクチャ下で、コンピューティングノード内のファイルシステムアクセスプロセス（ヒューズワーカ）によって実施することができる。図４ｂに示されるように、本方法は、以下のステップを含む。
【００７９】
４０１ｂ：コンピューティングノード内のファイルシステムアクセスプロセスは、コンピューティングノード内のデータ書き込みプロセスによってトリガされたマウント操作に応答して、ストレージノード内の論理ボリュームサービスプロセスに、第１のマウント要求を送信し、第１のマウント要求は、ターゲット論理ボリュームの識別子と、ユーザ情報と、読み取り／書き込みマウントモードの識別子と、を含む。
【００８０】
本実施形態では、コンピューティングノードは、ファイルシステム内の複数のコンピューティングノードのうちのいずれか１つであり、ストレージノードは、複数のストレージノードのうちのいずれか１つである。コンピューティングノードによる対応する論理ボリュームへのアクセスを実現するために、ファイルシステムアクセスプロセスがコンピューティングノードに展開され、これは、例えば、これらに限定されないが、図２または図３に示されるようなヒューズワーカである。
【００８１】
加えて、論理ボリュームサービスプロセスおよびデータチャンクサービスプロセスが各ストレージノードに展開される。データチャンクサービスプロセスは、対応するストレージノード内のデータチャンクの読み取りと書き込みに使用され、論理ボリュームサービスプロセスは、ログセグメント識別子／チェックポイント識別子と各論理ボリュームのデータチャンク識別子との間の各対応関係を維持し、データの読み取りおよび書き込み処理を実行するためのファイルシステムアクセスプロセスを支援する。
【００８２】
実際のアプリケーションでは、コンピューティングノード内のサービスアプリケーションがデータ書き込みプロセスをトリガし、ターゲット論理ボリュームにデータを書き込みたいとき、データ書き込みプロセスは、コンピューティングノード内のファイルシステムアクセスプロセスに第１のマウント要求を送信するなどのマウント操作をトリガする。これにより、ファイルシステムアクセスプロセスは、第１のマウント要求を、論理ボリュームサービスプロセスに送信する。任意選択で、ファイルシステムアクセスプロセスおよび論理ボリュームサービスプロセスは、プロセス間通信メカニズムに基づいて相互作用を実行し得る。
【００８３】
前述の実施形態の導入からわかるように、第１のマウント要求は、論理ボリュームサービスプロセスに、書き込み／読み取りマウントモードでターゲット論理ボリュームをマウントするように要求するために使用される。読み取り／書き込みマウントモードは、１つのデータ書き込みプロセスのみが同じターゲット論理ボリュームに同時にデータを書き込むことができることを意味する。
【００８４】
４０２ｂ：ファイルシステムアクセスプロセスは、ユーザ情報がターゲット論理ボリュームのユーザ権限検証に合格したと判定し、ターゲット論理ボリュームが、現在、読み取り／書き込みマウントモードでマウントされていないと判定した後、論理ボリュームサービスプロセスによって送信されたターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を受信する。
【００８５】
各ストレージノード内の論理ボリュームサービスプロセスは、相互バックアップ関係を有するので、各論理ボリュームサービスプロセスは、各論理ボリュームのログセグメントの識別子、およびチェックポイントの識別子とデータチャンクの識別子との間の対応関係を維持する。したがって、第１のマウント要求を受信する論理ボリュームサービスプロセスは、その中のターゲット論理ボリュームの識別子、および対応関係、すなわち、ログセグメントおよびチェックポイントに対応するデータチャンク識別子に基づいて、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を取得する。
【００８６】
前述の実施形態の説明からわかるように、この時点で、任意選択で、論理ボリュームサービスプロセスは、ターゲット論理ボリュームの最後のログセグメントおよび最後のチェックポイントに対応するデータチャンク識別子を、ファイルシステムアクセスプロセスに返すことができ、その結果、ファイルシステムアクセスプロセスは、最後のログセグメントおよび最後のチェックポイントに基づいて、ターゲット論理ボリュームの最新のデータ状態を復元する。
【００８７】
４０３ｂ：ファイルシステムアクセスプロセスは、ターゲット論理ボリュームのデータ状態を復元するために、ログセグメントおよびチェックポイントの格納場所情報に従って、ログセグメントおよびチェックポイントのログメタデータを読み取る。
【００８８】
任意選択で、ファイルシステムアクセスプロセスは、論理ボリュームサービスプロセスから取得したデータチャンク識別子を使用して任意のルートサーバにクエリを実行して、データチャンク識別子に対応するデータチャンクサービスプロセス識別子（複数可）を取得し、それによって、データチャンクサービスプロセス識別子（複数可）に対応するデータチャンクサービスプロセス（複数可）を通じて、データチャンク識別子に対応するデータチャンクに格納されているログのメタデータを読み取ることができる。
【００８９】
代替的に、任意選択で、論理ボリュームサービスプロセスはまた、判定されたデータチャンク識別子に基づいてルートサーバにクエリを実行して、データチャンク識別子に対応するデータチャンクサービスプロセス識別子（複数可）を取得し、データチャンク識別子およびデータチャンクサービスプロセス識別子（複数可）を、ファイルシステムアクセスプロセスに返し、その結果、ファイルシステムアクセスプロセスは、データチャンクサービスプロセス識別子（複数可）に対応するデータチャンクサービスプロセス（複数可）を通じて、データチャンク識別子に対応するデータチャンクに格納されたログのメタデータを読み取る。
【００９０】
４０４ｂ：ファイルシステムアクセスプロセスは、ターゲット論理ボリュームのデータ状態に基づいて、データアクセス処理を実行する。
【００９１】
ファイルシステムアクセスプロセスがターゲット論理ボリュームの最新のデータ状態を復元した後、後続のデータ書き込みプロセスを実行することができる。データ書き込みプロセスは、多くの場合、ファイル準備フェーズと、データ書き込みフェーズと、を含み、これらは、図５ｂに示されるように、後続の実施形態で説明される。
【００９２】
図５ａは、図４ａに示される実施形態におけるステップ４０４ａの実装プロセスのフローチャートである。図５ａに示されるように、ステップ４０４ａは、具体的には、以下の特定のステップを含み得る。
【００９３】
５０１ａ：コンピューティングノードは、データ書き込みプロセスによってトリガされたファイル準備操作に応答して、メタデータのみを含む第１のログを生成し、第１のログは、現時点での最後のログシリアル番号ｉがインクリメントされた後のログシリアル番号ｉ＋１と、ファイル準備書き込み操作に対応するファイル情報と、を含む。
【００９４】
実際にデータ書き込みを実行する前に、データ書き込みプロセスは、多くの場合、何らかの準備操作を実行する必要がある。このような準備操作は、ファイル準備操作と呼ばれる。実際のアプリケーションでは、ファイル準備操作は、例えば、特定のファイルを開くこと、または特定のファイルを作成して開くことであり得る。本実施形態では、書き込み用のファイルを準備するプロセスが最初に導入される。
【００９５】
データ書き込みプロセスは、対応するファイル準備インターフェースを呼び出すことによって、上述のファイル準備操作をトリガすることができる。このとき、コンピューティングノードは、ファイル準備操作に対応するログレコード（第１のログと呼ばれる）を生成する。現時点では、データ書き込みプロセスは、いかなる実際のデータも書き込んでいないので、第１のログは、メタデータのみを含む。メタデータは、現時点での最後のログシリアル番号ｉがインクリメントされた後のログシリアル番号ｉ＋１と、ファイル準備書き込み操作に対応するファイル情報と、を含む。ファイル情報は、例えば、作成されたまたは開かれたファイルのファイル名と、ファイル識別子記述子（略してＦＩＤ）と、を含む。図４ａに示されるように、実施形態において、対象論理ボリュームのログセグメントの最後のログシリアル番号がｉである場合、第１のログのログシリアル番号は、１増加してｉ＋１となる。
【００９６】
５０２ａ：コンピューティングノードは、ターゲット論理ボリュームの最後のログセグメントに対応する第１のデータチャンクと、ターゲットストレージノードおよびルートサーバを通じて、第１のデータチャンクに対応する第１のストレージノードと、を判定する。
【００９７】
前述の実施形態で述べたように、データは、ストレージノードのチャンクに格納される。さらに、データは、追加専用モードで書き込まれ、実際に書き込まれたデータは、ログに含まれる。したがって、コンピューティングノードによって生成されたログは、追加専用モードでストレージノードのデータチャンクに格納される。そのため、ターゲット論理ボリュームの最後のログセグメントが位置する格納場所、すなわち、最後のログセグメントが位置するデータチャンクと、そのデータチャンクに対応するストレージノードとを判定する必要がある。
【００９８】
上記のように、本発明の実施形態では、各ストレージノードは、各論理ボリュームのログセグメントおよびチェックポイントの格納場所情報を維持する。格納場所情報は、主に、ログセグメント識別子／チェックポイント識別子とデータチャンク識別子との間の対応関係である。したがって、コンピューティングノードは、ターゲットストレージノードを通じて、ターゲット論理ボリュームの最後のログセグメントに記述されているデータチャンク識別子を取得することができる。データチャンク識別子に基づいて、コンピューティングノードは、さらに、ルートサーバにクエリを実行して、ルートサーバからチャンク識別子に対応するストレージノードの識別子を取得することができ、ルートサーバは、様々なストレージノードの識別子と様々なデータチャンク識別子との間の対応関係を維持する。
【００９９】
したがって、コンピューティングノードは、以下のプロセスを通じて、最後のログセグメントが位置する第１のデータチャンクと、第１のデータチャンクに対応する第１のストレージノードとを取得することができ、プロセスは、
コンピューティングノードによって、ターゲット論理ボリュームに対応する最後のログセグメントが位置するデータチャンクをクエリするために使用される第１のクエリ要求を、ターゲットストレージノードに送信することと、
コンピューティングノードによって、ターゲットストレージノードによって送信された第１のデータチャンクの識別子を受信することであって、第１のデータチャンクの識別子は、ターゲット論理ボリュームのログセグメントの識別子とデータチャンクの識別子との間の維持された対応関係に従って、ターゲットストレージノードによって判定される、受信することと、
コンピューティングノードによって、第１のデータチャンクの識別子に対応するストレージノードをクエリするために使用される第２のクエリ要求を、ルートサーバに送信することと、
コンピューティングノードによって、ルートサーバによって送信された第１のストレージノードの識別子を受信することであって、第１のストレージノードの識別子は、データチャンクの識別子とストレージノードの識別子との間の維持された対応関係に従って、ルートサーバによって判定される、受信することと、を含む。
【０１００】
５０３ａ：コンピューティングノードは、第１のログを第１のデータチャンクに追加するように要求するために、かつ第１のストレージノードに第１のログをキャッシュするように要求するために、ログ格納要求を、第１のストレージノードに送信する。
【０１０１】
第１のデータチャンクおよび第１のストレージノードを判定した後、コンピューティングノードは、第１のログを第１のストレージノードに送信してもよく、その結果、第１のストレージノードは、第１のログを第１のデータチャンクに追加し、第１のログをキャッシュに格納し、その結果、後続のデータ読み取りプロセス（リーダ）は、第１のログをすばやく読み取ることができるようになる。
【０１０２】
第１のストレージノードが正常に格納された後、ストレージが成功したことをコンピューティングノードに通知するために、確認通知がコンピューティングノードに返され得る。
【０１０３】
上記のステップでは、データ書き込み前のファイル準備書き込み操作の段階中に処理する手順を導入する。ファイル準備書き込みプロセスが完了した後、データ書き込みプロセスは、以下のステップに示されるように、実際のデータ書き込みプロセスを実行することができる。
【０１０４】
５０４ａ：コンピューティングノードは、データ書き込みプロセスによって送信されたデータ書き込み要求に応答して、第２のログを生成し、データ書き込み要求は、書き込まれたデータと、書き込まれたデータに対応するファイル情報と、を含み、第２のログは、メタデータと、書き込まれたデータと、を含み、メタデータは、現時点での最後のログシリアル番号ｉ＋１がインクリメントされた後のログシリアル番号ｉ＋２と、ファイル情報と、を含む。
【０１０５】
５０５ａ：コンピューティングノードは、ターゲット論理ボリュームの最後のログセグメントに対応する第２のデータチャンクと、ターゲットストレージノードおよびルートサーバを通じて、第２のデータチャンクに対応する第２のストレージノードとを判定する。
【０１０６】
５０６ａ：コンピューティングノードは、第２のログを第２のデータチャンクに追加するように要求するために、かつ第２のストレージノードに第２のログにメタデータをキャッシュするように要求するために、ログ保存要求を、第２のストレージノードに送信する。
【０１０７】
データ書き込みプロセスは、標準のデータ書き込みインターフェースを呼び出すことによって、上記のデータ書き込み要求をトリガすることができる。データ書き込み要求は、書き込む特定のデータだけでなく、書き込まれたデータに対応するファイル情報も含む。ファイル情報は、例えば、ファイルＦＩＤ、ファイルに書き込まれたデータの書き込み位置（オフセット）およびデータ長（長さ）、データ位置ポインタなどを含む。
【０１０８】
このとき、コンピューティングノードは、コンピューティングノードのデータ書き込み操作を記録するために使用される第２のログを生成する。第２のログは、メタデータおよびデータで構成されている。データは、コンピューティングノードに書き込まれたデータである。メタデータは、現時点での最後のログシリアル番号ｉ＋１がインクリメントされた後のログシリアル番号ｉ＋２と、上述のファイル情報と、を含む。さらに、コンピューティングノードは、生成された第２のログをストレージノードに格納する必要がある。具体的には、第２のログは、現時点でのターゲット論理ボリュームの最後のログセグメントが位置するデータチャンクに書き込む必要がある。したがって、コンピューティングノードは、第２のログを第２のストレージノードに送信し、第２のストレージノードが第２のログを第２のデータチャンクに追加し、第２のログのメタデータをメモリにキャッシュするために、最後のログセグメントが位置する第２のデータチャンクと、第２のデータチャンクに対応する第２のストレージノードとを、ターゲットストレージノードおよびルートサーバを通じて判定する必要がある。第２のデータチャンクと、第２のストレージノードとを判定するプロセスは、第１のデータチャンクと、第１のストレージノードとを判定するプロセスを参照することができ、これは、本明細書では繰り返されない、
【０１０９】
第２のデータチャンクおよび第１のデータチャンクは同じデータチャンクである可能性が高いことに留意されたい。したがって、第２のストレージノードおよび第１のストレージノードも同じストレージノードであり得る。しかしながら、最後のログセグメントが第２のログに格納される前に閉鎖条件に到達したとき、第２のストレージノードが第１のストレージノードと同じである場合でも、第２のデータチャンクは、第１のデータチャンクとは異なる。
【０１１０】
具体的には、最後のログセグメントが現在閉鎖条件に到達している場合、コンピューティングノードは、最後のログセグメントを閉鎖し、新しいチェックポイントを生成し、ターゲットストレージノードに新しいログセグメントを最後のログセグメントとして申請する。閉鎖条件は、最後のログセグメントに含まれるログの数が事前設定された数に到達するか、最後のログセグメントに対応するデータボリュームが事前設定された容量値に到達することである。
【０１１１】
実際のアプリケーションでは、ファイルシステムが異常なときに、チェックポイントを使用して、ファイルシステムの復元を高速化し、ログセグメントの後にチェックポイントが生成されるので、ログセグメントを大きくしすぎることは適切ではない。具体的には、ログセグメントに含まれるログの数またはログ内のデータの合計量を大きくしすぎることは適切ではない。そうでない場合、ファイルシステムの回復率が影響を受ける。例えば、各ストレージノードは、チャンク１のログセグメント［０−２０００］、チャンク７のチェックポイント（２０００）、チャンク２のログセグメント［２００１−２２００］など、各チャンクに格納されているログセグメントおよびチェックポイントを記録する。ログセグメント［２００１−２２００］の後のある時点でファイルシステムが異常である場合、この時点でチェックポイント（２０００）のみを読み取る必要があり、ログセグメント［２００１−２２００］を再生して、対応する論理ボリュームの最新の状態を復元する。
【０１１２】
本実施形態において、第２のログの追加後の現時点での最後のログセグメントが［１５００〜２５００］である場合、すなわち、第２のログのログシリアル番号が２５００であり、最後のログセグメントが現在閉鎖条件に到達している場合、コンピューティングノードは、ログセグメント［１５００−２５００］を閉鎖し、チェックポイント（２５００）を生成し、ターゲットストレージノードに新しいログセグメントを最後のログセグメントとして要求する。新しいログセグメントは、ログシリアル番号２５０１で始まる。
【０１１３】
要求された新しいログセグメントは、その後生成されるログに対応し、新しいログセグメントに後で格納されるログ（複数可）は、特定のデータチャンク（複数可）に格納する必要がある。したがって、ターゲットストレージノードがコンピューティングノードの要求を受信した後、ターゲットストレージノードは、新しいログセグメントに対応するデータチャンク（複数可）を割り当てる必要がある。具体的には、ルートサーバは、各ストレージノードのスケジューリングおよび割り当てを含むすべてのストレージノードの管理に使用されるため、ターゲットストレージノードは、新しいログセグメントに対応する後続のログを格納するためのデータチャンクの割り当てをルートサーバに要求し得る。ルートサーバは、各ストレージノードのそれぞれのストレージ負荷に応じてデータチャンクを割り当てるために、ストレージノードＡを割り当てることができる。ストレージノードＡが新しいログセグメントの対応する後続のログを格納するためにチャンク５を割り当てる場合、ストレージノードＡとチャンク５との間の対応関係は、ルートサーバで維持される。同時に、ルートサーバは、チャンク５をターゲットストレージノードに返し、ターゲットストレージノードは、新しいログセグメントとチャンク５との間の対応関係を維持する。ターゲットストレージノードは、対応関係を他のストレージノードと同期させることができる。
【０１１４】
図５ａに示される前述の実施形態は、コンピューティングノードおよびストレージノードの観点から説明されている。図２または図３に示される論理システムアーキテクチャに基づいて、および図５ｂに示される実施形態と併せて、コンピューティングノードおよびストレージノードが、図２または図３に示されるような内部サービスプロセスの構成を有するとき、図５ａに示されるデータ書き込みプロセスの特定の実装プロセスが、以下にさらに示される。
【０１１５】
図５ｂは、図４ｂに示される実施形態におけるステップ４０４ｂの実装プロセスのフローチャートである。図５ｂに示されるように、ステップ４０４ｂは、具体的には、以下の特定のステップを含み得る。
【０１１６】
５０１ｂ：ファイルシステムアクセスプロセスは、データ書き込みプロセスによってトリガされたファイル準備操作に応答してメタデータのみを含む第１のログを生成し、第１のログは、現時点で最後のログシリアル番号ｉがインクリメントされた後のログシリアル番号ｉ＋１と、ファイル準備書き込み要求に対応するファイル情報と、を含む。
【０１１７】
５０２ｂ：ファイルシステムアクセスプロセスは、ターゲット論理ボリュームに対応する最後のログセグメントが位置する第１のデータチャンクと、論理ボリュームサービスプロセスおよびルートサーバを通じて、第１のデータチャンクに対応する第１のデータチャンクサービスプロセスと、を判定する。
【０１１８】
ルートサーバは、各ストレージノード内のデータチャンクサービスプロセスを管理し、特に、各ストレージノードのデータチャンク識別子とデータチャンクサービスプロセス識別子との間の対応関係を維持するために使用される。
【０１１９】
具体的には、ファイルシステムアクセスプロセスは、以下のステップを通じて、第１のデータチャンクと、第１のデータチャンクに対応する第１のデータチャンクサービスプロセスとを判定し得、ステップは、
ファイルシステムアクセスプロセスによって、ターゲット論理ボリュームに対応する最後のログセグメントが位置するデータチャンクのクエリに使用される第１のクエリ要求を、論理ボリュームサービスプロセスに送信することと、
ファイルシステムアクセスプロセスによって、論理ボリュームサービスプロセスによって送信された第１のデータチャンクの識別子を受信することであって、第１のデータチャンクの識別子は、ログセグメント識別子とターゲット論理ボリュームのデータチャンク識別子との間の維持された対応関係に従って、論理ボリュームサービスプロセスによって判定される、受信することと、
ファイルシステムアクセスプロセスによって、第１のデータチャンクの識別子に対応するデータチャンクサービスプロセスをクエリするために使用される第２のクエリ要求を、ルートサーバに送信することと、
ファイルシステムアクセスプロセスによって、ルートサーバによって送信された第１のデータチャンクサービスプロセスの識別子を受信することであって、第１のデータチャンクサービスプロセスの識別子は、データチャンク識別子とデータチャンクサービスプロセス識別子との間の維持された対応関係に従って、ルートサーバによって判定される、受信することと、を含む。
【０１２０】
５０３ｂ：ファイルシステムアクセスプロセスは、第１のログを第１のデータチャンクに追加するように要求するために、かつ第１のデータチャンクサービスプロセスに第１のログをキャッシュするように要求するために、ログ格納要求を、第１のデータチャンクサービスプロセスに送信する。
【０１２１】
上記の３つのステップは、ファイル準備フェーズに対応する。さらなる内容については、図５ａに示される実施形態における導入を参照することができ、これは、本明細書では繰り返されない。ファイル準備フェーズが完了した後、データ書き込みプロセスは、データ書き込みプロセスの以下のステップを実行することができる。
【０１２２】
５０４ｂ：ファイルシステムアクセスプロセスは、データ書き込みプロセスによって送信されたデータ書き込み要求に応答して、第２のログを生成し、データ書き込み要求は、書き込まれたデータと、書き込まれたデータに対応するファイル情報と、を含み、第２のログは、メタデータと、書き込まれたデータと、を含み、メタデータは、現時点での最後のログシリアル番号ｉ＋１がインクリメントされた後のログシリアル番号ｉ＋２と、ファイル情報と、を含む。
【０１２３】
５０５ｂ：ファイルシステムアクセスプロセスは、ターゲット論理ボリュームに対応する最後のログセグメントが位置する第２のデータチャンクと、論理ボリュームサービスプロセスおよびルートサーバを通じて、第２のデータチャンクに対応する第２のデータチャンクサービスプロセスと、を判定する。
【０１２４】
第２のデータチャンクと、第２のデータチャンクに対応する第２のデータチャンクサービスプロセスとを判定するために、第１のデータチャンクと、第１のデータチャンクサービスプロセスとを判定するプロセスを参照することができ、これは、本明細書では繰り返されない。
【０１２５】
５０６ｂ：ファイルシステムアクセスプロセスは、第２のログを第２のデータチャンクに追加するように要求するために、かつ第２のデータチャンクサービスプロセスに第２のログにメタデータをキャッシュするように要求するために、ログ保存要求を、第２のデータチャンクサービスプロセスに送信する。
【０１２６】
データ書き込みの前述のプロセスのさらなる内容については、図５ａに示される実施形態における導入を参照することができ、これは、本明細書では繰り返されない。
【０１２７】
上述したファイル準備のプロセスおよびデータ書き込みのプロセス中に生成されたログは、追加によって最後のログセグメントに追加されることに留意されたい。しかしながら、最後のログセグメントが閉鎖条件に到達すると、現時点での最後のログセグメントを閉鎖する必要があり、新しいログセグメントを最後のログセグメントとして要求する必要がある。したがって、現時点での最後のログセグメントが閉鎖条件に到達すると、ファイルシステムアクセスプロセスは、最後のログセグメントを閉鎖し、新しいチェックポイントを生成し、論理ボリュームサービスプロセスに新しいログセグメントを最後のログセグメントとして要求する。閉鎖条件は、事前設定された数に到達した最後のログセグメントに含まれるログの数、または事前設定された容量値に到達した最後のログセグメントに対応するデータ量である。
【０１２８】
ファイルシステムアクセスプロセスの要求の受信に応答して、論理ボリュームサービスプロセスは、任意選択で、一方では新しいログセグメントを生成し、他方では、ルートサーバに、対応するデータチャンクと、データチャンクサービスプロセスとを新しいログセグメントに割り当てるように要求することができる。
【０１２９】
要約すると、一方では、データ書き込みのプロセス全体において、データが書き込まれる前に、コンピューティングノードは、すなわち、ログセグメントおよびチェックポイントの格納場所情報である、各ストレージノードによって維持される論理ボリュームのメタデータ情報に基づいて、ターゲット論理ボリュームの最新のステータスを復元することができる。他方では、データ書き込みのプロセス中、データ書き込みプロセスによって実行された任意の操作と、書き込まれたデータとを記録するために、ログが生成される。各ログには、シリアル番号に従って番号が付けられ、各ログは、追加専用モードで、現時点で最後のログセグメントに追加され、その結果、ログのシリアル番号に基づいて、読み取りと書き込みの整合性を実現することができる。
【０１３０】
さらに、データ書き込みのプロセス中、メタデータおよびデータは、一旦格納のためにディスクに送信され、すなわち、メタデータおよびデータは同じログに含まれ、ログは、ストレージノードのデータチャンクに格納され、メタデータもメモリにキャッシュされる。これによって、後続のデータ読み取りプロセスは、最新のログをバッチですばやくプルして、ローカルファイルシステムのミラーリング状態を更新することができ、すなわち、ターゲット論理ボリュームの最新のデータ状態を復元し、読み取りの遅延を減らすことができる。
【０１３１】
データ読み取りの完全なプロセスは、図６ａ〜図７ｂに示される実施形態と併せて以下に導入される。
【０１３２】
図６ａは、本発明の実施形態によって提供されるファイルシステムのデータにアクセスするための別の方法のフローチャートである。本発明の実施形態によって提供される方法は、図１に示されるアーキテクチャ下でコンピューティングノードによって実行され得る。図６ａに示されるように、以下のステップを含むことができる。
【０１３３】
６０１ａ：コンピューティングノードは、データ読み取りプロセスによってトリガされたマウント操作に応答して、ターゲットストレージノードに、第２のマウント要求を送信し、第２のマウント要求は、ターゲット論理ボリュームの識別子と、ユーザ情報と、読み取り専用マウントモードの識別子と、を含む。
【０１３４】
図１に示される実施形態からわかるように、ターゲットストレージノードは、複数のストレージノードのうちのいずれか１つである。
【０１３５】
本実施形態では、コンピューティングノード内のサービスアプリケーションがデータ読み取り処理を実行する必要がある状況を導入する。したがって、サービスアプリケーションは、コンピューティングノード内のデータ読み取りプロセスを開始する。前述の実施形態の説明からわかるように、サービスアプリケーションに対応するターゲット論理ボリュームにアクセスする必要があるとき、ターゲット論理ボリュームを、コンピューティングノードにローカルにマウントする必要がある。したがって、本実施形態は、最初に、データ読み取りシナリオでターゲット論理ボリュームをマウントするプロセスを導入する。
【０１３６】
コンピューティングノード内のデータ読み取りプロセスがアクティブ化された後、データ読み取りプロセスは、マウント操作をトリガする。マウント操作は、データ読み取りプロセスによるマウント通知をコンピューティングノードのプロセッサに送信し得る。マウント操作に基づいて、コンピューティングノードは、ターゲット論理ボリュームの識別子と、ユーザ情報と、読み取り専用マウントモードの識別子と、を含む、第２のマウント要求を、任意のストレージノード（ターゲットストレージノードと呼ばれる）に送信する。
【０１３７】
ユーザ情報は、ユーザアカウント、ユーザ名などの情報であり得る。読み取り専用マウントモードの識別子は、データ読み取りプロセスに対応する。言い換えれば、本発明の実施形態では、データ読み取りプロセスは、論理ボリュームを読み取り専用モードでマウントすることができる。読み取り専用マウントモードとは、同じターゲット論理ボリュームに対して、複数のデータ読み取りプロセスは、データの読み取りが許可されているが、データの変更、書き込みなどの操作が実行されることを意味する。
【０１３８】
６０２ａ：コンピューティングノードは、ユーザ情報がターゲット論理ボリュームのユーザ権限検証に合格したと判定した後、ターゲットストレージノードによって送信されたターゲット論理ボリュームのログセグメントおよびチェックポイントの格納場所情報を受信する。
【０１３９】
データ書き込みのプロセスとは異なり、データ読み取りのプロセスでは、読み取り専用マウントモードによって、複数のデータ読み取りプロセスは、同時にデータを読み取ることができるので、ターゲット論理ボリュームのマウントは、ユーザ許可の検証を満たすだけで済む。
【０１４０】
６０３ａ：コンピューティングノードは、ターゲット論理ボリュームのデータ状態を復元するために、ログセグメントおよびチェックポイントの格納場所情報に従って、ログセグメントおよびチェックポイントのログメタデータを読み取る。
【０１４１】
６０４ａ：コンピューティングノードは、ターゲット論理ボリュームのデータ状態に基づいて、データアクセス処理を実行する。
【０１４２】
前述のステップのさらなる説明のために、図４ａに示される実施形態を参照することができ、これは、本明細書では繰り返されない。このマウントプロセスを通じて、コンピューティングノードは、ターゲット論理ボリュームが現在所有しているすべてのデータにアクセスすることができる。
【０１４３】
ターゲット論理ボリュームの最新のデータ状態を復元した後、コンピューティングノードは、データ読み取りの後続のプロセスを実行することができる。データ読み取りのプロセスは、多くの場合、ファイル準備読み取りフェーズと、データ読み取りフェーズと、を含み、これらは、図７ａに示されるように、後続の実施形態で説明される。
【０１４４】
図６ａに示される前述の実施形態は、コンピューティングノードおよびストレージノードの観点から、本発明の実施形態によって提供されるファイルシステムのデータにアクセスするための方法の実装プロセスを示す。図２または図３に示される論理システムアーキテクチャに基づいて、図６ｂに示される実施形態と組み合わされて、ファイルシステムのデータにアクセスするための方法の別の特定の実装プロセスが以下に説明される。
【０１４５】
図６ｂは、本発明の実施形態によって提供されるファイルシステムのデータにアクセスするための別の方法のフローチャートである。本発明の実施形態によって提供される方法は、図２または図３に示されるアーキテクチャ下で、コンピューティングノード内のファイルシステムアクセスプロセス（ヒューズワーカ）によって実施することができる。図６ｂに示されるように、本方法は、以下のステップを含む。
【０１４６】
６０１ｂ：コンピューティングノード内のファイルシステムアクセスプロセスは、コンピューティングノード内のデータ読み取りプロセスによってトリガされたマウント操作に応答して、ストレージノード内の論理ボリュームサービスプロセスに、第２のマウント要求を送信し、第２のマウント要求は、ターゲット論理ボリュームの識別子と、ユーザ情報と、読み取り専用マウントモードの識別子と、を含む。
【０１４７】
本実施形態では、コンピューティングノード内のサービスアプリケーションがデータ読み取り処理を実行する必要がある状況を導入する。したがって、サービスアプリケーションは、コンピューティングノード内のデータ読み取りプロセスを開始する。データ読み取りプロセスは、最初に、ターゲット論理ボリュームのマウント操作をトリガし、例えば、後続のデータアクセスを実行するためにターゲット論理ボリュームをローカルにマウントするために、上記の第２のマウント要求を、ファイルシステムアクセスプロセスに送信する。
【０１４８】
６０２ｂ：ファイルシステムアクセスプロセスは、ユーザ情報がターゲット論理ボリュームのユーザ権限検証に合格したと判定した後、論理ボリュームサービスプロセスによって送信されたターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を受信する。
【０１４９】
本発明の実施形態では、複数のデータ読み取りプロセスは、同じターゲット論理ボリューム上のデータを同時に読み取ることができる。したがって、論理ボリュームサービスプロセスによって、ユーザがターゲット論理ボリュームを使用する権限を有していることを確認すると、ユーザは、ターゲット論理ボリュームを読み取り専用マウントモードでマウントすることができる。同時に、論理ボリュームサービスプロセスは、ターゲット論理ボリュームのログセグメントおよびチェックポイントの格納場所情報を、ファイルシステムアクセスプロセスに返す。格納場所情報は、ターゲット論理ボリュームのログセグメントおよびチェックポイントがそれぞれ位置するデータチャンクの識別子であり、各論理ボリュームのログセグメントおよびチェックポイントの識別子とデータチャンクの識別子との間の維持された対応関係に従って、論理ボリュームサービスプロセスによって判定される。代替的に、格納場所情報は、データチャンクの識別子に対応するデータチャンクサービスプロセス（複数可）の識別子（複数可）をさらに含み得、データチャンクサービスプロセス（複数可）の識別子（複数可）は、データチャンクの識別子を使用して任意のルートサーバにクエリを実行することによって、論理ボリュームサービスプロセスによって取得され得る。
【０１５０】
６０３b：ファイルシステムアクセスプロセスは、ターゲット論理ボリュームのデータ状態を復元するために、ログセグメントおよびチェックポイントの格納場所情報に従って、ログセグメントおよびチェックポイントのログメタデータを読み取る。
【０１５１】
６０４ｂ：ファイルシステムアクセスプロセスは、ターゲット論理ボリュームのデータ状態に基づいて、データアクセス処理を実行する。
【０１５２】
前述のステップのさらなる説明のために、前述の実施形態における導入を参照することができ、これは、本明細書では繰り返されない。このマウントプロセスを通じて、ファイルシステムアクセスプロセスは、ターゲット論理ボリュームが現在所有しているすべてのデータにアクセスすることができる。
【０１５３】
ファイルシステムアクセスプロセスがターゲット論理ボリュームの最新のデータ状態を復元した後、データ読み取りの後続のプロセスを実行することができる。データ書き込みのプロセスは、多くの場合、ファイル準備読み取りフェーズと、データ読み取りフェーズと、を含み、これらは、図７ｂに示されるように、以下の実施形態で説明される。
【０１５４】
図７ａは、図６ａに示される実施形態におけるステップ６０４ａの実装プロセスのフローチャートである。図７ａに示されるように、ステップ６０４ａは、具体的には、以下の特定のステップを含み得る。
【０１５５】
７０１ａ：コンピューティングノードは、データ読み取りプロセスによって以前に読み取られたログシリアル番号ｊ、ログシリアル番号ｊに対応する第３のデータチャンク、および第３のストレージノードに基づいて、データ読み込み処理によってトリガされたファイル準備読み込み操作に応答して、ログシリアル番号ｊの後にキャッシュされたログのメタデータを取得するために、データ同期要求を、第３のストレージノードに送信する。
【０１５６】
７０２ａ：コンピューティングノードは、第３のストレージノードからログシリアル番号ｊの後にキャッシュされたログ（複数可）の表示情報およびメタデータを受信し、キャッシュされたログに対応するログシリアル番号は、ｊ＋１〜ｊ＋ｍであり、表示情報は、ログシリアル番号ｊ＋ｍに対応するログセグメントが閉鎖されたかどうかを示すために使用される。
【０１５７】
７０３ａ：コンピューティングノードは、ログシリアル番号ｊの後にキャッシュされたログ（複数可）のメタデータおよび表示情報に従って、ターゲット論理ボリュームのデータ状態を更新する。
【０１５８】
実際にデータを読み取る前に、データ読み取りプロセスは、多くの場合、何らかの準備操作を実行する必要がある。この準備操作は、ファイル準備読み取り操作と呼ばれる。実際のアプリケーションでは、ファイル準備読み取り操作は、例えば、特定のファイルを開くことであり得る。本実施形態では、まず、ファイル準備読み取り操作の処理の手順を導入する。
【０１５９】
データ読み取りプロセスは、ファイル準備読み取りの対応するインターフェースを呼び出すことによって、上述のファイル準備操作をトリガすることができる。
【０１６０】
ステップ７０１ａの実行の理解を容易にするために、本実施形態は、最初に、実際のデータ読み取りおよび書き込みのシナリオを導入する。特定のコンピューティングノードは、常に、ターゲット論理ボリュームにデータを書き込んでおり、他のコンピューティングノードは、常に、ターゲット論理ボリュームのデータを読み取っている。読み取りの目的は、ビッグデータ分析の実行、データバックアップの実行などであり得る。しかしながら、データを読み取る複数のコンピューティングノードは、データを書き込むコンピューティングノードがいつデータを書き込むかわからないので、これらのコンピューティングは、多くの場合、定期的な読み取りなど、特定のメカニズムに基づいて、読み取りを開始する。データを読み取る任意のコンピューティングノードでは、特定のログ内のデータが最後に読み取られたと想定され、そのログの後に書き込まれたデータの読み取りを現在継続する必要がある。しかしながら、ターゲット論理ボリュームのマウントが完了してから現時点までに、新しいデータが書き込まれている可能性がある。したがって、この時点で、最後の読み取りログ以降に存在するすべてのログ内のデータを読み取ることができるようにするために、コンピューティングノードは、最後の読み取りログと現時点の最後のログセグメントとの間に含まれるターゲット論理ボリュームの各ログセグメントの現時点および場所、すなわち、どのストレージノードのどのデータチャンクかを知る必要がある。
【０１６１】
このとき、任意選択で、コンピューティングノードは、前述の実施形態において最後のログセグメントが位置するデータチャンクおよびストレージノードを取得するプロセスと同様に、ターゲットストレージノードおよびルートサーバにクエリを行うことによって、それを直接取得することができる。
【０１６２】
しかしながら、任意選択で、コンピューティングノードは、前回読み取ったログを認識しているので、コンピューティングノードは、本実施形態で提供された方法を通じて、最後に読み取ったログと現時点の最後のログセグメントとの間に含まれる各ログセグメントの場所を取得することもできる。
【０１６３】
コンピューティングノードは、そのデータ読み取りプロセスが最後に読み取ったログシリアル番号ｊと、ログシリアル番号ｊに対応する第３のデータチャンクと、第３のデータチャンクに対応する第３のストレージノードとをローカルに格納することができる。したがって、コンピューティングノードは、ログシリアル番号ｊの後にキャッシュされたログ（複数可）のメタデータを取得するために、データ同期要求を第３のストレージノードに送信し得る。
【０１６４】
前述の実施形態におけるデータ書き込みプロセスの書き込み結果を続けると、ターゲット論理ボリュームに現在格納されている最後のログのログシリアル番号がｉ＋２である場合、ｊ＜（ｉ＋２）であることが理解できる。
【０１６５】
第３のデータチャンクは、ログシリアル番号ｊが属するログセグメント内の少なくとも様々なログを含み、また、ログシリアル番号ｊが属するログセグメントの後に１つ以上のログセグメントを含み得る。代替的に、第３のストレージノード内の第３のデータチャンクの後に位置する他のデータチャンクはまた、ログシリアル番号ｊが属するログセグメントの後に１つ以上のログセグメントを含み得る。したがって、第３のストレージノードは、ログシリアル番号ｊの後にローカルにキャッシュされたログ（複数可）のメタデータを、コンピューティングノードに返すことができる。
【０１６６】
加えて、前述の実施形態で述べたように、特定のログセグメントが閉鎖条件を満たす場合、ログセグメントは閉鎖される。したがって、ｍ＞１、（ｊ＋ｍ）≦（ｉ＋２））の場合、第３のストレージノードがログシリアル番号ｊ＋１〜ｊ＋ｍを有するログを格納する場合、第３のストレージノードは、ログシリアル番号ｊ＋ｍが属するログセグメントが閉鎖されているかどうかを判定し得る。閉鎖されている場合、これは、他のストレージノードの他のデータチャンクも、ログシリアル番号がｊ＋ｍの後に位置する他のログを含むことを意味する。このとき、第３のストレージノードは、ログシリアル番号ｊ＋ｍが属するログセグメントが、コンピューティングノードに対して閉鎖されたことを示す表示情報も返す。逆に、閉鎖していない場合、これは、ターゲット論理ボリュームの最後のログシリアル番号がｊ＋ｍであり、ログシリアル番号ｊ＋ｍが属するログセグメントが閉鎖されていないことを意味する。したがって、このとき、第３のストレージノードは、ログシリアル番号ｊ＋ｍが属するログセグメントが、コンピューティングノードに対して閉鎖されていないことを示す表示情報も返す。
【０１６７】
したがって、コンピューティングノードは、ｊ＋１〜ｊ＋ｍの範囲のログのシリアル番号を有するキャッシュされたログのメタデータ、および第３のストレージノードによって送信された表示情報に基づいて、ターゲット論理ボリュームのデータ状態を更新する。
【０１６８】
具体的には、ログシリアル番号ｊ＋ｍに対応するログセグメントが閉鎖されていないことを表示情報が示している場合、コンピューティングノードは、ログシリアル番号ｊ＋１〜ｊ＋ｍを有するキャッシュされたログのメタデータに従って、ターゲット論理ボリュームのデータ状態を直接更新し、すなわち、ｊ＋１〜ｊ＋ｍに関連付けられたキャッシュされたログのメタデータをメモリに配置する。
【０１６９】
反対に、表示情報が、ログシリアル番号ｊ＋ｍに対応するログセグメントが閉鎖されたことを示している場合、コンピューティングノードは、ターゲットストレージノードおよびルートサーバを通じて、ログシリアル番号ｊ＋ｍの後にキャッシュされたログ（複数可）を格納するそれぞれの第４のデータチャンク（複数可）と、第４のデータチャンクに対応するそれぞれの第４のストレージノード（複数可）と、を判定する。コンピューティングノードは、ログシリアル番号ｊ＋ｍの後のキャッシュされたログ（複数可）のメタデータを取得するために、データ同期要求を第４のストレージノード（複数可）に送信する。コンピューティングノードは、ログシリアル番号ｊ＋１〜ｊ＋ｍを有するキャッシュされたログのメタデータ、およびログシリアル番号ｊ＋ｍの後のキャッシュされたログのメタデータに従って、ターゲット論理ボリュームのデータ状態を更新する。
【０１７０】
ターゲットストレージノードおよびルートサーバを通じて、ログシリアル番号ｊ＋ｍの後にキャッシュされたログ（複数可）を格納するそれぞれの第４のデータチャンク（複数可）と、第４のデータチャンクに対応するそれぞれの第４のストレージノード（複数可）とを判定するプロセスは、前述の実施形態において、最後のログセグメントが位置する第１のデータチャンクと、第１のストレージノードとを取得するプロセスに類似しており、これらは両方とも、ターゲットストレージノードに保持されるログセグメント識別子とデータチャンク識別子との対応関係、およびルートサーバに保持されるデータチャンク識別子とストレージノード識別子との対応関係に基づいて実施され、これは、本明細書では繰り返さない。
【０１７１】
コンピューティングノードがターゲット論理ボリュームの最新の状態を現時点に復元した後、実際のデータが読み取られる前のファイル準備読み取りフェーズが完了する。このとき、復元されたターゲット論理ボリュームの最新のデータ状態に基づいて、データ読み取りプロセスは、その中の任意のデータを読み取ることができ、前回読み取られたログの後で読み取りを続行する必要はない。したがって、データ読み取りプロセスは、次いで、以下のステップなど、データ読み取りの実際のプロセスに進むことができる。
【０１７２】
７０４ａ：コンピューティングノードは、ターゲットストレージノードおよびルートサーバを通じて、読み取られるファイル情報に対応する第５のストレージノードと、第５のデータチャンクと、を判定し、データ読み取りプロセスによって送信されたデータ読み取り要求に応答して、第５のストレージノードを通じて第５のデータチャンクからデータを読み取り、データ読み取り要求は、読み取られるファイル情報を含む。
【０１７３】
読み取られるファイル情報には、例えば、ファイル名、ファイル内で読み取られるデータの位置（オフセット）などを含む。ターゲット論理ボリュームのデータ状態を復元する前述のプロセスの後、コンピューティングノードは、各ログのメタデータ情報をすでに知っており、各ログのメタデータは、ファイル名、オフセット、ファイルＦＩＤなどを含むファイル情報を記録する。したがって、コンピューティングノードは、データ読み取り要求におけるファイル情報に基づいてログを見つけ、ログのログシリアル番号に基づいてターゲットストレージノードをクエリし、ログセグメント（ログシリアル番号が属する）が位置する第５のデータチャンクを取得し、第５のデータチャンクの識別子を使用してルートサーバにクエリを実行して、対応する第５のストレージノードを取得して、第５のデータチャンク内の対応するデータを読み取るための読み取り要求を、第５のストレージノードに送信して、必要なデータを読み取ることができる。
【０１７４】
任意選択の実施形態では、データ読み取りプロセスによって送信されたデータ読み取り要求に応答して、コンピューティングノードはまた、前回読み取られたログシリアル番号ｊと現時点の最新のログシリアル番号との間のログメタデータを取得するプロセスのステップ７０１ａ〜７０３ａを再度実行することができる。これは、データ読み取りプロセスがファイル準備読み取り操作をトリガしてからデータ読み取りプロセスがデータ読み取り要求をトリガするまでの間に、ターゲット論理ボリュームに新しいログが書き込まれる可能性があるためである。
【０１７５】
図７ａに示される実施形態は、コンピューティングノードおよびストレージノードの観点からデータを読み取るプロセスを説明する。図２または図３に示される論理システムアーキテクチャに基づいて、図７ｂに示される実施形態と組み合わされて、コンピューティングノードおよびストレージノードが、図２または図３に示されるような内部サービスプロセスの構成を有するとき、図７ａに示されるようなデータ読み取りのプロセスの特定の実装が以下に説明される。
【０１７６】
図７ｂは、図６ｂに示される実施形態におけるステップ６０４ｂの実装プロセスのフローチャートである。図７ｂに示されるように、ステップ６０４ｂは、具体的には、以下の特定のステップを含み得る。
【０１７７】
７０１ｂ：ファイルシステムアクセスプロセスは、データ読み取りプロセスによって最後に読み取られたログシリアル番号ｊ、ログシリアル番号ｊに対応する第３のデータチャンク、および第３のストレージノードに基づいて、データ読み取りプロセスによってトリガされたファイル準備読み取り操作に応答して、ログシリアル番号ｊの後にキャッシュされたログのメタデータを取得するために、データ同期要求を、第３のデータチャンクサービスプロセスに送信する。
【０１７８】
７０２ｂ：ファイルシステムアクセスプロセスが、第３のデータチャンクサービスプロセスからログシリアル番号ｊの後にキャッシュされたログのメタデータおよび表示情報を受信した後、キャッシュされたログに対応するログシリアル番号は、ｊ＋１〜ｊ＋ｍであり、表示情報は、ログシリアル番号ｊ＋ｍに対応するログセグメントが閉鎖されたかどうかを示すために使用される。
【０１７９】
７０３ｂ：ファイルシステムアクセスプロセスは、ログシリアル番号ｊの後にキャッシュされたログのメタデータおよび表示情報に従って、ターゲット論理ボリュームのデータ状態を更新する。
【０１８０】
任意選択で、ログシリアル番号ｊ＋ｍに対応するログセグメントが閉鎖されていないことを表示情報が示している場合、ファイルシステムアクセスプロセスは、ログシリアル番号ｊ＋１〜ｊ＋ｍを有するキャッシュされたログのメタデータに従って、ターゲット論理ボリュームのデータ状態を更新する。
【０１８１】
任意選択で、表示情報が、ログシリアル番号ｊ＋ｍに対応するログセグメントが閉鎖されたことを示している場合、ファイルシステムアクセスプロセスは、ターゲットストレージノードおよびルートサーバを通じて、ログシリアル番号ｊ＋ｍの後にキャッシュされたログ（複数可）を格納するそれぞれの第４のデータチャンク（複数可）と、第４のデータチャンク（複数可）に対応するそれぞれの第４のストレージノード（複数可）と、を判定する。ファイルシステムアクセスプロセスは、ログシリアル番号ｊ＋ｍの後にキャッシュされたログ（複数可）のメタデータを取得するために、データ同期要求を第４のデータチャンクサービスプロセス（複数可）に送信する。ファイルシステムアクセスプロセスは、ログシリアル番号ｊ＋１〜ｊ＋ｍを有するキャッシュされたログのメタデータ、およびログシリアル番号ｊ＋ｍの後にキャッシュされたログのメタデータに従って、ターゲット論理ボリュームのデータ状態を更新する。
【０１８２】
７０４ｂ：ファイルシステムアクセスプロセスは、データ読み取りプロセスによって送信されたデータ読み取り要求を受信し、データ読み取り要求は、読み取られるファイル情報を含む。
【０１８３】
７０５ｂ：ファイルシステムアクセスプロセスは、第５のデータチャンクサービスプロセスを通じて、第５のデータチャンクから第５のデータチャンク内のデータを読み取るために、論理ボリュームサービスプロセスおよびルートサーバを通じて読み取られるファイル情報に対応する第５のデータチャンクサービスプロセスおよび第５のデータチャンクを判定する。
【０１８４】
データ読み取りの上記のプロセスのさらなる内容については、図７ａに示される実施形態における関連する導入を参照することができ、これは、本明細書では繰り返されない。
【０１８５】
要するに、データ書き込みおよびデータ読み取りの全プロセスと組み合わせて、本発明の実施形態は、ログベースの分散ファイルシステムの共有の解決策を実施する。具体的には、ログシリアル番号は、読み取りおよび書き込みのパーティの状態調整のための基準として使用され、読み取りと書き込みの競合を回避し、読み取りと書き込みの整合性を確実にする。１回の書き込みおよび複数回の読み取りのデータアクセスモードがサポートされており、複数のリーダが待機する必要がないため、データの読み取りの遅延が減少する。加えて、各ストレージノードは、各論理ボリュームのログメタデータ情報を同期的に維持し、これは、各論理ボリュームのログ情報の分散管理を実現することと同じである。任意のコンピューティングノードは、後続のデータアクセス処理を実行するために任意のストレージノードに維持されるログメタデータを通じて、対応する論理ボリュームのデータ状態を復元することができ、これにより、ファイルシステムのスケーラビリティが大幅に向上する。
【０１８６】
図８ａは、本発明の実施形態によるファイルシステムのデータにアクセスするためのさらに別の方法のフローチャートである。本発明の実施形態によって提供される方法は、図１に示されるようなアーキテクチャ下のターゲットストレージノードによって実行することができ、ターゲットストレージノードは、ファイルシステムの複数のストレージノードのうちのいずれか１つである。図８ａに示されるように、本方法は、以下のステップを含む。
【０１８７】
８０１ａ：ターゲットストレージノードは、コンピューティングノードによって送信されたターゲット論理ボリュームに対応するマウント要求を受信する。
【０１８８】
コンピューティングノードは、ファイルシステム内の任意のコンピューティングノードである。
【０１８９】
８０２ａ：ターゲットストレージノードは、データアクセス処理を実行するためのログセグメントおよびチェックポイントの格納場所情報に基づいて、コンピューティングノードがターゲット論理ボリュームのデータ状態を復元することができるようにするように、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を、コンピューティングノードに送信する。
【０１９０】
コンピューティングノードは、ログセグメントおよびチェックポイントの格納場所情報に基づいて、対応する格納場所からログメタデータを読み取り、メモリ内の読み取ったログメタデータを再生して、ターゲット論理ボリュームのデータ状態を復元する。
【０１９１】
データ書き込みおよびデータ読み取りのプロセスにおけるターゲットストレージノードの処理の手順の詳細は、以下の２つの任意の実施形態と併せて以下に説明される。
【０１９２】
任意選択の実施形態では、コンピューティングノード内のサービスビジネスアプリケーションがデータ書き込みのプロセスをトリガするとき、すなわち、データ書き込みの必要性のためにターゲット論理ボリュームをマウントする必要があるとき、ターゲットストレージノードは、コンピューティングノードによって送信された第１のマウント要求を受信する。第１のマウント要求は、読み取り／書き込みマウントモードの識別子と、ターゲット論理ボリュームの識別子と、ユーザ情報と、を含む。読み取り／書き込みマウントモードの識別子は、コンピューティングノード内のデータ書き込みプロセスに対応し、これは、データ書き込みプロセスが、書き込み／読み取りモードでターゲット論理ボリュームをマウントする必要があることを意味する。このモードでは、ターゲット論理ボリュームを、特定の時間に１つのデータ書き込みプロセスのみによって占有することができる。このとき、第１のマウント要求におけるユーザ情報がターゲット論理ボリュームのユーザ権限検証に合格したと判定し、ターゲット論理ボリュームが、現在、読み取り／書き込みモードでマウントされていない、すなわち、他のデータ書き込みプロセスによって占有されていないと判定した後、ターゲットストレージノードは、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を、コンピューティングノードに送信する。
【０１９３】
別の任意選択の実施形態では、コンピューティングノード内の特定のサービスアプリケーションがデータ読み取りのプロセスをトリガするとき、すなわち、データ読み取りの必要性のためにターゲット論理ボリュームをマウントする必要があるとき、ターゲットストレージノードは、コンピューティングノードによって送信された第２のマウント要求を受信する。第２のマウント要求は、読み取り専用モードの識別子と、ターゲット論理ボリュームの識別子と、ユーザ情報と、を含む。読み取り専用マウントモードの識別子は、コンピューティングノード内のデータ読み取りプロセスに対応し、これは、データ読み取りプロセスが、読み取り専用モードでターゲット論理ボリュームをマウントする必要があることを意味する。このモードでは、ターゲット論理ボリュームを複数のデータ読み取りプロセスによって占有することができる。このとき、ターゲットストレージノードは、第２のマウント要求におけるユーザ情報がターゲット論理ボリュームのユーザ権限検証に合格したと判定した後、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を、コンピューティングノードに送信する。
【０１９４】
ターゲット論理ボリュームがマウントされた後のデータ書き込みまたはデータ読み取りのプロセス中、ターゲットストレージノードは、以下の機能、
ターゲットストレージノードによって、コンピューティングノードによって送信されたクエリ要求を受信することであって、クエリ要求は、ターゲット論理ボリュームに対応するターゲットログセグメントが位置するデータチャンクをクエリするために使用される、受信することと、
ターゲットストレージノードによって、ログセグメントの識別子とターゲット論理ボリュームのデータチャンクの識別子との間の維持された対応関係に従って、ターゲットログセグメントが位置するデータチャンクの識別子を判定することと、
ターゲットストレージノードによって、データチャンクの識別子を、コンピューティングノードに送信することと、も有する。
【０１９５】
例えば、図５ａに示される実施形態に記載されるデータ書き込みのプロセスに対応して、データ書き込みプロセスのトリガに基づいて、コンピューティングノードが、図５ａに示される実施形態における第１のログまたは第２のログなどのログを生成した後、コンピューティングノードは、現在生成されているログを、ターゲット論理ボリュームの最後のログセグメントが位置するデータチャンクに格納する必要がある。そのため、コンピューティングノードは、データチャンクと、ターゲットストレージノードを通じて、データチャンクが位置するストレージノードとを判定する必要がある。
【０１９６】
これに基づいて、ターゲットストレージノードは、データ書き込みのプロセス中に、以下のステップ、
ターゲットストレージノードによって、コンピューティングノードによって送信された第１のクエリ要求を受信することであって、第１のクエリ要求は、ターゲット論理ボリュームに対応する最後のログセグメントが位置するデータチャンクをクエリするために使用される、受信することと、
ターゲットストレージノードによって、ログセグメントの識別子とターゲット論理ボリュームのデータチャンクの識別子との間の維持された対応関係に従って、最後のログセグメントが位置する第１のデータチャンクの識別子を判定することと、
ターゲットストレージノードによって、第１のデータチャンクの識別子を、コンピューティングノードに送信し、その結果、コンピューティングノードは、第１のデータチャンクの識別子に従って、ルートサーバにクエリを実行して、第１のデータチャンクに対応する第１のストレージノードを取得し、ログを第１のデータチャンクに追加し、第１のストレージノードに、ログにメタデータをキャッシュするように要求することができることと、を実行する必要がある。
【０１９７】
データチャンクの識別子とストレージノードの識別子との間の対応関係は、ルートサーバで維持される。
【０１９８】
別の例として、図７ａに示される実施形態に記載されるデータ読み取りのプロセスに対応して、コンピューティングノードが、ログシリアル番号ｊ＋ｍの後にログが格納されるデータチャンクを判定する必要があるとき、ターゲットストレージノードは、さらに、データ読み取りのプロセス中に、以下のステップ、
ターゲットストレージノードによって、コンピューティングノードによって送信された第２のクエリ要求を受信することであって、第２のクエリ要求は、データ読み取りプロセスによって最後に読み取られたログシリアル番号ｊとログシリアル番号ｊ＋ｍとの間のログを取得した後、コンピューティングノードによって送信され、第２のクエリ要求は、ログシリアル番号ｊ＋ｍの後にキャッシュされたログ（複数可）のデータチャンク（複数可）を要求するために使用される、受信することと、
ターゲットストレージノードによって、ログセグメントの識別子とデータチャンクの識別子との間の維持された対応関係に従って、ログシリアル番号ｊ＋ｍの後にキャッシュされたログが位置するそれぞれの第２のデータチャンク（複数可）の識別子（複数可）を判定することと、
ターゲットストレージノードによって、それぞれの第２のデータチャンク（複数可）の識別子（複数可）を、コンピューティングノードに送信して、コンピューティングノードが、それぞれの第２のデータチャンク（複数可）の識別子（複数可）に従って、ルートサーバにクエリを実行して、それぞれの第２のデータチャンク（複数可）に対応する第２のストレージノード（複数可）を取得し、その結果、それぞれの第２のデータチャンク（複数可）から、ｊ＋ｍ以降のログシリアル番号の後にキャッシュされたログ（複数可）のメタデータを取得し、ログシリアル番号ｊ＋ｍの後にキャッシュされたログ（複数可）のメタデータに従って、ターゲット論理ボリュームのデータ状態を更新することができることと、を実行する必要がある。
【０１９９】
上記は、データ書き込みおよびデータ読み取りのプロセスでターゲットストレージノードが実行する必要がある可能性のあるいくつかの処理に言及している。さらに、本発明の実施形態では、ガベージコレクション処理メカニズムもまた、各ストレージノードに対して展開される。
【０２００】
論理ボリュームに書き込まれるデータは、ログ増分の方法で書き込まれるので（すなわち、追加専用モードで書き込む）、特定のログ内のデータおよびメタデータは、ログ内のデータが変更されると、ガベージになる。言い換えれば、ログは、無効になる。したがって、以前に書き込まれたデータのストレージスペースを再編成および再利用するために、ガベージコレクションメカニズムが提供される。
【０２０１】
具体的には、ターゲットストレージノードの場合、ガベージコレクション処理を実行するために、以下のプロセス、
対応するデータ状態を復元するために、ターゲットストレージノードによって、ターゲット論理ボリュームに対応するＫ個のログセグメント、およびＫ個のログセグメントに対応するチェックポイントを選択することと、
Ｋ個のログセグメント内のＭ個のログセグメントのガベージ比率が事前設定された閾値に到達したと判定したことに応答して、ターゲットストレージノードは、Ｍ個のログセグメント内の無効なログをクリアし、クリアした後、Ｍ個のログセグメントを新しいデータチャンクに書き込み、Ｍ個のログセグメントが位置する元のデータチャンクを再要求し、Ｍ個のログセグメントとデータチャンクとの間の対応関係を更新することであって、新しいデータチャンクは、ルートサーバからターゲットストレージノードによって取得される、更新することと、を使用することができる。
【０２０２】
実際のアプリケーションでは、ガベージコレクション処理が実行される前に、ターゲットストレージノードは、最初に、ガベージコレクションモードでターゲット論理ボリュームをマウントすることができ、ターゲット論理ボリュームは、複数の論理ボリュームのうちのいずれか１つであり得る。ガベージコレクションモードは、ターゲット論理ボリュームのログセグメントおよびチェックポイントを書き換えることができることを意味する。
【０２０３】
このとき、ターゲットストレージノードは、様々なログセグメント、およびターゲット論理ボリュームの様々なログセグメントに対応するチェックポイントから、Ｋ個のログセグメントに対応するＫ個のログセグメントおよびチェックポイントを選択して、対応するデータ状態を復元する、すなわち、メモリ内のＫ個のログセグメントおよびチェックポイントのログメタデータを再生して、Ｋ個のログセグメントに対応するターゲット論理ボリュームのデータ状態を復元する。Ｋ個のログセグメントは、これに限定されないが、連続するＫ個のログセグメントである場合がある。
【０２０４】
その後、ターゲットストレージノードは、各ログの有効性を識別するために、Ｋ個のログセグメントのすべてのログのメタデータを、１つずつトラバースすることができる。例えば、初期ログが、特定のファイルが作成されたことを記録し、後続のログが、ファイルが削除されたことを記録した場合、初期ログは、無効になる。別の例として、初期ログは、データがファイルに書き込まれたことを記録しているが、後続のログは、このデータが新しいデータによって上書きされたことを記録している場合、初期ログは、無効である。
【０２０５】
したがって、ターゲットストレージノードは、Ｋ個のログセグメント内の各ログセグメントのガベージ比率を順次判定することができ、ガベージ比率は、ログセグメント内の無効なログの数とログセグメントに含まれるログの総数との間の比率として定義される。
【０２０６】
任意選択で、ターゲットストレージノードは、ガベージ比率がＫ個のログセグメントにおいて事前設定された閾値を超えるすべてのログセグメントが現在のリサイクルターゲットと見なされると判定してもよい。例えば、Ｍ個のログセグメントのガベージ比率が事前設定された閾値に到達した、Ｋ≧Ｍ≧１の場合、これらのＭ個のログセグメントは、リサイクルターゲットと見なされると判定される。
【０２０７】
任意選択で、ガベージコレクションのプロセスは、メモリリソースなど、ターゲットストレージノードの処理リソースも占有するので、ターゲットストレージノードによって一度に再利用されるログセグメントの数を制御することができる。したがって、任意選択で、ターゲットストレージノードは、以下の戦略に従って、リサイクルターゲットを判定することもできる。ターゲットストレージノードは、Ｋ個のログセグメントに含まれるすべてのログのメタデータを順次トラバースし、現在トラバースされているログ内の無効なログの数と、トラバースされたログ内のログの総数との間の比率を継続的に計算し、すなわち、ガベージ比率が事前設定された閾値に到達するログ（エンドログと呼ばれる）がトラバースされるか、または、エンドログが属するログセグメントの最後のログがトラバースされるまで、トラバースされたログに関連付けられたガベージ比率を継続的に計算する。したがって、ターゲットストレージノードは、合計Ｍ個のログセグメントがリサイクルターゲットであると判定された場合を想定して、Ｋ個のログセグメントの第１のログセグメントから、エンドログが属するログセグメントまでの各ログセグメントが、リサイクルターゲットであると判定し得る。
【０２０８】
したがって、ターゲットストレージノードが、Ｋ個のログセグメント内のＭ個のログセグメントのガベージ比率が、事前設定された閾値に到達したと判定すると、Ｍ個のログセグメント内の無効なログが最初にクリアされ、すなわち、無効なログに格納されたメタデータおよびデータがクリアされ、例えば、無効なログによって占有されるストレージスペースを低減するために、無効なログを埋めるために、ｎｕｌｌ−ｏｐが使用される。次いで、新しいデータチャンクは、クリアされたＭ個のログセグメントを新しいデータチャンク（複数可）に書き込むように、ルートサーバから要求され、Ｍ個のログセグメントが位置する元のデータチャンクが再利用される。Ｍ個のログセグメントとデータチャンクとの間の対応関係が更新され、すなわち、Ｍ個のログセグメントの識別子と元のデータチャンクの識別子との間の対応関係が、Ｍ個のログセグメントの識別子と新しいデータチャンクの識別子との間の対応関係に更新される。対応関係を更新した後、ターゲットストレージノードは、新しく更新された対応関係を、他のストレージノードと同期させることもできる。
【０２０９】
図８ａに示される前述の実施形態は、ストレージノードの観点から、ファイルシステムのデータにアクセスするプロセスに関与するストレージノードの処理の手順を示している。図２または図３に示される論理システムアーキテクチャに基づいて、図８ｂに示される実施形態と併せて、前述の処理手順におけるストレージノードの実装の詳細なプロセスが以下に説明される。
【０２１０】
図８ｂは、本発明の実施形態によって提供されるファイルシステムのデータにアクセスするための別の方法のフローチャートである。本発明の実施形態によって提供される方法の実行は、少なくとも、図２または図３に示されるアーキテクチャ下のストレージノードにおける論理ボリュームサービスプロセス（ＶＳ）と、ガベージコレクションサービスプロセス（ＧＣ）と、を含む。図８ｂに示されるように、本方法は、以下のステップを含む。
【０２１１】
８０１ｂ：ストレージノード内の論理ボリュームサービスプロセスは、コンピューティングノード内のファイルシステムアクセスプロセスによって送信されたターゲット論理ボリュームに対応するマウント要求を受信する。
【０２１２】
８０1ｂ：論理ボリュームサービスプロセスは、データアクセス処理を実行するための第１のログセグメントおよびチェックポイントの格納場所情報に基づいて、ファイルシステムアクセスプロセスがターゲット論理ボリュームのデータ状態を復元することができるようにするように、ターゲット論理ボリュームに対応する第１のログセグメントおよびチェックポイントの格納場所情報を、ファイルシステムアクセスプロセスに送信する。
【０２１３】
データ書き込みおよびデータ読み取りのプロセスにおけるストレージノード内の論理ボリュームサービスプロセスの処理手順の詳細は、以下の２つの任意選択の実施形態と併せて以下に説明される。
【０２１４】
任意選択の実施形態では、コンピューティングノード内のサービスビジネスアプリケーションがデータ書き込みのプロセスをトリガするとき、すなわち、データ書き込みの必要性のためにターゲット論理ボリュームをマウントする必要があるとき、コンピューティングノード内のファイルシステムアクセスプロセスは、ターゲット論理ボリュームのマウント操作をトリガする。このとき、ストレージノード内の論理ボリュームサービスプロセスは、ファイルシステムアクセスプロセスによって送信された第１のマウント要求を受信する。第１のマウント要求は、読み取り／書き込みマウントモードの識別子と、ターゲット論理ボリュームの識別子と、ユーザ情報と、を含む。したがって、ユーザ情報がターゲット論理ボリュームのユーザ権限検証に合格したと判定し、ターゲット論理ボリュームが、現在、読み取り／書き込みモードでマウントされていないと判定した後、論理ボリュームサービスプロセスは、ターゲット論理ボリュームに対応する第１のログセグメントおよびチェックポイントの格納場所情報を、ファイルシステムアクセスプロセスに送信する。
【０２１５】
別の任意選択の実施形態では、コンピューティングノード内のサービスアプリケーションがデータ読み取りのプロセスをトリガするとき、すなわち、データ読み取りの必要性のためにターゲット論理ボリュームをマウントする必要があるとき、コンピューティングノード内のファイルシステムアクセスプロセスは、ターゲット論理ボリュームのマウント操作をトリガする。このとき、ストレージノード内の論理ボリュームサービスプロセスは、ファイルシステムアクセスプロセスによって送信された第２のマウント要求を受信する。第２のマウント要求は、読み取り専用モードの識別子と、ターゲット論理ボリュームの識別子と、ユーザ情報と、を含む。したがって、論理ボリュームサービスプロセスは、ユーザ情報がターゲット論理ボリュームのユーザ権限検証に合格したと判定した後、ターゲット論理ボリュームに対応する第１のログセグメントおよびチェックポイントの格納場所情報を、ファイルシステムアクセスプロセスに送信する。
【０２１６】
ターゲット論理ボリュームがマウントされた後のファイルシステムアクセスプロセスのデータ書き込みまたはデータ読み取りの後続のプロセスでは、論理ボリュームサービスプロセスは、次の機能、
論理ボリュームサービスプロセスによって、ファイルシステムアクセスプロセスによって送信されたクエリ要求を受信することであって、クエリ要求は、ターゲット論理ボリュームに対応するターゲットログセグメントが位置するデータチャンクをクエリするために使用される、受信することと、
論理ボリュームサービスプロセスによって、ログセグメントの識別子とデータチャンクの識別子との間の維持された対応関係に従って、ターゲットログセグメントが位置するデータチャンクの識別子を判定することと、
論理ボリュームサービスプロセスによって、データチャンクの識別子を、ファイルシステムアクセスプロセスに送信することと、も有する。
【０２１７】
例えば、図５ｂに示される実施形態に記載されるデータ書き込みのプロセスに対応して、データ書き込みプロセスのトリガに基づいて、ファイルシステムアクセスプロセスが、図５ｂに示される実施形態における第１のログまたは第２のログなど、特定のログを生成した後、ファイルシステムアクセスプロセスは、現在生成されているログを、ターゲット論理ボリュームの最後のログセグメントが位置するデータチャンクに格納する必要がある。したがって、ファイルシステムアクセスプロセスは、論理ボリュームサービスプロセスを通じて、データチャンクと、データチャンクに対応するデータチャンクサービスプロセスとを判定する必要がある。
【０２１８】
したがって、論理ボリュームサービスプロセスは、データ書き込みのプロセス中に、以下のステップ、
論理ボリュームサービスプロセスによって、ファイルシステムアクセスプロセスによって送信された第１のクエリ要求を受信することであって、第１のクエリ要求は、ターゲット論理ボリュームに対応する最後のログセグメントが位置するデータチャンクをクエリするために使用される、受信することと、
論理ボリュームサービスプロセスによって、ログセグメントの識別子とデータチャンクの識別子との間の維持された対応関係に従って、最後のログセグメントが位置する第１のデータチャンクの識別子を判定することと、
論理ボリュームサービスプロセスによって、第１のデータチャンクの識別子を、ファイルシステムアクセスプロセスに送信して、ファイルシステムアクセスプロセスが、第１のデータチャンクの識別子に従って、ルートサーバにクエリを実行して、第１のデータチャンクに対応する第１のデータチャンクサービスプロセスを取得し、ログを第１のデータチャンクに追加し、第１のデータチャンクサービスプロセスに、ログにメタデータをキャッシュするように要求することと、も実行する必要がある。
【０２１９】
データチャンクの識別子とストレージノードの識別子との間の対応関係は、ルートサーバで維持される。
【０２２０】
別の例として、図７ｂに示される実施形態で記載されるデータ読み取りのプロセスに対応して、ファイルシステムアクセスプロセスが、ログシリアル番号ｊ＋ｍの後にログを格納するデータチャンクを判定する必要があるとき、論理ボリュームサービスプロセスは、データ読み取りのプロセス中に、以下のステップ、
論理ボリュームサービスプロセスによって、ファイルシステムアクセスプロセスによって送信された第２のクエリ要求を受信することであって、第２のクエリ要求は、データ読み取りプロセスによって最後に読み取られたログシリアル番号ｊとログシリアル番号ｊ＋ｍとの間のログを取得した後、ファイルシステムアクセスプロセスによって送信され、第２のクエリ要求は、ログシリアル番号ｊ＋ｍの後にキャッシュされたログ（複数可）のデータチャンク（複数可）を要求するために使用される、受信することと、
論理ボリュームサービスプロセスによって、ログセグメントの識別子とデータチャンクの識別子との間の維持された対応関係に従って、ログシリアル番号ｊ＋ｍの後にキャッシュされたログが位置するそれぞれの第２のデータチャンク（複数可）の識別子（複数可）を判定することと、
論理ボリュームサービスプロセスによって、それぞれの第２のデータチャンク（複数可）の識別子（複数可）を、ファイルシステムアクセスプロセスに送信して、ファイルシステムアクセスプロセスが、それぞれの第２のデータチャンク（複数可）の識別子（複数可）に従って、ルートサーバにクエリを実行して、それぞれの第２のデータチャンク（複数可）に対応する第２のデータチャンクサービスプロセス（複数可）を取得し、その結果、それぞれの第２のデータチャンク（複数可）から、ｊ＋ｍ以降のログシリアル番号の後にキャッシュされたログ（複数可）のメタデータを取得し、ログシリアル番号ｊ＋ｍの後にキャッシュされたログ（複数可）のメタデータに従って、ターゲット論理ボリュームのデータ状態を更新することができることと、を実行する必要がある。
【０２２１】
論理ボリュームに書き込まれるデータは、ログ増分の方法で書き込まれるので（すなわち、追加専用モードで書き込む）、特定のログ内のデータおよびメタデータは、ログ内のデータが変更されると、ガベージになる。言い換えれば、ログは、無効になる。したがって、本発明の実施形態は、以前に書き込まれたデータのストレージスペースを再編成および再利用するためのガベージコレクションメカニズムをさらに提供する。具体的には、各ストレージノードに展開されたガベージコレクションサービスプロセス（ＧＣ）は、他のサービスプロセスと連携してガベージコレクションを完了する。
【０２２２】
具体的には、どのストレージノードでも、ガベージコレクション処理は、以下のプロセス、
ストレージノード内の論理ボリュームサービスプロセスによって、ストレージノード内のガベージコレクションサービスプロセスによって送信されたターゲット論理ボリュームに対応する第３のマウント要求を受信することと、
論理ボリュームサービスプロセスによって、ターゲット論理ボリュームに対応する第２のログセグメントおよびチェックポイントの格納場所情報を、ガベージコレクションサービスプロセスに送信して、ガベージコレクションサービスプロセスが、第２のログセグメントおよびチェックポイントからＫ個のログセグメントおよびチェックポイントを選択できるようにして、対応するデータ状態を復元し、Ｋ個のログセグメント内のＭ個のログセグメントのそれぞれのガベージ比率が事前設定された閾値に到達した、Ｋ≧Ｍ≧１と判定したことに応答して、Ｍ個のログセグメントが位置する元のデータチャンクを再要求することと、
論理ボリュームサービスプロセスによって、ガベージコレクションサービスプロセスによって送信されたログセグメント更新通知を受信することであって、ログセグメント更新通知が、Ｍ個のログセグメントと、Ｍ個のログセグメントが位置する新しいデータチャンクとの間の対応関係を含む、受信することと、
論理ボリュームサービスプロセスによって、元の対応関係を、Ｍ個のログセグメントと新しいデータチャンクとの間の対応関係によって更新することと、を通じて実行することができる。
【０２２３】
ガベージコレクションの前述のプロセスのさらなる説明については、図８ａに示される実施形態における関連する説明を参照することができ、これは、本明細書では繰り返されない。
【０２２４】
本発明の１つ以上の実施形態のファイルシステムデータアクセス装置を、以下に詳細に説明する。当業者は、これらのファイルシステムデータアクセス装置のすべてが、本解決策で教示されるステップを通じて、市販のハードウェアコンポーネントを使用して構成され得ることを理解することができる。
【０２２５】
図９は、本発明の実施形態によって提供されるファイルシステムのデータにアクセスするための装置の概略構造図である。図９に示されるように、装置は、送信モジュール１１と、受信モジュール１２と、復元モジュール１３と、処理モジュール１４と、を含む。
【０２２６】
送信モジュール１１は、ターゲット論理ボリュームに対してトリガされたマウント要求を、ターゲットストレージノードに送信するように構成されており、ターゲットストレージノードは、複数のストレージノードのうちのいずれか１つであり、ターゲット論理ボリュームは、複数のストレージノード内のストレージリソースの少なくとも一部に対応する。
【０２２７】
受信モジュール１２は、ターゲットストレージノードによって送信されたターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を受信するように構成されている。
【０２２８】
復元モジュール１３は、ターゲット論理ボリュームのデータ状態を復元するために、ログセグメントおよびチェックポイントの格納場所情報に従って、ログセグメントおよびチェックポイントのログメタデータを読み取るように構成されている。
【０２２９】
処理モジュール１４は、ターゲット論理ボリュームのデータ状態に基づいて、データアクセス処理を実行するように構成されている。
【０２３０】
図９に示される装置は、図４ａ、図５ａ、図６ａ、および図７ａに示される実施形態の方法を実行することができる。本実施形態で詳細に説明されていない部分については、図４ａ、図５ａ、図６ａ、および図７ａに示される実施形態の説明を参照することができる。
【０２３１】
ファイルシステムのデータにアクセスするための装置の内部機能および構造は、上述されている。可能な設計では、ファイルシステムのデータにアクセスするための装置の構造は、図１０に示されるように、アプリケーションサーバなどのコンピューティングノードとして実装することができる。コンピューティングノードは、プロセッサ２１と、メモリ２２と、を含み得、メモリ２２は、図４ａ、図５ａ、図６ａ、および図７ａに示される実施形態で提供されるファイルシステムのデータにアクセスするための方法を実行するために、ファイルシステムのデータにアクセスするための装置をサポートするプログラムを格納するように構成されている。プロセッサ２１は、メモリ２２に記憶されたプログラムを実行するように構成される。
【０２３２】
プログラムは、１つ以上のコンピュータ命令を含み、１つ以上のコンピュータ命令は、プロセッサ２１によって実行されると、以下のステップ、
ターゲット論理ボリュームに対してトリガされたマウント要求を、ターゲットストレージノードに送信することであって、ターゲットストレージノードは、複数のストレージノードのうちのいずれか１つであり、ターゲット論理ボリュームは、複数のストレージノードの少なくとも一部のストレージリソースに対応している、送信することと、
ターゲットストレージノードによって送信されたターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を受信することと、
ターゲット論理ボリュームのデータ状態を復元するために、ログセグメントおよびチェックポイントの格納場所情報に従って、ログセグメントおよびチェックポイントのログメタデータを読み取ることと、
ターゲット論理ボリュームのデータ状態に基づいて、データアクセス処理を実行することと、を実施することができる。
【０２３３】
任意選択で、プロセッサ２１は、図４ａ、図５ａ、図６ａ、および図７ａに示される実施形態のステップの全部または一部を実行するようにさらに構成される。
【０２３４】
ファイルシステムのデータにアクセスするための装置の構造は、ユーザインターフェース操作デバイスが、他のデバイスまたは通信ネットワークと通信することを可能にするように構成された通信インターフェース２３をさらに含み得る。
【０２３５】
加えて、本発明の実施形態は、ファイルシステムのデータにアクセスするための装置によって使用されるコンピュータソフトウェア命令を格納するために使用されるコンピュータ記憶媒体を提供し、図４ａ、図５ａ、図６ａ、および図７ａに示される方法の実施形態においてファイルシステムのデータにアクセスするための方法を実行することに関与するプログラムを含む。
【０２３６】
図１１は、本発明の実施形態によって提供されるファイルシステムのデータにアクセスするための別の装置の概略構造図である。図１１に示されるように、装置は、表示モジュール１１と、動作イベント処理モジュール１２と、レンダリング処理モジュール１３と、を含む。
【０２３７】
受信モジュール３１は、コンピューティングノードによって送信されたターゲット論理ボリュームに対応するマウント要求を受信するように構成されている。
【０２３８】
取得モジュール３２は、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を取得するように構成されている。
【０２３９】
送信モジュール３３は、データアクセス処理を実行するためのログセグメントおよびチェックポイントの格納場所情報に基づいて、コンピューティングノードが、ターゲット論理ボリュームのデータ状態を復元することができるようにするために、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を、コンピューティングノードに送信するように構成されており、ターゲット論理ボリュームは、複数のストレージノード内のストレージリソースの少なくとも一部に対応する。
【０２４０】
図１１に示される装置は、図８ａに示される実施形態の方法を実行することができる。本実施形態で詳細に説明されていない部分については、図８ａに示される実施形態の関連する説明を参照することができる。
【０２４１】
ファイルシステムのデータにアクセスするための装置の内部機能および構造は、上述されている。可能な設計では、ファイルシステムのデータにアクセスするための装置の構造は、図１２に示されるように、ストレージノードとして実装することができる。ストレージノードは、プロセッサ４１と、メモリ４２と、を含み得、メモリ４２は、図８ａに示される実施形態で提供されるファイルシステムのデータにアクセスするための方法を実行するために、ファイルシステムのデータにアクセスするための装置をサポートするプログラムを格納するように構成されている。プロセッサ４１は、メモリ４２に記憶されたプログラムを実行するように構成される。
【０２４２】
プログラムは、１つ以上のコンピュータ命令を含み、１つ以上のコンピュータ命令は、プロセッサ４１によって実行されると、以下のステップ、
コンピューティングノードによって送信されたターゲット論理ボリュームに対応するマウント要求を受信することと、
データアクセス処理を実行するためのログセグメントおよびチェックポイントの格納場所情報に基づいて、コンピューティングノードが、ターゲット論理ボリュームのデータ状態を復元することができるようにするために、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を、コンピューティングノードに送信することであって、ターゲット論理ボリュームは、複数のストレージノード内のストレージリソースの少なくとも一部に対応する、送信することと、を実施することができる。
【０２４３】
任意選択で、プロセッサ４１は、図８ａに示される実施形態のステップの全部または一部を実行するようにさらに構成されている。
【０２４４】
ファイルシステムのデータにアクセスするための装置の構造は、ユーザインターフェース操作デバイスが、他のデバイスまたは通信ネットワークと通信することを可能にするように構成された通信インターフェース４３をさらに含み得る。
【０２４５】
加えて、本発明の実施形態は、ファイルシステムのデータにアクセスするための装置によって使用されるコンピュータソフトウェア命令を格納するために使用されるコンピュータ記憶媒体を提供し、図８ａに示される方法の実施形態においてファイルシステムのデータにアクセスするための方法を実行することに関与するプログラムを含む。
【０２４６】
上記の装置の実施形態は、単なる例示である。別々の構成要素として説明されているユニットは、物理的に別々であっても別々でなくてもよい。ユニットとして表示される構成要素は、物理的なユニットであってもよいし、物理的なユニットでなくてもよい、すなわち、一箇所に位置していてもよいし、複数のネットワークユニットに分散されていてもよい。モジュールのいくつかまたはすべては、実施形態の解決策の目的を達成するための実際の必要性に従って選択されてもよい。当業者は、いかなる創造的な努力もすることなく、それを理解し、実施することができる。
【０２４７】
上記の実施形態の説明を通じて、当業者は、各実施形態が、必要な一般的なハードウェアプラットフォームを追加して実施することができ、明らかにハードウェアとソフトウェアの組み合わせによっても実施することもできることを明確に理解することができる。そのような理解に基づいて、上記の技術的解決策の本質または既存の技術に貢献する部分を、ソフトウェア製品の形式で具体化することができる。本発明は、コンピュータ使用可能プログラムコードを含む１つ以上のコンピュータ使用可能記憶媒体（磁気ディスク、ＣＤ−ＲＯＭ、光学ディスクなどを含むがこれらに限定されない）上に実装されるコンピュータプログラム製品の形態を採用することができる。
【０２４８】
本発明は、本発明の実施形態による方法、デバイス（システム）、およびコンピュータプログラム製品のフローチャートおよび／またはブロック図を参照して説明される。フローチャートおよび／またはブロック図における各ステップおよび／またはブロック、ならびにフローチャートおよび／またはブロック図におけるステップおよび／またはブロックの組み合わせは、コンピュータプログラム命令によって実装することができることを理解されたい。コンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、組み込みプロセッサ、または他のプログラム可能データ処理デバイスのプロセッサに提供されて機械を生成することができるので、フローチャートの１つ以上のプロセスおよび／またはブロック図の１つ以上のブロックで指定された機能を実行するために使用される装置が、コンピュータのプロセッサまたは他のプログラム可能なデータ処理デバイスを使用して命令を実行することによって生成されるようにすることができる。
【０２４９】
これらのコンピュータプログラム命令はまた、コンピュータまたは他のプログラム可能なデータ処理デバイスを特定の方法で動作させるように導くことができるコンピュータ可読ストレージデバイスに記憶することができ、その結果、コンピュータ可読デバイスデバイスに記憶された命令は、指示装置を含む製品を製造する。命令装置は、フローチャートにおける１つ以上のプロセスおよび／またはブロック図における１つ以上のブロックによって指定された機能を実施する。
【０２５０】
これらのコンピュータプログラム命令はまた、コンピュータまたは他のプログラム可能データ処理デバイスにロードすることができ、その結果、一連の操作ステップが、コンピュータまたは他のプログラム可能デバイス上で実行されて、コンピュータ実装処理を生成し、その結果、コンピュータまたは他のプログラム可能デバイス上で実行される命令が、フローチャートにおける１つ以上のプロセスおよび／またはブロック図における１つ以上のブロックで指定された機能を実装するためのステップを提供する。
【０２５１】
典型的な構成では、コンピューティングデバイスは、１つ以上のプロセッサ（ＣＰＵ）と、入力／出力インターフェースと、ネットワークインターフェースと、メモリと、を含む。
【０２５２】
メモリは、揮発性メモリ、ランダムアクセスメモリ（ＲＡＭ）および／または不揮発性メモリ、例えば読み取り専用メモリ（ＲＯＭ）、またはフラッシュＲＡＭなどのコンピュータ可読媒体の形態を含み得る。メモリは、コンピュータ可読媒体の例である。
【０２５３】
コンピュータ可読媒体は、任意の方法または技術を使用して情報の記憶を達成することができる揮発性または不揮発性タイプ、取り外し可能または取り外し不可能媒体を含むことができる。情報は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータを含んでもよい。コンピュータ記憶媒体の例としては、相変化メモリ（ｐｈａｓｅ−ｃｈａｎｇｅ  ｍｅｍｏｒｙ、ＰＲＡＭ）、スタティックランダムアクセスメモリ（ｓｔａｔｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ、ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ、ＤＲＡＭ）、他のタイプのランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、電子的に消去可能なプログラマブル読み取り専用メモリ（ｅｌｅｃｔｒｏｎｉｃａｌｌｙ  ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ、ＥＥＰＲＯＭ）、クイックフラッシュメモリまたは他の内部記憶技術、コンパクトディスク読み取り専用メモリ（ｃｏｍｐａｃｔ  ｄｉｓｋ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ、ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｃ、ＤＶＤ）または他の光ストレージ、磁気カセットテープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは他の非伝送媒体が挙げられ、これらは、コンピューティングデバイスによってアクセスされ得る情報を記憶するために使用されてもよいが、これらに限定されない。本明細書で定義されるように、コンピュータ可読媒体は、変調されたデータ信号および搬送波などの一時的な媒体を含まない。
【０２５４】
最後に、上記の実施形態は、本発明の技術的解決策を例証するためだけに使用され、限定するものではないことに留意されたい。本出願について、前述の実施形態を参照して詳細に記載したが、当業者は、前述の実施形態に記載された技術的解決策において修正を行うことができ、または技術的特徴の一部を同等に置き換えることができることを理解されたい。これらの修正または置換は、対応する技術的解決策の本質が、本発明の実施形態の技術的解決策の意図および範囲から逸脱するものではない。
【図１】
2021525926.tif 000003
【図２】
2021525926.tif 000004
【図３】
2021525926.tif 000005
【図４ａ】
2021525926.tif 000006
【図４ｂ】
2021525926.tif 000007
【図５ａ】
2021525926.tif 000008
【図５ｂ】
2021525926.tif 000009
【図６ａ】
2021525926.tif 000010
【図６ｂ】
2021525926.tif 000011
【図７ａ】
2021525926.tif 000012
【図７ｂ】
2021525926.tif 000013
【図８ａ】
2021525926.tif 000014
【図８ｂ】
2021525926.tif 000015
【図９】
2021525926.tif 000016
【図１０】
2021525926.tif 000017
【図１１】
2021525926.tif 000018
【図１２】
2021525926.tif 000019
【国際調査報告】
2021525926.tif 000020
2021525926.tif 000021
2021525926.tif 000022
2021525926.tif 000023