(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-06
(45)【発行日】2023-11-14
(54)【発明の名称】ファイルシステムデータアクセス方法およびファイルシステム
(51)【国際特許分類】
G06F 16/13 20190101AFI20231107BHJP
G06F 3/06 20060101ALI20231107BHJP
【FI】
G06F16/13
G06F3/06 301Z
G06F3/06 301X
(21)【出願番号】P 2020567024
(86)(22)【出願日】2019-05-21
(86)【国際出願番号】 CN2019087691
(87)【国際公開番号】W WO2019228217
(87)【国際公開日】2019-12-05
【審査請求日】2022-05-06
(31)【優先権主張番号】201810558071.1
(32)【優先日】2018-06-01
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】510330264
【氏名又は名称】アリババ・グループ・ホールディング・リミテッド
【氏名又は名称原語表記】ALIBABA GROUP HOLDING LIMITED
(74)【代理人】
【識別番号】100188558
【氏名又は名称】飯田 雅人
(74)【代理人】
【識別番号】100205785
【氏名又は名称】▲高▼橋 史生
(72)【発明者】
【氏名】ジアジ・ジュ
【審査官】松尾 真人
(56)【参考文献】
【文献】米国特許出願公開第2016/0041880(US,A1)
【文献】特開2009-251791(JP,A)
【文献】特開2016-021110(JP,A)
【文献】特開平08-329102(JP,A)
【文献】特表2016-530598(JP,A)
【文献】特開2005-050024(JP,A)
【文献】米国特許出願公開第2010/0114889(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
G06F 3/06-3/08
(57)【特許請求の範囲】
【請求項1】
ファイルシステムのデータにアクセスするための方法であって、前記ファイルシステムは、少なくとも1つのコンピューティングノードと、複数のストレージノードと、を含み、前記方法は、
前記コンピューティングノードによって、ターゲット論理ボリュームに対してトリガされたマウント要求を、ターゲットストレージノードに送信することであって、前記ターゲットストレージノードは、前記複数のストレージノードのうちのいずれか1つであり、前記ターゲット論理ボリュームは、前記複数のストレージノードの少なくとも一部のストレージリソースに対応している、送信することと、
前記コンピューティングノードによって、前記ターゲットストレージノードによって送信された前記ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を受信することと、
前記ターゲット論理ボリュームのデータ状態を復元するために、前記コンピューティングノードによって、前記ログセグメントおよび前記チェックポイントの前記格納場所情報に従って、前記ログセグメントおよび前記チェックポイントのログメタデータを読み取ることと、
前記コンピューティングノードによって、前記ターゲット論理ボリュームの前記データ状態に基づいて、データアクセス処理を実行することと、を含む、方法。
【請求項2】
前記コンピューティングノードによって、前記ターゲット論理ボリュームに対してトリガされた前記マウント要求を、前記ターゲットストレージノードに送信することは、
前記コンピューティングノードによって、データ書き込みプロセスによってトリガされたマウント操作に応答して、前記ターゲットストレージノードに、第1のマウント要求を送信することであって、前記第1のマウント要求は、前記ターゲット論理ボリュームの識別子と、ユーザ情報と、書き込み/読み取りマウントモードの識別子と、を含む、送信することを含み、
前記コンピューティングノードによって、前記ターゲットストレージノードによって送信された前記ターゲット論理ボリュームに対応する前記ログセグメントおよび前記チェックポイントの前記格納場所情報を受信することは、
前記ターゲットストレージノードが、前記ユーザ情報が前記ターゲット論理ボリュームのユーザ権限検証に合格したと判定し、前記ターゲット論理ボリュームが、現在、前記読み取り/書き込みマウントモードでマウントされていないと判定した後、前記コンピューティングノードによって、前記ターゲットストレージノードによって送信された前記ターゲット論理ボリュームに対応する前記ログセグメントおよび前記チェックポイントの前記格納場所情報を受信することを含む、請求項1に記載の方法。
【請求項3】
前記コンピューティングノードによって、前記ターゲット論理ボリュームの前記データ状態に基づいて、前記データアクセス処理を実行することは、
前記コンピューティングノードによって、前記データ書き込みプロセスによってトリガされたファイル準備書き込み操作に応答して、メタデータのみを含む第1のログを生成することであって、前記第1のログは、現時点での最後のログシリアル番号i+1がインクリメントされた後のログシリアル番号iと、前記ファイル準備書き込み操作に対応するファイル情報と、を含む、生成することと、
前記コンピューティングノードによって、前記ターゲット論理ボリュームに対応する最後のログセグメントが位置する第1のデータチャンクと、前記ターゲットストレージノードおよびルートサーバを通じて、前記第1のデータチャンクに対応する第1のストレージノードと、を判定することと、
前記コンピューティングノードによって、前記第1のログを前記第1のデータチャンクに追加するように要求するために、かつ前記第1のストレージノードに前記第1のログをキャッシュするように要求するために、ログ格納要求を、前記第1のストレージノードに送信することと、を含む、請求項2に記載の方法。
【請求項4】
前記コンピューティングノードによって、前記ターゲット論理ボリュームに対応する前記最後のログセグメントが位置する前記第1のデータチャンクと、前記ターゲットストレージノードおよび前記ルートサーバを通じて、前記第1のデータチャンクに対応する前記第1のストレージノードと、を判定することは、
前記コンピューティングノードによって、前記ターゲット論理ボリュームに対応する前記最後のログセグメントが位置するデータチャンクをクエリするための第1のクエリ要求を、前記ターゲットストレージノードに送信することと、
前記コンピューティングノードによって、前記ターゲットストレージノードによって送信された前記第1のデータチャンクの識別子を受信することであって、前記第1のデータチャンクの前記識別子は、ログセグメントの識別子と前記ターゲットストレージノードによって維持される前記ターゲット論理ボリュームのデータチャンクの識別子との間の対応関係に基づいて判定される、受信することと、
前記コンピューティングノードによって、前記第1のデータチャンクの前記識別子に対応するストレージノードをクエリするための第2のクエリ要求を、前記ルートサーバに送信することと、
前記コンピューティングノードによって、前記ルートサーバによって送信された前記第1のストレージノードの識別子を受信することであって、前記第1のストレージノードの前記識別子は、データチャンクの識別子とストレージノードの識別子との間の維持された対応関係に基づいて、前記ルートサーバによって判定される、受信することと、を含む、請求項3に記載の方法。
【請求項5】
前記コンピューティングノードによって、前記ターゲット論理ボリュームの前記データ状態に基づいて、前記データアクセス処理を実行することは、
前記コンピューティングノードによって、前記データ書き込みプロセスによって送信されたデータ書き込み要求に応答して、第2のログを生成することであって、前記データ書き込み要求は、書き込まれたデータと、前記書き込まれたデータに対応するファイル情報と、を含み、前記第2のログは、メタデータと、前記書き込まれたデータと、を含み、前記メタデータは、前記現時点での最後のログシリアル番号i+1がインクリメントされた後のログシリアル番号i+2と、前記ファイル情報と、を含む、生成することと、
前記コンピューティングノードによって、前記ターゲット論理ボリュームに対応する前記最後のログセグメントが位置する第2のデータチャンクと、前記ターゲットストレージノードおよび前記ルートサーバを通じて、前記第2のデータチャンクに対応する第2のストレージノードと、を判定することと、
前記コンピューティングノードによって、前記第2のログを前記第2のデータチャンクに追加するように要求するために、かつ前記第2のストレージノードに前記第2のログにメタデータをキャッシュするように要求するために、ログ保存要求を、前記第2のストレージノードに送信することと、を含む、請求項3に記載の方法。
【請求項6】
前記最後のログセグメントが閉鎖条件に到達した場合、前記コンピューティングノードが、前記最後のログセグメントを閉鎖し、新しいチェックポイントを生成し、前記ターゲットストレージノードに新しいログセグメントを前記最後のログセグメントとして要求することをさらに含み、
前記閉鎖条件は、事前設定された数に到達した前記最後のログセグメントに含まれるログの数、または事前設定された容量値に到達した前記最後のログセグメントに対応するデータの量である、請求項3に記載の方法。
【請求項7】
前記コンピューティングノードによって、前記ターゲット論理ボリュームに対してトリガされた前記マウント要求を、前記ターゲットストレージノードに送信することは、
前記コンピューティングノードによって、データ読み取りプロセスによってトリガされたマウント操作に応答して、前記ターゲットストレージノードに、第2のマウント要求を送信することであって、前記第2のマウント要求は、前記ターゲット論理ボリュームの識別子と、ユーザ情報と、読み取り専用マウントモードの識別子と、を含む、送信することを含み、
前記コンピューティングノードによって、前記ターゲットストレージノードによって送信された前記ターゲット論理ボリュームに対応する前記ログセグメントおよび前記チェックポイントの前記格納場所情報を受信することは、
前記ユーザ情報が前記ターゲット論理ボリュームのユーザ権限検証に合格したと判定した後、前記コンピューティングノードによって、前記ターゲットストレージノードによって送信された前記ターゲット論理ボリュームに対応する前記ログセグメントおよび前記チェックポイントの前記格納場所情報を受信することを含む、請求項1に記載の方法。
【請求項8】
前記コンピューティングノードによって、前記ターゲット論理ボリュームの前記データ状態に基づいて、前記データアクセス処理を実行することは、
前記データ読み取りプロセスによって以前に読み取られたログシリアル番号j、前記ログシリアル番号jに対応する第3のデータチャンク、および第3のストレージノードに基づいて、前記コンピューティングノードが、前記データ
読み取りプロセスによってトリガされたファイル読み込み操作に応答して、前記ログシリアル番号jの後にキャッシュされたログのメタデータを取得するために、データ同期要求を、前記第3のストレージノードに送信することと、
前記コンピューティングノードが、前記第3のストレージノードから前記ログシリアル番号jの後にキャッシュされた前記ログの表示情報および前記メタデータを受信することであって、前記キャッシュされたログに対応するログシリアル番号は、j+1~j+mであり、前記表示情報は、前記ログシリアル番号j+mに対応するログセグメントが閉鎖されたかどうかを示すために使用される、受信することと、
前記コンピューティングノードが、前記ログシリアル番号jの後にキャッシュされた前記ログの前記メタデータおよび前記表示情報に従って、前記ターゲット論理ボリュームの前記データ状態を更新することと、を含む、請求項7に記載の方法。
【請求項9】
前記コンピューティングノードが、前記ログシリアル番号jの後にキャッシュされた前記ログの前記メタデータおよび前記表示情報に従って、前記ターゲット論理ボリュームの前記データ状態を更新することは、
前記コンピューティングノードが、前記ログシリアル番号j+mに対応するログセグメントが閉鎖されていないことを前記表示情報が示している場合、前記ログシリアル番号j+1~j+mを有する前記キャッシュされたログの前記メタデータに従って、前記ターゲット論理ボリュームの前記データ状態を更新することを含む、請求項8に記載の方法。
【請求項10】
前記コンピューティングノードが、前記ログシリアル番号jの後にキャッシュされた前記ログの前記メタデータおよび前記表示情報に従って、前記ターゲット論理ボリュームの前記データ状態を更新することは、
前記表示情報が、前記ログシリアル番号j+mに対応するログセグメントが閉鎖されたことを示している場合、前記コンピューティングノードが、前記ターゲットストレージノードおよびルートサーバを通じて、前記ログシリアル番号j+mの後にキャッシュされたログ(複数可)を格納するそれぞれの第4のデータチャンク(複数可)と、前記第4のデータチャンクに対応するそれぞれの第4のストレージノード(複数可)と、を判定することと、
前記コンピューティングノードが、前記ログシリアル番号j+mの後の前記キャッシュされたログ(複数可)のメタデータを取得するために、データ同期要求を前記第4のストレージノード(複数可)に送信することと、
前記コンピューティングノードが、ログシリアル番号j+1~j+mを有する前記キャッシュされたログ(複数可)の前記メタデータ、および前記ログシリアル番号j+mの後の前記キャッシュされたログのメタデータに従って、前記ターゲット論理ボリュームの前記データ状態を更新することと、を含む、請求項8に記載の方法。
【請求項11】
前記コンピューティングノードによって、前記ターゲット論理ボリュームの前記データ状態に基づいて、前記データアクセス処理を実行することは、
前記コンピューティングノードによって、前記データ読み取りプロセスによって送信されたデータ読み取り要求に応答して、第5のストレージノードを通じて第5のデータチャンクからデータを読み取るために、前記ターゲットストレージノードおよびルートサーバを通じて、読み取られるファイル情報に対応する前記第5のストレージノードと、前記第5のデータチャンクと、を判定することであって、前記データ読み取り要求は、読み取られる前記ファイル情報を含む、判定すること、を含む、請求項8に記載の方法。
【請求項12】
ファイルシステムのデータにアクセスするための方法であって、前記ファイルシステムは、少なくとも1つのコンピューティングノードと、複数のストレージノードと、を含み、前記方法は、
ターゲットストレージノードによって、コンピューティングノードによって送信されたターゲット論理ボリュームに対応するマウント要求を受信することであって、前記ターゲットストレージノードは、前記複数のストレージノードのうちのいずれか1つである、受信することと、
前記ターゲットストレージノードによって、データアクセス処理を実行するためのログセグメントおよびチェックポイントの格納場所情報に基づいて、前記コンピューティングノードが、前記ターゲット論理ボリュームのデータ状態を復元することができるようにするために、前記ターゲット論理ボリュームに対応する前記ログセグメントおよび前記チェックポイントの前記格納場所情報を、前記コンピューティングノードに送信することであって、前記ターゲット論理ボリュームは、前記複数のストレージノード内のストレージリソースの少なくとも一部に対応する、送信することと、を含む、方法。
【請求項13】
前記ターゲットストレージノードによって、前記コンピューティングノードによって送信された前記ターゲット論理ボリュームに対応する前記マウント要求を受信することは、
前記ターゲットストレージノードによって、前記コンピューティングノードによって送信された第1のマウント要求を受信することであって、前記第1のマウント要求が、読み取り/書き込みマウントモードの識別子と、前記ターゲット論理ボリュームの識別子と、ユーザ情報と、を含み、前記読み取り/書き込みマウントモードの前記識別子が、前記コンピューティングノード内のデータ書き込みプロセスに対応する、受信することを含み、
前記ターゲットストレージノードによって、前記ターゲット論理ボリュームに対応する前記ログセグメントおよび前記チェックポイントの前記格納場所情報を、前記コンピューティングノードに送信することは、
前記ユーザ情報が前記ターゲット論理ボリュームのユーザ権限検証に合格したと判定し、前記ターゲット論理ボリュームが、現在、前記読み取り/書き込みモードでマウントされていないと判定した後、前記ターゲットストレージノードによって、前記ターゲット論理ボリュームに対応する前記ログセグメントおよび前記チェックポイントの前記格納場所情報を、前記コンピューティングノードに送信することを含む、請求項12に記載の方法。
【請求項14】
前記ターゲットストレージノードによって、前記コンピューティングノードによって送信された前記ターゲット論理ボリュームに対応する前記マウント要求を受信することは、
前記ターゲットストレージノードによって、前記コンピューティングノードによって送信された第2のマウント要求を受信することであって、前記第2のマウント要求が、読み取り専用マウントモードの識別子と、前記ターゲット論理ボリュームの識別子と、ユーザ情報と、を含み、前記読み取り専用マウントモードの前記識別子が、前記コンピューティングノード内のデータ読み取りプロセスに対応する、受信することを含み、
前記ターゲットストレージノードによって、前記ターゲット論理ボリュームに対応する前記ログセグメントおよび前記チェックポイントの前記格納場所情報を、前記コンピューティングノードに送信することは、
前記ユーザ情報が前記ターゲット論理ボリュームのユーザ権限検証に合格したと判定した後、前記ターゲットストレージノードによって、前記ターゲット論理ボリュームに対応する前記ログセグメントおよび前記チェックポイントの前記格納場所情報を、前記コンピューティングノードに送信することを含む、請求項12に記載の方法。
【請求項15】
前記ターゲットストレージノードによって、前記コンピューティングノードによって送信されたクエリ要求を受信することであって、前記クエリ要求は、前記ターゲット論理ボリュームに対応するターゲットログセグメントが位置するデータチャンクをクエリするために使用される、受信することと、
前記ターゲットストレージノードによって、ログセグメントの識別子と前記ターゲット論理ボリュームのデータチャンクの識別子との間の維持された対応関係に従って、前記ターゲットログセグメントが位置する前記データチャンクの識別子を判定することと、
前記ターゲットストレージノードによって、前記データチャンクの前記識別子を、前記コンピューティングノードに送信することと、をさらに含む、請求項12に記載の方法。
【請求項16】
対応するデータ状態を復元するために、前記ターゲットストレージノードによって、前記ターゲット論理ボリュームに対応するK個のログセグメント、およびK個のログセグメントに対応するチェックポイントを選択することと、
前記K個のログセグメント内のM個のログセグメントのガベージ比率が事前設定された閾値に到達したと判定したことに応答して、前記ターゲットストレージノードは、前記M個のログセグメント内の無効なログをクリアし、ルートサーバに新しいデータチャンク(複数可)を要求し、前記クリアした後、前記M個のログセグメントを前記新しいデータチャンク(複数可)に書き込み、前記M個のログセグメントが位置する元のデータチャンクを再要求し、ただしK≧M≧1であり、前記M個のログセグメントと前記データチャンクとの間の対応関係を更新することと、をさらに含む、請求項12~15のいずれか一項に記載の方法。
【請求項17】
ファイルシステムであって、
少なくとも1つのコンピューティングノードと、複数のストレージノードと、前記複数のストレージノードを管理するために使用される複数のルートサーバと、を含み、
前記少なくとも1つのコンピューティングノードの任意のコンピューティングノードは、ターゲット論理ボリュームに対してトリガされたマウント要求を、前記複数のストレージノードの任意のストレージノードに送信することと、前記任意のストレージノードによって送信された前記ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を受信することと、前記ターゲット論理ボリュームのデータ状態を復元するために、前記ログセグメントおよび前記チェックポイントの前記格納場所情報に従って、前記ログセグメントおよび前記チェックポイントのログメタデータを読み取ることと、前記ターゲット論理ボリュームの前記データ状態に基づいて、データアクセス処理を実行することと、を行うように構成されており、前記ターゲット論理ボリュームが、前記複数のストレージノード内のストレージリソースの少なくとも一部に対応しており、
前記任意のストレージノードは、前記ターゲット論理ボリュームに対応する前記ログセグメントおよび前記チェックポイントの前記格納場所情報を取得することと、前記ログセグメントおよび前記チェックポイントの前記格納場所情報を、前記任意のコンピューティングノードに送信することと、を行うように構成されている、ファイルシステム。
【請求項18】
ファイルシステムのデータにアクセスするための方法であって、前記ファイルシステムは、少なくとも1つのコンピューティングノードおよび複数のストレージノードを含み、前記方法は、
前記コンピューティングノード内のデータアクセスプロセスによってトリガされたマウント操作に応答して、前記コンピューティングノード内のファイルシステムアクセスプロセスによって、ターゲット論理ボリュームのマウント要求を、任意のストレージノード内の論理ボリュームサービスプロセスに送信することであって、前記ターゲット論理ボリュームが、前記複数のストレージノードのストレージリソースの少なくとも一部に対応する、送信することと、
前記ファイルシステムアクセスプロセスによって、前記論理ボリュームサービスプロセスによって送信された前記ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を受信することと、
前記ターゲット論理ボリュームのデータ状態を復元するために、前記ファイルシステムアクセスプロセスによって、前記ログセグメントおよび前記チェックポイントの前記格納場所情報に従って、前記ログセグメントおよび前記チェックポイントのログメタデータを読み取ることと、
前記ファイルシステムアクセスプロセスによって、前記ターゲット論理ボリュームの前記データ状態に基づいて、データアクセス処理を実行することと、を含む、方法。
【請求項19】
前記データアクセスプロセスは、データ書き込みプロセスであり、前記コンピューティングノード内のファイルシステムアクセスプロセスによって、前記コンピューティングノード内の前記データアクセスプロセスによってトリガされた前記マウント操作に応答して、前記ターゲット論理ボリュームの前記マウント要求を、前記任意のストレージノード内の前記論理ボリュームサービスプロセスに送信することは、
前記ファイルシステムアクセスプロセスが、前記データ書き込みプロセスによってトリガされたマウント操作に応答して、前記論理ボリュームサービスプロセスに第1のマウント要求を送信することであって、前記第1のマウント要求は、前記ターゲット論理ボリュームの識別子と、ユーザ情報と、読み取り/書き込みマウントモードの識別子と、を含む、送信することを含み、
前記ファイルシステムアクセスプロセスによって、前記論理ボリュームサービスプロセスによって送信された前記ターゲット論理ボリュームに対応する前記ログセグメントおよびチェックポイントの前記格納場所情報を受信することが、
前記ファイルシステムアクセスプロセスによって、前記ユーザ情報が前記ターゲット論理ボリュームのユーザ権限検証に合格したと判定し、前記ターゲット論理ボリュームが、現在、前記読み取り/書き込みマウントモードでマウントされていないと判定した後、前記論理ボリュームサービスプロセスによって送信された前記ターゲット論理ボリュームに対応する前記ログセグメントおよびチェックポイントの前記格納場所情報を受信することを含む、請求項18に記載の方法。
【請求項20】
前記ファイルシステムアクセスプロセスによって、前記ターゲット論理ボリュームの前記データ状態に基づいて、前記データアクセス処理を実行することは、
前記ファイルシステムアクセスプロセスによって、前記データ書き込みプロセスによってトリガされたファイル準備書き込み操作に応答して、メタデータのみを含む第1のログを生成することであって、前記第1のログは、現時点での最後のログシリアル番号iがインクリメントされた後のログシリアル番号i+1と、前記ファイル準備書き込み
操作に対応するファイル情報と、を含む、生成することと、
前記ファイルシステムアクセスプロセスによって、前記ターゲット論理ボリュームに対応する最後のログセグメントが位置する第1のデータチャンクと、前記論理ボリュームサービスプロセスおよびルートサーバを通じて、前記第1のデータチャンクに対応する第1のデータチャンクサービスプロセスと、を判定することであって、前記ルートサーバが、各ストレージノード内のデータチャンクサービスプロセスを管理するように構成されている、判定することと、
前記ファイルシステムアクセスプロセスによって、前記第1のログを前記第1のデータチャンクに追加するように要求するために、かつ前記第1のデータチャンクサービスプロセスに前記第1のログをキャッシュするように要求するために、ログ保存要求を、前記第1のデータチャンクサービスプロセスに送信することと、を含む、請求項19に記載の方法。
【請求項21】
前記ファイルシステムアクセスプロセスによって、前記ターゲット論理ボリュームに対応する前記最後のログセグメントが位置する前記第1のデータチャンクと、前記論理ボリュームサービスプロセスおよび前記ルートサーバを通じて、前記第1のデータチャンクに対応する前記第1のデータチャンクサービスプロセスと、を判定することは、
前記ファイルシステムアクセスプロセスによって、前記ターゲット論理ボリュームに対応する前記最後のログセグメントが位置するデータチャンクをクエリするための第1のクエリ要求を、前記論理ボリュームサービスプロセスに送信することと、
前記ファイルシステムアクセスプロセスによって、前記論理ボリュームサービスプロセスによって送信された前記第1のデータチャンクの識別子を受信することであって、前記第1のデータチャンクの前記識別子は、ログセグメントの識別子と前記ターゲット論理ボリュームのデータチャンクの識別子との間の維持された対応関係に基づいて、前記論理ボリュームサービスプロセスによって判定される、受信することと、
前記ファイルシステムアクセスプロセスによって、前記第1のデータチャンクの前記識別子に対応するデータチャンクサービスプロセスをクエリするための第2のクエリ要求を、ルートサーバに送信することと、
前記ファイルシステムアクセスプロセスによって、前記ルートサーバによって送信された前記第1のデータチャンクサービスプロセスの識別子を受信することであって、前記第1のデータチャンクサービスプロセスの前記識別子は、データチャンクの識別子とデータチャンクサービスプロセスの識別子との間の維持された対応関係に基づいて、前記ルートサーバによって判定される、受信することと、を含む、請求項20に記載の方法。
【請求項22】
前記ファイルシステムアクセスプロセスによって、前記ターゲット論理ボリュームの前記データ状態に基づいて、前記データアクセス処理を実行することは、
前記ファイルシステムアクセスプロセスによって、前記データ書き込みプロセスによって送信されたデータ書き込み要求に応答して、第2のログを生成することであって、前記データ書き込み要求は、書き込まれたデータと、前記書き込まれたデータに対応するファイル情報と、を含み、前記第2のログは、メタデータと、前記書き込まれたデータと、を含み、前記メタデータは、前記現時点での最後のログシリアル番号i+1がインクリメントされた後のログシリアル番号i+2と、前記ファイル情報と、を含む、生成することと、
前記ファイルシステムアクセスプロセスによって、前記ターゲット論理ボリュームに対応する最後のログセグメントが位置する第2のデータチャンクと、前記論理ボリュームサービスプロセスおよび前記ルートサーバを通じて、前記第2のデータチャンクに対応する第2のデータチャンクサービスプロセスと、を判定することと、
前記ファイルシステムアクセスプロセスによって、前記第2のログを前記第2のデータチャンクに追加するように要求するために、かつ前記第2のデータチャンクサービスプロセスに前記第2のログにメタデータをキャッシュするように要求するために、ログ保存要求を、前記第2のデータチャンクサービスプロセスに送信することと、を含む、請求項20に記載の方法。
【請求項23】
新しいチェックポイントを生成することと、前記論理ボリュームサービスプロセスに新しいログセグメントを前記最後のログセグメントとして要求すること、をさらに含み、前記最後のログセグメントが閉鎖条件に到達した場合、前記ファイルシステムアクセスプロセスは、前記最後のログセグメントを閉鎖し、前記閉鎖条件は、事前設定された数に到達した前記最後のログセグメントに含まれるログの数、または事前設定された容量値に到達した前記最後のログセグメントに対応するデータの量である、請求項20に記載の方法。
【請求項24】
前記データアクセスプロセスは、データ読み取りプロセスであり、前記コンピューティングノード内の前記ファイルシステムアクセスプロセスによって、前記コンピューティングノード内の前記データアクセスプロセスによってトリガされた前記マウント操作に応答して、前記ターゲット論理ボリュームの前記マウント要求を、前記任意のストレージノード内の前記論理ボリュームサービスプロセスに送信することは、
前記ファイルシステムアクセスプロセスによって、前記データ読み取りプロセスによってトリガされたマウント操作に応答して、前記論理ボリュームサービスプロセスに、第2のマウント要求を送信することであって、前記第2のマウント要求は、前記ターゲット論理ボリュームの識別子と、ユーザ情報と、読み取り専用マウントモードの識別子と、を含む、送信することを含み、
前記ファイルシステムアクセスプロセスによって、前記論理ボリュームサービスプロセスによって送信された前記ターゲット論理ボリュームに対応する前記ログセグメントおよび前記チェックポイントの前記格納場所情報を受信することは、
前記ユーザ情報が前記ターゲット論理ボリュームのユーザ権限検証に合格したと判定した後、前記ファイルシステムアクセスプロセスによって、前記論理ボリュームサービスプロセスによって送信された前記ターゲット論理ボリュームに対応する前記ログセグメントおよび前記チェックポイントの前記格納場所情報を受信することを含む、請求項18に記載の方法。
【請求項25】
前記ファイルシステムアクセスプロセスによって、前記ターゲット論理ボリュームの前記データ状態に基づいて、前記データアクセス処理を実行することは、
前記ファイルシステムアクセスプロセスは、データ読み取りプロセスによって以前に読み取られたログシリアル番号j、前記ログシリアル番号jに対応する第3のデータチャンク、および第3のストレージノードに基づいて、前記データ読み取りプロセスによってトリガされたファイル準備読み取り操作に応答して、前記ログシリアル番号jの後にキャッシュされたログ(複数可)のメタデータを取得するために、データ同期要求を、第3のデータチャンクサービスプロセスに送信し、
前記ファイルシステムアクセスプロセスが、前記第3のストレージノードから前記ログシリアル番号jの後にキャッシュされた前記ログ(複数可)の前記メタデータおよび表示情報を受信することであって、前記キャッシュされたログに対応するログシリアル番号は、j+1~j+mであり、前記表示情報は、前記ログシリアル番号j+mに対応するログセグメントが閉鎖されたかどうかを示すために使用される、受信することと、
前記ファイルシステムアクセスプロセスが、前記ログシリアル番号jの後にキャッシュされた前記ログ(複数可)の前記メタデータおよび前記表示情報に従って、前記ターゲット論理ボリュームの前記データ状態を更新することと、を含む、請求項24に記載の方法。
【請求項26】
前記ファイルシステムアクセスプロセスが、前記ログシリアル番号jの後にキャッシュされた前記ログ(複数可)の前記メタデータおよび前記表示情報に従って、前記ターゲット論理ボリュームの前記データ状態を更新することは、
前記ファイルシステムアクセスプロセスが、前記ログシリアル番号j+mに対応するログセグメントが閉鎖していないことを前記表示情報が示している場合、前記ログシリアル番号j+1~j+mを有するキャッシュされたログのメタデータに従って、前記ターゲット論理ボリュームの前記データ状態を更新することを含む、請求項25に記載の方法。
【請求項27】
前記ファイルシステムアクセスプロセスが、前記ログシリアル番号jの後にキャッシュされた前記ログ(複数可)の前記メタデータおよび前記表示情報に従って、前記ターゲット論理ボリュームの前記データ状態を更新することは、
前記表示情報が、前記ログシリアル番号j+mに対応するログセグメントが閉鎖されたことを示している場合、前記ファイルシステムアクセスプロセスが、ターゲットストレージノードおよびルートサーバを通じて、前記ログシリアル番号j+mの後にキャッシュされたログ(複数可)を格納するそれぞれの第4のデータチャンク(複数可)と、前記第4のデータチャンク(複数可)に対応するそれぞれの第4のストレージノード(複数可)と、を判定することと、
前記ファイルシステムアクセスプロセスが、前記ログシリアル番号j+mの後に前記キャッシュされたログ(複数可)のメタデータを取得するために、データ同期要求を前記第4のストレージノード(複数可)に送信することと、
前記ファイルシステムアクセスプロセスが、ログシリアル番号j+1~j+mを有する前記キャッシュされたログ(複数可)の前記メタデータ、および前記ログシリアル番号j+mの後の前記キャッシュされたログのメタデータに従って、前記ターゲット論理ボリュームの前記データ状態を更新することと、を含む、請求項25に記載の方法。
【請求項28】
前記ファイルシステムアクセスプロセスによって、前記ターゲット論理ボリュームの前記データ状態に基づいて、前記データアクセス処理を実行することは、
前記ファイルシステムアクセスプロセスが、前記データ読み取りプロセスによって送信されたデータ読み取り要求を受信することであって、前記データ読み取り要求が、読み取られるファイル情報を含む、受信することと、
前記ファイルシステムアクセスプロセスが、第5のデータチャンクサービスプロセスを通じて、第5のデータチャンクからデータを読み取るために、前記論理ボリュームサービスプロセスおよびルートサーバを通じて読み取られる前記ファイル情報に対応する前記第5のデータチャンクサービスプロセスおよび前記第5のデータチャンクを判定することを含む、請求項25に記載の方法。
【請求項29】
ファイルシステムのデータにアクセスするための方法であって、前記ファイルシステムは、少なくとも1つのコンピューティングノードと、複数のストレージノードと、を含み、前記方法は、
ストレージノード内の論理ボリュームサービスプロセスによって、コンピューティングノード内のファイルシステムアクセスプロセスによって送信されたターゲット論理ボリュームに対応するマウント要求を受信することと、
前記ファイルシステムアクセスプロセスに、データアクセス処理の前記ターゲット論理ボリュームのデータ状態を復元させるために、前記論理ボリュームサービスプロセスによって、前記ターゲット論理ボリュームに対応する第1のログセグメントおよびチェックポイントの格納場所情報を、前記第1のログセグメントおよび前記チェックポイントの前記格納場所情報に基づいて、前記ファイルシステムアクセスプロセスに送信することであって、前記ターゲット論理ボリュームは、前記複数のストレージノード内のストレージリソースの少なくとも一部に対応し、前記ストレージノードは、前記複数のストレージノードのうちのいずれか1つである、送信することと、を含む、方法。
【請求項30】
前記ストレージノード内の前記論理ボリュームサービスプロセスによって、前記コンピューティングノード内の前記ファイルシステムアクセスプロセスによって送信された前記ターゲット論理ボリュームに対応する前記マウント要求を受信することは、
前記論理ボリュームサービスプロセスによって、前記ファイルシステムアクセスプロセスによって送信された第1のマウント要求を受信することであって、前記第1のマウント要求は、読み取り/書き込みマウントモードの識別子と、前記ターゲット論理ボリュームの識別子と、ユーザ情報と、を含む、受信することを含み、
前記論理ボリュームサービスプロセスによって、前記ターゲット論理ボリュームに対応する前記第1のログセグメントおよび前記チェックポイントの格納場所情報を、前記ファイルシステムアクセスプロセスに送信することは、
前記ユーザ情報が前記ターゲット論理ボリュームのユーザ権限検証に合格したと判定し、前記ターゲット論理ボリュームが、現在、読み取り/書き込みマウントモードでマウントされていないと判定した後、前記論理ボリュームサービスプロセスによって、前記ターゲット論理ボリュームに対応する前記第1のログセグメントおよび前記チェックポイントの格納場所情報を、前記ファイルシステムアクセスプロセスに送信することを含む、請求項29に記載の方法。
【請求項31】
前記ストレージノード内の前記論理ボリュームサービスプロセスによって、前記コンピューティングノード内の前記ファイルシステムアクセスプロセスによって送信された前記ターゲット論理ボリュームに対応する前記マウント要求を受信することは、
前記論理ボリュームサービスプロセスによって、前記ファイルシステムアクセスプロセスによって送信された第2のマウント要求を受信することであって、前記第2のマウント要求は、読み取り専用マウントモードの識別子と、前記ターゲット論理ボリュームの識別子と、ユーザ情報と、を含む、受信することを含み、
前記論理ボリュームサービスプロセスによって、前記ターゲット論理ボリュームに対応する前記第1のログセグメントおよび前記チェックポイントの格納場所情報を、前記ファイルシステムアクセスプロセスに送信することは、
前記ユーザ情報が前記ターゲット論理ボリュームのユーザ権限検証に合格したと判定した後、前記論理ボリュームサービスプロセスによって、前記ターゲット論理ボリュームに対応する前記第1のログセグメントおよび前記チェックポイントの格納場所情報を、前記ファイルシステムアクセスプロセスに送信することを含む、請求項29に記載の方法。
【請求項32】
前記論理ボリュームサービスプロセスによって、前記ファイルシステムアクセスプロセスによって送信されたクエリ要求を受信することであって、前記クエリ要求は、前記ターゲット論理ボリュームに対応するターゲットログセグメントが位置するデータチャンクをクエリするために使用される、受信することと、
前記論理ボリュームサービスプロセスによって、ログセグメントの識別子とデータチャンクの識別子との間の維持された対応関係に従って、前記ターゲットログセグメントが位置する前記データチャンクの識別子を判定することと、
前記論理ボリュームサービスプロセスによって、前記データチャンクの前記識別子を、前記ファイルシステムアクセスプロセスに送信することと、をさらに含む、請求項29に記載の方法。
【請求項33】
前記論理ボリュームサービスプロセスによって、前記ストレージノード内のガベージコレクションサービスプロセスによって送信された前記ターゲット論理ボリュームに対応する第3のマウント要求を受信することと、
前記論理ボリュームサービスプロセスによって、前記ターゲット論理ボリュームに対応する第2のログセグメントおよびチェックポイントの格納場所情報を、前記ガベージコレクションサービスプロセスに送信して、前記ガベージコレクションサービスプロセスが、前記第2のログセグメントおよびチェックポイントからK個のログセグメントおよびチェックポイントを選択できるようにして、対応するデータ状態を復元し、前記K個のログセグメント内のM個のログセグメントのそれぞれのガベージ比率が事前設定された閾値に到達した、ただしK≧M≧1、と判定したことに応答して、M個のログセグメントが位置する元のデータチャンクを再要求することと、をさらに含む、請求項29~32のいずれか一項に記載の方法。
【請求項34】
前記論理ボリュームサービスプロセスによって、前記ガベージコレクションサービスプロセスによって送信されたログセグメント更新通知を受信することであって、前記ログセグメント更新通知が、M個のログセグメントと、前記M個のログセグメントが位置する新しいデータチャンクとの間の対応関係を含む、受信することと、
前記論理ボリュームサービスプロセスによって、元の対応関係を、前記M個のログセグメントと前記データチャンクとの間の前記対応関係に更新することと、をさらに含む、請求項33に記載の方法。
【請求項35】
ファイルシステムであって、
少なくとも1つのコンピューティングノードと、複数のストレージノードと、前記複数のストレージノード内のデータチャンクサービスプロセスを管理するために使用される複数のルートサーバと、を含み、
各コンピューティングノードは、データアクセスプロセスと、ファイルシステムアクセスプロセスとを有し、
各ストレージノードは、論理ボリュームサービスプロセスおよびデータチャンクサービスプロセスを有し、前記データチャンクサービスプロセスが、対応するストレージノードに格納されている各データチャンクの読み取りおよび書き込み管理に使用され、
前記ファイルシステムアクセスプロセスは、対応するコンピューティングノード内の前記データアクセスプロセスによってトリガされたマウント操作に応答することと、ターゲット論理ボリュームのマウント要求を、任意のストレージノードの前記論理ボリュームサービスプロセスに送信することと、前記論理ボリュームサービスプロセスによって送信された前記ターゲット論理ボリュームに対応する第1のログセグメントおよびチェックポイントの格納場所情報を受信することと、前記ターゲット論理ボリュームのデータ状態を復元するために、前記第1のログセグメントおよび前記チェックポイントの前記格納場所情報に基づいて、前記第1のログセグメントおよび前記チェックポイントのメタデータを読み取ることと、前記ターゲット論理ボリュームの前記データ状態に基づいて、データアクセス処理を実行することと、を行うように構成されており、前記第1のログセグメントのリストが、前記ターゲット論理ボリュームのメタデータに対応しており、前記ターゲット論理ボリュームが、前記複数のストレージノード内のストレージリソースの少なくとも一部に対応しており、
前記論理ボリュームサービスプロセスは、前記ファイルシステムアクセスプロセスによって送信された前記マウント要求を受信することと、前記ターゲット論理ボリュームに対応する前記第1のログセグメントおよび前記チェックポイントの前記格納場所情報を、前記ファイルシステムアクセスプロセスに送信することと、を行うように構成されている、ファイルシステム。
【請求項36】
各ストレージノードは、ガベージコレクションサービスプロセスをさらに含み、
前記論理ボリュームサービスプロセスはさらに、前記対応するストレージノード内の前記ガベージコレクションサービスプロセスによって送信された前記ターゲット論理ボリュームに対応するマウント要求を受信することと、前記ターゲット論理ボリュームに対応する第2のログセグメントおよびチェックポイントの格納場所情報を、前記ガベージコレクションサービスプロセスに送信することと、前記ガベージコレクションサービスプロセスから、M個のログセグメントと、前記M個のログセグメントが位置する新しいデータチャンクとの間の対応関係を含むログセグメント更新通知を受信することと、前記M個のログセグメントと前記データチャンクとの間の前記対応関係によって、元の対応関係を更新することと、を行うように構成されており、
前記ガベージコレクションサービスプロセスは、対応するデータ状態を復元するために、前記第2のログセグメントおよびチェックポイントからK個のログセグメントおよびチェックポイントを選択することと、前記K個のログセグメント内の前記M個のログセグメントのそれぞれのガベージ比率が事前設定された閾値に到達したと判定し、クリア処理の後、前記M個のログセグメントを前記新しいデータチャンクに書き込むように、ルートサーバに前記新しいデータチャンクを要求することに応答して、前記M個のログセグメント内の無効なログをクリアすることと、前記M個のログセグメントが位置する元のデータチャンクに対応するデータチャンクサービスプロセスに、リサイクル通知を送信し、その結果、前記データチャンクサービスプロセスが、前記元のデータチャンクを再要求し、ただしK≧M≧1であり、前記ログセグメント更新通知を、前記論理ボリュームサービスプロセスに送信するようにすることと、を行うように構成されている、請求項35に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2018年6月1日に出願され、「File System Data Access Method and File System」と題された中国特許出願第2018/10558071.1号の優先権を主張するものであり、その全体が参照により本明細書に組み込まれる。
【0002】
本出願は、インターネット技術の技術分野に関し、具体的には、ファイルシステムデータアクセス方法およびファイルシステムに関する。
【背景技術】
【0003】
コンピュータは、ファイルシステムを通じてデータを管理し、格納する。情報爆発の時代には、膨大な量のデータのストレージ容量、データバックアップ、データセキュリティなどのニーズを満たすために、様々なタイプのネットワークサービスによって生成されるデータの量が指数関数的に増加している。これにより、分散ファイルシステムが登場した。簡単に言えば、分散ファイルシステム、多くのストレージノードで構成されるファイルシステムネットワークであり、これは、特定の場所に固定されている従来のファイルシステムを、任意の数の場所にある複数のファイルシステムに拡張する。したがって、分散ファイルシステムが使用されるとき、ユーザは、どのストレージノードにデータが格納されるか、またはどのストレージノードからデータが取得されるかを気にする必要はなく、ローカルファイルシステムが使用されているかのようにデータを管理および格納するだけで済む。
【0004】
場合によっては、ユーザは、複数のマシン(ストレージノードと比較してコンピューティングノードと呼ぶことができる)がファイルシステムを共有することを望んでいる。一般的なシナリオでは、あるマシンが、データを書き込み、ユーザのアクセス要求を処理している間に、他のマシンは、共有ファイルシステムを通じて、データ分析またはバックアップなどのために、リアルタイムで最新の書き込まれたデータを読み取ることができる。
【0005】
コンピュータネットワーク技術の発達に伴い、ネットワーク技術の用途の数が増え、ネットワークベースの共有ファイルシステムも広く利用されている。現在、ファイルシステムの共有は、ネットワークファイルシステム(NFS)および共通インターネットファイルシステム(CIFS)などの技術を採用することによって実施されている。
【0006】
しかしながら、一般的に使用されるNFS/CIFSネットワーク共有ファイルシステムには、性能とスケーラビリティの面でボトルネックがあり、これらは、主に次のように反映される。複数のクライアント(コンピューティングノード内のアプリケーションクライアント)による読み取りデータと書き込みデータの両方のアクセス整合性をサポートするために、通常、独立した調整サーバがファイルシステムに展開されて、複雑なロック競合メカニズムを提供することによって、すべてのアクセス要求を調整する。したがって、任意のクライアントは、データの読み取りおよび書き込みを行う前に、調整サーバにロックを要求する必要がある。データアクセスの量が増えると、調整サーバがボトルネックを引き起こし、システムのスケーラビリティが低下する可能性がある。さらに、複数のクライアントが同じファイルデータを読み書きする必要があるとき、ロックの競合が発生する。そのため、ロックを取得していないクライアントがデータの読み取りおよび書き込みを行う前に、クライアントは、別のクライアントがデータの読み取りおよび書き込みを完了するのを待つ必要があり、これによって、データの読み取りおよび書き込みの遅延が増加し、すなわち、深刻な読み取りと書き込みの競合が発生する。
【発明の概要】
【発明が解決しようとする課題】
【0007】
上記を考慮して、本発明の実施形態は、ファイルシステムに関連付けられたデータアクセスの性能を改善するためのファイルシステムデータアクセス方法およびファイルシステムを提供する。
【課題を解決するための手段】
【0008】
第1の態様では、本発明の実施形態は、コンピューティングノードによって実行されるファイルシステムのデータにアクセスするための方法を提供する。ファイルシステムは、少なくとも1つのコンピューティングノードと、複数のストレージノードと、を含む。本方法は以下を含む。
コンピューティングノードによって、ターゲット論理ボリュームに対してトリガされたマウント要求を、ターゲットストレージノードに送信することであって、ターゲットストレージノードは、複数のストレージノードのうちのいずれか1つであり、ターゲット論理ボリュームは、複数のストレージノードの少なくとも一部のストレージリソースに対応している、送信することと、
コンピューティングノードによって、ターゲットストレージノードによって送信されたターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を受信することと、
ターゲット論理ボリュームのデータ状態を復元するために、コンピューティングノードによって、ログセグメントおよびチェックポイントの格納場所情報に従って、ログセグメントおよびチェックポイントのログメタデータを読み取ることと、
コンピューティングノードによって、ターゲット論理ボリュームのデータ状態に基づいて、データアクセス処理を実行することと、を含む。
【0009】
第2の態様では、本発明の実施形態は、ファイルシステムのデータにアクセスするための方法を提供し、これは、コンピューティングノード内のファイルシステムアクセスプロセスによって具体的に実行される。ファイルシステムは、少なくとも1つのコンピューティングノードと、複数のストレージノードと、を含む。本方法は以下を含む。
ターゲット論理ボリュームについてのコンピューティングノード内のデータアクセスプロセスによってトリガされたマウント要求に応答して、コンピューティングノード内のファイルシステムアクセスプロセスによって、ストレージノード内の論理ボリュームサービスプロセスを通じて、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を取得することと、
ターゲット論理ボリュームのデータ状態を復元するために、ファイルシステムアクセスプロセスによって、ログセグメントおよびチェックポイントの格納場所情報に従って、ログセグメントおよびチェックポイントのログメタデータを読み取ることと、
ファイルシステムアクセスプロセスによって、ターゲット論理ボリュームのデータ状態に基づいて、データアクセス処理を実行することと、を含む。
【0010】
第3の態様では、本発明の実施形態は、プロセッサと、メモリと、を含むコンピューティングノードを提供し、メモリは、1つ以上のコンピュータ命令を格納するように構成されており、1つ以上のコンピュータ命令は、プロセッサによって実行されると、第1の態様または第2の態様で、ファイルシステムデータアクセス方法を実施する。そのような電子デバイスは、他のデバイスまたは通信ネットワークと通信するように構成された通信インターフェースも含み得る。
【0011】
本発明の実施形態は、コンピュータによって実行されると、コンピュータに、第1の態様または第2の態様で、ファイルシステムデータアクセス方法を実施させるコンピュータプログラムを格納するように構成されたコンピュータ記憶媒体を提供する。
【0012】
第4の態様では、本発明の実施形態は、ストレージノードによって実行されるファイルシステムのデータにアクセスするための方法を提供する。ファイルシステムは、少なくとも1つのコンピューティングノードと、複数のストレージノードと、を含む。本方法は、以下を含む。
ターゲットストレージノードによって、コンピューティングノードによって送信されたターゲット論理ボリュームに対応するマウント要求を受信することであって、ターゲットストレージノードは、複数のストレージノードのうちのいずれか1つである、受信することと、
ターゲットストレージノードによって、コンピューティングノードが、ログセグメントおよびチェックポイントの格納場所情報に基づいて、データアクセス処理のために使用されるターゲット論理ボリュームのデータ状態を復元するために、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を、コンピューティングノードに送信することであって、ターゲット論理ボリュームは、複数のストレージノード内のストレージリソースの少なくとも一部に対応する、送信することと、を含む。
【0013】
第5の態様では、本発明の実施形態は、ファイルシステムのデータにアクセスするための方法を提供し、これは、ストレージノード内の論理ボリュームサービスプロセスによって実行される。ファイルシステムは、少なくとも1つのコンピューティングノードと、複数のストレージノードと、を含む。本方法は以下を含む。
ストレージノード内の論理ボリュームサービスプロセスによって、コンピューティングノード内のファイルシステムアクセスプロセスによって送信されたターゲット論理ボリュームに対応するマウント要求を受信することと、
ファイルシステムアクセスプロセスに、第1のログセグメントおよびチェックポイントの格納場所情報に基づいて、データアクセス処理のターゲット論理ボリュームのデータ状態を復元させるために、論理ボリュームサービスプロセスによって、ターゲット論理ボリュームに対応する第1のログセグメントおよびチェックポイントの格納場所情報を、ファイルシステムアクセスプロセスに送信することであって、ターゲット論理ボリュームは、複数のストレージノード内のストレージリソースの少なくとも一部に対応し、ストレージノードは、複数のストレージノードのうちのいずれか1つである、送信することと、を含む。
【0014】
第6の態様では、本発明の実施形態は、プロセッサと、メモリと、を含むストレージノードを提供し、メモリは、1つ以上のコンピュータ命令を格納するように構成されており、1つ以上のコンピュータ命令は、プロセッサによって実行されると、第4の態様または第5の態様で、ファイルシステムデータアクセス方法を実施する。そのような電子デバイスは、他のデバイスまたは通信ネットワークと通信するように構成された通信インターフェースも含み得る。
【0015】
本発明の実施形態は、コンピュータによって実行されると、コンピュータに、第4の態様または第5の態様でファイルシステムデータアクセス方法を実施させるコンピュータプログラムを格納するように構成されたコンピュータ記憶媒体を提供する。
【0016】
第7の態様では、本発明の実施形態は、ファイルシステムを提供し、ファイルシステムは、
少なくとも1つのコンピューティングノードと、複数のストレージノードと、複数のストレージノードを管理するように構成された複数のルートサーバと、を含み、
少なくとも1つのコンピューティングノードの任意のコンピューティングノードは、ターゲット論理ボリュームに対してトリガされたマウント要求を、複数のストレージノードの任意のストレージノードに送信することと、任意のストレージノードからのターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を受信することと、ターゲット論理ボリュームのデータ状態を復元するために、ログセグメントおよびチェックポイントの格納場所情報に従って、ログセグメントおよびチェックポイントのログメタデータを読み取ることと、ターゲット論理ボリュームのデータ状態に基づいて、データアクセス処理を実行することと、を行うように構成されており、ターゲット論理ボリュームが、複数のストレージノード内のストレージリソースの少なくとも一部に対応しており、
任意のストレージノードは、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を取得することと、ログセグメントおよびチェックポイントの格納場所情報を、任意のコンピューティングノードに送信することと、を行うように構成されている。
【0017】
第8の態様では、本発明の実施形態は、ファイルシステムを提供し、ファイルシステムは、
少なくとも1つのコンピューティングノードと、複数のストレージノードと、複数のストレージノード内のデータチャンクサービスを管理するために構成された複数のルートサーバと、を含み、
各コンピューティングノードは、データアクセスプロセスと、ファイルシステムアクセスプロセスとを有し、
各ストレージノードは、論理ボリュームサービスプロセスおよびデータチャンクサービスプロセスを有し、データチャンクサービスプロセスが、それぞれのストレージノードに格納されている各データチャンクの読み取りおよび書き込み管理を実行するように構成されており、
対応するコンピューティングノード内のデータアクセスプロセスによってトリガされたマウント操作に応答して、ファイルシステムアクセスプロセスは、ターゲット論理ボリュームのマウント要求を、ターゲットストレージノード内の論理ボリュームサービスプロセスに送信し、論理ボリュームサービスプロセスから、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの第1の格納場所情報を受信し、ログセグメントおよびチェックポイントの第1の格納場所情報に従って、ログセグメントおよびチェックポイントのログメタデータを読み取って、ターゲット論理ボリュームのデータ状態を復元し、ターゲット論理ボリュームのデータ状態に基づいて、データアクセス処理を実行し、ターゲット論理ボリュームが、複数のストレージノード内のストレージリソースの少なくとも一部に対応しており、
論理ボリュームサービスプロセスは、ファイルシステムアクセスプロセスによって送信されたマウント要求を受信することと、ターゲット論理ボリュームに対応する第1のログセグメントおよびチェックポイントの格納場所情報を、ファイルシステムアクセスプロセスに送信することと、を行うように構成されている。
【0018】
本発明の実施形態によって提供されるファイルシステムデータアクセス方法およびファイルシステムは、少なくとも1つのコンピューティングノードと、複数のストレージノードと、複数のストレージノードを管理するために使用される複数のルートサーバと、を含み、データは、ファイルシステムにデータチャンクの単位で格納される。各ストレージノードは、それぞれのストレージノードに格納されている各データチャンクに対して読み取りおよび書き込み管理を実行する。複数のコンピューティングノード内の異なるサービスアプリケーション、または同じコンピューティングノード内の異なるサービスアプリケーションは、複数のストレージノードのリソースを共有することができる。言い換えれば、異なるサービスアプリケーションは、複数のストレージノードに基づいて、対応する論理ボリュームを構築することができ、すなわち、各論理ボリュームは、複数のストレージノードのリソースの少なくとも一部に対応する。加えて、各ストレージノードは、共有ファイルシステムの複数の論理ボリュームのログ情報を維持する。例えば、ログ情報は、各ストレージノードに論理ボリュームサービスプロセスを展開することによって維持することができる。このファイルシステムに基づいて、任意のコンピューティングノード内の任意のサービスアプリケーションがデータにアクセスする必要があり、特定の論理ボリューム(ターゲット論理ボリュームと呼ばれる)のマウント要求を任意のストレージノード(ターゲットストレージノードと呼ばれる)にトリガするとき、ターゲットストレージノードは、ターゲット論理ボリュームに対応するログセグメントリストおよびチェックポイントリストを取得する。ログセグメントリストは、ターゲット論理ボリュームの様々なログのメタデータを格納する。したがって、コンピューティングノードは、取得されたログセグメントリストおよびチェックポイントリストに基づいて、メモリ内のターゲット論理ボリュームの最新のデータ状態を復元することができる。そのため、コンピューティングノードは、ターゲット論理ボリュームの最新のデータ状態に基づいて、データ書き込みまたはデータ読み取りなどのデータアクセス処理を実行することができる。上述のコンピューティングノードおよびストレージノードで構成される分散ファイルシステムにおいて、複数のコンピューティングノードがターゲット論理ボリュームへのアクセスを実行するとき(例えば、複数のコンピューティングノードがターゲット論理ボリュームに対応するデータの読み取りおよび書き込みを行う必要があるとき)、複数のコンピューティングノードは、ストレージノードで維持されているターゲット論理ボリュームのログ情報に基づいて、良好な読み取りと書き込みの整合性を維持することができ、読み取りと書き込みを同期して実行することができるため、読み取りと書き込みの競合を回避することができる。
【図面の簡単な説明】
【0019】
本発明の実施形態または既存の技術の技術的解決策をより明確に説明するために、実施形態または既存の技術を説明するために必要な図面を本明細書で簡単に説明する。明らかに、本明細書に記載の図面は、本発明のいくつかの実施形態を表す。当業者は、いかなる創造的な努力もすることなく、これらの図面に基づいて他の図面を取得することができる。
【0020】
【
図1】本発明の実施形態によって提供されるファイルシステムのアーキテクチャ図である。
【
図2】本発明の実施形態によって提供される別のファイルシステムのアーキテクチャ図である。
【
図3】
図2に示されるファイルシステムに対応する論理的な階層化アーキテクチャ図である。
【
図4a】本発明の実施形態に係るファイルシステムのデータにアクセスするための方法のフローチャートである。
【
図4b】本発明の実施形態によって提供される別のファイルシステムデータアクセス方法のフローチャートである。
【
図5a】
図4aに示される実施形態におけるステップ404aの実装プロセスのフローチャートである。
【
図5b】
図4bに示される実施形態におけるステップ404bの実装プロセスのフローチャートである。
【
図6a】本発明の実施形態に係るファイルシステムのデータにアクセスするためのさらに別の方法のフローチャートである。
【
図6b】本発明の実施形態に係るファイルシステムのデータにアクセスするための別の方法のフローチャートである。
【
図7a】
図6aに示される実施形態におけるステップ604aの実装プロセスのフローチャートである。
【
図7b】
図6bに示される実施形態におけるステップ604bの実装プロセスのフローチャートである。
【
図8a】本発明の実施形態に係るファイルシステムのデータにアクセスするためのさらに別の方法のフローチャートである。
【
図8b】本発明の実施形態に係るファイルシステムのデータにアクセスするための別の方法のフローチャートである。
【
図9】本発明の実施形態によって提供されるファイルシステムデータアクセス装置の概略構造図である。
【
図10】
図9に示される実施形態によって提供されるファイルシステムデータアクセス装置に対応するコンピューティングノードの概略構造図である。
【
図11】本発明の実施形態によって提供される別のファイルシステムデータアクセス装置の概略構造図である。
【
図12】
図11に示される実施形態によって提供されるファイルシステムデータアクセス装置に対応するストレージノードの概略構造図である。
【発明を実施するための形態】
【0021】
本発明の実施形態の目的、技術的解決策、および利点をより明確にするために、本発明の実施形態における技術的解決策を、本発明の実施形態における添付図面と併せて、明確および完全に説明する。明らかに、記載されている実施形態は、本開示の実施形態のいくつかを表しているにすぎず、すべてを表しているわけではない。本発明のこれらの実施形態に基づいて、当業者によって独創的な努力なしに取得される他のすべての実施形態は、本発明の保護の範囲内にあるものとする。
【0022】
本発明の実施形態で使用される用語は、特定の実施形態を説明する目的のためだけであり、本発明を限定することを意図していない。本発明の実施形態および添付の特許請求の範囲で使用される「a」、「said」および「the」の単数形は、複数形も含むことを意図している。他の意味が文脈で明確に示されていない限り、「複数」は一般に少なくとも2つを含むが、少なくとも1つを含むことを除外するものではない。
【0023】
本文中で使用される「および/または」という用語は、関連するオブジェクトを説明する単なる関連関係であり、3つのタイプの関係が存在し得ることを意味することを理解されたい。例えば、Aおよび/またはBは、Aが単独で存在する、AとBの両方が存在する、Bが単独で存在するという3つのタイプの状況を意味する場合がある。加えて、本文中の記号「/」は、一般に、その前後の関連オブジェクトが「または」の関係にあることを表す。
【0024】
本発明の実施形態では、第1、第2、第3などの用語を使用してXXXを説明する場合があるが、これらのXXXは、これらの用語に限定されないことを理解されたい。これらの用語は、XXXを区別するためにのみ使用される。例えば、本発明の実施形態の範囲から逸脱することなく、第1のXXXは、第2のXXXと呼ばれてもよく、同様に、第2のXXXは、第1のXXXと呼ばれてもよい。
【0025】
文脈に応じて、本明細書で使用される「~の場合(if)」および「~の場合(in case)」という単語は、「~のとき(at the time when)」または「~のとき(when)」または「それを判定することに応答して」または「それを検出することに応答して」と解釈することができる。同様に、文脈に応じて、「判定する場合」または「(記述された状態またはイベントを)検出する場合」というフレーズは、「判定するとき」または「判定することに応答して」または「(記述された状態またはイベントを)検出するとき」」または「(記述された状態またはイベント)の検出に応答して」と解釈することができる。
【0026】
「含む(including)」、「含む(containing)」という用語、またはそれらの他の変形は、非排他的な包含をカバーすることを意図しており、その結果、一連の要素を含む製品またはシステムは、それらの要素だけでなく、明示的に列挙されていない他の要素を含むか、またはそのような製品またはシステムに固有の要素も含むことに留意されたい。それ以上の制限なしに、「~を含む」という文によって定義される要素は、そのような要素を含む製品またはシステム内の他の同一の要素の存在を排除するものではない。
【0027】
加えて、以下の方法の実施形態におけるステップシーケンスは単なる例であり、厳密に限定されない。
【0028】
図1は、本発明の実施形態によって提供されるファイルシステムのアーキテクチャ図である。ファイルシステムは、分散ファイルシステムである。
図1に示されるように、ファイルシステムは、少なくとも1つのコンピューティングノードと、複数のストレージノードと、複数のストレージノードを管理するように構成された複数のルートサーバ(RS、ルートサーバの略語)と、を含む。
【0029】
コンピューティングノードは、多くの場合、1つ以上のサービスアプリケーションが展開されているアプリケーションサーバに対応する。
【0030】
複数のストレージノードは、多くの場合、異なる地理的場所に展開されたストレージサーバに対応し、複数のコンピューティングノードが複数のストレージノードのストレージリソースを共有することができる。各ストレージノードでは、データは、チャンク単位で読み書きされ、各チャンクは、特定のサイズに事前設定されている。
【0031】
複数のコンピューティングノードによるファイルシステムの共有は、主に、ファイルシステムの複数のストレージノードによって提供されるストレージリソースに基づいて、異なるユーザが、それぞれのコンピューティングノード内のサービスアプリケーションの論理ボリュームを作成することができるという点で具体化される。論理ボリュームは、物理ファイルシステムに基づいて作成された論理ファイルシステムと見なすことができる。異なる論理ボリュームは、複数のストレージノード内の異なるストレージリソースに対応しており、すなわち、異なる論理ボリュームが異なるストレージリソースを占有する。通常、各論理ボリュームは、複数のストレージノード内のストレージリソースの一部に対応する。しかしながら、複数のストレージノードが特定のサービスアプリケーションによってのみ使用されているとき、そのようなサービスアプリケーションに対応する論理ボリュームは、複数のストレージノードのすべてのストレージリソースに対応することができる。したがって、各論理ボリュームは、複数のストレージノード内のストレージリソースの少なくとも一部に対応していると見なすことができる。
【0032】
複数のRSは、相互バックアップ関係にあり、格納されているコンテンツは同じである。格納されているコンテンツは、主に、データチャンク識別子とストレージノード識別子との間の対応関係である。言い換えると、各RSは、各ストレージノードに格納されているデータチャンクを認識している。実際のアプリケーションでは、ストレージノードごとに、そこで実行されているデータチャンクサービスプロセスが、それぞれのストレージノードの実際のデータ読み取りおよび書き込み処理を実行し、データチャンクサービスプロセスは、ストレージノードと1対1の対応を有する。したがって、ルートサーバは、データチャンク識別子とデータチャンクサービスプロセス識別子との間の対応関係を維持していると見なすこともできる。
【0033】
任意のルートサーバによる複数のストレージノードの管理は、データチャンク識別子とストレージノード識別子(複数可)/データチャンクサービスプロセス識別子(複数可)との間の対応関係の上述の維持に反映されるだけではなく、実際のアプリケーションでは、どのルートサーバでも、ファイルシステムのすべてのターゲットおよびファイルスペース、各ファイルのデータチャンクリストなどの情報を記録することができる。さらに、ストレージノードの分散およびスケジューリングも、各ストレージノードのストレージ負荷に応じて実行することができる。
【0034】
実際のアプリケーションでは、少なくとも1つのコンピューティングノードのいずれかのコンピューティングノード内の特定のサービスアプリケーションが、新しいサービスデータの書き込みまたはサービスデータの読み取りなど、データアクセスを実行する必要がある場合、対応する論理ボリューム(ターゲット論理ボリュームと呼ばれる)のデータアクセスプロセスをトリガするために、データアクセスプロセスがアクティブ化される。そのようなデータアクセスプロセスは、データ書き込みプロセスまたはデータ読み取りプロセスであり得る。
【0035】
この時点で、ターゲット論理ボリュームのデータにアクセスするプロセス中:
任意のコンピューティングノードは、ターゲット論理ボリュームに対してトリガされたマウント要求を、複数のストレージノードの任意のストレージノード(以下、ターゲットストレージノードと呼ぶ)に送信することと、ターゲットストレージノードによって送信されたターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を受信することと、ターゲット論理ボリュームのデータ状態を復元するために、ログセグメントおよびチェックポイントの格納場所情報に従って、ログセグメントおよびチェックポイントのログメタデータを読み取ることと、ターゲット論理ボリュームのデータ状態に基づいて、データアクセス処理を実行することと、を行うように構成されている。
【0036】
ターゲットストレージノードは、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を取得し、ログセグメントおよびチェックポイントの格納場所情報を、任意のコンピューティングノードに送信するように構成されている。
【0037】
ターゲット論理ボリュームは、複数のログセグメントおよびチェックポイントに対応し、ログセグメントおよびチェックポイントは対応関係を有する。例えば、チェックポイント(1000)は、ログセグメント[1-1000]の後に生成される。各ログセグメントは、複数のログを含む。ログは、データおよびメタデータで構成され、一部のログは、メタデータのみを含み得る。簡単に言うと、メタデータは、例えば、誰がどのファイルのデータに対していつ読み取り/書き込みアクセスを実行したかなど、ターゲット論理ボリュームに対応する様々なファイルに対して実行されたデータアクセスに関する関連情報を記録する。上述のデータアクセス関連情報に加えて、メタデータは、ログシリアル番号も含む。ログシリアル番号に基づいて、データの読み取りおよび書き込みの整合性を確実にすることができ、これについては、後続の実施形態で説明する。
【0038】
加えて、各ログセグメントは、ファイルシステムが異常なときに、チェックポイントに基づいてデータを復元するために使用されるチェックポイントに対応している。ログがログセグメントの形式で編成されているのは、ログに基づくファイルシステムの例外から迅速に復元するためである。
【0039】
本発明の実施形態では、複数のストレージノードを複数のサービスアプリケーションによって共有することができるので、任意のサービスアプリケーションについて、複数のストレージノードは、特定の区別をすることなく全体として見なされる。したがって、任意のコンピューティングノードが、その中の特定のサービスアプリケーションによるトリガに基づいて、対応するターゲット論理ボリュームのマウント要求を発行する必要があるとき、任意のコンピューティングノードは、任意のストレージノードにマウント要求を送信して、ターゲット論理ボリュームのマウントを要求することができる。これに基づいて、各ストレージノードは、各論理ボリュームに対応するそれぞれのログセグメントおよびそれぞれのチェックポイントの格納場所情報を維持し、格納場所情報は、各ログセグメントおよび各チェックポイントがどのデータチャンクに配置されるかを記述する。
【0040】
現在マウント要求を受信しているストレージノードが、高い負荷圧力または他の理由によりマウント要求に応答することができない場合、ストレージノードがマウント要求を他のストレージノードに転送して処理することができることは理解できる。
【0041】
ターゲットストレージノードは、前述のコンピューティングノードによって送信されたマウント要求を受信すると、マウント要求に含まれるターゲット論理ボリュームの識別子に従って、どの論理ボリュームのマウントが要求されているかを認識し、したがって、ローカルに維持されている各論理ボリュームのログセグメントおよびチェックポイントの格納場所情報の中から、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を取得し、コンピューティングノードに返す。次いで、コンピューティングノードは、ターゲット論理ボリュームのデータ状態を復元するために、ログセグメントおよびチェックポイントの取得された格納場所情報に従って、対応する格納場所から対応するログメタデータを読み取る。具体的には、コンピューティングノードは、ターゲット論理ボリュームのデータ状態を復元するために、メモリ内のログセグメントおよびチェックポイントのログメタデータを再生する。このデータ状態は、ターゲット論理ボリュームの最新のデータ状態を反映し、すなわち、現時点までのターゲット論理ボリュームに対応する各ファイル内のデータの最新の状態を反映する。これに基づいて、コンピューティングノードは、データ書き込みおよびデータ読み取りの処理など、後続のデータアクセス処理を実行することができる。データアクセス処理のプロセスは、本実施形態では詳細に説明されていない後続の方法の実施形態で詳細に説明される。
【0042】
ターゲットストレージノードによるログセグメントおよびチェックポイントの格納場所情報の上述の維持は、例えば、チャンク1にログセグメント[0-2000]を記録し、チャンク2にログセグメント[2001-2200]を記録し、チャンク7にチェックポイント(2000)を記録するなど、各ログセグメントおよび各チェックポイントの識別子とストレージノードのデータチャンク識別子との間の対応関係を維持することとして具体化できることに留意されたい。したがって、任意選択の実施形態では、ターゲットストレージノードはまた、そのような対応関係に基づいて、様々なストレージノードの対応するデータチャンクからログセグメントおよびチェックポイントの対応するメタデータを取得し、それをコンピューティングノードに返してもよい。
【0043】
ターゲットストレージノードによってコンピューティングノードに送信されるターゲット論理ボリュームに対応するログセグメントおよびチェックポイントは、これには限定されないが、ターゲット論理ボリュームの最後のログセグメントおよび最後のチェックポイントの格納場所情報である可能性があることに留意されたい。これは、一般的な状況では、チェックポイント(2000)のみを読み取る必要があり、ログセグメントおよびチェックポイントの上記の例に基づいて、ターゲット論理ボリュームの最新のデータ状態を復元するときに、ログセグメント[2001-2200]の各ログのメタデータを再生する必要があるためである。これは、チェックポイント(2000)が、ログセグメント[2001-2200]の前にターゲット論理ボリュームのデータ状態を記録するためである。
【0044】
加えて、コンピューティングノードは、ターゲット論理ボリュームにアクセスするために、後続のアクセスを実行するために、最初に、ターゲット論理ボリュームをローカルにマウントする必要があることに留意されたい。しかしながら、本発明の実施形態では、ターゲット論理ボリュームをマウントするプロセス中、ターゲット論理ボリュームの最新のデータ状態は、各ストレージノードで維持される各論理ボリュームのログセグメントおよびチェックポイント情報に基づいて復元される。そのため、各コンピューティングノードは、ターゲット論理ボリュームの最新のデータ状態を取得して、複数のコンピューティングノードがターゲット論理ボリュームにアクセスするとき、読み取りと書き込みの整合性を確実にすることができる。
【0045】
上記の
図1に示されるアーキテクチャは、ハードウェア物理ノードの観点からの導入である。実際には、複数のストレージノードのストレージリソースを共有するために複数のコンピューティングノードをサポートするために、関連するソフトウェアモジュールが各コンピューティングノードおよび各ストレージノードに展開される。このようなソフトウェアモジュールは、様々なタイプのサービスプロセスとして具体化することができる。したがって、
図2に示される実施形態と併せて、本発明の実施形態によって提供されるファイルシステムの詳細な内部アーキテクチャが、以下でさらに導入される。
【0046】
図2に示されるように、ファイルシステムは、少なくとも1つのコンピューティングノード(
図2に示されるホスト1およびホスト2)と、複数のストレージノードと、複数のストレージノードのデータチャンクサービスプロセス(チャンクサーバ、略してCS)を管理するために使用される複数のルートサーバ(ルートサーバ、略してRS)と、を含む。
【0047】
各コンピューティングノードは、データアクセスプロセスと、ファイルシステムアクセスプロセスとを有する。
【0048】
各ストレージノードは、論理ボリュームサービスプロセス(ボリュームサーバ、略してVS)と、CSとを有する。CSは、対応するストレージノードに格納されている各データチャンク(チャンク)の読み取りおよび書き込み管理を実行するように構成されている。
【0049】
実際のアプリケーションでは、各コンピューティングノード内のデータアクセスプロセスは、
図2に示されるように、データ書き込みプロセス(ライタ)またはデータ読み取りプロセス(リーダ)であり得る。データアクセスプロセスは、通常、コンピューティングノード内のサービスアプリケーションによって開始される。
【0050】
各コンピューティングノード内のファイルシステムアクセスプロセスは、対応するターゲット論理ボリュームにアクセスするためのアクセスポートである。実際のアプリケーションでは、任意選択で、ファイルシステムアクセスプロセスは、
図2のユーザモードファイルシステム(ユーザスペースのファイルシステム、略してFUSE)に基づいて実装されるユーザモードファイルシステムアクセスプロセス(ヒューズワーカ)である場合がある。VFS、/dev/fuse、およびヒューズワーカは、Fuseのコンポーネントモジュールである。ファイルシステムアクセスプロセスは、Fuseアーキテクチャに依存せずに実装され得ること、またはヒューズワーカの関連機能は、Lustre/GPFSおよび他のファイルシステムなどに類似したオペレーティングシステムカーネルに実装され得ることに留意されたい。
【0051】
加えて、任意選択の実施形態では、
図2に示されるように、各ストレージノードは、ガベージコレクションサービスプロセス(ガベージコレクタ、略してFuse)も含む。
【0052】
要約すると、VS、GC、およびCSのサービスプロセスを各ストレージノードに展開することができる。
【0053】
加えて、コンピューティングノード、ストレージノード、およびルートサーバの前述の構成に基づいて、本発明の実施形態によって提供されるファイルシステムは、論理的に階層的な構造を有すると見なすことができることに留意されたい。
図3は、そのような階層構造をより直感的な方法で示しており、
図3に示されるVS、GC、およびCSの数は、この階層構造を説明するためにのみ使用されており、ストレージノードとの対応する関係を明示しない。というのは、これらのサービスプロセスとストレージノードは、通常、1対1で対応しているからである。
図3からわかるように、ファイルシステムは、最上層、中間層、および最下層を含む3層構造と見なすことができる。
【0054】
最下層は、データチャンクサービス(チャンクサービス)層であり、追加専用モードで分散チャンク読み取りおよび書き込みサービスを上向きに提供する。ユーザは、チャンクを作成し、コピー数を指定し、追加専用モードでデータを書き込み、正常に書き込まれたデータをリアルタイムで一貫して読み取り、データの読み取りを高速化するために、メモリまたは高速メディアにキャッシュするチャンクデータの一部を指定することが可能である。チャンクサービス層は、主に、2つの役割で構成されており、1つはCSであり、対応するストレージノード内のすべてのチャンク情報を管理し、チャンクの読み取りおよび書き込みサービスを提供するために使用され、もう1つはRSであり、すべてのCS、すなわち、すべてのストレージノード内のCSを管理するために使用され、CS識別子とチャンク識別子との間の対応関係を維持することが可能である。
【0055】
中間層は、ボリュームサービス層であり、論理ボリュームを上向きに作成/削除/マウント/アンマウントするためのサービスを提供し、2つの役割で構成され、1つはVSであり、各論理ボリュームのメタデータを管理するために使用され、主に、各論理ボリュームのログセグメントのメンテナンス、およびログの回復を加速するためにチェックポイントが位置する格納場所の情報を含んでおり、もう1つはGCであり、ファイルシステムのガベージスペースを再生するために使用され、ファイルシステムの回復プロセスを高速化するために定期的にチェックポイントを生成する。
【0056】
最上層は、ファイルシステムアクセス層であり、2つの部分を含み、1つは、標準のPosixインターフェースを呼び出すことによって、ファイルデータにアクセスするためのデータアクセスプロセス(ライタ/リーダなど)であり、もう1つは、Fuseフレームワークに基づくファイルシステムアクセスプロセス(ヒューズワーカ)を含み、ユーザモードファイルシステムの管理、読み取り、書き込みを実行するためのヒューズワーカを提供するユーザモードファイルシステム(Fuse)である。
【0057】
要約すると、
図2および
図3に示されるファイルシステムアーキテクチャでは、任意のコンピューティングノード内の特定のサービスアプリケーションがデータアクセスプロセスを開始し、サービスアプリケーションに対応するターゲット論理ボリュームにアクセスする必要があるとき、マウント操作がトリガされる。この時点で、
コンピューティングノード内のデータアクセスプロセスによってトリガされたマウント操作に応答して、コンピューティングノード内のファイルシステムアクセスプロセスは、ターゲット論理ボリュームのマウント要求を、任意のストレージノード内の論理ボリュームサービスプロセスに送信し、論理ボリュームサービスプロセスから、ターゲット論理ボリュームに対応する第1のログセグメントおよびチェックポイントの格納場所情報を受信し、それによって、第1のログセグメントおよびチェックポイントの格納場所情報に従って、第1のログセグメントおよびチェックポイントのログメタデータを読み取って、ターゲット論理ボリュームのデータ状態を復元し、ターゲット論理ボリュームのデータ状態に基づいて、データアクセス処理を実行し、
論理ボリュームサービスプロセスは、ファイルシステムアクセスプロセスによって送信されたマウント要求を受信することと、ターゲット論理ボリュームに対応する第1のログセグメントおよびチェックポイントの格納場所情報を、ファイルシステムアクセスプロセスに送信することと、を行うように構成されている。
【0058】
任意選択で、第1のログセグメントおよびチェックポイントは、現時点でのターゲット論理ボリュームの最後のログセグメントおよび最後のチェックポイントであり得る。
【0059】
上記からわかるように、論理ボリュームサービスプロセスは、各ストレージノードに展開され、論理ボリュームサービスプロセスは、各論理ボリュームに対応するログセグメント(複数可)およびチェックポイント(複数可)の格納場所情報を維持する。論理ボリュームサービスプロセスは、ストレージノードの開始時に開始することができる。加えて、異なるストレージノードの論理ボリュームサービスプロセスは、各ストレージノードの論理ボリュームサービスプロセスが、すべての論理ボリュームのログセグメントおよびチェックポイントの格納場所情報を維持することを確実にするために、相互バックアップ関係を有する。
【0060】
上述の分散ファイルシステムでは、複数のコンピューティングノードがターゲット論理ボリュームにアクセスしているとき(例えば、複数のコンピューティングノードがターゲット論理ボリュームに対応するデータの読み取りおよび書き込みを行う必要があるとき)、複数のコンピューティングノードは、各ストレージノードで維持されているターゲット論理ボリュームのログ情報に基づいて、良好な読み取りおよび書き込みの整合性を維持することができ、読み取りおよび書き込みを同期的に実行することができるため、読み取りと書き込みの競合を回避することができる。
【0061】
ファイルシステムのデータにアクセスするための方法は、
図1~
図3に示されるファイルシステムアーキテクチャを参照して本明細書で詳細に説明される。
【0062】
データ書き込みの完全なプロセスは、
図4a~
図5bに示される実施形態を参照して以下に導入される。
【0063】
図4aは、本発明の実施形態によって提供されるファイルシステムのデータにアクセスするための方法のフローチャートである。本発明の実施形態によって提供される方法は、
図1に示されるようなアーキテクチャ下でコンピューティングノードによって実行され得る。
図4aに示されるように、本方法は、以下のステップを含む。
【0064】
401a:コンピューティングノードは、データ書き込みプロセスによってトリガされたマウント操作に応答して、ターゲットストレージノードに、第1のマウント要求を送信し、第1のマウント要求は、ターゲット論理ボリュームの識別子と、ユーザ情報と、書き込み/読み取りマウントモードの識別子と、を含む。
【0065】
図1に示される実施形態からわかるように、ターゲットストレージノードは、複数のストレージノードのうちのいずれか1つである。
【0066】
本実施形態では、特定のコンピューティングノード内のサービスアプリケーションがデータ書き込み処理を実行する必要がある状況を導入する。したがって、サービスアプリケーションは、コンピューティングノード内のデータ書き込みプロセスを開始する。本実施形態の前述の説明からわかるように、サービスアプリケーションに対応するターゲット論理ボリュームにアクセスする必要があるとき、ターゲット論理ボリュームを、コンピューティングノードにローカルにマウントする必要がある。したがって、本実施形態は、最初に、データ書き込みシナリオでターゲット論理ボリュームをマウントするプロセスを導入する。
【0067】
コンピューティングノード内のデータ書き込みプロセスが開始された後、データ書き込みプロセスは、マウント操作をトリガする。マウント操作は、データ書き込みプロセスによってコンピューティングノードのプロセッサに送信されるマウント通知と見なすことができる。マウント操作に基づいて、コンピューティングノードは、ターゲット論理ボリュームの識別子と、ユーザ情報と、書き込み/読み取りマウントモードの識別子と、を含む、第1のマウント要求を、ターゲットストレージノードと呼ばれる任意のストレージノードに送信する。
【0068】
ユーザ情報は、ユーザアカウント、ユーザ名などの情報であり得る。読み取り可能/書き込み可能マウントモードの識別子は、データ書き込みプロセスに対応する。言い換えれば、本発明の実施形態では、データ書き込みプロセスは、論理ボリュームを書き込み/読み取りモードでマウントすることができる。この読み取り/書き込みマウントモードは、同じターゲット論理ボリュームに対して、1つのデータ書き込みプロセスのみが同時にデータを書き込むことができることを意味する。
【0069】
402a:コンピューティングノードは、ターゲットストレージノードが、ユーザ情報がターゲット論理ボリュームのユーザ権限検証に合格したと判定した後、ターゲットストレージノードによって送信されたターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を受信し、ターゲット論理ボリュームは現在読み取り/書き込みマウントモードでマウントされていないと判定する。
【0070】
コンピューティングノードから第1のマウント要求を受信した後、ターゲットストレージノードは、読み取り/書き込みマウントモードの識別子に基づいて、この時点でデータ書き込みプロセスがターゲット論理ボリュームにアクセスする必要があることを認識する。このとき、一方では、ターゲットストレージノードは、第1のマウント要求のユーザ情報に基づいて、ユーザがターゲット論理ボリュームにアクセスする権限を有しているかどうかを確認する。一方、ターゲットストレージノードは、ターゲット論理ボリュームが現在他のデータ書き込みプロセスによって占有されているかどうか、すなわち、ターゲット論理ボリュームが、現在読み取り/書き込みマウントモードでマウントされているかどうかを判定する必要がある。
【0071】
実際のアプリケーションでは、任意選択で、各ストレージノードは、ユーザ権限の検証を実装するためのユーザホワイトリストなど、各論理ボリュームのユーザ権限情報を維持することができる。加えて、各ストレージノードは、各論理ボリュームのマウント状態情報を相互に同期させ、すなわち、各論理ボリュームがどのようなタイプのマウントモードでマウントされているか、あるいはマウントされていない場合、各論理ボリュームに関する関連情報を同期させる。これに基づいて、ターゲット論理ボリュームが現在読み取り/書き込みマウントモードでマウントされているかどうかの判定を実現することができる。
【0072】
ユーザが許可検証に合格したと判定し、ターゲット論理ボリュームが現在読み取り/書き込みモードでマウントされていないと判定すると、ターゲットストレージノードは、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報をコンピューティングノードへ返すことができる。
【0073】
403a:コンピューティングノードは、ターゲット論理ボリュームのデータ状態を復元するために、ログセグメントおよびチェックポイントの格納場所情報に従って、ログセグメントおよびチェックポイントのログメタデータを読み取る。
【0074】
コンピューティングノードは、格納場所情報に従って対応する格納場所から各ログを読み取り、これは、具体的に、ログ内のメタデータを読み取り、その結果、メタデータの各部分は、ターゲット論理ボリュームの最新のデータ状態を復元するために、最後のログシリアル番号iを有するログに到達するまで、メモリ内で順番に再生される。
【0075】
404a:コンピューティングノードは、ターゲット論理ボリュームのデータ状態に基づいて、データアクセス処理を実行する。
【0076】
ターゲット論理ボリュームの最新のデータ状態を復元した後、コンピューティングノードは、後続のデータ書き込みプロセスを実行することができる。データ書き込みプロセスは、多くの場合、ファイル準備フェーズと、データ書き込みフェーズと、を含み、これらは、
図5aに示されるように、後続の実施形態で説明される。
【0077】
図4aに示される前述の実施形態は、コンピューティングノードおよびストレージノードのノードまたはデバイスの役割に関して説明される。本発明の実施形態によって提供されるファイルシステムのデータにアクセスするための方法を実施するプロセスは、
図2または
図3に示される論理システムアーキテクチャに基づいて、
図4bに示される実施形態と併せて以下に説明される。
【0078】
図4bは、本発明の実施形態によって提供されるファイルシステムのデータにアクセスするための別の方法のフローチャートである。本発明の実施形態によって提供される方法は、
図2または
図3に示されるアーキテクチャ下で、コンピューティングノード内のファイルシステムアクセスプロセス(ヒューズワーカ)によって実施することができる。
図4bに示されるように、本方法は、以下のステップを含む。
【0079】
401b:コンピューティングノード内のファイルシステムアクセスプロセスは、コンピューティングノード内のデータ書き込みプロセスによってトリガされたマウント操作に応答して、ストレージノード内の論理ボリュームサービスプロセスに、第1のマウント要求を送信し、第1のマウント要求は、ターゲット論理ボリュームの識別子と、ユーザ情報と、読み取り/書き込みマウントモードの識別子と、を含む。
【0080】
本実施形態では、コンピューティングノードは、ファイルシステム内の複数のコンピューティングノードのうちのいずれか1つであり、ストレージノードは、複数のストレージノードのうちのいずれか1つである。コンピューティングノードによる対応する論理ボリュームへのアクセスを実現するために、ファイルシステムアクセスプロセスがコンピューティングノードに展開され、これは、例えば、これらに限定されないが、
図2または
図3に示されるようなヒューズワーカである。
【0081】
加えて、論理ボリュームサービスプロセスおよびデータチャンクサービスプロセスが各ストレージノードに展開される。データチャンクサービスプロセスは、対応するストレージノード内のデータチャンクの読み取りと書き込みに使用され、論理ボリュームサービスプロセスは、ログセグメント識別子/チェックポイント識別子と各論理ボリュームのデータチャンク識別子との間の各対応関係を維持し、データの読み取りおよび書き込み処理を実行するためのファイルシステムアクセスプロセスを支援する。
【0082】
実際のアプリケーションでは、コンピューティングノード内のサービスアプリケーションがデータ書き込みプロセスをトリガし、ターゲット論理ボリュームにデータを書き込みたいとき、データ書き込みプロセスは、コンピューティングノード内のファイルシステムアクセスプロセスに第1のマウント要求を送信するなどのマウント操作をトリガする。これにより、ファイルシステムアクセスプロセスは、第1のマウント要求を、論理ボリュームサービスプロセスに送信する。任意選択で、ファイルシステムアクセスプロセスおよび論理ボリュームサービスプロセスは、プロセス間通信メカニズムに基づいて相互作用を実行し得る。
【0083】
前述の実施形態の導入からわかるように、第1のマウント要求は、論理ボリュームサービスプロセスに、書き込み/読み取りマウントモードでターゲット論理ボリュームをマウントするように要求するために使用される。読み取り/書き込みマウントモードは、1つのデータ書き込みプロセスのみが同じターゲット論理ボリュームに同時にデータを書き込むことができることを意味する。
【0084】
402b:ファイルシステムアクセスプロセスは、ユーザ情報がターゲット論理ボリュームのユーザ権限検証に合格したと判定し、ターゲット論理ボリュームが、現在、読み取り/書き込みマウントモードでマウントされていないと判定した後、論理ボリュームサービスプロセスによって送信されたターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を受信する。
【0085】
各ストレージノード内の論理ボリュームサービスプロセスは、相互バックアップ関係を有するので、各論理ボリュームサービスプロセスは、各論理ボリュームのログセグメントの識別子、およびチェックポイントの識別子とデータチャンクの識別子との間の対応関係を維持する。したがって、第1のマウント要求を受信する論理ボリュームサービスプロセスは、その中のターゲット論理ボリュームの識別子、および対応関係、すなわち、ログセグメントおよびチェックポイントに対応するデータチャンク識別子に基づいて、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を取得する。
【0086】
前述の実施形態の説明からわかるように、この時点で、任意選択で、論理ボリュームサービスプロセスは、ターゲット論理ボリュームの最後のログセグメントおよび最後のチェックポイントに対応するデータチャンク識別子を、ファイルシステムアクセスプロセスに返すことができ、その結果、ファイルシステムアクセスプロセスは、最後のログセグメントおよび最後のチェックポイントに基づいて、ターゲット論理ボリュームの最新のデータ状態を復元する。
【0087】
403b:ファイルシステムアクセスプロセスは、ターゲット論理ボリュームのデータ状態を復元するために、ログセグメントおよびチェックポイントの格納場所情報に従って、ログセグメントおよびチェックポイントのログメタデータを読み取る。
【0088】
任意選択で、ファイルシステムアクセスプロセスは、論理ボリュームサービスプロセスから取得したデータチャンク識別子を使用して任意のルートサーバにクエリを実行して、データチャンク識別子に対応するデータチャンクサービスプロセス識別子(複数可)を取得し、それによって、データチャンクサービスプロセス識別子(複数可)に対応するデータチャンクサービスプロセス(複数可)を通じて、データチャンク識別子に対応するデータチャンクに格納されているログのメタデータを読み取ることができる。
【0089】
代替的に、任意選択で、論理ボリュームサービスプロセスはまた、判定されたデータチャンク識別子に基づいてルートサーバにクエリを実行して、データチャンク識別子に対応するデータチャンクサービスプロセス識別子(複数可)を取得し、データチャンク識別子およびデータチャンクサービスプロセス識別子(複数可)を、ファイルシステムアクセスプロセスに返し、その結果、ファイルシステムアクセスプロセスは、データチャンクサービスプロセス識別子(複数可)に対応するデータチャンクサービスプロセス(複数可)を通じて、データチャンク識別子に対応するデータチャンクに格納されたログのメタデータを読み取る。
【0090】
404b:ファイルシステムアクセスプロセスは、ターゲット論理ボリュームのデータ状態に基づいて、データアクセス処理を実行する。
【0091】
ファイルシステムアクセスプロセスがターゲット論理ボリュームの最新のデータ状態を復元した後、後続のデータ書き込みプロセスを実行することができる。データ書き込みプロセスは、多くの場合、ファイル準備フェーズと、データ書き込みフェーズと、を含み、これらは、
図5bに示されるように、後続の実施形態で説明される。
【0092】
図5aは、
図4aに示される実施形態におけるステップ404aの実装プロセスのフローチャートである。
図5aに示されるように、ステップ404aは、具体的には、以下の特定のステップを含み得る。
【0093】
501a:コンピューティングノードは、データ書き込みプロセスによってトリガされたファイル準備操作に応答して、メタデータのみを含む第1のログを生成し、第1のログは、現時点での最後のログシリアル番号iがインクリメントされた後のログシリアル番号i+1と、ファイル準備書き込み操作に対応するファイル情報と、を含む。
【0094】
実際にデータ書き込みを実行する前に、データ書き込みプロセスは、多くの場合、何らかの準備操作を実行する必要がある。このような準備操作は、ファイル準備操作と呼ばれる。実際のアプリケーションでは、ファイル準備操作は、例えば、特定のファイルを開くこと、または特定のファイルを作成して開くことであり得る。本実施形態では、書き込み用のファイルを準備するプロセスが最初に導入される。
【0095】
データ書き込みプロセスは、対応するファイル準備インターフェースを呼び出すことによって、上述のファイル準備操作をトリガすることができる。このとき、コンピューティングノードは、ファイル準備操作に対応するログレコード(第1のログと呼ばれる)を生成する。現時点では、データ書き込みプロセスは、いかなる実際のデータも書き込んでいないので、第1のログは、メタデータのみを含む。メタデータは、現時点での最後のログシリアル番号iがインクリメントされた後のログシリアル番号i+1と、ファイル準備書き込み操作に対応するファイル情報と、を含む。ファイル情報は、例えば、作成されたまたは開かれたファイルのファイル名と、ファイル識別子記述子(略してFID)と、を含む。
図4aに示されるように、実施形態において、対象論理ボリュームのログセグメントの最後のログシリアル番号がiである場合、第1のログのログシリアル番号は、1増加してi+1となる。
【0096】
502a:コンピューティングノードは、ターゲット論理ボリュームの最後のログセグメントに対応する第1のデータチャンクと、ターゲットストレージノードおよびルートサーバを通じて、第1のデータチャンクに対応する第1のストレージノードと、を判定する。
【0097】
前述の実施形態で述べたように、データは、ストレージノードのチャンクに格納される。さらに、データは、追加専用モードで書き込まれ、実際に書き込まれたデータは、ログに含まれる。したがって、コンピューティングノードによって生成されたログは、追加専用モードでストレージノードのデータチャンクに格納される。そのため、ターゲット論理ボリュームの最後のログセグメントが位置する格納場所、すなわち、最後のログセグメントが位置するデータチャンクと、そのデータチャンクに対応するストレージノードとを判定する必要がある。
【0098】
上記のように、本発明の実施形態では、各ストレージノードは、各論理ボリュームのログセグメントおよびチェックポイントの格納場所情報を維持する。格納場所情報は、主に、ログセグメント識別子/チェックポイント識別子とデータチャンク識別子との間の対応関係である。したがって、コンピューティングノードは、ターゲットストレージノードを通じて、ターゲット論理ボリュームの最後のログセグメントに記述されているデータチャンク識別子を取得することができる。データチャンク識別子に基づいて、コンピューティングノードは、さらに、ルートサーバにクエリを実行して、ルートサーバからチャンク識別子に対応するストレージノードの識別子を取得することができ、ルートサーバは、様々なストレージノードの識別子と様々なデータチャンク識別子との間の対応関係を維持する。
【0099】
したがって、コンピューティングノードは、以下のプロセスを通じて、最後のログセグメントが位置する第1のデータチャンクと、第1のデータチャンクに対応する第1のストレージノードとを取得することができ、プロセスは、
コンピューティングノードによって、ターゲット論理ボリュームに対応する最後のログセグメントが位置するデータチャンクをクエリするために使用される第1のクエリ要求を、ターゲットストレージノードに送信することと、
コンピューティングノードによって、ターゲットストレージノードによって送信された第1のデータチャンクの識別子を受信することであって、第1のデータチャンクの識別子は、ターゲット論理ボリュームのログセグメントの識別子とデータチャンクの識別子との間の維持された対応関係に従って、ターゲットストレージノードによって判定される、受信することと、
コンピューティングノードによって、第1のデータチャンクの識別子に対応するストレージノードをクエリするために使用される第2のクエリ要求を、ルートサーバに送信することと、
コンピューティングノードによって、ルートサーバによって送信された第1のストレージノードの識別子を受信することであって、第1のストレージノードの識別子は、データチャンクの識別子とストレージノードの識別子との間の維持された対応関係に従って、ルートサーバによって判定される、受信することと、を含む。
【0100】
503a:コンピューティングノードは、第1のログを第1のデータチャンクに追加するように要求するために、かつ第1のストレージノードに第1のログをキャッシュするように要求するために、ログ格納要求を、第1のストレージノードに送信する。
【0101】
第1のデータチャンクおよび第1のストレージノードを判定した後、コンピューティングノードは、第1のログを第1のストレージノードに送信してもよく、その結果、第1のストレージノードは、第1のログを第1のデータチャンクに追加し、第1のログをキャッシュに格納し、その結果、後続のデータ読み取りプロセス(リーダ)は、第1のログをすばやく読み取ることができるようになる。
【0102】
第1のストレージノードが正常に格納された後、ストレージが成功したことをコンピューティングノードに通知するために、確認通知がコンピューティングノードに返され得る。
【0103】
上記のステップでは、データ書き込み前のファイル準備書き込み操作の段階中に処理する手順を導入する。ファイル準備書き込みプロセスが完了した後、データ書き込みプロセスは、以下のステップに示されるように、実際のデータ書き込みプロセスを実行することができる。
【0104】
504a:コンピューティングノードは、データ書き込みプロセスによって送信されたデータ書き込み要求に応答して、第2のログを生成し、データ書き込み要求は、書き込まれたデータと、書き込まれたデータに対応するファイル情報と、を含み、第2のログは、メタデータと、書き込まれたデータと、を含み、メタデータは、現時点での最後のログシリアル番号i+1がインクリメントされた後のログシリアル番号i+2と、ファイル情報と、を含む。
【0105】
505a:コンピューティングノードは、ターゲット論理ボリュームの最後のログセグメントに対応する第2のデータチャンクと、ターゲットストレージノードおよびルートサーバを通じて、第2のデータチャンクに対応する第2のストレージノードとを判定する。
【0106】
506a:コンピューティングノードは、第2のログを第2のデータチャンクに追加するように要求するために、かつ第2のストレージノードに第2のログにメタデータをキャッシュするように要求するために、ログ保存要求を、第2のストレージノードに送信する。
【0107】
データ書き込みプロセスは、標準のデータ書き込みインターフェースを呼び出すことによって、上記のデータ書き込み要求をトリガすることができる。データ書き込み要求は、書き込む特定のデータだけでなく、書き込まれたデータに対応するファイル情報も含む。ファイル情報は、例えば、ファイルFID、ファイルに書き込まれたデータの書き込み位置(オフセット)およびデータ長(長さ)、データ位置ポインタなどを含む。
【0108】
このとき、コンピューティングノードは、コンピューティングノードのデータ書き込み操作を記録するために使用される第2のログを生成する。第2のログは、メタデータおよびデータで構成されている。データは、コンピューティングノードに書き込まれたデータである。メタデータは、現時点での最後のログシリアル番号i+1がインクリメントされた後のログシリアル番号i+2と、上述のファイル情報と、を含む。さらに、コンピューティングノードは、生成された第2のログをストレージノードに格納する必要がある。具体的には、第2のログは、現時点でのターゲット論理ボリュームの最後のログセグメントが位置するデータチャンクに書き込む必要がある。したがって、コンピューティングノードは、第2のログを第2のストレージノードに送信し、第2のストレージノードが第2のログを第2のデータチャンクに追加し、第2のログのメタデータをメモリにキャッシュするために、最後のログセグメントが位置する第2のデータチャンクと、第2のデータチャンクに対応する第2のストレージノードとを、ターゲットストレージノードおよびルートサーバを通じて判定する必要がある。第2のデータチャンクと、第2のストレージノードとを判定するプロセスは、第1のデータチャンクと、第1のストレージノードとを判定するプロセスを参照することができ、これは、本明細書では繰り返されない、
【0109】
第2のデータチャンクおよび第1のデータチャンクは同じデータチャンクである可能性が高いことに留意されたい。したがって、第2のストレージノードおよび第1のストレージノードも同じストレージノードであり得る。しかしながら、最後のログセグメントが第2のログに格納される前に閉鎖条件に到達したとき、第2のストレージノードが第1のストレージノードと同じである場合でも、第2のデータチャンクは、第1のデータチャンクとは異なる。
【0110】
具体的には、最後のログセグメントが現在閉鎖条件に到達している場合、コンピューティングノードは、最後のログセグメントを閉鎖し、新しいチェックポイントを生成し、ターゲットストレージノードに新しいログセグメントを最後のログセグメントとして申請する。閉鎖条件は、最後のログセグメントに含まれるログの数が事前設定された数に到達するか、最後のログセグメントに対応するデータボリュームが事前設定された容量値に到達することである。
【0111】
実際のアプリケーションでは、ファイルシステムが異常なときに、チェックポイントを使用して、ファイルシステムの復元を高速化し、ログセグメントの後にチェックポイントが生成されるので、ログセグメントを大きくしすぎることは適切ではない。具体的には、ログセグメントに含まれるログの数またはログ内のデータの合計量を大きくしすぎることは適切ではない。そうでない場合、ファイルシステムの回復率が影響を受ける。例えば、各ストレージノードは、チャンク1のログセグメント[0-2000]、チャンク7のチェックポイント(2000)、チャンク2のログセグメント[2001-2200]など、各チャンクに格納されているログセグメントおよびチェックポイントを記録する。ログセグメント[2001-2200]の後のある時点でファイルシステムが異常である場合、この時点でチェックポイント(2000)のみを読み取る必要があり、ログセグメント[2001-2200]を再生して、対応する論理ボリュームの最新の状態を復元する。
【0112】
本実施形態において、第2のログの追加後の現時点での最後のログセグメントが[1500~2500]である場合、すなわち、第2のログのログシリアル番号が2500であり、最後のログセグメントが現在閉鎖条件に到達している場合、コンピューティングノードは、ログセグメント[1500-2500]を閉鎖し、チェックポイント(2500)を生成し、ターゲットストレージノードに新しいログセグメントを最後のログセグメントとして要求する。新しいログセグメントは、ログシリアル番号2501で始まる。
【0113】
要求された新しいログセグメントは、その後生成されるログに対応し、新しいログセグメントに後で格納されるログ(複数可)は、特定のデータチャンク(複数可)に格納する必要がある。したがって、ターゲットストレージノードがコンピューティングノードの要求を受信した後、ターゲットストレージノードは、新しいログセグメントに対応するデータチャンク(複数可)を割り当てる必要がある。具体的には、ルートサーバは、各ストレージノードのスケジューリングおよび割り当てを含むすべてのストレージノードの管理に使用されるため、ターゲットストレージノードは、新しいログセグメントに対応する後続のログを格納するためのデータチャンクの割り当てをルートサーバに要求し得る。ルートサーバは、各ストレージノードのそれぞれのストレージ負荷に応じてデータチャンクを割り当てるために、ストレージノードAを割り当てることができる。ストレージノードAが新しいログセグメントの対応する後続のログを格納するためにチャンク5を割り当てる場合、ストレージノードAとチャンク5との間の対応関係は、ルートサーバで維持される。同時に、ルートサーバは、チャンク5をターゲットストレージノードに返し、ターゲットストレージノードは、新しいログセグメントとチャンク5との間の対応関係を維持する。ターゲットストレージノードは、対応関係を他のストレージノードと同期させることができる。
【0114】
図5aに示される前述の実施形態は、コンピューティングノードおよびストレージノードの観点から説明されている。
図2または
図3に示される論理システムアーキテクチャに基づいて、および
図5bに示される実施形態と併せて、コンピューティングノードおよびストレージノードが、
図2または
図3に示されるような内部サービスプロセスの構成を有するとき、
図5aに示されるデータ書き込みプロセスの特定の実装プロセスが、以下にさらに示される。
【0115】
図5bは、
図4bに示される実施形態におけるステップ404bの実装プロセスのフローチャートである。
図5bに示されるように、ステップ404bは、具体的には、以下の特定のステップを含み得る。
【0116】
501b:ファイルシステムアクセスプロセスは、データ書き込みプロセスによってトリガされたファイル準備操作に応答してメタデータのみを含む第1のログを生成し、第1のログは、現時点で最後のログシリアル番号iがインクリメントされた後のログシリアル番号i+1と、ファイル準備書き込み要求に対応するファイル情報と、を含む。
【0117】
502b:ファイルシステムアクセスプロセスは、ターゲット論理ボリュームに対応する最後のログセグメントが位置する第1のデータチャンクと、論理ボリュームサービスプロセスおよびルートサーバを通じて、第1のデータチャンクに対応する第1のデータチャンクサービスプロセスと、を判定する。
【0118】
ルートサーバは、各ストレージノード内のデータチャンクサービスプロセスを管理し、特に、各ストレージノードのデータチャンク識別子とデータチャンクサービスプロセス識別子との間の対応関係を維持するために使用される。
【0119】
具体的には、ファイルシステムアクセスプロセスは、以下のステップを通じて、第1のデータチャンクと、第1のデータチャンクに対応する第1のデータチャンクサービスプロセスとを判定し得、ステップは、
ファイルシステムアクセスプロセスによって、ターゲット論理ボリュームに対応する最後のログセグメントが位置するデータチャンクのクエリに使用される第1のクエリ要求を、論理ボリュームサービスプロセスに送信することと、
ファイルシステムアクセスプロセスによって、論理ボリュームサービスプロセスによって送信された第1のデータチャンクの識別子を受信することであって、第1のデータチャンクの識別子は、ログセグメント識別子とターゲット論理ボリュームのデータチャンク識別子との間の維持された対応関係に従って、論理ボリュームサービスプロセスによって判定される、受信することと、
ファイルシステムアクセスプロセスによって、第1のデータチャンクの識別子に対応するデータチャンクサービスプロセスをクエリするために使用される第2のクエリ要求を、ルートサーバに送信することと、
ファイルシステムアクセスプロセスによって、ルートサーバによって送信された第1のデータチャンクサービスプロセスの識別子を受信することであって、第1のデータチャンクサービスプロセスの識別子は、データチャンク識別子とデータチャンクサービスプロセス識別子との間の維持された対応関係に従って、ルートサーバによって判定される、受信することと、を含む。
【0120】
503b:ファイルシステムアクセスプロセスは、第1のログを第1のデータチャンクに追加するように要求するために、かつ第1のデータチャンクサービスプロセスに第1のログをキャッシュするように要求するために、ログ格納要求を、第1のデータチャンクサービスプロセスに送信する。
【0121】
上記の3つのステップは、ファイル準備フェーズに対応する。さらなる内容については、
図5aに示される実施形態における導入を参照することができ、これは、本明細書では繰り返されない。ファイル準備フェーズが完了した後、データ書き込みプロセスは、データ書き込みプロセスの以下のステップを実行することができる。
【0122】
504b:ファイルシステムアクセスプロセスは、データ書き込みプロセスによって送信されたデータ書き込み要求に応答して、第2のログを生成し、データ書き込み要求は、書き込まれたデータと、書き込まれたデータに対応するファイル情報と、を含み、第2のログは、メタデータと、書き込まれたデータと、を含み、メタデータは、現時点での最後のログシリアル番号i+1がインクリメントされた後のログシリアル番号i+2と、ファイル情報と、を含む。
【0123】
505b:ファイルシステムアクセスプロセスは、ターゲット論理ボリュームに対応する最後のログセグメントが位置する第2のデータチャンクと、論理ボリュームサービスプロセスおよびルートサーバを通じて、第2のデータチャンクに対応する第2のデータチャンクサービスプロセスと、を判定する。
【0124】
第2のデータチャンクと、第2のデータチャンクに対応する第2のデータチャンクサービスプロセスとを判定するために、第1のデータチャンクと、第1のデータチャンクサービスプロセスとを判定するプロセスを参照することができ、これは、本明細書では繰り返されない。
【0125】
506b:ファイルシステムアクセスプロセスは、第2のログを第2のデータチャンクに追加するように要求するために、かつ第2のデータチャンクサービスプロセスに第2のログにメタデータをキャッシュするように要求するために、ログ保存要求を、第2のデータチャンクサービスプロセスに送信する。
【0126】
データ書き込みの前述のプロセスのさらなる内容については、
図5aに示される実施形態における導入を参照することができ、これは、本明細書では繰り返されない。
【0127】
上述したファイル準備のプロセスおよびデータ書き込みのプロセス中に生成されたログは、追加によって最後のログセグメントに追加されることに留意されたい。しかしながら、最後のログセグメントが閉鎖条件に到達すると、現時点での最後のログセグメントを閉鎖する必要があり、新しいログセグメントを最後のログセグメントとして要求する必要がある。したがって、現時点での最後のログセグメントが閉鎖条件に到達すると、ファイルシステムアクセスプロセスは、最後のログセグメントを閉鎖し、新しいチェックポイントを生成し、論理ボリュームサービスプロセスに新しいログセグメントを最後のログセグメントとして要求する。閉鎖条件は、事前設定された数に到達した最後のログセグメントに含まれるログの数、または事前設定された容量値に到達した最後のログセグメントに対応するデータ量である。
【0128】
ファイルシステムアクセスプロセスの要求の受信に応答して、論理ボリュームサービスプロセスは、任意選択で、一方では新しいログセグメントを生成し、他方では、ルートサーバに、対応するデータチャンクと、データチャンクサービスプロセスとを新しいログセグメントに割り当てるように要求することができる。
【0129】
要約すると、一方では、データ書き込みのプロセス全体において、データが書き込まれる前に、コンピューティングノードは、すなわち、ログセグメントおよびチェックポイントの格納場所情報である、各ストレージノードによって維持される論理ボリュームのメタデータ情報に基づいて、ターゲット論理ボリュームの最新のステータスを復元することができる。他方では、データ書き込みのプロセス中、データ書き込みプロセスによって実行された任意の操作と、書き込まれたデータとを記録するために、ログが生成される。各ログには、シリアル番号に従って番号が付けられ、各ログは、追加専用モードで、現時点で最後のログセグメントに追加され、その結果、ログのシリアル番号に基づいて、読み取りと書き込みの整合性を実現することができる。
【0130】
さらに、データ書き込みのプロセス中、メタデータおよびデータは、一旦格納のためにディスクに送信され、すなわち、メタデータおよびデータは同じログに含まれ、ログは、ストレージノードのデータチャンクに格納され、メタデータもメモリにキャッシュされる。これによって、後続のデータ読み取りプロセスは、最新のログをバッチですばやくプルして、ローカルファイルシステムのミラーリング状態を更新することができ、すなわち、ターゲット論理ボリュームの最新のデータ状態を復元し、読み取りの遅延を減らすことができる。
【0131】
データ読み取りの完全なプロセスは、
図6a~
図7bに示される実施形態と併せて以下に導入される。
【0132】
図6aは、本発明の実施形態によって提供されるファイルシステムのデータにアクセスするための別の方法のフローチャートである。本発明の実施形態によって提供される方法は、
図1に示されるアーキテクチャ下でコンピューティングノードによって実行され得る。
図6aに示されるように、以下のステップを含むことができる。
【0133】
601a:コンピューティングノードは、データ読み取りプロセスによってトリガされたマウント操作に応答して、ターゲットストレージノードに、第2のマウント要求を送信し、第2のマウント要求は、ターゲット論理ボリュームの識別子と、ユーザ情報と、読み取り専用マウントモードの識別子と、を含む。
【0134】
図1に示される実施形態からわかるように、ターゲットストレージノードは、複数のストレージノードのうちのいずれか1つである。
【0135】
本実施形態では、コンピューティングノード内のサービスアプリケーションがデータ読み取り処理を実行する必要がある状況を導入する。したがって、サービスアプリケーションは、コンピューティングノード内のデータ読み取りプロセスを開始する。前述の実施形態の説明からわかるように、サービスアプリケーションに対応するターゲット論理ボリュームにアクセスする必要があるとき、ターゲット論理ボリュームを、コンピューティングノードにローカルにマウントする必要がある。したがって、本実施形態は、最初に、データ読み取りシナリオでターゲット論理ボリュームをマウントするプロセスを導入する。
【0136】
コンピューティングノード内のデータ読み取りプロセスがアクティブ化された後、データ読み取りプロセスは、マウント操作をトリガする。マウント操作は、データ読み取りプロセスによるマウント通知をコンピューティングノードのプロセッサに送信し得る。マウント操作に基づいて、コンピューティングノードは、ターゲット論理ボリュームの識別子と、ユーザ情報と、読み取り専用マウントモードの識別子と、を含む、第2のマウント要求を、任意のストレージノード(ターゲットストレージノードと呼ばれる)に送信する。
【0137】
ユーザ情報は、ユーザアカウント、ユーザ名などの情報であり得る。読み取り専用マウントモードの識別子は、データ読み取りプロセスに対応する。言い換えれば、本発明の実施形態では、データ読み取りプロセスは、論理ボリュームを読み取り専用モードでマウントすることができる。読み取り専用マウントモードとは、同じターゲット論理ボリュームに対して、複数のデータ読み取りプロセスは、データの読み取りが許可されているが、データの変更、書き込みなどの操作が実行されることを意味する。
【0138】
602a:コンピューティングノードは、ユーザ情報がターゲット論理ボリュームのユーザ権限検証に合格したと判定した後、ターゲットストレージノードによって送信されたターゲット論理ボリュームのログセグメントおよびチェックポイントの格納場所情報を受信する。
【0139】
データ書き込みのプロセスとは異なり、データ読み取りのプロセスでは、読み取り専用マウントモードによって、複数のデータ読み取りプロセスは、同時にデータを読み取ることができるので、ターゲット論理ボリュームのマウントは、ユーザ許可の検証を満たすだけで済む。
【0140】
603a:コンピューティングノードは、ターゲット論理ボリュームのデータ状態を復元するために、ログセグメントおよびチェックポイントの格納場所情報に従って、ログセグメントおよびチェックポイントのログメタデータを読み取る。
【0141】
604a:コンピューティングノードは、ターゲット論理ボリュームのデータ状態に基づいて、データアクセス処理を実行する。
【0142】
前述のステップのさらなる説明のために、
図4aに示される実施形態を参照することができ、これは、本明細書では繰り返されない。このマウントプロセスを通じて、コンピューティングノードは、ターゲット論理ボリュームが現在所有しているすべてのデータにアクセスすることができる。
【0143】
ターゲット論理ボリュームの最新のデータ状態を復元した後、コンピューティングノードは、データ読み取りの後続のプロセスを実行することができる。データ読み取りのプロセスは、多くの場合、ファイル準備読み取りフェーズと、データ読み取りフェーズと、を含み、これらは、
図7aに示されるように、後続の実施形態で説明される。
【0144】
図6aに示される前述の実施形態は、コンピューティングノードおよびストレージノードの観点から、本発明の実施形態によって提供されるファイルシステムのデータにアクセスするための方法の実装プロセスを示す。
図2または
図3に示される論理システムアーキテクチャに基づいて、
図6bに示される実施形態と組み合わされて、ファイルシステムのデータにアクセスするための方法の別の特定の実装プロセスが以下に説明される。
【0145】
図6bは、本発明の実施形態によって提供されるファイルシステムのデータにアクセスするための別の方法のフローチャートである。本発明の実施形態によって提供される方法は、
図2または
図3に示されるアーキテクチャ下で、コンピューティングノード内のファイルシステムアクセスプロセス(ヒューズワーカ)によって実施することができる。
図6bに示されるように、本方法は、以下のステップを含む。
【0146】
601b:コンピューティングノード内のファイルシステムアクセスプロセスは、コンピューティングノード内のデータ読み取りプロセスによってトリガされたマウント操作に応答して、ストレージノード内の論理ボリュームサービスプロセスに、第2のマウント要求を送信し、第2のマウント要求は、ターゲット論理ボリュームの識別子と、ユーザ情報と、読み取り専用マウントモードの識別子と、を含む。
【0147】
本実施形態では、コンピューティングノード内のサービスアプリケーションがデータ読み取り処理を実行する必要がある状況を導入する。したがって、サービスアプリケーションは、コンピューティングノード内のデータ読み取りプロセスを開始する。データ読み取りプロセスは、最初に、ターゲット論理ボリュームのマウント操作をトリガし、例えば、後続のデータアクセスを実行するためにターゲット論理ボリュームをローカルにマウントするために、上記の第2のマウント要求を、ファイルシステムアクセスプロセスに送信する。
【0148】
602b:ファイルシステムアクセスプロセスは、ユーザ情報がターゲット論理ボリュームのユーザ権限検証に合格したと判定した後、論理ボリュームサービスプロセスによって送信されたターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を受信する。
【0149】
本発明の実施形態では、複数のデータ読み取りプロセスは、同じターゲット論理ボリューム上のデータを同時に読み取ることができる。したがって、論理ボリュームサービスプロセスによって、ユーザがターゲット論理ボリュームを使用する権限を有していることを確認すると、ユーザは、ターゲット論理ボリュームを読み取り専用マウントモードでマウントすることができる。同時に、論理ボリュームサービスプロセスは、ターゲット論理ボリュームのログセグメントおよびチェックポイントの格納場所情報を、ファイルシステムアクセスプロセスに返す。格納場所情報は、ターゲット論理ボリュームのログセグメントおよびチェックポイントがそれぞれ位置するデータチャンクの識別子であり、各論理ボリュームのログセグメントおよびチェックポイントの識別子とデータチャンクの識別子との間の維持された対応関係に従って、論理ボリュームサービスプロセスによって判定される。代替的に、格納場所情報は、データチャンクの識別子に対応するデータチャンクサービスプロセス(複数可)の識別子(複数可)をさらに含み得、データチャンクサービスプロセス(複数可)の識別子(複数可)は、データチャンクの識別子を使用して任意のルートサーバにクエリを実行することによって、論理ボリュームサービスプロセスによって取得され得る。
【0150】
603b:ファイルシステムアクセスプロセスは、ターゲット論理ボリュームのデータ状態を復元するために、ログセグメントおよびチェックポイントの格納場所情報に従って、ログセグメントおよびチェックポイントのログメタデータを読み取る。
【0151】
604b:ファイルシステムアクセスプロセスは、ターゲット論理ボリュームのデータ状態に基づいて、データアクセス処理を実行する。
【0152】
前述のステップのさらなる説明のために、前述の実施形態における導入を参照することができ、これは、本明細書では繰り返されない。このマウントプロセスを通じて、ファイルシステムアクセスプロセスは、ターゲット論理ボリュームが現在所有しているすべてのデータにアクセスすることができる。
【0153】
ファイルシステムアクセスプロセスがターゲット論理ボリュームの最新のデータ状態を復元した後、データ読み取りの後続のプロセスを実行することができる。データ書き込みのプロセスは、多くの場合、ファイル準備読み取りフェーズと、データ読み取りフェーズと、を含み、これらは、
図7bに示されるように、以下の実施形態で説明される。
【0154】
図7aは、
図6aに示される実施形態におけるステップ604aの実装プロセスのフローチャートである。
図7aに示されるように、ステップ604aは、具体的には、以下の特定のステップを含み得る。
【0155】
701a:コンピューティングノードは、データ読み取りプロセスによって以前に読み取られたログシリアル番号j、ログシリアル番号jに対応する第3のデータチャンク、および第3のストレージノードに基づいて、データ読み込み処理によってトリガされたファイル準備読み込み操作に応答して、ログシリアル番号jの後にキャッシュされたログのメタデータを取得するために、データ同期要求を、第3のストレージノードに送信する。
【0156】
702a:コンピューティングノードは、第3のストレージノードからログシリアル番号jの後にキャッシュされたログ(複数可)の表示情報およびメタデータを受信し、キャッシュされたログに対応するログシリアル番号は、j+1~j+mであり、表示情報は、ログシリアル番号j+mに対応するログセグメントが閉鎖されたかどうかを示すために使用される。
【0157】
703a:コンピューティングノードは、ログシリアル番号jの後にキャッシュされたログ(複数可)のメタデータおよび表示情報に従って、ターゲット論理ボリュームのデータ状態を更新する。
【0158】
実際にデータを読み取る前に、データ読み取りプロセスは、多くの場合、何らかの準備操作を実行する必要がある。この準備操作は、ファイル準備読み取り操作と呼ばれる。実際のアプリケーションでは、ファイル準備読み取り操作は、例えば、特定のファイルを開くことであり得る。本実施形態では、まず、ファイル準備読み取り操作の処理の手順を導入する。
【0159】
データ読み取りプロセスは、ファイル準備読み取りの対応するインターフェースを呼び出すことによって、上述のファイル準備操作をトリガすることができる。
【0160】
ステップ701aの実行の理解を容易にするために、本実施形態は、最初に、実際のデータ読み取りおよび書き込みのシナリオを導入する。特定のコンピューティングノードは、常に、ターゲット論理ボリュームにデータを書き込んでおり、他のコンピューティングノードは、常に、ターゲット論理ボリュームのデータを読み取っている。読み取りの目的は、ビッグデータ分析の実行、データバックアップの実行などであり得る。しかしながら、データを読み取る複数のコンピューティングノードは、データを書き込むコンピューティングノードがいつデータを書き込むかわからないので、これらのコンピューティングは、多くの場合、定期的な読み取りなど、特定のメカニズムに基づいて、読み取りを開始する。データを読み取る任意のコンピューティングノードでは、特定のログ内のデータが最後に読み取られたと想定され、そのログの後に書き込まれたデータの読み取りを現在継続する必要がある。しかしながら、ターゲット論理ボリュームのマウントが完了してから現時点までに、新しいデータが書き込まれている可能性がある。したがって、この時点で、最後の読み取りログ以降に存在するすべてのログ内のデータを読み取ることができるようにするために、コンピューティングノードは、最後の読み取りログと現時点の最後のログセグメントとの間に含まれるターゲット論理ボリュームの各ログセグメントの現時点および場所、すなわち、どのストレージノードのどのデータチャンクかを知る必要がある。
【0161】
このとき、任意選択で、コンピューティングノードは、前述の実施形態において最後のログセグメントが位置するデータチャンクおよびストレージノードを取得するプロセスと同様に、ターゲットストレージノードおよびルートサーバにクエリを行うことによって、それを直接取得することができる。
【0162】
しかしながら、任意選択で、コンピューティングノードは、前回読み取ったログを認識しているので、コンピューティングノードは、本実施形態で提供された方法を通じて、最後に読み取ったログと現時点の最後のログセグメントとの間に含まれる各ログセグメントの場所を取得することもできる。
【0163】
コンピューティングノードは、そのデータ読み取りプロセスが最後に読み取ったログシリアル番号jと、ログシリアル番号jに対応する第3のデータチャンクと、第3のデータチャンクに対応する第3のストレージノードとをローカルに格納することができる。したがって、コンピューティングノードは、ログシリアル番号jの後にキャッシュされたログ(複数可)のメタデータを取得するために、データ同期要求を第3のストレージノードに送信し得る。
【0164】
前述の実施形態におけるデータ書き込みプロセスの書き込み結果を続けると、ターゲット論理ボリュームに現在格納されている最後のログのログシリアル番号がi+2である場合、j<(i+2)であることが理解できる。
【0165】
第3のデータチャンクは、ログシリアル番号jが属するログセグメント内の少なくとも様々なログを含み、また、ログシリアル番号jが属するログセグメントの後に1つ以上のログセグメントを含み得る。代替的に、第3のストレージノード内の第3のデータチャンクの後に位置する他のデータチャンクはまた、ログシリアル番号jが属するログセグメントの後に1つ以上のログセグメントを含み得る。したがって、第3のストレージノードは、ログシリアル番号jの後にローカルにキャッシュされたログ(複数可)のメタデータを、コンピューティングノードに返すことができる。
【0166】
加えて、前述の実施形態で述べたように、特定のログセグメントが閉鎖条件を満たす場合、ログセグメントは閉鎖される。したがって、m>1、(j+m)≦(i+2))の場合、第3のストレージノードがログシリアル番号j+1~j+mを有するログを格納する場合、第3のストレージノードは、ログシリアル番号j+mが属するログセグメントが閉鎖されているかどうかを判定し得る。閉鎖されている場合、これは、他のストレージノードの他のデータチャンクも、ログシリアル番号がj+mの後に位置する他のログを含むことを意味する。このとき、第3のストレージノードは、ログシリアル番号j+mが属するログセグメントが、コンピューティングノードに対して閉鎖されたことを示す表示情報も返す。逆に、閉鎖していない場合、これは、ターゲット論理ボリュームの最後のログシリアル番号がj+mであり、ログシリアル番号j+mが属するログセグメントが閉鎖されていないことを意味する。したがって、このとき、第3のストレージノードは、ログシリアル番号j+mが属するログセグメントが、コンピューティングノードに対して閉鎖されていないことを示す表示情報も返す。
【0167】
したがって、コンピューティングノードは、j+1~j+mの範囲のログのシリアル番号を有するキャッシュされたログのメタデータ、および第3のストレージノードによって送信された表示情報に基づいて、ターゲット論理ボリュームのデータ状態を更新する。
【0168】
具体的には、ログシリアル番号j+mに対応するログセグメントが閉鎖されていないことを表示情報が示している場合、コンピューティングノードは、ログシリアル番号j+1~j+mを有するキャッシュされたログのメタデータに従って、ターゲット論理ボリュームのデータ状態を直接更新し、すなわち、j+1~j+mに関連付けられたキャッシュされたログのメタデータをメモリに配置する。
【0169】
反対に、表示情報が、ログシリアル番号j+mに対応するログセグメントが閉鎖されたことを示している場合、コンピューティングノードは、ターゲットストレージノードおよびルートサーバを通じて、ログシリアル番号j+mの後にキャッシュされたログ(複数可)を格納するそれぞれの第4のデータチャンク(複数可)と、第4のデータチャンクに対応するそれぞれの第4のストレージノード(複数可)と、を判定する。コンピューティングノードは、ログシリアル番号j+mの後のキャッシュされたログ(複数可)のメタデータを取得するために、データ同期要求を第4のストレージノード(複数可)に送信する。コンピューティングノードは、ログシリアル番号j+1~j+mを有するキャッシュされたログのメタデータ、およびログシリアル番号j+mの後のキャッシュされたログのメタデータに従って、ターゲット論理ボリュームのデータ状態を更新する。
【0170】
ターゲットストレージノードおよびルートサーバを通じて、ログシリアル番号j+mの後にキャッシュされたログ(複数可)を格納するそれぞれの第4のデータチャンク(複数可)と、第4のデータチャンクに対応するそれぞれの第4のストレージノード(複数可)とを判定するプロセスは、前述の実施形態において、最後のログセグメントが位置する第1のデータチャンクと、第1のストレージノードとを取得するプロセスに類似しており、これらは両方とも、ターゲットストレージノードに保持されるログセグメント識別子とデータチャンク識別子との対応関係、およびルートサーバに保持されるデータチャンク識別子とストレージノード識別子との対応関係に基づいて実施され、これは、本明細書では繰り返さない。
【0171】
コンピューティングノードがターゲット論理ボリュームの最新の状態を現時点に復元した後、実際のデータが読み取られる前のファイル準備読み取りフェーズが完了する。このとき、復元されたターゲット論理ボリュームの最新のデータ状態に基づいて、データ読み取りプロセスは、その中の任意のデータを読み取ることができ、前回読み取られたログの後で読み取りを続行する必要はない。したがって、データ読み取りプロセスは、次いで、以下のステップなど、データ読み取りの実際のプロセスに進むことができる。
【0172】
704a:コンピューティングノードは、ターゲットストレージノードおよびルートサーバを通じて、読み取られるファイル情報に対応する第5のストレージノードと、第5のデータチャンクと、を判定し、データ読み取りプロセスによって送信されたデータ読み取り要求に応答して、第5のストレージノードを通じて第5のデータチャンクからデータを読み取り、データ読み取り要求は、読み取られるファイル情報を含む。
【0173】
読み取られるファイル情報には、例えば、ファイル名、ファイル内で読み取られるデータの位置(オフセット)などを含む。ターゲット論理ボリュームのデータ状態を復元する前述のプロセスの後、コンピューティングノードは、各ログのメタデータ情報をすでに知っており、各ログのメタデータは、ファイル名、オフセット、ファイルFIDなどを含むファイル情報を記録する。したがって、コンピューティングノードは、データ読み取り要求におけるファイル情報に基づいてログを見つけ、ログのログシリアル番号に基づいてターゲットストレージノードをクエリし、ログセグメント(ログシリアル番号が属する)が位置する第5のデータチャンクを取得し、第5のデータチャンクの識別子を使用してルートサーバにクエリを実行して、対応する第5のストレージノードを取得して、第5のデータチャンク内の対応するデータを読み取るための読み取り要求を、第5のストレージノードに送信して、必要なデータを読み取ることができる。
【0174】
任意選択の実施形態では、データ読み取りプロセスによって送信されたデータ読み取り要求に応答して、コンピューティングノードはまた、前回読み取られたログシリアル番号jと現時点の最新のログシリアル番号との間のログメタデータを取得するプロセスのステップ701a~703aを再度実行することができる。これは、データ読み取りプロセスがファイル準備読み取り操作をトリガしてからデータ読み取りプロセスがデータ読み取り要求をトリガするまでの間に、ターゲット論理ボリュームに新しいログが書き込まれる可能性があるためである。
【0175】
図7aに示される実施形態は、コンピューティングノードおよびストレージノードの観点からデータを読み取るプロセスを説明する。
図2または
図3に示される論理システムアーキテクチャに基づいて、
図7bに示される実施形態と組み合わされて、コンピューティングノードおよびストレージノードが、
図2または
図3に示されるような内部サービスプロセスの構成を有するとき、
図7aに示されるようなデータ読み取りのプロセスの特定の実装が以下に説明される。
【0176】
図7bは、
図6bに示される実施形態におけるステップ604bの実装プロセスのフローチャートである。
図7bに示されるように、ステップ604bは、具体的には、以下の特定のステップを含み得る。
【0177】
701b:ファイルシステムアクセスプロセスは、データ読み取りプロセスによって最後に読み取られたログシリアル番号j、ログシリアル番号jに対応する第3のデータチャンク、および第3のストレージノードに基づいて、データ読み取りプロセスによってトリガされたファイル準備読み取り操作に応答して、ログシリアル番号jの後にキャッシュされたログのメタデータを取得するために、データ同期要求を、第3のデータチャンクサービスプロセスに送信する。
【0178】
702b:ファイルシステムアクセスプロセスが、第3のデータチャンクサービスプロセスからログシリアル番号jの後にキャッシュされたログのメタデータおよび表示情報を受信した後、キャッシュされたログに対応するログシリアル番号は、j+1~j+mであり、表示情報は、ログシリアル番号j+mに対応するログセグメントが閉鎖されたかどうかを示すために使用される。
【0179】
703b:ファイルシステムアクセスプロセスは、ログシリアル番号jの後にキャッシュされたログのメタデータおよび表示情報に従って、ターゲット論理ボリュームのデータ状態を更新する。
【0180】
任意選択で、ログシリアル番号j+mに対応するログセグメントが閉鎖されていないことを表示情報が示している場合、ファイルシステムアクセスプロセスは、ログシリアル番号j+1~j+mを有するキャッシュされたログのメタデータに従って、ターゲット論理ボリュームのデータ状態を更新する。
【0181】
任意選択で、表示情報が、ログシリアル番号j+mに対応するログセグメントが閉鎖されたことを示している場合、ファイルシステムアクセスプロセスは、ターゲットストレージノードおよびルートサーバを通じて、ログシリアル番号j+mの後にキャッシュされたログ(複数可)を格納するそれぞれの第4のデータチャンク(複数可)と、第4のデータチャンク(複数可)に対応するそれぞれの第4のストレージノード(複数可)と、を判定する。ファイルシステムアクセスプロセスは、ログシリアル番号j+mの後にキャッシュされたログ(複数可)のメタデータを取得するために、データ同期要求を第4のデータチャンクサービスプロセス(複数可)に送信する。ファイルシステムアクセスプロセスは、ログシリアル番号j+1~j+mを有するキャッシュされたログのメタデータ、およびログシリアル番号j+mの後にキャッシュされたログのメタデータに従って、ターゲット論理ボリュームのデータ状態を更新する。
【0182】
704b:ファイルシステムアクセスプロセスは、データ読み取りプロセスによって送信されたデータ読み取り要求を受信し、データ読み取り要求は、読み取られるファイル情報を含む。
【0183】
705b:ファイルシステムアクセスプロセスは、第5のデータチャンクサービスプロセスを通じて、第5のデータチャンクから第5のデータチャンク内のデータを読み取るために、論理ボリュームサービスプロセスおよびルートサーバを通じて読み取られるファイル情報に対応する第5のデータチャンクサービスプロセスおよび第5のデータチャンクを判定する。
【0184】
データ読み取りの上記のプロセスのさらなる内容については、
図7aに示される実施形態における関連する導入を参照することができ、これは、本明細書では繰り返されない。
【0185】
要するに、データ書き込みおよびデータ読み取りの全プロセスと組み合わせて、本発明の実施形態は、ログベースの分散ファイルシステムの共有の解決策を実施する。具体的には、ログシリアル番号は、読み取りおよび書き込みのパーティの状態調整のための基準として使用され、読み取りと書き込みの競合を回避し、読み取りと書き込みの整合性を確実にする。1回の書き込みおよび複数回の読み取りのデータアクセスモードがサポートされており、複数のリーダが待機する必要がないため、データの読み取りの遅延が減少する。加えて、各ストレージノードは、各論理ボリュームのログメタデータ情報を同期的に維持し、これは、各論理ボリュームのログ情報の分散管理を実現することと同じである。任意のコンピューティングノードは、後続のデータアクセス処理を実行するために任意のストレージノードに維持されるログメタデータを通じて、対応する論理ボリュームのデータ状態を復元することができ、これにより、ファイルシステムのスケーラビリティが大幅に向上する。
【0186】
図8aは、本発明の実施形態によるファイルシステムのデータにアクセスするためのさらに別の方法のフローチャートである。本発明の実施形態によって提供される方法は、
図1に示されるようなアーキテクチャ下のターゲットストレージノードによって実行することができ、ターゲットストレージノードは、ファイルシステムの複数のストレージノードのうちのいずれか1つである。
図8aに示されるように、本方法は、以下のステップを含む。
【0187】
801a:ターゲットストレージノードは、コンピューティングノードによって送信されたターゲット論理ボリュームに対応するマウント要求を受信する。
【0188】
コンピューティングノードは、ファイルシステム内の任意のコンピューティングノードである。
【0189】
802a:ターゲットストレージノードは、データアクセス処理を実行するためのログセグメントおよびチェックポイントの格納場所情報に基づいて、コンピューティングノードがターゲット論理ボリュームのデータ状態を復元することができるようにするように、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を、コンピューティングノードに送信する。
【0190】
コンピューティングノードは、ログセグメントおよびチェックポイントの格納場所情報に基づいて、対応する格納場所からログメタデータを読み取り、メモリ内の読み取ったログメタデータを再生して、ターゲット論理ボリュームのデータ状態を復元する。
【0191】
データ書き込みおよびデータ読み取りのプロセスにおけるターゲットストレージノードの処理の手順の詳細は、以下の2つの任意の実施形態と併せて以下に説明される。
【0192】
任意選択の実施形態では、コンピューティングノード内のサービスビジネスアプリケーションがデータ書き込みのプロセスをトリガするとき、すなわち、データ書き込みの必要性のためにターゲット論理ボリュームをマウントする必要があるとき、ターゲットストレージノードは、コンピューティングノードによって送信された第1のマウント要求を受信する。第1のマウント要求は、読み取り/書き込みマウントモードの識別子と、ターゲット論理ボリュームの識別子と、ユーザ情報と、を含む。読み取り/書き込みマウントモードの識別子は、コンピューティングノード内のデータ書き込みプロセスに対応し、これは、データ書き込みプロセスが、書き込み/読み取りモードでターゲット論理ボリュームをマウントする必要があることを意味する。このモードでは、ターゲット論理ボリュームを、特定の時間に1つのデータ書き込みプロセスのみによって占有することができる。このとき、第1のマウント要求におけるユーザ情報がターゲット論理ボリュームのユーザ権限検証に合格したと判定し、ターゲット論理ボリュームが、現在、読み取り/書き込みモードでマウントされていない、すなわち、他のデータ書き込みプロセスによって占有されていないと判定した後、ターゲットストレージノードは、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を、コンピューティングノードに送信する。
【0193】
別の任意選択の実施形態では、コンピューティングノード内の特定のサービスアプリケーションがデータ読み取りのプロセスをトリガするとき、すなわち、データ読み取りの必要性のためにターゲット論理ボリュームをマウントする必要があるとき、ターゲットストレージノードは、コンピューティングノードによって送信された第2のマウント要求を受信する。第2のマウント要求は、読み取り専用モードの識別子と、ターゲット論理ボリュームの識別子と、ユーザ情報と、を含む。読み取り専用マウントモードの識別子は、コンピューティングノード内のデータ読み取りプロセスに対応し、これは、データ読み取りプロセスが、読み取り専用モードでターゲット論理ボリュームをマウントする必要があることを意味する。このモードでは、ターゲット論理ボリュームを複数のデータ読み取りプロセスによって占有することができる。このとき、ターゲットストレージノードは、第2のマウント要求におけるユーザ情報がターゲット論理ボリュームのユーザ権限検証に合格したと判定した後、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を、コンピューティングノードに送信する。
【0194】
ターゲット論理ボリュームがマウントされた後のデータ書き込みまたはデータ読み取りのプロセス中、ターゲットストレージノードは、以下の機能、
ターゲットストレージノードによって、コンピューティングノードによって送信されたクエリ要求を受信することであって、クエリ要求は、ターゲット論理ボリュームに対応するターゲットログセグメントが位置するデータチャンクをクエリするために使用される、受信することと、
ターゲットストレージノードによって、ログセグメントの識別子とターゲット論理ボリュームのデータチャンクの識別子との間の維持された対応関係に従って、ターゲットログセグメントが位置するデータチャンクの識別子を判定することと、
ターゲットストレージノードによって、データチャンクの識別子を、コンピューティングノードに送信することと、も有する。
【0195】
例えば、
図5aに示される実施形態に記載されるデータ書き込みのプロセスに対応して、データ書き込みプロセスのトリガに基づいて、コンピューティングノードが、
図5aに示される実施形態における第1のログまたは第2のログなどのログを生成した後、コンピューティングノードは、現在生成されているログを、ターゲット論理ボリュームの最後のログセグメントが位置するデータチャンクに格納する必要がある。そのため、コンピューティングノードは、データチャンクと、ターゲットストレージノードを通じて、データチャンクが位置するストレージノードとを判定する必要がある。
【0196】
これに基づいて、ターゲットストレージノードは、データ書き込みのプロセス中に、以下のステップ、
ターゲットストレージノードによって、コンピューティングノードによって送信された第1のクエリ要求を受信することであって、第1のクエリ要求は、ターゲット論理ボリュームに対応する最後のログセグメントが位置するデータチャンクをクエリするために使用される、受信することと、
ターゲットストレージノードによって、ログセグメントの識別子とターゲット論理ボリュームのデータチャンクの識別子との間の維持された対応関係に従って、最後のログセグメントが位置する第1のデータチャンクの識別子を判定することと、
ターゲットストレージノードによって、第1のデータチャンクの識別子を、コンピューティングノードに送信し、その結果、コンピューティングノードは、第1のデータチャンクの識別子に従って、ルートサーバにクエリを実行して、第1のデータチャンクに対応する第1のストレージノードを取得し、ログを第1のデータチャンクに追加し、第1のストレージノードに、ログにメタデータをキャッシュするように要求することができることと、を実行する必要がある。
【0197】
データチャンクの識別子とストレージノードの識別子との間の対応関係は、ルートサーバで維持される。
【0198】
別の例として、
図7aに示される実施形態に記載されるデータ読み取りのプロセスに対応して、コンピューティングノードが、ログシリアル番号j+mの後にログが格納されるデータチャンクを判定する必要があるとき、ターゲットストレージノードは、さらに、データ読み取りのプロセス中に、以下のステップ、
ターゲットストレージノードによって、コンピューティングノードによって送信された第2のクエリ要求を受信することであって、第2のクエリ要求は、データ読み取りプロセスによって最後に読み取られたログシリアル番号jとログシリアル番号j+mとの間のログを取得した後、コンピューティングノードによって送信され、第2のクエリ要求は、ログシリアル番号j+mの後にキャッシュされたログ(複数可)のデータチャンク(複数可)を要求するために使用される、受信することと、
ターゲットストレージノードによって、ログセグメントの識別子とデータチャンクの識別子との間の維持された対応関係に従って、ログシリアル番号j+mの後にキャッシュされたログが位置するそれぞれの第2のデータチャンク(複数可)の識別子(複数可)を判定することと、
ターゲットストレージノードによって、それぞれの第2のデータチャンク(複数可)の識別子(複数可)を、コンピューティングノードに送信して、コンピューティングノードが、それぞれの第2のデータチャンク(複数可)の識別子(複数可)に従って、ルートサーバにクエリを実行して、それぞれの第2のデータチャンク(複数可)に対応する第2のストレージノード(複数可)を取得し、その結果、それぞれの第2のデータチャンク(複数可)から、j+m以降のログシリアル番号の後にキャッシュされたログ(複数可)のメタデータを取得し、ログシリアル番号j+mの後にキャッシュされたログ(複数可)のメタデータに従って、ターゲット論理ボリュームのデータ状態を更新することができることと、を実行する必要がある。
【0199】
上記は、データ書き込みおよびデータ読み取りのプロセスでターゲットストレージノードが実行する必要がある可能性のあるいくつかの処理に言及している。さらに、本発明の実施形態では、ガベージコレクション処理メカニズムもまた、各ストレージノードに対して展開される。
【0200】
論理ボリュームに書き込まれるデータは、ログ増分の方法で書き込まれるので(すなわち、追加専用モードで書き込む)、特定のログ内のデータおよびメタデータは、ログ内のデータが変更されると、ガベージになる。言い換えれば、ログは、無効になる。したがって、以前に書き込まれたデータのストレージスペースを再編成および再利用するために、ガベージコレクションメカニズムが提供される。
【0201】
具体的には、ターゲットストレージノードの場合、ガベージコレクション処理を実行するために、以下のプロセス、
対応するデータ状態を復元するために、ターゲットストレージノードによって、ターゲット論理ボリュームに対応するK個のログセグメント、およびK個のログセグメントに対応するチェックポイントを選択することと、
K個のログセグメント内のM個のログセグメントのガベージ比率が事前設定された閾値に到達したと判定したことに応答して、ターゲットストレージノードは、M個のログセグメント内の無効なログをクリアし、クリアした後、M個のログセグメントを新しいデータチャンクに書き込み、M個のログセグメントが位置する元のデータチャンクを再要求し、M個のログセグメントとデータチャンクとの間の対応関係を更新することであって、新しいデータチャンクは、ルートサーバからターゲットストレージノードによって取得される、更新することと、を使用することができる。
【0202】
実際のアプリケーションでは、ガベージコレクション処理が実行される前に、ターゲットストレージノードは、最初に、ガベージコレクションモードでターゲット論理ボリュームをマウントすることができ、ターゲット論理ボリュームは、複数の論理ボリュームのうちのいずれか1つであり得る。ガベージコレクションモードは、ターゲット論理ボリュームのログセグメントおよびチェックポイントを書き換えることができることを意味する。
【0203】
このとき、ターゲットストレージノードは、様々なログセグメント、およびターゲット論理ボリュームの様々なログセグメントに対応するチェックポイントから、K個のログセグメントに対応するK個のログセグメントおよびチェックポイントを選択して、対応するデータ状態を復元する、すなわち、メモリ内のK個のログセグメントおよびチェックポイントのログメタデータを再生して、K個のログセグメントに対応するターゲット論理ボリュームのデータ状態を復元する。K個のログセグメントは、これに限定されないが、連続するK個のログセグメントである場合がある。
【0204】
その後、ターゲットストレージノードは、各ログの有効性を識別するために、K個のログセグメントのすべてのログのメタデータを、1つずつトラバースすることができる。例えば、初期ログが、特定のファイルが作成されたことを記録し、後続のログが、ファイルが削除されたことを記録した場合、初期ログは、無効になる。別の例として、初期ログは、データがファイルに書き込まれたことを記録しているが、後続のログは、このデータが新しいデータによって上書きされたことを記録している場合、初期ログは、無効である。
【0205】
したがって、ターゲットストレージノードは、K個のログセグメント内の各ログセグメントのガベージ比率を順次判定することができ、ガベージ比率は、ログセグメント内の無効なログの数とログセグメントに含まれるログの総数との間の比率として定義される。
【0206】
任意選択で、ターゲットストレージノードは、ガベージ比率がK個のログセグメントにおいて事前設定された閾値を超えるすべてのログセグメントが現在のリサイクルターゲットと見なされると判定してもよい。例えば、M個のログセグメントのガベージ比率が事前設定された閾値に到達した、K≧M≧1の場合、これらのM個のログセグメントは、リサイクルターゲットと見なされると判定される。
【0207】
任意選択で、ガベージコレクションのプロセスは、メモリリソースなど、ターゲットストレージノードの処理リソースも占有するので、ターゲットストレージノードによって一度に再利用されるログセグメントの数を制御することができる。したがって、任意選択で、ターゲットストレージノードは、以下の戦略に従って、リサイクルターゲットを判定することもできる。ターゲットストレージノードは、K個のログセグメントに含まれるすべてのログのメタデータを順次トラバースし、現在トラバースされているログ内の無効なログの数と、トラバースされたログ内のログの総数との間の比率を継続的に計算し、すなわち、ガベージ比率が事前設定された閾値に到達するログ(エンドログと呼ばれる)がトラバースされるか、または、エンドログが属するログセグメントの最後のログがトラバースされるまで、トラバースされたログに関連付けられたガベージ比率を継続的に計算する。したがって、ターゲットストレージノードは、合計M個のログセグメントがリサイクルターゲットであると判定された場合を想定して、K個のログセグメントの第1のログセグメントから、エンドログが属するログセグメントまでの各ログセグメントが、リサイクルターゲットであると判定し得る。
【0208】
したがって、ターゲットストレージノードが、K個のログセグメント内のM個のログセグメントのガベージ比率が、事前設定された閾値に到達したと判定すると、M個のログセグメント内の無効なログが最初にクリアされ、すなわち、無効なログに格納されたメタデータおよびデータがクリアされ、例えば、無効なログによって占有されるストレージスペースを低減するために、無効なログを埋めるために、null-opが使用される。次いで、新しいデータチャンクは、クリアされたM個のログセグメントを新しいデータチャンク(複数可)に書き込むように、ルートサーバから要求され、M個のログセグメントが位置する元のデータチャンクが再利用される。M個のログセグメントとデータチャンクとの間の対応関係が更新され、すなわち、M個のログセグメントの識別子と元のデータチャンクの識別子との間の対応関係が、M個のログセグメントの識別子と新しいデータチャンクの識別子との間の対応関係に更新される。対応関係を更新した後、ターゲットストレージノードは、新しく更新された対応関係を、他のストレージノードと同期させることもできる。
【0209】
図8aに示される前述の実施形態は、ストレージノードの観点から、ファイルシステムのデータにアクセスするプロセスに関与するストレージノードの処理の手順を示している。
図2または
図3に示される論理システムアーキテクチャに基づいて、
図8bに示される実施形態と併せて、前述の処理手順におけるストレージノードの実装の詳細なプロセスが以下に説明される。
【0210】
図8bは、本発明の実施形態によって提供されるファイルシステムのデータにアクセスするための別の方法のフローチャートである。本発明の実施形態によって提供される方法の実行は、少なくとも、
図2または
図3に示されるアーキテクチャ下のストレージノードにおける論理ボリュームサービスプロセス(VS)と、ガベージコレクションサービスプロセス(GC)と、を含む。
図8bに示されるように、本方法は、以下のステップを含む。
【0211】
801b:ストレージノード内の論理ボリュームサービスプロセスは、コンピューティングノード内のファイルシステムアクセスプロセスによって送信されたターゲット論理ボリュームに対応するマウント要求を受信する。
【0212】
801b:論理ボリュームサービスプロセスは、データアクセス処理を実行するための第1のログセグメントおよびチェックポイントの格納場所情報に基づいて、ファイルシステムアクセスプロセスがターゲット論理ボリュームのデータ状態を復元することができるようにするように、ターゲット論理ボリュームに対応する第1のログセグメントおよびチェックポイントの格納場所情報を、ファイルシステムアクセスプロセスに送信する。
【0213】
データ書き込みおよびデータ読み取りのプロセスにおけるストレージノード内の論理ボリュームサービスプロセスの処理手順の詳細は、以下の2つの任意選択の実施形態と併せて以下に説明される。
【0214】
任意選択の実施形態では、コンピューティングノード内のサービスビジネスアプリケーションがデータ書き込みのプロセスをトリガするとき、すなわち、データ書き込みの必要性のためにターゲット論理ボリュームをマウントする必要があるとき、コンピューティングノード内のファイルシステムアクセスプロセスは、ターゲット論理ボリュームのマウント操作をトリガする。このとき、ストレージノード内の論理ボリュームサービスプロセスは、ファイルシステムアクセスプロセスによって送信された第1のマウント要求を受信する。第1のマウント要求は、読み取り/書き込みマウントモードの識別子と、ターゲット論理ボリュームの識別子と、ユーザ情報と、を含む。したがって、ユーザ情報がターゲット論理ボリュームのユーザ権限検証に合格したと判定し、ターゲット論理ボリュームが、現在、読み取り/書き込みモードでマウントされていないと判定した後、論理ボリュームサービスプロセスは、ターゲット論理ボリュームに対応する第1のログセグメントおよびチェックポイントの格納場所情報を、ファイルシステムアクセスプロセスに送信する。
【0215】
別の任意選択の実施形態では、コンピューティングノード内のサービスアプリケーションがデータ読み取りのプロセスをトリガするとき、すなわち、データ読み取りの必要性のためにターゲット論理ボリュームをマウントする必要があるとき、コンピューティングノード内のファイルシステムアクセスプロセスは、ターゲット論理ボリュームのマウント操作をトリガする。このとき、ストレージノード内の論理ボリュームサービスプロセスは、ファイルシステムアクセスプロセスによって送信された第2のマウント要求を受信する。第2のマウント要求は、読み取り専用モードの識別子と、ターゲット論理ボリュームの識別子と、ユーザ情報と、を含む。したがって、論理ボリュームサービスプロセスは、ユーザ情報がターゲット論理ボリュームのユーザ権限検証に合格したと判定した後、ターゲット論理ボリュームに対応する第1のログセグメントおよびチェックポイントの格納場所情報を、ファイルシステムアクセスプロセスに送信する。
【0216】
ターゲット論理ボリュームがマウントされた後のファイルシステムアクセスプロセスのデータ書き込みまたはデータ読み取りの後続のプロセスでは、論理ボリュームサービスプロセスは、次の機能、
論理ボリュームサービスプロセスによって、ファイルシステムアクセスプロセスによって送信されたクエリ要求を受信することであって、クエリ要求は、ターゲット論理ボリュームに対応するターゲットログセグメントが位置するデータチャンクをクエリするために使用される、受信することと、
論理ボリュームサービスプロセスによって、ログセグメントの識別子とデータチャンクの識別子との間の維持された対応関係に従って、ターゲットログセグメントが位置するデータチャンクの識別子を判定することと、
論理ボリュームサービスプロセスによって、データチャンクの識別子を、ファイルシステムアクセスプロセスに送信することと、も有する。
【0217】
例えば、
図5bに示される実施形態に記載されるデータ書き込みのプロセスに対応して、データ書き込みプロセスのトリガに基づいて、ファイルシステムアクセスプロセスが、
図5bに示される実施形態における第1のログまたは第2のログなど、特定のログを生成した後、ファイルシステムアクセスプロセスは、現在生成されているログを、ターゲット論理ボリュームの最後のログセグメントが位置するデータチャンクに格納する必要がある。したがって、ファイルシステムアクセスプロセスは、論理ボリュームサービスプロセスを通じて、データチャンクと、データチャンクに対応するデータチャンクサービスプロセスとを判定する必要がある。
【0218】
したがって、論理ボリュームサービスプロセスは、データ書き込みのプロセス中に、以下のステップ、
論理ボリュームサービスプロセスによって、ファイルシステムアクセスプロセスによって送信された第1のクエリ要求を受信することであって、第1のクエリ要求は、ターゲット論理ボリュームに対応する最後のログセグメントが位置するデータチャンクをクエリするために使用される、受信することと、
論理ボリュームサービスプロセスによって、ログセグメントの識別子とデータチャンクの識別子との間の維持された対応関係に従って、最後のログセグメントが位置する第1のデータチャンクの識別子を判定することと、
論理ボリュームサービスプロセスによって、第1のデータチャンクの識別子を、ファイルシステムアクセスプロセスに送信して、ファイルシステムアクセスプロセスが、第1のデータチャンクの識別子に従って、ルートサーバにクエリを実行して、第1のデータチャンクに対応する第1のデータチャンクサービスプロセスを取得し、ログを第1のデータチャンクに追加し、第1のデータチャンクサービスプロセスに、ログにメタデータをキャッシュするように要求することと、も実行する必要がある。
【0219】
データチャンクの識別子とストレージノードの識別子との間の対応関係は、ルートサーバで維持される。
【0220】
別の例として、
図7bに示される実施形態で記載されるデータ読み取りのプロセスに対応して、ファイルシステムアクセスプロセスが、ログシリアル番号j+mの後にログを格納するデータチャンクを判定する必要があるとき、論理ボリュームサービスプロセスは、データ読み取りのプロセス中に、以下のステップ、
論理ボリュームサービスプロセスによって、ファイルシステムアクセスプロセスによって送信された第2のクエリ要求を受信することであって、第2のクエリ要求は、データ読み取りプロセスによって最後に読み取られたログシリアル番号jとログシリアル番号j+mとの間のログを取得した後、ファイルシステムアクセスプロセスによって送信され、第2のクエリ要求は、ログシリアル番号j+mの後にキャッシュされたログ(複数可)のデータチャンク(複数可)を要求するために使用される、受信することと、
論理ボリュームサービスプロセスによって、ログセグメントの識別子とデータチャンクの識別子との間の維持された対応関係に従って、ログシリアル番号j+mの後にキャッシュされたログが位置するそれぞれの第2のデータチャンク(複数可)の識別子(複数可)を判定することと、
論理ボリュームサービスプロセスによって、それぞれの第2のデータチャンク(複数可)の識別子(複数可)を、ファイルシステムアクセスプロセスに送信して、ファイルシステムアクセスプロセスが、それぞれの第2のデータチャンク(複数可)の識別子(複数可)に従って、ルートサーバにクエリを実行して、それぞれの第2のデータチャンク(複数可)に対応する第2のデータチャンクサービスプロセス(複数可)を取得し、その結果、それぞれの第2のデータチャンク(複数可)から、j+m以降のログシリアル番号の後にキャッシュされたログ(複数可)のメタデータを取得し、ログシリアル番号j+mの後にキャッシュされたログ(複数可)のメタデータに従って、ターゲット論理ボリュームのデータ状態を更新することができることと、を実行する必要がある。
【0221】
論理ボリュームに書き込まれるデータは、ログ増分の方法で書き込まれるので(すなわち、追加専用モードで書き込む)、特定のログ内のデータおよびメタデータは、ログ内のデータが変更されると、ガベージになる。言い換えれば、ログは、無効になる。したがって、本発明の実施形態は、以前に書き込まれたデータのストレージスペースを再編成および再利用するためのガベージコレクションメカニズムをさらに提供する。具体的には、各ストレージノードに展開されたガベージコレクションサービスプロセス(GC)は、他のサービスプロセスと連携してガベージコレクションを完了する。
【0222】
具体的には、どのストレージノードでも、ガベージコレクション処理は、以下のプロセス、
ストレージノード内の論理ボリュームサービスプロセスによって、ストレージノード内のガベージコレクションサービスプロセスによって送信されたターゲット論理ボリュームに対応する第3のマウント要求を受信することと、
論理ボリュームサービスプロセスによって、ターゲット論理ボリュームに対応する第2のログセグメントおよびチェックポイントの格納場所情報を、ガベージコレクションサービスプロセスに送信して、ガベージコレクションサービスプロセスが、第2のログセグメントおよびチェックポイントからK個のログセグメントおよびチェックポイントを選択できるようにして、対応するデータ状態を復元し、K個のログセグメント内のM個のログセグメントのそれぞれのガベージ比率が事前設定された閾値に到達した、K≧M≧1と判定したことに応答して、M個のログセグメントが位置する元のデータチャンクを再要求することと、
論理ボリュームサービスプロセスによって、ガベージコレクションサービスプロセスによって送信されたログセグメント更新通知を受信することであって、ログセグメント更新通知が、M個のログセグメントと、M個のログセグメントが位置する新しいデータチャンクとの間の対応関係を含む、受信することと、
論理ボリュームサービスプロセスによって、元の対応関係を、M個のログセグメントと新しいデータチャンクとの間の対応関係によって更新することと、を通じて実行することができる。
【0223】
ガベージコレクションの前述のプロセスのさらなる説明については、
図8aに示される実施形態における関連する説明を参照することができ、これは、本明細書では繰り返されない。
【0224】
本発明の1つ以上の実施形態のファイルシステムデータアクセス装置を、以下に詳細に説明する。当業者は、これらのファイルシステムデータアクセス装置のすべてが、本解決策で教示されるステップを通じて、市販のハードウェアコンポーネントを使用して構成され得ることを理解することができる。
【0225】
図9は、本発明の実施形態によって提供されるファイルシステムのデータにアクセスするための装置の概略構造図である。
図9に示されるように、装置は、送信モジュール11と、受信モジュール12と、復元モジュール13と、処理モジュール14と、を含む。
【0226】
送信モジュール11は、ターゲット論理ボリュームに対してトリガされたマウント要求を、ターゲットストレージノードに送信するように構成されており、ターゲットストレージノードは、複数のストレージノードのうちのいずれか1つであり、ターゲット論理ボリュームは、複数のストレージノード内のストレージリソースの少なくとも一部に対応する。
【0227】
受信モジュール12は、ターゲットストレージノードによって送信されたターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を受信するように構成されている。
【0228】
復元モジュール13は、ターゲット論理ボリュームのデータ状態を復元するために、ログセグメントおよびチェックポイントの格納場所情報に従って、ログセグメントおよびチェックポイントのログメタデータを読み取るように構成されている。
【0229】
処理モジュール14は、ターゲット論理ボリュームのデータ状態に基づいて、データアクセス処理を実行するように構成されている。
【0230】
図9に示される装置は、
図4a、
図5a、
図6a、および
図7aに示される実施形態の方法を実行することができる。本実施形態で詳細に説明されていない部分については、
図4a、
図5a、
図6a、および
図7aに示される実施形態の説明を参照することができる。
【0231】
ファイルシステムのデータにアクセスするための装置の内部機能および構造は、上述されている。可能な設計では、ファイルシステムのデータにアクセスするための装置の構造は、
図10に示されるように、アプリケーションサーバなどのコンピューティングノードとして実装することができる。コンピューティングノードは、プロセッサ21と、メモリ22と、を含み得、メモリ22は、
図4a、
図5a、
図6a、および
図7aに示される実施形態で提供されるファイルシステムのデータにアクセスするための方法を実行するために、ファイルシステムのデータにアクセスするための装置をサポートするプログラムを格納するように構成されている。プロセッサ21は、メモリ22に記憶されたプログラムを実行するように構成される。
【0232】
プログラムは、1つ以上のコンピュータ命令を含み、1つ以上のコンピュータ命令は、プロセッサ21によって実行されると、以下のステップ、
ターゲット論理ボリュームに対してトリガされたマウント要求を、ターゲットストレージノードに送信することであって、ターゲットストレージノードは、複数のストレージノードのうちのいずれか1つであり、ターゲット論理ボリュームは、複数のストレージノードの少なくとも一部のストレージリソースに対応している、送信することと、
ターゲットストレージノードによって送信されたターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を受信することと、
ターゲット論理ボリュームのデータ状態を復元するために、ログセグメントおよびチェックポイントの格納場所情報に従って、ログセグメントおよびチェックポイントのログメタデータを読み取ることと、
ターゲット論理ボリュームのデータ状態に基づいて、データアクセス処理を実行することと、を実施することができる。
【0233】
任意選択で、プロセッサ21は、
図4a、
図5a、
図6a、および
図7aに示される実施形態のステップの全部または一部を実行するようにさらに構成される。
【0234】
ファイルシステムのデータにアクセスするための装置の構造は、ユーザインターフェース操作デバイスが、他のデバイスまたは通信ネットワークと通信することを可能にするように構成された通信インターフェース23をさらに含み得る。
【0235】
加えて、本発明の実施形態は、ファイルシステムのデータにアクセスするための装置によって使用されるコンピュータソフトウェア命令を格納するために使用されるコンピュータ記憶媒体を提供し、
図4a、
図5a、
図6a、および
図7aに示される方法の実施形態においてファイルシステムのデータにアクセスするための方法を実行することに関与するプログラムを含む。
【0236】
図11は、本発明の実施形態によって提供されるファイルシステムのデータにアクセスするための別の装置の概略構造図である。
図11に示されるように、装置は、表示モジュール11と、動作イベント処理モジュール12と、レンダリング処理モジュール13と、を含む。
【0237】
受信モジュール31は、コンピューティングノードによって送信されたターゲット論理ボリュームに対応するマウント要求を受信するように構成されている。
【0238】
取得モジュール32は、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を取得するように構成されている。
【0239】
送信モジュール33は、データアクセス処理を実行するためのログセグメントおよびチェックポイントの格納場所情報に基づいて、コンピューティングノードが、ターゲット論理ボリュームのデータ状態を復元することができるようにするために、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を、コンピューティングノードに送信するように構成されており、ターゲット論理ボリュームは、複数のストレージノード内のストレージリソースの少なくとも一部に対応する。
【0240】
図11に示される装置は、
図8aに示される実施形態の方法を実行することができる。本実施形態で詳細に説明されていない部分については、
図8aに示される実施形態の関連する説明を参照することができる。
【0241】
ファイルシステムのデータにアクセスするための装置の内部機能および構造は、上述されている。可能な設計では、ファイルシステムのデータにアクセスするための装置の構造は、
図12に示されるように、ストレージノードとして実装することができる。ストレージノードは、プロセッサ41と、メモリ42と、を含み得、メモリ42は、
図8aに示される実施形態で提供されるファイルシステムのデータにアクセスするための方法を実行するために、ファイルシステムのデータにアクセスするための装置をサポートするプログラムを格納するように構成されている。プロセッサ41は、メモリ42に記憶されたプログラムを実行するように構成される。
【0242】
プログラムは、1つ以上のコンピュータ命令を含み、1つ以上のコンピュータ命令は、プロセッサ41によって実行されると、以下のステップ、
コンピューティングノードによって送信されたターゲット論理ボリュームに対応するマウント要求を受信することと、
データアクセス処理を実行するためのログセグメントおよびチェックポイントの格納場所情報に基づいて、コンピューティングノードが、ターゲット論理ボリュームのデータ状態を復元することができるようにするために、ターゲット論理ボリュームに対応するログセグメントおよびチェックポイントの格納場所情報を、コンピューティングノードに送信することであって、ターゲット論理ボリュームは、複数のストレージノード内のストレージリソースの少なくとも一部に対応する、送信することと、を実施することができる。
【0243】
任意選択で、プロセッサ41は、
図8aに示される実施形態のステップの全部または一部を実行するようにさらに構成されている。
【0244】
ファイルシステムのデータにアクセスするための装置の構造は、ユーザインターフェース操作デバイスが、他のデバイスまたは通信ネットワークと通信することを可能にするように構成された通信インターフェース43をさらに含み得る。
【0245】
加えて、本発明の実施形態は、ファイルシステムのデータにアクセスするための装置によって使用されるコンピュータソフトウェア命令を格納するために使用されるコンピュータ記憶媒体を提供し、
図8aに示される方法の実施形態においてファイルシステムのデータにアクセスするための方法を実行することに関与するプログラムを含む。
【0246】
上記の装置の実施形態は、単なる例示である。別々の構成要素として説明されているユニットは、物理的に別々であっても別々でなくてもよい。ユニットとして表示される構成要素は、物理的なユニットであってもよいし、物理的なユニットでなくてもよい、すなわち、一箇所に位置していてもよいし、複数のネットワークユニットに分散されていてもよい。モジュールのいくつかまたはすべては、実施形態の解決策の目的を達成するための実際の必要性に従って選択されてもよい。当業者は、いかなる創造的な努力もすることなく、それを理解し、実施することができる。
【0247】
上記の実施形態の説明を通じて、当業者は、各実施形態が、必要な一般的なハードウェアプラットフォームを追加して実施することができ、明らかにハードウェアとソフトウェアの組み合わせによっても実施することもできることを明確に理解することができる。そのような理解に基づいて、上記の技術的解決策の本質または既存の技術に貢献する部分を、ソフトウェア製品の形式で具体化することができる。本発明は、コンピュータ使用可能プログラムコードを含む1つ以上のコンピュータ使用可能記憶媒体(磁気ディスク、CD-ROM、光学ディスクなどを含むがこれらに限定されない)上に実装されるコンピュータプログラム製品の形態を採用することができる。
【0248】
本発明は、本発明の実施形態による方法、デバイス(システム)、およびコンピュータプログラム製品のフローチャートおよび/またはブロック図を参照して説明される。フローチャートおよび/またはブロック図における各ステップおよび/またはブロック、ならびにフローチャートおよび/またはブロック図におけるステップおよび/またはブロックの組み合わせは、コンピュータプログラム命令によって実装することができることを理解されたい。コンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、組み込みプロセッサ、または他のプログラム可能データ処理デバイスのプロセッサに提供されて機械を生成することができるので、フローチャートの1つ以上のプロセスおよび/またはブロック図の1つ以上のブロックで指定された機能を実行するために使用される装置が、コンピュータのプロセッサまたは他のプログラム可能なデータ処理デバイスを使用して命令を実行することによって生成されるようにすることができる。
【0249】
これらのコンピュータプログラム命令はまた、コンピュータまたは他のプログラム可能なデータ処理デバイスを特定の方法で動作させるように導くことができるコンピュータ可読ストレージデバイスに記憶することができ、その結果、コンピュータ可読デバイスデバイスに記憶された命令は、指示装置を含む製品を製造する。命令装置は、フローチャートにおける1つ以上のプロセスおよび/またはブロック図における1つ以上のブロックによって指定された機能を実施する。
【0250】
これらのコンピュータプログラム命令はまた、コンピュータまたは他のプログラム可能データ処理デバイスにロードすることができ、その結果、一連の操作ステップが、コンピュータまたは他のプログラム可能デバイス上で実行されて、コンピュータ実装処理を生成し、その結果、コンピュータまたは他のプログラム可能デバイス上で実行される命令が、フローチャートにおける1つ以上のプロセスおよび/またはブロック図における1つ以上のブロックで指定された機能を実装するためのステップを提供する。
【0251】
典型的な構成では、コンピューティングデバイスは、1つ以上のプロセッサ(CPU)と、入力/出力インターフェースと、ネットワークインターフェースと、メモリと、を含む。
【0252】
メモリは、揮発性メモリ、ランダムアクセスメモリ(RAM)および/または不揮発性メモリ、例えば読み取り専用メモリ(ROM)、またはフラッシュRAMなどのコンピュータ可読媒体の形態を含み得る。メモリは、コンピュータ可読媒体の例である。
【0253】
コンピュータ可読媒体は、任意の方法または技術を使用して情報の記憶を達成することができる揮発性または不揮発性タイプ、取り外し可能または取り外し不可能媒体を含むことができる。情報は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータを含んでもよい。コンピュータ記憶媒体の例としては、相変化メモリ(phase-change memory、PRAM)、スタティックランダムアクセスメモリ(static random access memory、SRAM)、ダイナミックランダムアクセスメモリ(dynamic random access memory、DRAM)、他のタイプのランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、電子的に消去可能なプログラマブル読み取り専用メモリ(electronically erasable programmable read-only memory、EEPROM)、クイックフラッシュメモリまたは他の内部記憶技術、コンパクトディスク読み取り専用メモリ(compact disk read-only memory、CD-ROM)、デジタル多用途ディスク(digital versatile disc、DVD)または他の光ストレージ、磁気カセットテープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは他の非伝送媒体が挙げられ、これらは、コンピューティングデバイスによってアクセスされ得る情報を記憶するために使用されてもよいが、これらに限定されない。本明細書で定義されるように、コンピュータ可読媒体は、変調されたデータ信号および搬送波などの一時的な媒体を含まない。
【0254】
最後に、上記の実施形態は、本発明の技術的解決策を例証するためだけに使用され、限定するものではないことに留意されたい。本出願について、前述の実施形態を参照して詳細に記載したが、当業者は、前述の実施形態に記載された技術的解決策において修正を行うことができ、または技術的特徴の一部を同等に置き換えることができることを理解されたい。これらの修正または置換は、対応する技術的解決策の本質が、本発明の実施形態の技術的解決策の意図および範囲から逸脱するものではない。