IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ライン プラス コーポレーションの特許一覧

特開2023-174559コンテナ環境にボリュームを提供するための方法およびシステム
<>
  • 特開-コンテナ環境にボリュームを提供するための方法およびシステム 図1
  • 特開-コンテナ環境にボリュームを提供するための方法およびシステム 図2
  • 特開-コンテナ環境にボリュームを提供するための方法およびシステム 図3
  • 特開-コンテナ環境にボリュームを提供するための方法およびシステム 図4
  • 特開-コンテナ環境にボリュームを提供するための方法およびシステム 図5
  • 特開-コンテナ環境にボリュームを提供するための方法およびシステム 図6
  • 特開-コンテナ環境にボリュームを提供するための方法およびシステム 図7
  • 特開-コンテナ環境にボリュームを提供するための方法およびシステム 図8
  • 特開-コンテナ環境にボリュームを提供するための方法およびシステム 図9
  • 特開-コンテナ環境にボリュームを提供するための方法およびシステム 図10
  • 特開-コンテナ環境にボリュームを提供するための方法およびシステム 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023174559
(43)【公開日】2023-12-07
(54)【発明の名称】コンテナ環境にボリュームを提供するための方法およびシステム
(51)【国際特許分類】
   G06F 3/06 20060101AFI20231130BHJP
   H04L 67/1097 20220101ALI20231130BHJP
   G06F 13/10 20060101ALI20231130BHJP
【FI】
G06F3/06 301Z
H04L67/1097
G06F13/10 340A
【審査請求】未請求
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023080323
(22)【出願日】2023-05-15
(31)【優先権主張番号】10-2022-0065509
(32)【優先日】2022-05-27
(33)【優先権主張国・地域又は機関】KR
(71)【出願人】
【識別番号】516014409
【氏名又は名称】ライン プラス コーポレーション
【氏名又は名称原語表記】LINE Plus Corporation
(74)【代理人】
【識別番号】110002952
【氏名又は名称】弁理士法人鷲田国際特許事務所
(72)【発明者】
【氏名】キム テウク
(72)【発明者】
【氏名】オ ヨンソク
(72)【発明者】
【氏名】ヨン ジェソン
(72)【発明者】
【氏名】イ ウンジェ
(72)【発明者】
【氏名】ソン ドンス
(57)【要約】
【課題】コンテナ環境にボリュームを提供するための方法およびシステムを提供する。
【解決手段】一実施形態に係るボリューム提供方法は、コンテナ環境のクライアントからボリューム生成要求を受信する段階、前記ボリューム生成要求にしたがってボリュームのメタデータをデータベースに格納する段階、前記ボリュームを生成する前記バックエンドストレージのボリュームノードをスケジューリングする段階、および前記スケジューリングによって選定されたボリュームノードに、前記ボリュームに対応する論理ボリューム(Logical Volume:LV)の生成を要求する段階を含む。
【選択図】図4
【特許請求の範囲】
【請求項1】
バックエンドストレージを実現するコンピュータ装置のボリューム提供方法であって、
前記コンピュータ装置が含む少なくとも1つのプロセッサにより、コンテナ環境のクライアントからボリューム生成要求を受信する段階、
前記少なくとも1つのプロセッサにより、前記ボリューム生成要求にしたがってボリュームのメタデータをデータベースに格納する段階、
前記少なくとも1つのプロセッサにより、前記ボリュームを生成する前記バックエンドストレージのボリュームノードをスケジューリングする段階、および
前記少なくとも1つのプロセッサにより、前記スケジューリングによって選定されたボリュームノードに、前記ボリュームに対応する論理ボリューム(Logical Volume:LV)の生成を要求する段階
を含む、ボリューム提供方法。
【請求項2】
前記ボリューム生成要求は、前記クライアントでPVC(Persistence Volume Claim)が生成されることによる前記クライアントのAPI呼び出しによって受信されることを特徴とする、請求項1に記載のボリューム提供方法。
【請求項3】
前記スケジューリングする段階は、
スケジューリングアルゴリズムによって前記ボリュームノードをスケジューリングするモジュールを呼び出した後、前記選定されたボリュームノードからの応答とは関係なく、前記ボリューム生成要求に対する応答を前記クライアントに伝送する段階、および
前記呼び出されたモジュールを利用した前記スケジューリングによって、複数のボリュームノードのうちから1つのボリュームノードを選定する段階
を含む、請求項1に記載のボリューム提供方法。
【請求項4】
前記クライアントに伝送された応答に基づいて前記クライアントでボリュームを管理するPV(Persistence Volume)が生成され、前記ボリューム生成要求を送信したPVCとバインディングされることを特徴とする、請求項3に記載のボリューム提供方法。
【請求項5】
前記選定されたボリュームノードへの要求にしたがって、前記選定されたボリュームノードで前記ボリュームに対応する論理ボリュームが生成されることを特徴とする、請求項1に記載のボリューム提供方法。
【請求項6】
前記少なくとも1つのプロセッサにより、前記クライアントからボリューム削除要求を受信する段階、および
前記少なくとも1つのプロセッサにより、前記ボリューム削除要求を、メッセージキューを利用して前記選定されたボリュームノードに伝送する段階
をさらに含む、請求項1に記載のボリューム提供方法。
【請求項7】
前記ボリューム削除要求にしたがって、前記選定されたボリュームノードから対応する論理ボリュームが削除されることを特徴とする、請求項6に記載のボリューム提供方法。
【請求項8】
バックエンドストレージを実現するコンピュータ装置のボリューム提供方法であって、
前記コンピュータ装置が含む少なくとも1つのプロセッサにより、コンテナ環境のクライアントからボリュームエクスポート要求を受信する段階、
前記少なくとも1つのプロセッサにより、前記ボリュームエクスポート要求にしたがって対応するボリュームを管理するボリュームノードにターゲットの生成およびエクスポートを要求する段階、
前記少なくとも1つのプロセッサにより、前記ボリュームノードからエクスポートされたターゲットの情報を受信する段階、および
前記少なくとも1つのプロセッサにより、前記受信されたターゲットの情報を前記クライアントに伝送する段階
を含む、ボリューム提供方法。
【請求項9】
前記ボリュームエクスポート要求は、前記クライアントでPodが生成されることによる前記クライアントのAPI呼び出しによって受信されることを特徴とする、請求項8に記載のボリューム提供方法。
【請求項10】
前記ターゲットの生成およびエクスポート要求に応答して前記ボリュームノードで前記ボリュームノードに生成された論理ボリュームに対応するターゲットが生成およびエクスポートされ、前記生成されたターゲットの情報が前記コンピュータ装置に伝送されることを特徴とする、請求項8に記載のボリューム提供方法。
【請求項11】
前記ターゲットの情報は、前記ボリュームノードであるホストのIP、ポート、および前記ターゲットの識別子を含むことを特徴とする、請求項8に記載のボリューム提供方法。
【請求項12】
前記ターゲットの情報に基づいて前記クライアントで前記ターゲットにアクセスすることによって前記ターゲットが前記クライアントのブロックデバイスにマッピングされ、
前記クライアントで生成されたPodが前記ブロックデバイスにバインディングされて、前記ターゲットに対応する前記ボリュームノードの論理ボリュームにアクセス可能になることを特徴とする、請求項8に記載のボリューム提供方法。
【請求項13】
前記少なくとも1つのプロセッサにより、前記クライアントからエクスポート除去要求を受信する段階、および
前記少なくとも1つのプロセッサにより、前記エクスポート除去要求を、メッセージキューを利用して前記ボリュームノードに伝送する段階
をさらに含むことを特徴とする、請求項8に記載のボリューム提供方法。
【請求項14】
前記エクスポート除去要求にしたがって、前記ボリュームノードから前記ターゲットを除去することを特徴とする、請求項13に記載のボリューム提供方法。
【請求項15】
請求項1~14のうちのいずれか一項に記載の方法を前記コンピュータ装置に実行させるためのコンピュータプログラム。
【請求項16】
コンピュータ装置であって、
前記コンピュータ装置で読み取り可能な命令を実行するように実現される少なくとも1つのプロセッサ
を含み、
前記少なくとも1つのプロセッサにより、
コンテナ環境のクライアントからボリューム生成要求を受信する段階、
前記ボリューム生成要求にしたがってボリュームのメタデータをデータベースに格納する段階、
前記ボリュームを生成するバックエンドストレージのボリュームノードをスケジューリングする段階、および
前記スケジューリングによって選定されたボリュームノードに、前記ボリュームに対応する論理ボリューム(Logical Volume:LV)の生成を要求すること
を特徴とする、コンピュータ装置。
【請求項17】
前記ボリューム生成要求は、前記クライアントでPVC(Persistence Volume Claim)が生成されることによる前記クライアントのAPI呼び出しによって受信されること
を特徴とする、請求項16に記載のコンピュータ装置。
【請求項18】
前記スケジューリングのために、前記少なくとも1つのプロセッサにより、
スケジューリングアルゴリズムによって前記ボリュームノードをスケジューリングするモジュールを呼び出した後、前記選定されたボリュームノードからの応答とは関係なく、前記ボリューム生成要求に対する応答を前記クライアントに伝送し、
前記呼び出されたモジュールを利用した前記スケジューリングによって、複数のボリュームノードのうちから1つのボリュームノードを選定すること
を特徴とする、請求項16に記載のコンピュータ装置。
【請求項19】
コンピュータ装置であって、
前記コンピュータ装置で読み取り可能な命令を実行するように実現される少なくとも1つのプロセッサ
を含み、
前記少なくとも1つのプロセッサにより、
コンテナ環境のクライアントからボリュームエクスポート要求を受信し、
前記ボリュームエクスポート要求にしたがって対応するボリュームを管理するボリュームノードに、ターゲットの生成およびエクスポートを要求し、
前記ボリュームノードからエクスポートされたターゲットの情報を受信し、
前記受信されたターゲットの情報を前記クライアントに伝送すること
を特徴とする、コンピュータ装置。
【請求項20】
前記ボリュームエクスポート要求は、前記クライアントでPodが生成されることによる前記クライアントのAPI呼び出しによって受信されること
を特徴とする、請求項19に記載のコンピュータ装置。
【発明の詳細な説明】
【技術分野】
【0001】
以下の説明は、コンテナ環境にボリュームを提供するための方法およびシステムに関する。
【背景技術】
【0002】
ローカルコンピュータ環境では、CPU(Central Processing Unit)やメモリなどがSATA(Serial Advanced Technology Attachment)プロトコルに基づいてSATA SSD(solid State Drive)と入力/出力を実行したり、NVMe(Non Volatile Memory express)プロトコルに基づいてNVMe SSDと入力/出力を実行したりするなど、各自の通信規格に基づいてストレージとの通信を処理する。
【0003】
この反面、クライアント-サーバ環境でクライアントがサーバのNVMe SSDを利用しようとする場合、クライアントがネットワークを介してサーバのNVMe SSDにNVMeプロトコルに基づいてアクセスできるようにするためのNVMe oF(NVMeoverFabrics)技術が存在する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】韓国公開特許第2019-0106680号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
クライアント-サーバ環境において、クライアントがサーバのストレージを使用できるようにサーバからクライアントにボリュームを提供することができる、ボリューム提供方法およびシステムを提供する。
【課題を解決するための手段】
【0006】
バックエンドストレージを実現するコンピュータ装置のボリューム提供方法であって、前記コンピュータ装置が含む少なくとも1つのプロセッサにより、コンテナ環境のクライアントからボリューム生成要求を受信する段階、前記少なくとも1つのプロセッサにより、前記ボリューム生成要求にしたがってボリュームのメタデータをデータベースに格納する段階、前記少なくとも1つのプロセッサにより、前記ボリュームを生成する前記バックエンドストレージのボリュームノードをスケジューリングする段階、および前記少なくとも1つのプロセッサにより、前記スケジューリングによって選定されたボリュームノードに、前記ボリュームに対応する論理ボリューム(Logical Volume:LV)の生成を要求する段階を含む、ボリューム提供方法を提供する。
【0007】
一側によると、前記ボリューム生成要求は、前記クライアントでPVC(Persistence Volume Claim)が生成されることによる前記クライアントのAPI呼び出しによって受信されることを特徴としてよい。
【0008】
他の側面によると、前記スケジューリングする段階は、スケジューリングアルゴリズムによって前記ボリュームノードをスケジューリングするモジュールを呼び出した後、前記選定されたボリュームノードからの応答とは関係なく前記ボリューム生成要求に対する応答を前記クライアントに伝送する段階、および前記呼び出されたモジュールを利用した前記スケジューリングによって、複数のボリュームノードのうちから1つのボリュームノードを選定する段階を含むことを特徴としてよい。
【0009】
また他の側面によると、前記クライアントに伝送された応答に基づいて前記クライアントでボリュームを管理するPV(Persistence Volume)が生成されて、前記ボリューム生成要求を送信したPVCとバインディングされることを特徴としてよい。
【0010】
また他の側面によると、前記選定されたボリュームノードへの要求にしたがって、前記選定されたボリュームノードで前記ボリュームに対応する論理ボリュームが生成されることを特徴としてよい。
【0011】
また他の側面によると、前記ボリューム提供方法は、前記少なくとも1つのプロセッサにより、前記クライアントからボリューム削除要求を受信する段階、および前記少なくとも1つのプロセッサにより、メッセージキューを利用して前記ボリューム削除要求を前記選定されたボリュームノードに伝送する段階をさらに含んでよい。
【0012】
さらに他の側面によると、前記ボリューム削除要求にしたがって、前記選定されたボリュームノードから対応する論理ボリュームが削除されることを特徴としてよい。
【0013】
バックエンドストレージを実現するコンピュータ装置のボリューム提供方法であって、前記コンピュータ装置が含む少なくとも1つのプロセッサにより、コンテナ環境のクライアントからボリュームエクスポート要求を受信する段階、前記少なくとも1つのプロセッサにより、前記ボリュームエクスポート要求にしたがって、対応するボリュームを管理するボリュームノードにターゲットの生成およびエクスポートを要求する段階、前記少なくとも1つのプロセッサにより、前記ボリュームノードからエクスポートされたターゲットの情報を受信する段階、および前記少なくとも1つのプロセッサにより、前記受信されたターゲットの情報を前記クライアントに伝送する段階を含む、ボリューム提供方法を提供する。
【0014】
一側によると、前記ボリュームエクスポート要求は、前記クライアントでPodが生成されることによる前記クライアントのAPI呼び出しによって受信されることを特徴としてよい。
【0015】
他の側面によると、前記ターゲットの生成およびエクスポート要求に応答して前記ボリュームノードで前記ボリュームノードに生成された論理ボリュームに対応するターゲットが生成およびエクスポートされ、前記生成されたターゲットの情報が前記コンピュータ装置に伝送されることを特徴としてよい。
【0016】
また他の側面によると、前記ターゲットの情報は、前記ボリュームノードであるホストのIP、ポート、および前記ターゲットの識別子を含むことを特徴としてよい。
【0017】
また他の側面によると、前記ターゲットの情報に基づいて前記クライアントから前記ターゲットにアクセスすることにより、前記ターゲットが前記クライアントのブロックデバイスにマッピングされ、前記クライアントで生成されたPodが前記ブロックデバイスにバインディングされることで、前記ターゲットに対応する前記ボリュームノードの論理ボリュームにアクセスできるようになることを特徴としてよい。
【0018】
また他の側面によると、前記ボリューム提供方法は、前記少なくとも1つのプロセッサにより、前記クライアントからエクスポート除去要求を受信する段階、および前記少なくとも1つのプロセッサにより、メッセージキューを利用して前記エクスポート除去要求を前記ボリュームノードに伝送する段階をさらに含んでよい。
【0019】
さらに他の側面によると、前記エクスポート除去要求にしたがって前記ボリュームノードから前記ターゲットを除去することを特徴としてよい。
【0020】
コンピュータ装置と結合して前記方法をコンピュータ装置に実行させるためにコンピュータ読み取り可能な記録媒体に記録される、コンピュータプログラムを提供する。
【0021】
前記方法をコンピュータ装置に実行させるためのプログラムが記録されている、コンピュータ読み取り可能な記録媒体を提供する。
【0022】
コンピュータ装置であって、前記コンピュータ装置で読み取り可能な命令を実行するように実現される少なくとも1つのプロセッサを含み、前記少なくとも1つのプロセッサにより、コンテナ環境のクライアントからボリューム生成要求を受信する段階、前記ボリューム生成要求にしたがってボリュームのメタデータをデータベースに格納する段階、前記ボリュームを生成する前記バックエンドストレージのボリュームノードをスケジューリングする段階、および前記スケジューリングによって選定されたボリュームノードに、前記ボリュームに対応する論理ボリューム(Logical Volume:LV)の生成を要求することを特徴とする、コンピュータ装置を提供する。
【0023】
コンピュータ装置であって、前記コンピュータ装置で読み取り可能な命令を実行するように実現される少なくとも1つのプロセッサを含み、前記少なくとも1つのプロセッサにより、コンテナ環境のクライアントからボリュームエクスポート要求を受信し、前記ボリュームエクスポート要求にしたがって、対応するボリュームを管理するボリュームノードにターゲットの生成およびエクスポートを要求し、前記ボリュームノードからエクスポートされたターゲットの情報を受信し、前記受信されたターゲットの情報を前記クライアントに伝送することを特徴とする、コンピュータ装置を提供する。
【発明の効果】
【0024】
クライアント-サーバ環境において、クライアントがサーバのストレージを使用できるようにサーバからクライアントにボリュームを提供することができる。
【図面の簡単な説明】
【0025】
図1】本発明の一実施形態における、ネットワーク環境の例を示した図である。
図2】本発明の一実施形態における、コンピュータ装置の例を示したブロック図である。
図3】本発明の一実施形態における、クラウドストレージ環境の例を示した図である。
図4】本発明の一実施形態における、ボリューム生成の過程の例を示した図である。
図5】本発明の一実施形態における、ボリュームアタッチメントの過程の例を示した図である。
図6】本発明の一実施形態における、ボリュームデタッチメントの過程の例を示した図である。
図7】本発明の一実施形態における、ボリューム削除の過程の例を示した図である。
図8】本発明の一実施形態における、バックエンドストレージ観点でのボリューム生成の過程の例を示した図である。
図9】本発明の一実施形態における、バックエンドストレージ観点でのボリュームアタッチメントの過程の例を示した図である。
図10】本発明の一実施形態における、バックエンドストレージ観点でのボリュームデタッチメントの過程の例を示した図である。
図11】本発明の一実施形態における、バックエンドストレージ観点でのボリューム削除の過程の例を示した図である。
【発明を実施するための形態】
【0026】
以下、実施形態について、添付の図面を参照しながら詳しく説明する。
【0027】
本発明の実施形態に係るボリューム提供システムは、少なくとも1つのコンピュータ装置によって実現されてよい。このとき、コンピュータ装置においては、本発明の一実施形態に係るコンピュータプログラムがインストールされて実行されてよく、コンピュータ装置は、実行されたコンピュータプログラムの制御にしたがって本発明の実施形態に係るボリューム提供方法を実行してよい。上述したコンピュータプログラムは、コンピュータ装置と結合してボリューム提供方法をコンピュータに実行させるためにコンピュータ読み取り可能な記録媒体に記録されてよい。
【0028】
図1は、本発明の一実施形態における、ネットワーク環境の例を示した図である。図1のネットワーク環境は、複数の電子機器110、120、130、140、複数のサーバ150、160、およびネットワーク170を含む例を示している。このような図1は、発明の説明のための一例に過ぎず、電子機器の数やサーバの数が図1のように限定されることはない。また、図1のネットワーク環境は、本実施形態に適用可能な環境のうちの一例を説明したものに過ぎず、本実施形態に適用可能な環境が図1のネットワーク環境に限定されることはない。
【0029】
複数の電子機器110、120、130、140は、コンピュータ装置によって実現される固定端末や移動端末であってよい。複数の電子機器110、120、130、140の例としては、スマートフォン、携帯電話、ナビゲーションシステム、PC(personal computer)、ノート型PC、デジタル放送用端末、PDA(Personal Digital Assistant)、PMP(Portable Multimedia Player)、タブレットなどがある。一例として、図1では、電子機器110の例としてスマートフォンを示しているが、本発明の実施形態において、電子機器110は、実質的に無線または有線通信方式を利用し、ネットワーク170を介して他の電子機器120、130、140および/またはサーバ150、160と通信することのできる多様な物理的なコンピュータ装置のうちの1つを意味してよい。
【0030】
通信方式は、限定されることはなく、ネットワーク170が含むことのできる通信網(一例として、移動通信網、有線インターネット、無線インターネット、放送網)を利用する通信方式だけではなく、機器間の近距離無線通信が含まれてもよい。例えば、ネットワーク170は、PAN(personal area network)、LAN(local area network)、CAN(campus area network)、MAN(metropolitan area network)、WAN(wide area network)、BBN(broadband network)、インターネットなどのネットワークのうちの1つ以上の任意のネットワークを含んでよい。さらに、ネットワーク170は、バスネットワーク、スターネットワーク、リングネットワーク、メッシュネットワーク、スター-バスネットワーク、ツリーまたは階層的ネットワークなどを含むネットワークトポロジのうちの任意の1つ以上を含んでもよいが、これらに限定されることはない。
【0031】
サーバ150、160それぞれは、複数の電子機器110、120、130、140とネットワーク170を介して通信して命令、コード、ファイル、コンテンツ、サービスなどを提供する1つ以上のコンピュータ装置によって実現されてよい。例えば、サーバ150は、ネットワーク170を介して接続した複数の電子機器110、120、130、140にサービス(一例として、クラウドサービス、インスタントメッセージングサービス、取引(一例として、送金)サービス、決済サービス、仮想取引所サービス、リスクモニタリングサービス、ゲームサービス、グループ通話サービス(または、音声会議サービス)、メッセージングサービス、メールサービス、ソーシャルネットワークサービス、地図サービス、翻訳サービス、検索サービス、および/またはコンテンツ提供サービスなど)を提供するシステムであってよい。
【0032】
図2は、本発明の一実施形態における、コンピュータ装置の例を示したブロック図である。上述した複数の電子機器110、120、130、140それぞれやサーバ150、160それぞれは、図2に示したコンピュータ装置200によって実現されてよい。
【0033】
このようなコンピュータ装置200は、図2に示すように、メモリ210、プロセッサ220、通信インタフェース230、および入力/出力インタフェース240を含んでよい。メモリ210は、コンピュータ読み取り可能な記録媒体であって、RAM(random access memory)、ROM(read only memory)、およびディスクドライブのような永続的大容量記録装置を含んでよい。ここで、ROMやディスクドライブのような永続的大容量記録装置は、メモリ210とは区別される別の永続的記録装置としてコンピュータ装置200に含まれてもよい。また、メモリ210には、オペレーティングシステムと、少なくとも1つのプログラムコードが記録されてよい。このようなソフトウェア構成要素は、メモリ210とは別のコンピュータ読み取り可能な記録媒体からメモリ210にロードされてよい。このような別のコンピュータ読み取り可能な記録媒体は、フロッピー(登録商標)ドライブ、ディスク、テープ、DVD/CD-ROMドライブ、メモリカードなどのコンピュータ読み取り可能な記録媒体を含んでよい。他の実施形態において、ソフトウェア構成要素は、コンピュータ読み取り可能な記録媒体ではない通信インタフェース230を通じてメモリ210にロードされてもよい。例えば、ソフトウェア構成要素は、ネットワーク170を介して受信されるファイルによってインストールされるコンピュータプログラムに基づいてコンピュータ装置200のメモリ210にロードされてよい。
【0034】
プロセッサ220は、基本的な算術、ロジック、および入出力演算を実行することにより、コンピュータプログラムの命令を処理するように構成されてよい。命令は、メモリ210または通信インタフェース230によって、プロセッサ220に提供されてよい。例えば、プロセッサ220は、メモリ210のような記録装置に記録されたプログラムコードにしたがって受信される命令を実行するように構成されてよい。
【0035】
通信インタフェース230は、ネットワーク170を介してコンピュータ装置200が他の装置(一例として、上述した記録装置)と互いに通信するための機能を提供してよい。一例として、コンピュータ装置200のプロセッサ220がメモリ210のような記録装置に記録されたプログラムコードにしたがって生成した要求や命令、データ、ファイルなどが、通信インタフェース230の制御にしたがってネットワーク170を介して他の装置に伝達されてよい。これとは逆に、他の装置からの信号や命令、データ、ファイルなどが、ネットワーク170を経てコンピュータ装置200の通信インタフェース230を通じてコンピュータ装置200に受信されてよい。通信インタフェース230を通じて受信された信号や命令、データなどは、プロセッサ220やメモリ210に伝送されてよく、ファイルなどは、コンピュータ装置200がさらに含むことのできる記録媒体(上述した永続的記録装置)に記録されてよい。
【0036】
入力/出力インタフェース240は、入力/出力装置250とのインタフェースのための手段であってよい。例えば、入力装置は、マイク、キーボード、またはマウスなどの装置を、出力装置は、ディスプレイ、スピーカのような装置を含んでよい。他の例として、入力/出力インタフェース240は、タッチスクリーンのように入力と出力のための機能が1つに統合された装置とのインタフェースのための手段であってもよい。入力/出力装置250は、コンピュータ装置200と1つの装置で構成されてもよい。
【0037】
また、他の実施形態において、コンピュータ装置200は、図2の構成要素よりも少ないか多くの構成要素を含んでもよい。しかし、大部分の従来技術による構成要素を明確に図に示す必要はない。例えば、コンピュータ装置200は、上述した入力/出力装置250のうちの少なくとも一部を含むように実現されてもよいし、送受信機、データベースなどのような他の構成要素をさらに含んでもよい。
【0038】
図3は、本発明の一実施形態における、クラウドストレージ環境の例を示した図である。図3は、Kubernetesによって実現されたコンテナ環境のクライアント端310と、OpenStack-Cinderによって実現されたクラウド環境のストレージサーバサイド320を示している。ここで、KubernetesとOpenStack-Cinderは、オープンソースとして広く知られているものである。
【0039】
本発明の実施形態では、ストレージサーバサイド320のストレージサーバに分散されているストレージ(NVMe SSDs)をコンテナ環境のクライアントにどのように提供するかについての方法およびシステムを提供する。ストレージは、可変サイズの論理ボリューム(Logical Volume:LV)を生成してよい。一実施形態に係るボリューム提供方法では、クライアントのコンテナが希望とするサイズのボリュームを要求すれば、要求されたサイズの論理ボリュームをサーバからコンテナに提供する方式によってボリュームがコンテナ環境のクライアントに提供されてよい。このとき、KubernetesにOpenStack-Cinderのボリュームを提供するために、コンテナストレージインタフェース(Container Storage Interface:CSI)が利用されてよい。このようなボリューム提供方法の具体的な過程については、以下でより詳しく説明する。
【0040】
図4は、本発明の一実施形態における、ボリューム生成の過程の例を示した図である。図4は、Kubernetesによって実現されたコンテナ環境のクライアントサイド310と、OpenStack-Cinderによって実現されたクラウド環境のストレージサーバサイド320を示している。クライアントサイド310および/またはストレージサーバサイド320は、複数が実現されて利用されてもよい。
【0041】
本実施形態において、Kubernetes(K8s)には、NVMe oF(NVMe over Fabrics)のコンテナストレージインタフェースが提供されてよい。コンテナストレージインタフェースのコンポーネントは、大きく、ノード1(node 1)410に示すように、コントローラプラグイン(Controller Plugin)411と各ノードに含まれるノードプラグイン(Node Plugin)412で構成されてよい。このとき、コントローラプラグイン411は、クライアントサイド310でボリュームの生成や削除などの責任を担うコンポーネントであり、ノードプラグイン412は、各ノードにボリュームをインポートしてコンテナにボリュームをバインドマウントするコンポーネントであってよい。
【0042】
また、OpenStack-Cinderによって管理されるバックエンドストレージ(Backend Storage)であるストレージサーバサイド320のマネージャーノード(manager node)420は、cinder-api421とcinder-scheduler422を含んでよい。cinder-api421とcinder-scheduler422は、マネージャーノード420でのボリューム管理のために利用されるdemonであってよい。ストレージサーバサイド320のボリュームノード1(volume node 1)430は、cinder-volume431を含んでよい。cinder-volume431は、ボリュームノード1(430)に含まれるストレージ(一例として、NVMe SSDs)を管理するdemonであってよい。ここで、ストレージサーバサイド320には多数のボリュームノードが存在してよく、多数のボリュームノードそれぞれは自身のcinder-volumeを含んでよい。また、demonは、ソフトウェアモジュールであってよい。図4の実施形態では、マネージャーノード420がcinder-api421とcinder-scheduler422を含む例を説明しているが、cinder-api421とcinder-scheduler422は互いに異なるノードに含まれてもよい。例えば、ノード1がcinder-apiとcinder-volume1を含み、ノード2がcinder-scheduler422とcinder-volume2を含み、ノード3がcinder-volume3を含む形態が考慮されてもよい。言い換えれば、多数のボリュームノードのうちの少なくとも1つのボリュームノードが、cinder-api421とcinder-scheduler422を含む実施形態が考慮されてもよい。
【0043】
Kubernetesでボリュームを管理する主体はPV(Persistence Volume)440であるが、ユーザはPV440に直接アクセスせずにPVC(Persistence Volume Claim)450というオブジェクトを生成(1.create PVC)することで、ユーザが希望するボリュームのスペックをPVC450に入力する。一例として、NVMe SSDsのボリューム100ギガバイトを使用するというスペックがPVC450に入力されてよい。このとき、図4の実施形態では、NVMe oFの「StorageClass」によって「testpvc」という名称のPVC450が生成された例を示している。例えば、NVMe-oFのための「StorageClass」というオブジェクトが1つ存在し、PVC450はこの「StorageClass」をスペックに記入してよい。
【0044】
一方、コントローラプラグイン411は、PVC450の生成をモニタリングしてよく、PVC450が生成されることを確認することにより、クライアントサイド310とストレージサーバサイド320の間のエンドポイント(endpoint)によってボリューム生成(2.cinder API:create volume)要求を伝送してよい。このとき、ボリューム生成要求は、cinder-api421に伝送されてよい。言い換えれば、ボリューム生成要求は、クライアントでのPVC450の生成によってクライアントでcinder-api421をAPI呼び出すことでcinder-api421に伝送されてよい。実施形態によって、コントローラプラグイン411は、cinder-api421にボリューム生成要求を直接送信してもよいし、DNS(Domain Name System)を設定してボリューム生成要求を伝送することも可能である。このとき、ボリューム生成要求は、PVCの名称(本実施形態では「testpvc」)を含んでよい。
【0045】
cinder-api421は、ボリューム生成要求にしたがってボリューム460を生成(3.create volume)してよい。ボリューム460は、データベースに格納されるメタデータの形態で生成されてよい。このとき、生成されるボリューム460の名称は、PVC450の名称と同一であってよい。また、cinder-api421は、生成されたボリューム460によるLV(Logical Volume)を実際に生成するノード(ストレージサーバとしてのボリュームノード(volume node))を探索するために、cinder-scheduler422にスケジューリング要求(4.scheduling)を伝送する。このとき、cinder-api421とcinder-scheduler422は非同期的に通信するため、コントローラプラグイン411は、スケジューリング要求後すぐにコントローラプラグイン411にボリューム生成要求に対する応答を伝送(5.return after calling scheduling)してよい。このとき、cinder-api421は、cinder-scheduler422からの応答や、以下で説明するcinder-volume431またはボリュームノード1(430)からの応答とは関係なく、すぐにボリューム生成要求に対する応答をクライアントに伝送してよい。
【0046】
cinder-scheduler422は、スケジューリングアルゴリズムに基づいてcinder-api421によって生成されたボリューム460による実際のLVを生成するノードをスケジューリングしてよい。一例として、cinder-scheduler422は、バックエンドストレージに存在する複数のボリュームノードのうちの1つのボリュームノードを実際のLVを生成するノードとして選定してよい。図4の実施形態では、ボリュームノード1(430)が、実際のLVを生成するノードとしてスケジューリングされた例を示している。このとき、ボリュームノード1(430)のcinder-volume431は、ストレージ(NVMe SSDs)を利用してボリューム460のためのLV470を生成してよい。スケジューリングアルゴリズムは、最大能力(capacity)のノードを探索してスケジューリングする簡単なアルゴリズムを基本アルゴリズムとして利用してよいが、実際の実現によってはスケジューリングのための他の要素がさらに考慮されてもよい。
【0047】
一方、cinder-api421からの応答を受け取ったコントローラプラグイン411は、PV440を生成した後、PV440とPVC450をバインディングしてよい。この場合、ユーザは、PVC450によって実際のボリュームを使用できる状態であってよい。
【0048】
図4に示したkubelet480は、以下で説明するKubernetesのPodとボリュームの生成および処理を担当する。各実施形態において、Kubernet480は、説明の便宜上、同じ図面符号で表示しているが、実質的にはKubernetesのノードそれぞれに含まれる互いに異なるインスタンスモジュールであってよい。このようなKubernet480については、以下でより詳しく説明する。
【0049】
図5は、本発明の一実施形態における、ボリュームアタッチメントの過程の例を示した図である。図5の実施形態は、PVC450を利用してコンテナにボリュームを連結する過程の例を示している。
【0050】
一方、図5の実施形態では、ユーザの要求にしたがい、PV440をマウントするPod510がノード2(520)によってスケジューリングされて生成(1.create Pod)された例を示している。この場合、ノード2(520)のノードプラグイン521は、Pod510を確認することによってcinder-api421にエクスポートボリューム(2.cinder API:export volume)を呼び出してボリュームのエクスポートを要求してよい。より具体的に、Pod510の生成を確認する主体は、kubeletのK8sで使用するワーカーノードのエージェントdemonであってよい。この場合、kubelet480がPod510とボリュームの実際の生成および処理を担当してよい。このとき、生成されたPod510がNVMe-oFボリュームを使用すれば、kubelet480がノードプラグイン521にボリュームアタッチメントを要求することによって、ノードプラグイン521がこのようなPod510に関する情報の伝送を受け取る。言い換えれば、ノードプラグイン521は、Podが生成されることにより、API呼び出しによってボリュームエクスポート要求をcinder-api421に伝送してよい。この場合、cinder-api421は、ボリュームノード1(430)のcinder-volume431でターゲット530を生成してエクスポートせよという命令(3.create target and export)をする。この場合、このような命令のためのcinder-api421とcinder-volume431は、同期方式で通信してよい。これにより、cinder-api421は、cinder-volume431でターゲット530を生成することにより、cinder-volume431が伝送する応答に基づいてホストIP、ポート、サブシステムNQN(ターゲット530の識別子))をノードプラグイン521に返信(4.return with host IP、port、subsystem NQN)してよい。
【0051】
この場合、ノードプラグイン521は、伝送された情報(ホストIP、ポート、およびターゲット530の識別子)を利用して、エクスポートされたLV470ベースのターゲット530にNVMe連結を呼び出し(5.nvme connect)してよい。この場合、ターゲット530は、ノード2(520)のNVMeタイプのブロックデバイス(block device)550にマッピングされてよく、ノード2(520)にターゲット530がアタッチ(attach)されれば、ボリューム460の状態をin-useに転換(6.change volume status to in-use)することで、ユーザはNVMeボリュームを利用できるようになる。このために、ノードプラグイン521は、エクスポートの生成要求などと同じように、cinder-api421にクエリを伝送してボリューム460の状態をin-useに転換してよい。この後、ノードプラグイン521は、Pod510とターゲット530がマッピングされたブロックデバイス550をバインドマウント(6.bind mount)することにより、ユーザアプリケーションはPod510によってNVMeボリュームを使用することができるようになる。一般的なマウントコマンドは新規ディレクトリツリーを生成する反面、バインドマウントは既存のディレクトリツリーをそのまま使用してコンテナにノードのボリュームを付けるのに使用される。言い換えれば、クライアントで生成されたPod510がブロックデバイス550にバインドマウントされ、ターゲット530に対応するボリュームノード1(430)のLVにアクセスできるようにすることができる。
【0052】
図6は、本発明の一実施形態における、ボリュームデタッチメントの過程の例を示した図である。PV440をマウントするPod510が削除(1.delete Pod)されれば、ノードプラグイン521は、当該PV440にマウントされているターゲット530のバックエンドストレージサーバ(ボリュームノード1(430))にNVMe連結解除命令(2.Nvme disconnect)をしてよい。ターゲット530のサーバ情報であるホストIP、ポート、およびターゲット530の識別子は、cinder-api421への要求として受け取ってよい。この場合にも、Pod510の削除を確認する主体は、kubeletのK8sで使用するワーカーノードのエージェントdemonであってよい。言い換えれば、kubelet480がPod510の削除をモニタリングしてノードプラグイン521にボリュームデタッチメントを要求することにより、ノードプラグイン521がこのようなPod510の削除に関する情報の伝送を受け取るようにしてよい。
【0053】
NVMe連結の解除が完了した後、ノードプラグイン521は、cinder-api421に当該エクスポートを削除することを要求(3.cinder API:remove export)してよい。この場合、cinder-api421は、当該ホスト(ボリュームノード1(430))のcinder-volume431にエクスポートを除去せよというメッセージを伝送(4.remove export)してよい。cinder-volume431は、伝送されたメッセージにしたがってターゲット530に対するエクスポートを削除してよい。
【0054】
この後、ノードプラグイン521は、ボリューム460を使用可能にしてほしいという要求(6.cinder API:enable volume)をcinder-api421に伝送してよく、cinder-api421は、要求にしたがって、当該ボリューム460の状態を使用可能な状態(available)に変更(7.make volume status available)してよい。
【0055】
図7は、本発明の一実施形態における、ボリューム削除の過程の例を示した図である。NVMe oFのPVC450が削除(1.delete PVC)されれば、コントローラプラグイン411は、cinder-api421にボリューム削除を要求(2.cinder API:delete volume)してよい。この場合、cinder-api421は、データベースからボリューム460の情報を削除(3.Delete volume)してよい。この後、cinder-api421は、当該ボリュームを管理するcinder-ボリューム431に実際にLV470を除去せよというメッセージを送信(4.remove volume)してよい。cinder-ボリューム431は、受信したメッセージにしたがってLV470を削除(5.delete LV)してよい。
【0056】
一方、コントローラプラグイン411は、cinder-api421にボリューム削除を要求した後、PV440を削除(6.delete PV)してよい。
【0057】
図8は、本発明の一実施形態における、バックエンドストレージ観点でのボリューム生成の過程の例を示した図である。図8は、ストレージサーバ端320に対応するバックエンドストレージの例であって、cinder-api810、Auth manager820、cinder-scheduler830、Cinder DB840、メッセージキュー(Message Queue850、cinder-volume1(860)、およびcinder-volume2(870)を示している。ここで、cinder-api810、cinder-scheduler830、およびcinder-volume860、870は、上述したcinder-api421、cinder-scheduler422、およびcinder-volume431にそれぞれ対応してよい。一方、Auth manager820、Cinder DB840、およびメッセージキュー850は、マイクロサービスアキテクチャにしたがってOpenStack-Cinderとは別に管理されるコンポーネントであってよい。
【0058】
クライアントからボリューム生成要求が伝送されれば、cinder-api810は、Auth manager820にユーザ要求の認証/認可を確認(1.Auth user、project and role)してよい。例えば、cinder-api810は、APIを呼び出したユーザの情報、ユーザが属するプロジェクト(project)の情報、ユーザがボリュームを生成できるかどうかに対するロール(role)情報を確認してよい。
【0059】
認証が完了した後、cinder-api810は、Cinder DB840に、ボリュームのメタデータとしてボリューム名、サイズ、生成タイプなどを格納(2.Create volume metadata)してよい。Cinder DB840のアップデートは、一例として、SQL(Structured Query Language)が利用されてよい。
【0060】
また、cinder-api810は、メッセージキュー850を利用して、cinder-scheduler830にボリューム生成のためのスケジューリングを要求してよい。このとき、cinder-api810は、ボリュームスケジューリングを要求するためのメッセージをメッセージキュー850で伝送(3.Request volume scheduling)してよい。この後、cinder-scheduler830は、メッセージキュー850によってメッセージの伝送を非同期方式で受け取ってよい。
【0061】
cinder-scheduler830は、伝送されたメッセージに基づいて、ボリュームを生成するcinder-volume(本実施形態ではcinder-volume2(870))を決定してよく、NVMeボリュームを生成せよという命令(4.Schedule nvme volume)をメッセージキュー850に入力してよい。このとき、スケジューリングの基準は、cinder-volumeが担当するディスクの残余容量などが考慮されてよい。
【0062】
一方、cinder-scheduler830は、cinder-volumeをスケジューリングした後、ボリュームの識別子とcinder-volumeのホスト情報などをCinder DB840にアップデートしてよい。
【0063】
cinder-volume2(870)は、メッセージキュー850で命令の伝送を受け取ってよく、伝送された命令にしたがって、LVとしてNVMeボリュームを生成(5.Create nvme volume)してよい。
【0064】
図9は、本発明の一実施形態における、バックエンドストレージ観点でのボリュームアタッチメントの過程の例を示した図である。
【0065】
ボリュームアタッチメント時にクライアントからボリュームエクスポート(ターゲットエクスポート)要求がcinder-api810に到着すれば、cinder-api810は、Auth manager820にユーザ要求の認証/認可を確認(1.Authuser、project and role)してよい。この後、cinder-api810は、当該ボリュームを担当するcinder-volume(本実施形態ではcinder-volume2(870))にNVMeターゲットをエクスポートするように要求(2.Request nvme target export and wait response)を伝送してよい。上述したように、当該要求は、メッセージキュー850を利用した非同期方式で伝送されるが、cinder-api810は、cinder-volume2(870)からの応答を待たなければならないため、cinder-api810にはcinder-volume2(870)からの応答を待つためのロジックが含まれてよい。
【0066】
cinder-volume2(870)は、メッセージキュー850で伝送された要求にしたがって、NVMeターゲットエクスポートの作業を実行(3.Export nvme volume target)してよい。一例として、cinder-volume2(870)は、カーネルモジュールである「nvmet-tcp」を利用してターゲットエクスポートを処理してよい。また、cinder-volume2(870)は、エクスポートしたターゲットの情報(ip、ポート、ホストnqn)をメッセージキュー850でcinder-api810に伝送してよい。ここで、ipは、上述したホストIPに対応してよく、ホストnqnは、ターゲットの識別子として説明したサブシステムNQNに対応してよい。
【0067】
cinder-api810は、cinder-volume2(870)の応答を待ち、エクスポートが完了した後、メッセージキュー850でcinder-volume2(870)の応答の伝送を受け取るようになれば、クライアントに当該情報を返信(4.Return nvme volume target info(ip、port、host nqn))してよい。
【0068】
図10は、本発明の一実施形態における、バックエンドストレージ観点でのボリュームデタッチメントの過程の例を示した図である。
【0069】
ボリュームデタッチメント時にクライアントからエクスポート削除(Remove export)要求が入れば、cinder-api810は、Auth manager820にユーザ要求の認証/認可を確認(1.Authuser、project and role)してよい。この後、cinder-api810は、メッセージキュー850を利用して、当該ボリュームを担当するcinder-volume2(870)にNVMeターゲットを削除するように要求(2.Request remove nvme target)を送信してよい。このとき、cinder-volume2(870)は、メッセージキュー850で伝送された要求にしたがって、NVMeターゲットを削除する作業を実行(3.Remove nvme target)してよい。
【0070】
図11は、本発明の一実施形態における、バックエンドストレージ観点でのボリューム削除の過程の例を示した図である。
【0071】
ボリューム削除時にクライアントからボリューム削除要求(Volumedelete)が入力されれば、cinder-api810は、Auth manager820にユーザ要求の認証/認可を確認(1.Auth user、project and role)してよい。この後、cinder-api810は、削除要求が入力されたボリュームに関する情報をCinder DB840から削除(2.Delete volume metadata)してよい。
【0072】
また、cinder-api810は、メッセージキュー850を利用して、当該ボリュームを担当するcinder-volume2(870)にLVを削除するように要求(3.Request volume delete)を送信してよい。このとき、cinder-volume2(870)は、メッセージキュー850で伝達された要求にしたがって、LVを除去する作業を実行(4.Delete LV)してよい。
【0073】
上述した実施形態で説明したコンポーネントは、ソフトウェアモジュールの形態で実現されてよく、少なくとも1つのプロセッサ(一例として、プロセッサ220)が実行する動作の機能的表現(functional expressions)であってよい。例えば、クライアントやバックエンドストレージを実現するコンピュータ装置200のプロセッサ220は、メモリ210が含むオペレーティングシステムのコードと、少なくとも1つのコンピュータプログラムのコードとによる制御命令(instruction)を実行するように実現されてよい。ここで、プロセッサ220は、コンピュータ装置200に記録されたコードが提供する制御命令にしたがってコンピュータ装置200が上述した実施形態に係る過程の動作を実行するようにコンピュータ装置200を制御してよい。
【0074】
このように、本発明の実施形態によると、クライアント-サーバ環境において、クライアントがサーバのストレージを使用できるようにサーバからクライアントにボリュームを提供することができる。
【0075】
上述した装置は、ハードウェア構成要素、またはハードウェア構成要素とソフトウェア構成要素との組み合わせによって実現されてよい。例えば、実施形態で説明された装置および構成要素は、例えば、プロセッサ、コントローラ、ALU(arithmetic logic unit)、デジタル信号プロセッサ、マイクロコンピュータ、FPGA(field programmable gate array)、PLU(programmable logic unit)、マイクロプロセッサ、または命令を実行して応答することができる様々な装置のように、1つ以上の汎用コンピュータまたは特定目的コンピュータを利用して実現されてよい。処理装置は、オペレーティングシステム(OS)およびOS上で実行される1つ以上のソフトウェアアプリケーションを実行してよい。また、処理装置は、ソフトウェアの実行に応答し、データにアクセスし、データを記録、操作、処理、および生成してもよい。理解の便宜のために、1つの処理装置が使用されるとして説明される場合もあるが、当業者であれば、処理装置が複数個の処理要素および/または複数種類の処理要素を含んでもよいことが理解できるであろう。例えば、処理装置は、複数個のプロセッサまたは1つのプロセッサおよび1つのコントローラを含んでよい。また、並列プロセッサのような、他の処理構成も可能である。
【0076】
ソフトウェアは、コンピュータプログラム、コード、命令、またはこれらのうちの1つ以上の組み合わせを含んでもよく、思うままに動作するように処理装置を構成したり、個別にまたはまとめて処理装置に命令したりしてよい。ソフトウェアおよび/またはデータは、処理装置に基づいて解釈されたり、処理装置に命令またはデータを提供したりするために、いかなる種類の機械、コンポーネント、物理装置、仮想装置(virtual equipmet)、コンピュータ記録媒体または装置に具現化されてよい。ソフトウェアは、ネットワークによって接続されたコンピュータシステム上に分散され、分散された状態で記録されても実行されてもよい。ソフトウェアおよびデータは、1つ以上のコンピュータ読み取り可能な記録媒体に記録されてよい。
【0077】
実施形態に係る方法は、多様なコンピュータ手段によって実行可能なプログラム命令の形態で実現されてコンピュータ読み取り可能な媒体に記録されてよい。前記コンピュータで読み取り可能な媒体は、プログラム命令、データファイル、データ構造などを単独でまたは組み合わせて含んでよい。媒体は、コンピュータ実行可能なプログラムを継続して記録するものであっても、実行またはダウンロードのために一時記録するものであってもよい。また、媒体は、単一または複数のハードウェアが結合した形態の多様な記録手段または格納手段であってよく、あるコンピュータシステムに直接接続する媒体に限定されることはなく、ネットワーク上に分散して存在するものであってもよい。媒体の例としては、ハードディスク、フロッピー(登録商標)ディスク、および磁気テープのような磁気媒体、CD-ROMおよびDVDのような光媒体、フロプティカルディスク(floptical disk)のような光磁気媒体、およびROM、RAM、フラッシュメモリなどのような、プログラム命令語が格納されるように構成されたものであってよい。また、媒体の他の例として、アプリケーションを配布するアプリケーションストアやその他の多様なソフトウェアを供給または配布するサイト、サーバなどで管理する記録媒体または格納媒体が挙げられる。プログラム命令の例は、コンパイラによって生成されるもののような機械語コードだけではなく、インタプリタなどを使用してコンピュータによって実行される高級言語コードを含む。
【0078】
以上のように、実施形態を、限定された実施形態および図面に基づいて説明したが、当業者であれば、上述した記載から多様な修正および変形が可能であろう。例えば、説明された技術が、説明された方法とは異なる順序で実行されたり、かつ/あるいは、説明されたシステム、構造、装置、回路などの構成要素が、説明された方法とは異なる形態で結合されたりまたは組み合わされたり、他の構成要素または均等物によって対置されたり置換されたとしても、適切な結果を達成することができる。
【0079】
したがって、異なる実施形態であっても、特許請求の範囲と均等なものであれば、添付の特許請求の範囲に属する。
【符号の説明】
【0080】
310:クライアントサイド
320:ストレージサーバサイド
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
【外国語明細書】