(57)【要約】【課題】データ及びメタデータを効率的に格納するためのキー値ストレージを活用するソリッドステートドライブ及び分散データストレージシステム並びにその方法を提供する。【解決手段】本発明によるソリッドステートドライブ（ＳＳＤ）は、複数のデータブロックと、前記複数のデータブロックにアクセスするための複数のフラッシュチャンネル（ｆｌａｓｈ  ｃｈａｎｎｅｌ）及び複数のウェイ（ｗａｙ）と、前記複数のデータブロックのブロックサイズを設定する、ソリッドステートドライブ（ＳＳＤ）コントローラーと、を有し、データファイルが、一つ以上のキー値のペアを含むソリッドステートドライブ（ＳＳＤ）に格納され、少なくとも一つのキー値のペアは、キーとしてブロック識別子及び値としてブロックデータを有し、前記データファイルのサイズは、前記ブロックサイズ又は前記ブロックサイズの倍数と同一である。【選択図】  図１Ｂ
2019139759.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータブロックと、
前記複数のデータブロックにアクセスするための複数のフラッシュチャンネル（ｆｌａｓｈ  ｃｈａｎｎｅｌ）及び複数のウェイ（ｗａｙ）と、
前記複数のデータブロックのブロックサイズを設定する、ソリッドステートドライブ（ＳＳＤ）コントローラーと、を有し、
データファイルが、一つ以上のキー値のペアを含むソリッドステートドライブ（ＳＳＤ）に格納され、少なくとも一つのキー値のペアは、キーとしてブロック識別子及び値としてブロックデータを有し、
前記データファイルのサイズは、前記ブロックサイズ又は前記ブロックサイズの倍数と同一であることを特徴とするソリッドステートドライブ（ＳＳＤ）。
【請求項２】
前記ＳＳＤは、ハドゥープ分散ファイルシステム（Ｈａｄｏｏｐ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｆｉｌｅ  Ｓｙｓｔｅｍ：ＨＤＦＳ）を含む分散ファイルシステムにおいて用いられることを特徴とする請求項１に記載のソリッドステートドライブ（ＳＳＤ）。
【請求項３】
前記ＳＳＤコントローラーは、ブロックアップデートフラッグ（ｂｌｏｃｋ  ｕｐｄａｔｅ  ｆｌａｇ）に基づいて、ブロックアップデートを許容するか、又は許容しないようにさらに設定することを特徴とする請求項１に記載のソリッドステートドライブ（ＳＳＤ）。
【請求項４】
前記ＳＳＤコントローラーは、アライメントフラッグ（ａｌｉｇｎｍｅｎｔ  ｆｌａｇ）に基づいて、前記データファイルを前記複数のデータブロックに合わせてアライメントするようにさらに設定することを特徴とする請求項１に記載のソリッドステートドライブ（ＳＳＤ）。
【請求項５】
前記ブロックサイズは、前記ＳＳＤの消去ユニットとフラッシュチャンネルの数との積に基づいて決定されることを特徴とする請求項１に記載のソリッドステートドライブ（ＳＳＤ）。
【請求項６】
前記ブロックサイズは、前記ＳＳＤの消去ユニットとウェイの数との積に基づいて決定されることを特徴とする請求項１に記載のソリッドステートドライブ（ＳＳＤ）。
【請求項７】
前記ブロックサイズは、前記ＳＳＤの消去ユニットと同一であることを特徴とする請求項１に記載のソリッドステートドライブ（ＳＳＤ）。
【請求項８】
前記ＳＳＤは、前記データファイルに関連した前記複数のデータブロック内の一つ以上のデータブロックに対する前記データファイルの第１マッピング、及び前記ＳＳＤを含むデータノードに対する前記一つ以上のデータブロック内の少なくとも一つの第２マッピングを含むファイルマッピングテーブルを格納することを特徴とする請求項１に記載のソリッドステートドライブ（ＳＳＤ）。
【請求項９】
クライアントと、
第１キー値（ｋｅｙ−ｖａｌｕｅ：ＫＶ）ソリッドステートドライブ（ＳＳＤ）を含むネームノードと、
第２キー値（ＫＶ）ＳＳＤを含むデータノードと、を有し、
前記第２キー値（ＫＶ）ＳＳＤは、複数のデータブロックと、前記複数のデータブロックにアクセスするための複数のフラッシュチャンネルと、複数ウェイ及び前記複数のデータブロックのブロックサイズを設定するＳＳＤコントローラーと、を含み、
前記クライアントは、データファイルを格納するためのファイル識別子を含む生成ファイル要請を前記ネームノードに送信し、前記データファイルと関連した複数のデータブロック中に、一つ以上のデータブロックを割り当てるために、割り当てコマンドを前記ネームノードに送信し、
前記ネームノードは、前記一つ以上のデータブロックのブロック識別子、及び前記一つ以上のデータブロックを格納するために割り当てられた前記データノードのデータノード識別子を前記クライアントに返信し、
前記クライアントは、前記一つ以上のデータブロックを格納するために、前記データノードにブロック格納コマンドを送信し、
前記第２キー値（ＫＶ）ＳＳＤは、キー（ｋｅｙ）値のペアとして前記一つ以上のデータブロックを格納し、少なくとも一つのキー値のペアは、キーとして前記ブロック識別子及び値としてブロックデータを有し、
前記データファイルのサイズは、前記ブロックサイズ又は前記ブロックサイズの倍数と同一であることを特徴とする分散データストレージシステム。
【請求項１０】
前記分散データストレージシステムは、ハドゥープ分散ファイルシステム（ＨＤＦＳ）を適用することを特徴とする請求項９に記載の分散データストレージシステム。
【請求項１１】
前記第２キー値（ＫＶ）ＳＳＤは、前記データファイルと関連した一つ以上のデータブロックに対する前記データファイルの第１マッピング、及びデータノードに対する前記一つ以上のデータブロック内の少なくとも一つの第２マッピングを含むファイルマッピングテーブルを格納することを特徴とする請求項９に記載の分散データストレージシステム。
【請求項１２】
分散データストレージシステムの方法であって、
データファイルを格納するためのファイル識別子を含む、生成ファイル要請をクライアントからネームノードに送信するステップと、
前記ネームノードの第１キー値（ＫＶ）ソリッドステートドライブ（ＳＳＤ）に、キー値のペアとして、キーとして前記キー値に格納され前記キーと関連した値は空いている（ｅｍｐｔｙ）前記ファイル識別子を格納するステップと、
前記データファイルと関連した複数のデータブロック中の一つ以上のデータブロックを割り当てるために、前記クライアントから前記ネームノードに割り当てコマンドを送信するステップと、
前記ネームノードにおいて、前記一つ以上のデータブロック内の少なくとも一つに対するブロック識別子を割り当て、前記一つ以上のデータブロックを格納するためのデータノードを割り当てるステップと、
前記ネームノードから前記クライアントに、前記ブロック識別子及び前記データノードのデータノード識別子を返信するステップと、
前記クライアントから前記データノードに、前記ブロック識別子及びコンテンツを含むライトブロック要請を送信するステップと、
前記データノードの第２キー値（ＫＶ）ＳＳＤに、キー値のペアとして、前記一つ以上のデータブロックを格納するステップと、を有し、
前記データノードの前記第２キー値（ＫＶ）ＳＳＤは、ブロックサイズを有する一つ以上のデータブロックを含み、
少なくとも一つのキー値のペアは、キーとしてブロック識別子及び値としてブロックデータを有し、
前記データファイルのサイズは、前記ブロックサイズ又は前記ブロックサイズの倍数と同一であることを特徴とする分散データストレージシステムの方法。
【請求項１３】
前記クライアントと、前記ネームノード及び前記データノードは、ハドゥープ分散ファイルシステム（ＨＤＦＳ）のノードであることを特徴とする請求項１２に記載の分散データストレージシステムの方法。
【請求項１４】
ブロックアップデートを許容するか、又は許容しないようにブロックアップデートフラッグを設定するステップと、をさらに有することを特徴とする請求項１２に記載の分散データストレージシステムの方法。
【請求項１５】
前記データファイルを、前記データノードの前記第２キー値（ＫＶ）ＳＳＤの前記複数のデータブロックに合わせてアライメント（ａｌｉｇｎｍｅｎｔ）するようにフラッグを設定するステップをさらに有することを特徴とする請求項１２に記載の分散データストレージシステムの方法。
【請求項１６】
前記ファイル識別子及び前記ブロック識別子を含む、ライトコミットコマンド（ｗｒｉｔｅ  ｃｏｍｍｉｔ  ｃｏｍｍａｎｄ）を前記クライアントから前記ネームノードに送信するステップと、
前記ネームノードに、前記ファイル識別子と、前記ブロック識別子及び前記データノードを追加するように単一の直接動作を追加するステップと、をさらに有することを特徴とする請求項１２に記載の分散データストレージシステムの方法。
【請求項１７】
前記データファイルをリードするために、前記クライアントから前記ネームノードにリードファイルの要請を送信するステップと、
前記データファイルと関連した前記一つ以上のデータブロック中に、少なくとも一つに対する前記ブロック識別子及び前記データノード識別子を前記クライアントに返信するステップと、
前記データノードの前記第２キー値（ＫＶ）ＳＳＤに格納された前記一つ以上のデータブロックを検索するために、前記クライアントから前記データノードにブロックリードコマンドを送信するステップと、
前記ブロック識別子により識別された前記ブロックデータを、前記データノードから前記クライアントに返信するステップと、をさらに有することを特徴とする請求項１６に記載の分散データストレージシステムの方法。
【請求項１８】
前記クライアントから前記ネームノードに、前記ファイル識別子を包含するファイル削除コマンドを送信するステップと、
前記データファイルと関連した前記一つ以上のデータブロック中に、少なくとも一つに対する前記ブロック識別子及び前記データノード識別子を前記クライアントに返信するステップと、
前記ネームノードから前記ネームノードの前記第１キー値（ＫＶ）ＳＳＤに、前記データファイルの前記ファイル識別子を含むキー値削除コマンドを送信するステップと、
前記ネームノードから前記データノードに、前記一つ以上のデータブロックのリストを含むブロック削除コマンドを伝送するステップと、
前記データノードの前記第２キー値（ＫＶ）ＳＳＤに格納された前記一つ以上のデータブロックを削除するステップと、をさらに有することを特徴とする請求項１７に記載の分散データストレージシステムの方法。
【請求項１９】
前記第２キー値（ＫＶ）ＳＳＤは、前記ファイルと関連した一つ以上のデータブロックに対する前記ファイルの第１マッピング、及び前記データノードに対する前記一つ以上のデータブロック中に少なくとも一つの第２マッピングを含む、ファイルマッピングテーブルを格納することを特徴とする請求項１２に記載の分散データストレージシステムの方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キー値（ｋｅｙ  ｖａｌｕｅ）ストレージデバイスに関し、特に、分散ファイルシステムにおけるデータ及びメタデータを効率的に格納するためのキー値ストレージを活用するソリッドステートドライブ及び分散データストレージシステム並びにその方法に関する。
【背景技術】
【０００２】
既存のデータストレージノード（ｄａｔａ  ｓｔｏｒａｇｅ  ｎｏｄｅ）において、データコンテンツについてのブロック識別子（ＩＤ）のようなキー値マッピング（ｍａｐｐｉｎｇ）は、一般的にデータストレージノードの存在するファイルシステムを用いて格納される。
これは、基本ストレージデバイスが、基本的にデータストレージノードによって要求されるキー値インターフェースを支援しないためである。
結果的に、キー値インターフェースを提供するためにソフトウェアの追加レイヤー（ｌａｙｅｒ）（一般的に、ファイルシステム）が要求される。
ファイルシステムの追加は、メモリー及びプロセッサオーバーヘッド（ｏｖｅｒｈｅａｄ）を発生させるという問題がある。
【０００３】
また、データストレージノードと実際のデータストレージデバイスとの間に存在するファイルシステムは、データストレージデバイスがオーバープロビジョニング（ｏｖｅｒｐｒｏｖｉｓｉｏｎｉｎｇ）及び高いライト増幅（ｗｒｉｔｅ  ａｍｐｌｉｆｉｃａｔｉｏｎ）のような、追加非効率をもたらし、制限されたリソース（ｒｅｓｏｕｒｃｅ）デバイス環境においてガベージコレクション（ｇａｒｂａｇｅ  ｃｏｌｌｅｃｔｉｏｎ）のような作業を遂行するために、より多くの中央処理装置（ＣＰＵ）のサイクルを要求する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開第２０１４／０２３０３４２号明細書
【特許文献２】国際公開第２０１７／１６７１７１号
【非特許文献】
【０００５】
【非特許文献１】ＷＡＮＧ，Ｋｅ；“Ｓｃａｌａｂｌｅ  Ｒｅｓｏｕｒｃｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ  Ｓｏｆｔｗａｒｅ  ｆｏｒ  Ｅｘｔｒｅｍｅ−Ｓｃａｌｅ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｓｙｓｔｅｍｓ”，Ｉｌｌｉｎｏｉｓ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｔｅｃｈｎｏｌｏｇｙ，Ｄｅｐａｒｔｍｅｎｔ  ｏｆ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ，Ｃｈｉｇａｇｏ，Ｉｌｌｉｎｏｉｓ，Ｊｕｌｙ  ２０１５，２８０  ｐａｇｅｓ
【非特許文献２】ＺＥＮＧ，Ｊｉａａｎ；“Ｒｅｓｏｕｒｃｅ  Ｓｈａｒｉｎｇ  ｆｏｒ  Ｍｕｌｔｉ−Ｔｅｎａｎｔ  ＮＯＳＱＬ  Ｄａｔａ  Ｓｔｏｒｅ  ｉｎ  Ｃｌｏｕｄ”；Ｓｃｈｏｏｌ  ｏｆ  Ｉｎｆｏｒｍａｔｉｃｓ  ａｎｄ  Ｃｏｍｐｕｔｉｎｇ，Ｉｎｄｉａｎａ  Ｕｎｉｖｅｒｓｉｔｙ，Ｄｅｃｅｍｂｅｒ  ２０１５；１６７  ｐａｇｅｓ
【発明の概要】
【発明が解決しようとする課題】
【０００６】
そこで、本発明は上記従来のデータストレージノードにおける問題点に鑑みてなされたものであって、本発明の目的は、データ及びメタデータを効率的に格納するためのキー値ストレージを活用するソリッドステートドライブ及び分散データストレージシステム並びにその方法を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するためになされた本発明によるソリッドステートドライブ（ＳＳＤ）は、複数のデータブロックと、前記複数のデータブロックにアクセスするための複数のフラッシュチャンネル（ｆｌａｓｈ  ｃｈａｎｎｅｌ）及び複数のウェイ（ｗａｙ）と、前記複数のデータブロックのブロックサイズを設定する、ソリッドステートドライブ（ＳＳＤ）コントローラーと、を有し、データファイルが、一つ以上のキー値のペアを含むソリッドステートドライブ（ＳＳＤ）に格納され、少なくとも一つのキー値のペアは、キーとしてブロック識別子及び値としてブロックデータを有し、前記データファイルのサイズは、前記ブロックサイズ又は前記ブロックサイズの倍数と同一であることを特徴とする。
【０００８】
上記目的を達成するためになされた本発明による分散データストレージシステムは、クライアントと、第１キー値（ｋｅｙ−ｖａｌｕｅ：ＫＶ）ソリッドステートドライブ（ＳＳＤ）を含むネームノードと、第２キー値（ＫＶ）ＳＳＤを含むデータノードと、を有し、前記第２キー値（ＫＶ）ＳＳＤは、複数のデータブロックと、前記複数のデータブロックにアクセスするための複数のフラッシュチャンネルと、複数ウェイ及び前記複数のデータブロックのブロックサイズを設定するＳＳＤコントローラーと、を含み、前記クライアントは、データファイルを格納するためのファイル識別子を含む生成ファイル要請を前記ネームノードに送信し、前記データファイルと関連した複数のデータブロック中に、一つ以上のデータブロックを割り当てるために、割り当てコマンドを前記ネームノードに送信し、前記ネームノードは、前記一つ以上のデータブロックのブロック識別子、及び前記一つ以上のデータブロックを格納するために割り当てられた前記データノードのデータノード識別子を前記クライアントに返信し、前記クライアントは、前記一つ以上のデータブロックを格納するために、前記データノードにブロック格納コマンドを送信し、前記第２キー値（ＫＶ）ＳＳＤは、キー（ｋｅｙ）値のペアとして前記一つ以上のデータブロックを格納し、少なくとも一つのキー値のペアは、キーとして前記ブロック識別子及び値としてブロックデータを有し、前記データファイルのサイズは、前記ブロックサイズ又は前記ブロックサイズの倍数と同一であることを特徴とする。
【０００９】
上記目的を達成するためになされた本発明による分散データストレージシステムの方法は、データファイルを格納するためのファイル識別子を含む、生成ファイル要請をクライアントからネームノードに送信するステップと、前記ネームノードの第１キー値（ＫＶ）ソリッドステートドライブ（ＳＳＤ）に、キー値のペアとして、キーとして前記キー値に格納され前記キーと関連した値は空いている（ｅｍｐｔｙ）前記ファイル識別子を格納するステップと、前記データファイルと関連した一つ以上のデータブロックを割り当てるために、前記クライアントから前記ネームノードに割り当てコマンドを送信するステップと、前記ネームノードにおいて、前記一つ以上のデータブロック内の少なくとも一つに対するブロック識別子を割り当て、前記一つ以上のデータブロックを格納するためのデータノードを割り当てるステップと、前記ネームノードから前記クライアントに、前記ブロック識別子及び前記データノードのデータノード識別子を返信するステップと、前記クライアントから前記データノードに、前記ブロック識別子及びコンテンツを含むライトブロック要請を送信するステップと、前記データノードの第２キー値（ＫＶ）ＳＳＤに、キー値のペアとして、前記一つ以上のデータブロックを格納するステップと、を有し、前記データノードの前記第２キー値（ＫＶ）ＳＳＤは、ブロックサイズを有する一つ以上のデータブロックを含み、少なくとも一つのキー値のペアは、キーとしてブロック識別子及び値としてブロックデータを有し、前記データファイルのサイズは、前記ブロックサイズ又は前記ブロックサイズの倍数と同一であることを特徴とする。
【発明の効果】
【００１０】
本発明に係るソリッドステートドライブ及び分散データストレージシステム並びにその方法によれば、キー値のペアとして直接データを格納して、キー値ファイルシステムの必要性をなくすことができる。
これにより、本発明によるデータストレージシステムはより速やかで、単純であり、拡張可能なデータストレージソリューションを提供しながら、エネルギー及びリソースを少なく消費できるという効果がある。
【００１１】
また、本発明による分散ファイルシステムは、データ及びメタデータについての内部ライト（ｗｒｉｔｅ）及び増幅ファクター（ｆａｃｔｏｒ）を最小化できる。
さらに、本発明によるデータストレージシステムは、ハッシュテーブル値に関連されたＣＰＵオーバーヘッドを減少させることができる。
【図面の簡単な説明】
【００１２】
【図１Ａ】従来の分散データストレージシステムの概略構成を示すブロック図である。
【図１Ｂ】本発明の一実施形態によるキー値ストレージデバイスを含む分散データストレージシステムの例示的な構成を示すブロック図である。
【図２Ａ】従来の例示的なＳＳＤのシステム構成を示す図である。
【図２Ｂ】本発明の一実施形態によるキー値ＳＳＤの例示的なシステム構成を示す図である。
【図３】本発明の一実施形態による、チャンネルレベルの並列性を達成する例示的なＳＳＤチャンネル及びダイ（ｄｉｅ）アーキテクチャを説明するための図である。
【図４】本発明の一実施形態による、ウェイレベルの並列性を達成する例示的なＳＳＤチャンネル及びダイアーキテクチャを説明するための図である。
【図５】本発明の一実施形態による、ダイ／チップレベルの並列性を達成する例示的なＳＳＤチャンネル及びダイアーキテクチャを説明するための図である。
【図６Ａ】例示的なＳＳＤの例示的なマッピング方式を示す図である。
【図６Ｂ】本発明の一実施形態による、（ＫＶ）ＳＳＤの例示的なマッピング方式を示す。
【図７】本発明の一実施形態による分散ファイルシステムの（ＫＶ）ＳＳＤにおいてファイルを生成して格納する例示的なプロセスを説明するための図である。
【図８】本発明の一実施形態による、分散ファイルシステムの（ＫＶ）ＳＳＤに格納されたファイルをリード（ｒｅａｄ）する、例示的なプロセスを説明するための図である。
【図９】本発明の一実施形態による、分散ファイルシステムの（ＫＶ）ＳＳＤにあるファイルを削除する例示的なプロセスを説明するための図である。
【発明を実施するための形態】
【００１３】
次に、本発明に係るソリッドステートドライブ及び分散データストレージシステム並びにその方法を実施するための形態の具体例を図面を参照しながら説明する。
【００１４】
本明細書で開示する特徴及び開示のそれぞれは、分散ファイルシステムにおいて、データ及びメタデータを効率的に格納するためのキー値ストレージを活用するシステム及び方法を提供するために、独立的に又は他の特徴及び開示とともに活用することができる。
このような追加特徴及び開示を活用する代表的な例示は、独立的にそして結合して、添付した図面を参照してより詳細に説明される。
このような詳細な説明は、ただ本明細書に開示した例示を実行するための細部的な内容を当業者に開示するためのものであり、請求の範囲を制限するものではない。
従って、詳細な説明に開示した特徴の組み合わせは、広い意味で開示を実行するために必要でない可能性があり、ただ本明細書に開示した代表的な例示を特別に説明するために、代わりに開示するものである。
【００１５】
以下においては、ただ説明のための目的で、本発明の完全な理解を提供するための特定の命名法が記述される。
しかしながら、当業者に本発明の開示を実行するために、このような特定の細部事項が必要なものではないのは自明であろう。
【００１６】
本明細書において、詳細な説明のいくつかの部分は、アルゴリズム及びコンピュータメモリーのデータビットに対する動作の象徴的表現に関して示す。
このようなアルゴリズムの説明と表現は、他の分野の通常の技術者に研究の要旨を効果的に伝達するために、データプロセシング分野における通常の技術者により使用される。
ここでアルゴリズムは、一般的に所望の結果を導くステップの一貫性のある順序として理解される。
ステップは、物理量の物理的操作を必要とする。
一般的に、必ずしも必要なものではないが、このような物理量は格納され、伝達され、結合され、比較されるなどの操作を行うことができる、電気信号又は磁気信号（ｍａｇｎｅｔｉｃ  ｓｉｇｎａｌｓ）の形態を有する。
これは、時々、このような信号をビット、値、要素、シンボル（ｓｙｍｂｏｌ）、文字、用語、数字などとして称するための一般的な用法という理由で便利である。
【００１７】
しかしながら、このような用語と類似した用語は、適切な物理量と関連され、ただこのような物理量に適用される便利なラベル（ｌａｂｅｌ）であるのに留意しなければならない。
以下の内容と明白に異なる内容が具体的に記述されなければ、明細書の全般にわたって「プロセシング（ｐｒｏｃｅｓｓｉｎｇ）」、「コンピューティング（ｃｏｍｐｕｔｉｎｇ）」、「計算すること（ｃａｌｃｕｌａｔｉｎｇ）」、「判別すること（ｄｅｔｅｒｍｉｎｉｎｇ）」、「表示すること（ｄｉｓｐｌａｙｉｎｇ）」などのような用語を活用する部分は、コンピュータシステム又は類似の電子コンピューティングデバイスのプロセスと動作を示すものと理解される。
コンピュータシステム又は類似の電子コンピューティングデバイスは、コンピュータシステムのレジスター（ｒｅｇｉｓｔｅｒ）とメモリーにおいて物理（電気）量として示されるデータをコンピュータシステムメモリー、レジスター又は他の情報記憶、伝送又はディスプレイデバイスで類似に物理量として示される他のデータに操作したり変形したりする。
【００１８】
なお、本発明の追加的な有用な実施形態を提供するために、代表的な例示の多様な特徴と従属される請求の範囲は、具体的で明示的に列挙されない方法で結合することができる。
なお、請求された発明の思想を制限しようとする目的だけでなく、最初開示の目的のために全ての値の範囲又は個体グループの表示は、可能な全ての中間値又は中間個体を示す。
なお、図面に示した構成の面積と模様は、本発明をどのように具現するかを理解するために役立てるようにデザインされ得るが、例示として示した面積と模様（形状）に限定されるのではない。
【００１９】
本発明は、ハドゥープ分散ファイルシステム（Ｈａｄｏｏｐ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｆｉｌｅ  Ｓｙｓｔｅｍ：ＨＤＦＳ）のような分散ファイルシステムにより発生する、非効率性を解決するシステム及び方法を説明する。
本発明のシステム及び方法は、データストレージデバイスにデータを直接格納することにより、ブロック識別子としてファイルネーム及び値としてファイルのデータコンテンツ（又は、データの部分）を利用するキー値ファイルシステムの必要性をなくす。
【００２０】
キー値のペアで直接データを格納できる、このようなデータストレージデバイスは、本明細書においてキー値（ｋｅｙ−ｖａｌｕｅ：ＫＶ）ソリッドステートドライブ（ｓｏｌｉｄ−ｓｔａｔｅ  ｄｒｉｖｅ：ＳＳＤ）（以下、（ＫＶ）ＳＳＤと記す）と称す。
（ＫＶ）ＳＳＤは、キーとしてブロック識別子及び値としてデータを有し、キー値ストレージを支援する。
本発明のシステム及び方法は、キー／値のペアとして一つ以上の（ＫＶ）ＳＳＤに直接データを格納できる（ＫＶ）ＳＳＤを含む、効率的で単純化されたキー値データストレージシステムを提供できる。
結果的に、本発明のキー値データストレージシステムは、もっと速やかで、単純であり、拡張可能なデータストレージソリューションを提供しながらも、エネルギー及びリソースを少なく消費できる。
【００２１】
本発明の一実施形態によれば、（ＫＶ）ＳＳＤは、データストレージノードとともに、キー値のペアでデータを格納するファイルシステムを具現できる。
直接キー値データを格納できる一つ以上の（ＫＶ）ＳＳＤを用いることにより、本発明のキー値データストレージシステムは、データストレージノードのファイルシステムをなくすことができる。
データストレージノードは、内部データ構造及びデータストレージノードにより指定されたワークロード（ｗｏｒｋｌｏａｄ）を収容するための（ＫＶ）ＳＳＤのリソースを最適化するために、（ＫＶ）ＳＳＤの動作についての情報を伝えられる。
なお、インメモリー（ｉｎ−ｍｅｍｏｒｙ）マッピングテーブルは、データストレージノードと（ＫＶ）ＳＳＤとの間にキー値インターフェースを用いて、永久データを提供する（ＫＶ）ＳＳＤにオフロード（ｏｆｆｌｏａｄ）することができる。
【００２２】
本発明の一実施形態によると、本発明のキー値データストレージシステムは、ＨＤＦＳのような現存するファイルシステムを支援できる。
特に、大規模なデータブロックのために最適化されたファイルシステムは、本発明のキー値データストレージシステムにより利益を受けられる。
例えば、（ＫＶ）ＳＳＤのメタデータ（又はハッシュ（ｈａｓｈ）テーブル）は、例えば、１０〜１００ＭＢの大規模なブロックサイズに分割される。
【００２３】
ＨＤＦＳのような分散ファイルシステムは、キーに対する値が変更されないために、移動される必要のない固定データブロックを有するので、（ＫＶ）ＳＳＤに格納されたデータ及びメタデータに対する内部ライト増幅ファクター（ｗｒｉｔｅ  ａｍｐｌｉｆｉｃａｔｉｏｎ  ｆａｃｔｏｒ：ＷＡＦ）を最小化できる。
なお、本発明のキー値データストレージシステムは、ハッシュテーブル値をアップデートすることに関連したＣＰＵオーバーヘッドを減少させることができる。
【００２４】
本発明のキー値データストレージシステムは、性能及びリソース活用度を向上させながら単純化されたフラッシュ変換レイヤー（ｆｌａｓｈ  ｔｒａｎｓｌａｔｉｏｎ  ｌａｙｅｒ：ＦＴＬ）を有する。
（ＫＶ）ＳＳＤがＨＤＦＳのような固定分散ストレージシステムとともに利用される場合、メタデータオーバーヘッドは減少させることができる。
これは、このような分散ファイルシステムにおいて、キーのコンテンツが変わらない可能性があるためである。
従って、キー／値のペアを格納する（ＫＶ）ＳＳＤは、（ＫＶ）ＳＳＤのフラッシュメディアにおいて値を古いものとして表示し、キーを新たな値として示す必要がない。
即ち、（ＫＶ）ＳＳＤは、重複記入を支援する必要がない。
【００２５】
なお、ＨＤＦＳのような分散ファイルシステムにおいてブロックは固定されたサイズである。
従って、（ＫＶ）ＳＳＤは、動的にサイズの値を処理する必要はなく、値の位置の管理は単純に作られる。
例えば、全てのブロックが固定されたサイズの場合、（ＫＶ）ＳＳＤは、直接インデックシング（ｉｎｄｅｘｉｎｇ）に基づいたデータ構造を利用できる。
分散ファイルシステムにおいてこのような単純化として、キー／値のタプル（ｔｕｐｌｅ）のＦＴＬ管理を単純化することができる。
【００２６】
分散ファイルシステムは、一つのデータストレージノードのメモリーでメタデータを維持でき、これによりメモリーの拡張性を制限できる。
本発明のキー値データストレージシステムは、他の分散ファイルシステムにより要求されることができるメタデータを管理するのにメモリー制限をなくすことができる。
本発明のキー値データストレージシステムは、時間遅延を指向しない、高い処理量を達成できる。
ＨＤＦＳがメモリー容量を超過できるデータセットとともに、非常に大きなブロックサイズを有するので、ページキャッシュ（ｐａｇｅ−ｃａｃｈｅ）は、データ格納及び管理性能を大きく向上させることができない。
従って、（ＫＶ）ＳＳＤがページキャッシュ支援の欠陥があるとしても、（ＫＶ）ＳＳＤは、ＫＶ支援データノードの性能を悪化させない。
【００２７】
ＨＤＦＳの中央集中式キャッシュ管理機能は、特定のブロックをオフヒープ（ｏｆｆ−ｈｅａｐ）キャッシュするために、データノードを明示的に区別するメカニズムを提供する。
このような機能は、どのブロックをキャッシュするか否かを決定するための方策決定をする必要なく、メモリーに基づいたキッシュの長所を持続的に維持させることにより、ＫＶ支援データノードで具現され得る。
【００２８】
本発明のキー値データストレージシステムは、リード及びライト動作において、高い並列性を可能にする。
それぞれのデータブロックの遅延時間がそれほど重要ではなく、ＨＤＦＳは、多数のデータブロックをリード（読み出し）／ライト（書き込み）することにより、高い水準の並列性を提供するので、コマンド（例えば、リードコマンド、ライトコマンド）をストライプ（ｓｔｒｉｐｅ）し、（ＫＶ）ＳＳＤの多様なチャンネルに伝送する必要がない。
それぞれのデータブロックは、内在された並列性を活用して処理量を提供するために、（ＫＶ）ＳＳＤの一つのチャンネル又は一つのチップ／ダイ（ｃｈｉｐ／ｄｉｅ）に直接ライトし、リードすることができる。
これは、（ＫＶ）ＳＳＤのＦＴＬ及びルックアップ（ｌｏｏｋ−ｕｐ）プロセスの複雑性を単純化させることができる。
並列性は、（ＫＶ）ＳＳＤの消去ブロックのコンテクスト（ｃｏｎｔｅｘｔ）により複数のチャンネル又はチップ／ダイに適用され得る。
【００２９】
つまり、これはＳＳＤブロック／ページのサイズを分散ファイルシステム（例えば、ＨＤＦＳ）のブロックサイズでマッピングすることにより、ＳＳＤオーバープロビジョニング（ｏｖｅｒｐｒｏｖｉｓｉｏｎｉｎｇ）を最小化又は除去できる。
結果的に、本発明のキー値データストレージシステムは、（ＫＶ）ＳＳＤに提供された、固定されたブロックサイズに合わせられたデバイス消去ブロックで処理量を増加させることができる。
合わせられた消去ブロック及びデータサイズは、フラッシュチャンネル間の同期化をそれほど必要としないためである。
メタデータノードのメモリーは、（ＫＶ）ＳＳＤにメタデータマップ（ｍａｐ）をオフロードすることにより、これ以上、分散ストレージシステムにおけるボトルネック現状が発生しない。
【００３０】
図１Ａは、従来の分散データストレージシステムの概略構成を示すブロック図である。
クライアント（ｃｌｉｅｎｔ）アプリケーション（ａｐｐｌｉｃａｔｉｏｎ）１０１は、分散データストレージシステム１００Ａのデータノード１２１に格納するためのファイル１０５を有する。
ファイル１０５は、二つのデータブロック（即ち、Ω及びΣ）を含む。
データノード１２１にファイル１０５を記入した後、クライアントアプリケーション１０１は、ネーム（ｎａｍｅ）ノード（又はメタデータノード）１１１のブロックマップ１１５にファイル１０５と関連されたメタデータを格納する。
ＨＤＦＳのコンテクストにおいて、ネームノード１１１は、マスター（ｍａｓｔｅｒ）として称され、データノード１２１は、スレーブ（ｓｌａｖｅ）として称される。
マスターは、ＨＤＦＳディレクトリー（ｄｉｒｅｃｔｏｒｙ）構造に全体ＨＤＦＳのファイルのメタデータを格納できる。
以下に説明するいくつかの例示がＨＤＦＳを示しても、多くの量のデータについて最適化された他のファイルシステムが、本発明の範囲を逸脱せずに使用できる。
【００３１】
ネームノード１１１は、ブロック識別子とファイル１０５に含まれるブロックを格納したデータノード１２１を含み、かつファイル１０５のマッピング情報を含むブロックマップ１１５を維持する。
本発明の例示において、ブロック（Ω及びΣ）は、ブロック識別子（「１１」及び「９９」）をそれぞれ有する。
クライアントアプリケーション１０１が、ファイル１０５（又はデータブロック（Ω及びΣ））にアクセスしようとする場合、クライアント１０１は、ファイル１０５と関連したブロックを識別するためにネームノード１１１と通信し、ブロックマップ１１５に格納された結合情報に基づいてファイル１０５（又はデータブロック）をアクセスためにデータノード１２１（ＤＮ１）と通信する。
【００３２】
データノード１２１は、ディレクトリーにファイルとして、それぞれのブロックを格納するディレクトリー構造を有するローカルファイルシステム（例えば、リナックス（Ｌｉｎｕｘ）（登録商標）のｅｘ４ファイルシステム）を含む。
ファイルネームは、ファイル１０５のそれぞれのブロックに対応する固有ブロック識別子（「１１」及び「９９」）であり得るし、ファイルのコンテンツはブロックデータである。
ブロックがファイルとして格納される必要があるので、データノード１２１はソフトウェアの追加レイヤー（例えば、ローカルｅｘ４ファイルシステム）、追加メモリー（例えば、リナックスのデントリー（ｄｅｎｔｒｙ）キャッシュ）、及びブロックのファイルシステムに対するキー値及びメタデータの管理を含む、ファイルシステムオーバーヘッドを変換するＣＰＵプロセッシング（例えば、ＰＯＳＩＸ（Ｐｏｒｔａｂｌｅ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）及びファイルシステムの特定のコマンドプロセシング）を必要とする。
【００３３】
ＳＳＤ１４０のコントロールロジックは、ブロックマップ１１５の一貫性を維持するための追加プロセスを実行する必要がある。
ＨＤＦＳブロックサイズは、内部ＳＳＤページ／ブロックマッピングと一致しない可能性がある。
これは、ＳＳＤの内部ＷＡＦ及びオーバープロビジョンされた領域を増加させることができ、より頻繁なガベージコレクション及び総保有コスト（ｔｏｔａｌ  ｃｏｓｔ  ｏｆ  ｏｗｎｅｒｓｈｉｐ：ＴＣＯ）の増加を惹起させる。
【００３４】
図１Ｂは、本発明の一実施形態によるキー値ストレージデバイスを含む分散データストレージシステムの例示的な構成を示すブロック図である。
クライアントアプリケーション１０１は、分散データストレージシステム１００Ｂのデータノード２２１にファイル１０５を格納する。
例えば、分散データストレージシステム１００Ｂは、ＨＤＦＳである。
キー値ＳＳＤ１５０を含むデータノード２２１は、データブロック（Ω及びΣ）を直接格納できる。
従来のＳＳＤ１４０を含むデータノード１２１と異なって、ファイル１０５のデータブロックがキー値のペアとして（ＫＶ）ＳＳＤ１５０に直接格納されるので、データノード２２１は、ｅｘ４のようなローカルファイルシステムを要求しない。
【００３５】
（ＫＶ）ＳＳＤ１５０は、データノード２２１が、データブロックをキー値のペアとして直接格納するようにするクライアントアプリケーション１０１と通信するためのインターフェースを提供する。
従って、データノード２２１は、ローカルファイルシステムレイヤーを要求せずに、図１Ａの従来のデータノード１２１のメモリー及びＣＰＵオーバーヘッドを発生させない可能性がある。
【００３６】
本発明の一実施形態によると、分散データストレージシステム１００Ｂは、クライアントアプリケーション１０１とデータノード２２１とが、それらの間で情報を交換できるようにする。
このようなプロセスは、レジストレーション（ｒｅｇｉｓｔｒａｔｉｏｎ）プロセス、又は設定（ｃｏｎｆｉｇｕｒａｔｉｏｎ）プロセスと称される。
レジストレーションプロセス中に、データノード２２１は、データブロックをキー値のペアで格納できる、一つ以上の（ＫＶ）ＳＳＤを含むのをクライアントアプリケーション１０１に知らせる。
レジストレーションプロセスが完了した以後、クライアントアプリケーション１０１は、データノード２２１に含まれた（ＫＶ）ＳＳＤ１５０についての（ＫＶ）ＳＳＤ特定のＩ／Ｏデバイスコマンド（例えば、／ｄｅｖ／（ＫＶ）ＳＳＤ１、ここで（ＫＶ）ＳＳＤ１はデータノード２２１のＩＤである）を提供できるのがわかる。
【００３７】
これは、クライアントアプリケーション１０１とデータノード２２１との間のＩ／Ｏ経路を単純化させる。
ファイルに対するデータブロックを生成し、記入するローカルファイルシステムに依存する代わりに、データノード２２１は、それぞれのデータブロックをキー値のペアで格納する「ｐｕｔ」コマンドを提供する。
（ＫＶ）ＳＳＤ１５０に格納されたキー値のペアをリードするのも同様である。
データノード２２１は、データブロックを検索するためにファイルシステムインターフェースを調べる代わりに、（ＫＶ）ＳＳＤ１５０に「ｇｅｔ」コマンドを直接提供して、キーと関連したデータブロックを検索する。
削除プロセスは、類似したプロセスに従うことができる。
レジストレーションプロセス中、（ＫＶ）ＳＳＤ１５０は、分散データストレージシステム１００Ｂの動作に関する情報を提供され得る。
（ＫＶ）ＳＳＤ１５０のフラッシュ変換レイヤー（ＦＴＬ）は、分散データストレージシステム１００Ｂの動作に基づいて分散データストレージシステム１００Ｂに対し、特別に最適化することができる。
【００３８】
（ＫＶ）ＳＳＤ１５０のＳＳＤコントローラは、ライト及びリードの動作速度を高めるために、他のメモリーチップ（例えば、ＮＡＮＤチップ）を介してストライプ（ｓｔｒｉｐｅ）にデータをライトし、リードできる。
分散データストレージシステム１００Ｂ（例えば、ＨＤＦＳ）は、並列的に多くのＩ／Ｏ要請を伝送でき、処理量が高いと、長い遅延時間を耐えることができる。
このような並列性は、ＳＳＤコントローラーに複雑性を追加して遅延時間を減少させることができる。
本発明の一実施形態によると、（ＫＶ）ＳＳＤ１５０のＦＴＬは、分散データストレージシステム１００Ｂの情報に基づいて、一つのチャンネルに対する大規模なブロックをリードしてライトするのに最適化することができる。
このような場合、（ＫＶ）ＳＳＤ１５０のＦＴＬは、複数のチャンネルの複数のチップを介してデータのストライピング（ｓｔｒｉｐｉｎｇ）ができないが、高い処理量を達成するために並列的にリード及びライト動作を同時に実行できる。
【００３９】
ＨＤＦＳのような分散ファイルシステムは、格納されたデータを頻繁にリードするデータ中心的及びデータ集約的なアプリケーションに対して最適化することができる。
このような場合、データリード動作は、データライト動作に比してずっと頻繁に発生する。
このようないくつかの分散ファイルシステムは、ライトワンスセマンティック（ｗｒｉｔｅ−ｏｎｃｅ  ｓｅｍａｎｔｉｃ）を提供し、大規模なブロックサイズを使用する。
それに反して、（ＫＶ）ＳＳＤ１５０は、動的ブロックサイズ及びデータブロックに対する頻繁なアップデートを支援できる。
【００４０】
本発明の他の実施形態によると、（ＫＶ）ＳＳＤ１５０は、図１ａのＳＳＤ１４０のように、内部ファイルシステムを使用するのに、必要となるガベージコレクションを発生させないように最適化することができる。
ガベージコレクションは、古いページを含むブロックから有効なページを移動させてブロックが削除され、リライト（ｒｅｗｒｉｔｅ）されるようにするプロセスである。
これは、ライト増幅、Ｉ／Ｏ不確実性（ｉｎｄｅｔｅｒｍｉｎｉｓｍ）、及びドライブのウェアレベリング（ｗｅａｒ  ｌｅｖｅｌｉｎｇ）に寄与できる高価なプロセスである。
最適化されると、（ＫＶ）ＳＳＤ１５０のＦＴＬは、ライト及び消去動作に対する同じ粒度（ｇｒａｎｕｌａｒｉｔｙ）を利用できる。
ブロックが削除された場合、ブロックは、直ぐに消去されたと表示することができ、これにより、ガベージコレクションの必要性がなくなる。
（ＫＶ）ＳＳＤ１５０の最適化されたＦＴＬは、ガベージコレクションをなくし、ＦＴＬを単純化させながら性能と耐久性を向上させることができる。
【００４１】
本発明の一実施形態によると、（ＫＶ）ＳＳＤ１５０は、動的ページ及びブロックサイズを支援する。
例えば、（ＫＶ）ＳＳＤ１５０は、ＨＤＦＳ設定に基づいて格納されたブロックのブロックサイズを調節できる。
例えば、設定中に、分散データストレージシステム１００Ｂは、（ＫＶ）ＳＳＤ１５０に単に固定されたサイズのライト動作が提供されることを（ＫＶ）ＳＳＤ１５０に知らせることができ、（ＫＶ）ＳＳＤ１５０は、ブロックサイズをそれに応じて設定する。
又は、（ＫＶ）ＳＳＤ１０は、消去ブロックサイズ（又は、可能な消去ブロックサイズ）を露出して、分散データストレージシステム１００Ｂが、それに応じてブロックサイズを設定するように要求できる。
いずれの場合でも、（ＫＶ）ＳＳＤ１５０及び分散データストレージシステム１００Ｂのブロックサイズは、互いに関連、設定される。
【００４２】
本発明の一実施形態によると、分散データストレージシステム１００Ｂは、ブロックアップデートを許容するか、又は許容しないように（ＫＶ）ＳＳＤ１５０を設定できる。
例えば、分散データストレージシステム１００Ｂは、追加パラメーター（本明細書においては、アップデートフラッグ（ｕｐｄａｔｅ  ｆｌａｇ）と称される）を（ＫＶ）ＳＳＤ１５０に伝達できる。
アップデートフラッグを用いて、（ＫＶ）ＳＳＤ１５０のＳＳＤコントローラーは、クライアントアプリケーション１０１から受信したブロックアップデート要請と関連したガベージコレクションを扱う追加フラッシュブロック及びスレッド（ｔｈｒｅａｄ）を提供するように自ら設定できる。
【００４３】
ブロックアップデートを許容しないことにより（例えば、アップデートフラッグ＝「フォルス」（ｆａｌｓｅ））、分散データストレージシステム１００Ｂは、別のフラッシュチャンネル又はダイを介する並列性の結果として処理量の巨大な増加を達成できる。
新たなキーを有して、それぞれの新たなライトが用いられる場合、（ＫＶ）ＳＳＤ１５０は、ライト中のブロックがオーバーライト（ｏｖｅｒｗｒｉｔｅ）されるか否かを確認するために、チャンネル又はダイの間に同期化を遂行する必要がない。
このような場合、データノード２２１は、ブロックアップデートフラッグを「フォルス」で設定できる。
【００４４】
図２Ａは、従来の例示的なＳＳＤのシステム構成を示す図である。
図１Ａ及び図２Ａを参照すると、分散データストレージシステム１００Ａは、ローカルファイルシステム（例えば、リナックスのｅｘｔ４）を「／ｍｎｔ／ｆｓ」で設置してＳＳＤ１４０を設定する。
ＳＳＤ１４０に格納されたファイルは、ＳＳＤ１４０の設置されたファイルシステムによりアクセスされることができる。
【００４５】
図２Ｂは、本発明の一実施形態による、キー値ＳＳＤの例示的なシステム構成を示す図である。
図１Ｂ及び図２Ｂを参照すると、分散データストレージシステム１００Ｂは、レジストレーションプロセス中に受信された（ＫＶ）ＳＳＤ１５０の情報に基づいて（ＫＶ）ＳＳＤ１５０を設定する。
例えば、分散データストレージシステム１００Ｂは、（ＫＶ）ＳＳＤ１５０のストレージタイプ（ｔｙｐｅ）をキー値ＳＳＤ（（ＫＶ）ＳＳＤ）に設定し、（ＫＶ）ＳＳＤ１５０のＩ／Ｏ経路を「ｄｅｖ／（ＫＶ）ＳＳＤ」に設定できる。（ＫＶ）ＳＳＤ１５０は、ブロックアップデートフラッグをフォルス（ｆａｌｓｅ）に、ブロックサイズを６４ＭＢに、アライメント（ａｌｉｇｎｍｅｎｔ）フラッグを「トゥルー」（ｔｒｕｅ）に設定するようにさらに構成することができる。
【００４６】
消去ブロックサイズ及び分散データストレージシステム１００Ｂのデータサイズが、同一であるか、又は一致するように設定することにより、（ＫＶ）ＳＳＤ１５０がチャンネル間のＩ／Ｏ動作が可能でないように設定された場合、分散データストレージシステム１００Ｂは、（ＫＶ）ＳＳＤ１５０の全てのチャンネル又はダイについてロックレス（ｌｏｃｋ−ｌｅｓｓ）Ｉ／Ｏ動作の達成を実行する。
例えば、（ＫＶ）ＳＳＤ１５０は、全ての可能なチャンネルのうち、Ｉ／Ｏがルーティング（ｒｏｕｔｉｎｇ）されるべきチャンネルを判別するために、簡単なハッシュ関数（例えば、アドレスモッド（ａｄｄｒｅｓｓ  ｍｏｄ）１０）を用いる。
【００４７】
この場合、与えられたアドレスに対する全てのＩ／Ｏ動作は、同じフラッシュチャンネルに一貫してルーティングされるはずである。
チャンネルが直列処理装置（ｓｅｒｉａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）により実行される場合、そのチャンネルにルーティングされる全てのＩ／Ｏ動作は、任意のチャンネル間のロックを要求せずに整列される。
結果的に、分散データストレージシステム１００Ｂは、同期化無しにＩ／Ｏスレッドの全般にわたって完璧な並列性を達成できる。
【００４８】
本発明の（ＫＶ）ＳＳＤは、（ＫＶ）ＳＳＤが消去ブロックをガベージコレクションユニットとして扱う方式により並列性を達成できる。
図３は、本発明の一実施形態による、チャンネルレベル（ｃｈａｎｎｅｌ−ｌｅｖｅｌ）の並列性（ｐａｒａｌｌｅｌｉｓｍ）を達成する例示的なＳＳＤチャンネル及びダイアーキテクチャを説明するための図である。
（ＫＶ）ＳＳＤは、Ｉ／Ｏ性能を向上させるために、チャンネルレベルの並列性を活用できる。
本発明の例示において、（ＫＶ）ＳＳＤは、Ｎチャンネル及びＭウェイを有し、ここにおいてＮ及びＭは１以上の整数である。
【００４９】
分散ファイルシステム（例えば、ＨＤＦＳ）のデータサイズは、（ＫＶ）ＳＳＤのブロックサイズ又はブロックサイズの倍数と同一に設定される。
（ＫＶ）ＳＳＤのブロックサイズは、チップ（又はダイ）の消去ユニットのサイズと（ＫＶ）ＳＳＤ内部のウェイの個数の積により決定される。
（即ち、ブロックサイズ＝消去ユニットのサイズ×ウェイの個数）
データは、同じチャンネルのチップにわたってストライプされ得る。
例えば、（ＫＶ）ＳＳＤは、６ＭＢの消去ユニットサイズ及び８ウェイを有し、分散ファイルシステムのデータサイズは、（ＫＶ）ＳＳＤのデータグループに適合するように４８ＭＢに設定される。
４８ＭＢデータの削除が、同じチャンネルで８個の完全な消去ブロックの再設定を惹起することにより、ガベージコレクションは、チャンネルレベルの並列性で発生しない。
しかし、チャンネルレベルの並列性は、複数のチャンネルが提供できる潜在的な並列性を活用しない。
【００５０】
図４は、本発明の一実施形態による、ウェイレベル（ｗａｙ−ｌｅｖｅｌ）の並列性を達成する例示的なＳＳＤチャンネル及びダイアーキテクチャを説明するための図である。
（ＫＶ）ＳＳＤは、Ｉ／Ｏ性能を向上させるためにウェイレベルの並列性を活用できる。
この場合、分散ファイルシステム（例えば、ＨＤＦＳ）のデータサイズは、（ＫＶ）ＳＳＤのブロックサイズ又はブロックサイズの倍数と同一に設定される。
（ＫＶ）ＳＳＤのブロックサイズは、消去ユニットのサイズとチャンネルの個数の積により決定される。
（即ち、ブロックサイズ＝消去ユニットのサイズ×チャンネルの個数）
ガベージコレクションユニット及びデータサイズは、ブロックサイズの積である。
データは、同じウェイのチップにわたってストライプされ得る。
データストライピングは、チャンネル並列性の完全な使用を可能なようにする全てのチャンネルで発生し得る。
【００５１】
図５は、本発明の一実施形態による、ダイ／チップレベルの並列性を達成する例示的なＳＳＤチャンネル及びダイアーキテクチャを説明するための図である。
本発明の例示において、ＳＳＤチャンネルの個数はＮであり、ダイの個数はＮより大きいＭである。
ダイ／チップレベルの並列性は、（ＫＶ）ＳＳＤのチャンネル及びチップで最も高い並列性を提供する。
この場合、ブロックサイズは、消去ユニットと同一であり、ガベージコレクションは、消去ユニットから発生する。
データサイズは、消去ユニットの倍数に一致する。
ダイ／チップレベルの並列性は、仮想ノードを有する一貫されたハッシング（ｈａｓｈｉｎｇ）と類似する。
この場合、それぞれの仮想ノードは、消去ブロックユニットに対応し、物理的ノードはチャンネルに対応する。
【００５２】
ＨＤＦＳのような分散ファイルシステムは、データの位置を管理するためにメタデータを維持する。
例えば、それぞれのファイルは、ファイルを包含する全てのブロックのリストを維持する。
複製された分散ストレージシステムは、与えられたブロック（又は、ファイル）を格納する全てのノードの位置を羅列する別のマップを維持する。
いくつかの分散データストレージシステムにおいて、このようなマッピングテーブルは、分散データストレージシステムの拡張性を制限する単一のノードのメモリーに存在する。
例えば、このようなマッピングテーブルを格納するメタデータノードが、追加のマッピングデータを格納する十分なメモリーを有しない場合、ブロック又はファイルは追加されない可能性がある。
ファイルシステムは、このようなマッピングを格納するデータストレージデバイスの最上位で利用することができるが、追加のオーバーヘッドを発生させる。
【００５３】
本発明の（ＫＶ）ＳＳＤは、ローカルファイルシステムを要求せずに、ブロックリストに対するファイルのマッピング及びノードリストに対するブロックのマッピングを持続的に維持して、キー値のペアでデータを直接格納できる。
結果的に、メタデータを格納するノードは、メモリー容量により制限されずに、追加のファイルシステムを有するオーバーヘッドを発生させない。
このようなマッピング情報は、（ＫＶ）ＳＳＤに直接格納されるので、ファイルによりインデックシングされるように、単一のマッピングテーブルに格納することができる。
これは、（ＫＶ）ＳＳＤの単一ルックアップ（ｌｏｏｋｕｐ）が全てのデータブロックを検索できるようにする。
単一マッピングテーブルは、メタデータをさらに拡張性が有り（ただ一つのマッピングテーブルにより）、もっと効率的に（一つのルックアップにより）作る。
【００５４】
（ＫＶ）ＳＳＤに格納されたファイルをリードするプロセスは、一般的なハッシュマップ又は類似したデータ構造を使用するプロセスと類似する。
データ構造は、（ＫＶ）ＳＳＤに直接連結されるライブラリ（ｌｉｂｒａｒｙ）であり得る。
例えば、クライアントアプリケーションは、ファイルＩＤを用いてファイルをリードするためにファイルの検索動作を実行する。
メタデータノードは、ブロブ（ｂｌｏｂ）の形態でファイルのブロックリストを返信し、メタデータノードは、ブロックリストが元々記入された型式でマッピングされる。
【００５５】
ブロックリストは、ブロックリストにおいてそれぞれのブロックが格納されたノードリストを含む。
メタデータノードは、ブロックについてのリードを実行するために、ブロックのリストと関連したノードをクライアントアプリケーションに伝達（送信）する。
このような方式において、それぞれのルックアップがクライアントアプリケーションにリストを伝達（送信）するために、メタデータノードは、相変わらずメモリーにマッピングテーブルを格納する必要がある。
しかしながら、メタデータノードは、メモリーに全てのマッピング情報を維持する必要がない。
例えば、最近、リードしたファイルのキャッシュは、拡張性及び効率性の間にトレードオフ（ｔｒａｄｅ−ｏｆｆ）を提供できる。
【００５６】
図６Ａは、例えば、図１Ａ及び図２ＡのＳＳＤ１４０のようなＳＳＤ１４０の例示的なマッピング方式を示す図である。
エディットログ（ｅｄｉｔ  ｌｏｇ）は、ファイル及びマッピングテーブルで実行された全てのメタデータ動作のログを示す。
このようなエディットログは、ディスク（ｄｉｓｋ）に保存される。
これはファイル及びブロックマッピングテーブルがメモリーのみにあるので、必要である。
ネームノードが衝突すると、ストレージからエディットログをリードすることにより、メモリーにファイル及びブロックマッピングテーブルを再構成する。
【００５７】
図６Ｂは、本発明の一実施形態による、例えば、図１Ｂ及び図２Ｂのような（ＫＶ）ＳＳＤ１５０の例示的なマッピング方式を示す。
ＳＳＤ１４０は、ファイルマッピングテーブル及びブロックマッピングテーブルをメモリーに格納する。
このようなマッピング情報を利用して、クライアントアプリケーションは、ファイルと関連されたデータブロックを検索できる。
一方、（ＫＶ）ＳＳＤ１５０は、ブロックリストとノードリストの単一マッピングを含むファイルマッピングテーブルを格納する。
【００５８】
図７、図８及び図９は、ＨＤＦＳのような分散ファイルシステムにおいてファイルを生成して記入し、ファイルをリードし、ファイルを削除する例示的なＩ／Ｏプロセスを説明するダイヤグラム（ｄｉａｇｒａｍ）である。
それぞれのダイヤグラムの説明において、従来のプロセスについての差異点及び利点を説明する。
【００５９】
図７は、本発明の一実施形態による、分散ファイルシステムの（ＫＶ）ＳＳＤにファイルを生成して格納する例示的なプロセスを説明するための図である。
分散ファイルシステムは、クライアント７１０、（ＫＶ）ＳＳＤ（ｋｖ１）７３０を含むネームノード（又は、メタデータノード）７２０、及び（ＫＶ）ＳＳＤ（ｋｖ２）７５０を含むデータノード７４０を含む。
新たなファイルを生成するために、クライアント７１０は、ネームノード７２０にファイルＩＤ（ｆｉｌｅＩＤ）を含んだ要請７６１（ｃｒｅａｔｅＦｉｌｅ（ｆｉｌｅＩＤ））を伝送（送信）する。
ネームノード７２０は、内部的にファイルＩＤを登録し、キー値格納コマンド７６２（ｋｖ．ｓｔｏｒｅ（ｆｌｅＩＤ，””））を伝送して、キー値のペア中に、値のないキーとして（ＫＶ）ＳＳＤ７３０にファイルＩＤを格納する。
【００６０】
（ＫＶ）ＳＳＤ７３０は、ネームノード７２０に完了（ｄｏｎｅ）メッセージ７６３を伝送することにより応答し、以後、ネームノード７２０は、完了（ｄｏｎｅ）メッセージ７６４でクライアント７１０に対して応答する。
ネームノード７２０がクライアント７１０に応答した後、クライアント７１０は、ファイルに対するブロックを割り当てるためにコマンド７６５（（ａｌｌｏｃａｔｅＢｌｏｃｋ（ｆｉｌｅＩＤ））を割り当てる。
これに応答して、ネームノード７２０は、ブロックＩＤ（ｂｌｏｃｋＩＤ）及びブロックを格納するためのデータノード（例えば、データノード７４０）を割り当て、クライアント７１０に応答７６６を伝送する。
ネームノード７２０は、ブロックＩＤとして単純に増加するＩＤを割り当てる。
【００６１】
クライアント７１０は、ブロックＩＤを用いてデータノード７４０にブロックのデータコンテンツを含むブロックライト要請７６７（ｗｒｉｔｅＢｌｏｃｋ（ｂｌｏｃｋＩＤ，  ｃｏｎｔｅｎｔ））を伝送する。
ブロックライト要請７６７に応答して、データノード７４０は、（ＫＶ）ＳＳＤ７５０に伝達された因数、ブロックＩＤ（ｂｌｏｃｋＩＤ）及びコンテンツ（ｃｏｎｔｅｎ）を含むキー値格納コマンド７６８（ｋｖ．ｓｔｏｒｅ（ｂｌｏｃｋＩＤ，  ｃｏｎｔｅｎｔ））を提供する。
一般的なＳＳＤを含む従来のデータノードにおいて、データノードについてのライト動作は、ファイルシステムにライトを要求し、ＳＳＤのデータストレージ個体にライトを要求できる。
【００６２】
ブロックを格納した後、（ＫＶ）ＳＳＤ７５０は、完了（ｄｏｎｅ）メッセージ６７８でデータノード７４０に応答し、データノード７４０は、完了（ｄｏｎｅ）メッセージ７７０でクライアント７１０に応答する。
クライアント７１０は、ブロックＩＤ及びデータノードタプルを関連したコミット（ｃｏｍｍｉｔ）をするために、ネームノード７２０にコミットライトコマンド７７１（ｃｏｍｍｉｔ（Ｗｒｉｔｅ（ｆｉｌｅＩＤ，  ｂｌｏｃｋＩＤ）））を伝送する。
ネームノード７２０は、アペンド（ａｐｐｅｎｄ）コマンド７７２（ｋｖ．ａｐｐｅｎｄ（ｆｉｌｅＩＤ，  ｂｌｏｃｋＩＤ＋ｄａｔａＮｏｄｅ））を（ＫＶ）ＳＳＤ７３０に伝送する。
アペンドプロセスにおいて、アペンドコマンド７７２は、（ＫＶ）ＳＳＤ７３０についての単一の直接動作であり、従来の分散ストレージシステムでのように二つの別のマップ（即ち、ファイルブロックマップ及びブロックデータノードマップ）についてのメモリー動作ではない。
【００６３】
図８は、本発明の一実施形態による、分散ファイルシステムの（ＫＶ）ＳＳＤに格納されたファイルをリードする例示的なプロセスを説明するための図である。
データノード７４０に格納されたファイルをリードするために、クライアント７１０は、ファイルＩＤ（ｆｉｌｅＩＤ）を含むリードファイル要請８６１（ｏｐｅｎＦｉｌｅ（ｆｉｌｅＩＤ））をネームノード７２０に伝送（送信）する。
ファイルＩＤを用いて、ネームノード７２０は、（ＫＶ）ＳＳＤ７３０に検索コマンド（ｋｖ．ｒｅｔｒｉｅｖｅ（ｆｉｌｅＩＤ））を伝送（送信）し、（ＫＶ）ＳＳＤ７３０は、ブロックをファイルＩＤと関連したデータノードにマッピングするマッピング情報８６３を返還（返信）する。
【００６４】
ネームノード７２０は、クライアント７１０にマッピング情報８６４を伝達（返信）する。
ブロックデータノードマッピング情報に包含されたブロックＩＤを用いて、クライアント７１０は、データノード７４０にブロックリードコマンド８６５（ｒｅａｄＢｌｏｃｋ（ｂｌｏｃｋＩＤ））を伝送する。
データノード７４０は、ブロックコンテンツを検索するために、（ＫＶ）ＳＳＤ７５０にブロック検索コマンド８６６（ｋｖ．ｒｅｔｒｉｅｖｅ（ｂｌｏｃｋＩＤ））を伝送する。
（ＫＶ）ＳＳＤ７５０は、データノード７４０に要請されたブロックのコンテンツ８６７を伝送（返信）し、データノード７４０は、クライアント７１０に検索されたブロックコンテンツ８６８を伝達（返信）する。
【００６５】
従来のリード動作との根本的な差異点は、ブロックリストに対するファイル及びデータノードリストに対するブロックについてのインメモリーハッシュテーブル（ｉｎ−ｍｅｍｏｒｙ  ｈａｓｈ  ｔａｂｌｅ）を検索せずに、ネームノード７２０がブロックデータノードマップを検索するために、単一の直接（ＫＶ）ＳＳＤリード動作を提供することである。
なお、データノード７４０は、任意のストレージソフトウェアミドルウェア（ファイルシステムのような）をバイパスして、（ＫＶ）ＳＳＤに直接データを検索するための要請を伝送する。
【００６６】
図９は、本発明の一実施形態のよる、分散ファイルシステムの（ＫＶ）ＳＳＤにおいてファイルを削除する例示的なプロセスを説明するための図である。
クライアント７１０は、ファイルＩＤを包含するファイル削除コマンド９６１（ｄｅｌｅｔｅＦｉｌｅ（ｆｉｌｅＩＤ））をネームノード７２０に伝送する。
ネームノード７２０は、ファイルのマッピング情報を検索するために、（ＫＶ）ＳＳＤ７３０にキー値検索コマンド９６２（ｋｖ．ｒｅｔｒｉｅｖｅ（ｆｉｌｅＩＤ））を伝送し、（ＫＶ）ＳＳＤ７３０は、ファイルＩＤと関連されたデータにブロックをマッピングするマッピング情報９６３を返還（返信）する。
ネームノード７２０は、関連したブロックに対する後続非同期削除プロセスのために、ブロックＩＤマッピングを一時的にキャッシュできる。
【００６７】
ネームノード７２０は、（ＫＶ）ＳＳＤ７３０にキー値削除コマンド９６４（ｋｖ．ｄｅｌｅｔｅ（ｆｉｌｅＩＤ））を伝送し、（ＫＶ）ＳＳＤ７３０は、ファイルＩＤ及び関連されたマッピングを削除した後、ネームノード７２０に完了（ｄｏｎｅ）メッセージ９６５を伝送（返信）する。
ファイルＩＤと関連されたマッピング情報を検索する場合、ネームノード７２０は、削除されるファイルに対するブロックデータノードタプルを（ＫＶ）ＳＳＤ７３０から検索する。
このようなプロセスは、複数のインメモリーハッシュテーブルをルックアップすることと関連する従来の分散ストレージシステムと異なる。
代わりに、ネームノード７２０は、ブロックデータノードマップを含む（ＫＶ）ＳＳＤ７３０からファイルに基づいたキーを削除する（９６４）。
【００６８】
ネームノード７２０は、クライアント７１０に制御権を返還し（９６９）、ネームノード７２０は、（ＫＶ）ＳＳＤ７５０から対応するブロックを削除するために、非同期的にデータノード７４０にブロック削除コマンド９６６を伝送する。
図９に示したファイル削除プロセスは、分散ファイルシステムのブロックサイズが、（ＫＶ）ＳＳＤ７５０の消去ブロックサイズと同一であるか、又は消去ブロックサイズで割ることができる仮定に基づく。
これは、インメモリー動作から（ＫＶ）ＳＳＤに基づく動作に移動するオーバーヘッドを最小化させることができる。
【００６９】
本発明の一実施形態によると、ソリッドステートドライブ（ＳＳＤ）は、複数のデータブロックと、複数のデータブロックにアクセスするための複数のフラッシュチャンネル及び複数のウェイと、及び複数のデータブロックのブロックサイズを設定をＳＳＤコントローラーと、を含む。データファイルは、一つ以上のキー値のペアを含むＳＳＤに格納され、それぞれのキー値のペアは、キーとしてブロック識別子及び値としてブロックデータを有する。データファイルのサイズは、ブロックサイズ又はブロックサイズの倍数と同一である。
【００７０】
ＳＳＤは、ハドゥープ分散ファイルシステム（ＨＤＦＳ）を包含する分散ファイルシステムで利用され得る。
ＳＳＤコントローラーは、ブロックアップデートフラッグに基づいて、ブロックアップデートを許容するか、又は許容しないようにさらに設定できる。
ＳＳＤコントローラーは、アライメントフラッグに基づいてデータファイルを複数のデータブロックに合わせてアライメントするようにさらに設定できる。
【００７１】
ブロックサイズは、ＳＳＤの消去ユニットとフラッシュチャンネルの数の積に基づいて決定され得る。
ブロックサイズは、ＳＳＤの消去ユニットとウェイの数の積に基づいて決定され得る。
ブロックサイズは、ＳＳＤの消去ユニットと同一で有り得る。
ＳＳＤは、ファイルに関連した複数のデータブロック中に、一つ以上のデータブロックに対するファイルの第１マッピング、及びＳＳＤを含むデータノードに対する一つ以上のデータブロック中に、少なくとも一つの第２マッピングを含む、ファイルマッピングテーブルを格納できる。
【００７２】
本発明の他の実施形態によると、分散データストレージシステムは、クライアントと、第１キー値（ＫＶ）ソリッドステートドライブ（ＳＳＤ）を含むネームノートと、第２（ＫＶ）ＳＳＤを包含するデータノードと、を含み、第２（ＫＶ）ＳＳＤは、複数のデータブロックと、複数のデータブロックにアクセスするための複数のフラッシュチャンネル、複数のウェイ及び複数のデータブロックのブロックサイズを設定するＳＳＤコントローラーと、を含む。クライアントは、データファイルを格納するためのファイル識別子を含む生成ファイル要請をネームノードに伝送し、データファイルと関連した複数のデータブロック中に、一つ以上のデータブロックを割り当てるために、割り当てコマンドをネームノードに伝送する。ネームノードは、一つ以上のデータブロックのブロック識別子及び一つ以上のデータブロックを格納するために割り当てられたデータノードのデータノード識別子をクライアントに返還（返信）する。クライアントは、一つ以上のデータブロックを格納するために、データノードにブロック格納コマンドを伝送する。第２（ＫＶ）ＳＳＤは、キー（ｋｅｙ）−値（ｖａｌｕｅ）のペアで一つ以上のデータブロックを格納し、少なくとも一つのキー値のペアは、キーとしてブロック識別子及び値としてブロックデータを有する。データファイルのサイズは、ブロックサイズ又はブロックサイズの倍数と同一である。
【００７３】
分散データストレージシステムは、ハドゥープ分散ファイルシステム（ＨＤＦＳ）を適用できる。
第２（ＫＶ）ＳＳＤは、ファイルと関連した一つ以上のデータブロックに対するデータファイルの第１マッピング及びデータノードに対する一つ以上のデータブロック中に、少なくとも一つの第２マッピングを含むファイルマッピングテーブルを格納できる。
【００７４】
本発明の他の実施形態によると、分散データストレージシステムの方法は、データファイルを格納するためのファイル識別子を含む、生成ファイル要請をクライアントからネームノードに伝送（送信）するステップと、ネームノードの第１キー値（ＫＶ）ソリッドステートドライブ（ＳＳＤ）にキー値のペアでファイル識別子を格納するステップと、ファイル識別子は、キーとしてキー値に格納され、キーと関連した値は空けられ、データファイルと関連した一つ以上のデータブロックを割り当てるために、クライアントからネームノードに割り当てコマンドを伝送するステップと、ネームノードにおいて、一つ以上のデータブロック中に、少なくとも一つに対するブロック識別子を割り当て、一つ以上のデータブロックを格納するためのデータノードを割り当てるステップと、ネームノードからクライアントにブロック識別子及びデータノードのデータノード識別子を返還（返信）するステップと、クライアントからデータノードにブロック識別子及びコンテンツを含むライトブロック要請を伝送するステップと、データノードの第２（ＫＶ）ＳＳＤにキー値のペアで一つ以上のデータブロックを格納するステップと、を含む。データノードの第２（ＫＶ）ＳＳＤは、ブロックサイズを有する一つ以上のデータブロックを包含する。少なくとも一つのキー値のペアは、キーとしてブロック識別子及び値としてブロックデータを有する。データファイルのサイズは、ブロックサイズ又はブロックサイズの倍数と同一である。
【００７５】
クライアント、ネームノード及びデータノードは、ハドゥープ分散ファイルシステム（ＨＤＦＳ）のノードであり得る。
分散データストレージシステムの方法は、ブロックアップデートを許容するか、又は許容しないようにブロックアップデータフラッグ（ｆｌａｇ）を設定するステップと、をさらに含み得る。
分散データストレージシステムの方法は、データファイルをデータノードの第２（ＫＶ）ＳＳＤの複数のデータブロックに合わせてアライメントするように、アライメントフラッグを設定するステップと、をさらに含み得る。
分散データストレージシステムの方法は、ファイル識別子及びブロック識別子を含むライトコミットコマンドをクライアントからネームノードに伝送するステップと、ネームノードにファイル識別子と、ブロック識別子及びデータノードを追加するように単一の直接動作を追加するステップと、をさらに含み得る。
【００７６】
分散データストレージシステムの方法は、データファイルをリードするために、クライアントからネームノードにリードファイル要請を伝送するステップと、データファイルと関連した一つ以上のデータブロック中に、少なくとも一つに対するブロック識別子及びデータノード識別子をクライアントに返還（返信）するステップと、データノードの第２（ＫＶ）ＳＳＤに格納された一つ以上のデータブロックを検索するために、クライアントからデータノードにブロックリードコマンドを伝送するステップと、及びブロック識別子により識別されたブロックデータをデータノードからクライアントに返還（返信）するステップと、をさらに含み得る。
分散データストレージシステムの方法は、クライアントからネームノードにファイル識別子を含むファイル削除コマンドを伝送するステップと、データファイルと関連した一つ以上のデータブロック中に、少なくとも一つに対するブロック識別子及びデータノード識別子をクライアントに返還（返信）するステップと、ネームノードからネームノードの第１（ＫＶ）ＳＳＤにデータファイルのファイル識別子を含むキー値の削除コマンドを伝送するステップと、ネームノードからデータノードに一つ以上のデータブロックのリストを含む、ブロック削除コマンドを伝送するステップと、データノードの第２（ＫＶ）ＳＳＤに格納された一つ以上のデータブロックを削除するステップと、をさらに含み得る。
第２（ＫＶ）ＳＳＤは、ファイルと関連した一つ以上のデータブロックに対するファイルの第１マッピング及びデータノードに対する一つ以上のデータブロック中に、少なくとも一つの第２マッピングを含む、ファイルマッピングテーブルを格納できる。
【００７７】
本明細書において、ハイパースケールデータセンター（Ｈｙｐｅｒｓｃａｌｅ  Ｄａｔａ  Ｃｅｎｔｅｒ）環境におけるイーサネット（登録商標）ストレージの自動発見を提供するためのストレージシステム、及びその動作方法を具現する様々な実施形態を示すために、上記実施形態を説明した。
【００７８】
尚、本発明は、上述の実施形態に限られるものではない。本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【産業上の利用可能性】
【００７９】
本発明は、データを効率的に格納するためのキー値ストレージを用いた分散ファイルシステム及びその方法を用いるストレージデバイスやストレージシステムに好適に使用される。
【符号の説明】
【００８０】
１００Ａ、１００Ｂ    分散データストレージシステム
１０１    クライアントアプリケーション
１０５    ファイル
１１５    ブロックマップ
１１１、７２０    ネームノード
１２１、２２１、７４０    データノード
１４０    従来のＳＳＤ
１５０、７３０、７５０    （ＫＶ）ＳＳＤ
７１０    クライアント
【図１Ａ】
2019139759.tif 000003
【図１Ｂ】
2019139759.tif 000004
【図２Ａ】
2019139759.tif 000005
【図２Ｂ】
2019139759.tif 000006
【図３】
2019139759.tif 000007
【図４】
2019139759.tif 000008
【図５】
2019139759.tif 000009
【図６Ａ】
2019139759.tif 000010
【図６Ｂ】
2019139759.tif 000011
【図７】
2019139759.tif 000012
【図８】
2019139759.tif 000013
【図９】
2019139759.tif 000014