NAS は、Alibaba Cloud が提供する、共有可能でスケーラブル、高信頼性、高性能な分散ファイルシステムです。このトピックでは、NAS ボリュームを Elastic Container Instance (ECI) にマウントする方法について説明します。
注意事項
-
NAS は使用量に基づいて課金され、従量課金、リソースプラン、SCU 課金方法をサポートしています。詳細については、「NAS の課金概要」をご参照ください。
-
NAS ファイルシステムは、インスタンスと同じ VPC 内に存在する必要があります。
-
NAS は共有ストレージを提供します。単一の NAS ファイルシステムを複数のインスタンスにマウントできます。複数のインスタンスが同時に同じデータを変更する場合、アプリケーション側でデータ同期を処理する必要があります。
-
NAS ボリュームをアンマウントする前に NAS マウントポイントを削除しないでください。削除すると、オペレーティングシステムが応答しなくなる可能性があります。
事前準備
Alibaba Cloud File Storage NAS をボリュームとして使用する前に、NAS ファイルシステムとマウントポイントを作成する必要があります。詳細については、「ファイルシステムの作成」および「マウントポイントの管理」をご参照ください。
設定の詳細 (OpenAPI)
CreateContainerGroup API オペレーションを呼び出して ECI インスタンスを作成する際に、Volume 関連のパラメーターを使用してボリュームを指定し、次に Container.VolumeMount 関連のパラメーターを使用してボリュームをコンテナにマウントできます。関連するパラメーターを以下に示します。詳細については、「CreateContainerGroup」をご参照ください。
ボリュームの宣言
Volume 関連のパラメーターを使用してボリュームを指定する場合、まずボリュームのタイプと名前を指定する必要があります。次に、`Volume.N.Type` パラメーターの値に基づいて、他の Volume 関連のパラメーターを設定する必要があります。
NAS ボリュームは、次の 2 つの方法のいずれかで宣言できます。
-
NFS タイプのボリュームのマウント
名前
タイプ
値の例
説明
Volume.N.Name
String
nas-demo
ボリューム名。
Volume.N.Type
String
NFSVolume
NFS タイプのボリュームを作成するには、NFSVolume に設定します。
Volume.N.NFSVolume.Server
String
3f9cd4**-na*.cn-shanghai.nas.aliyuncs.com
NFS サーバーアドレス。
Alibaba Cloud File Storage NAS を使用する場合、これは NAS ファイルシステムのマウントポイントアドレスです。
Volume.N.NFSVolume.Path
String
/share
NFS ボリュームパス。
Volume.N.NFSVolume.ReadOnly
Boolean
false
NFS ボリュームの読み取り権限。有効値:
-
true:読み取り専用
-
false:読み取り/書き込み
デフォルト値:false。
-
-
FlexVolume プラグインを使用したボリュームのマウント
名前
タイプ
値の例
説明
Volume.N.Name
String
nas-demo
ボリューム名。
Volume.N.Type
String
FlexVolume
FlexVolume プラグインを使用してボリュームをマウントするには、FlexVolume に設定します。
Volume.N.FlexVolume.Driver
String
alicloud/nas
FlexVolume プラグインを使用してボリュームをマウントする際のドライバータイプ。Alibaba Cloud File Storage NAS をマウントするには、
alicloud/nasに設定します。Volume.N.FlexVolume.Options
String
{"server":"3f9cd4**-na*.cn-shanghai.nas.aliyuncs.com","path": "/share","vers":"3","options":"nolock,tcp,noresvport"}
FlexVolume オブジェクトのキーと値のオプション。JSON 文字列として渡されます。
FlexVolume を使用して NAS をマウントする場合、Options は NAS ボリュームの設定パラメーターを指定します。次のパラメーターを設定できます。
-
server:NAS ファイルシステムのマウントポイントアドレス。
-
path:NAS ファイルシステムパス以下のサブディレクトリ。
/で始まります。-
NAS ファイルシステムに存在するサブディレクトリを入力します。ルートディレクトリ配下にサブディレクトリが存在しない場合は、マウント前に作成されます。
-
超高速型 NAS ファイルシステムの場合、サブディレクトリは
/shareで始まる必要があります。 -
このパラメーターはオプションです。省略した場合、デフォルトで NAS ファイルシステムのルートディレクトリがマウントされます。
-
-
vers:NAS ファイルシステムのマウントに使用される NFS プロトコルバージョン。v3 の使用を推奨します。エクストリーム NAS は v3 のみをサポートします。
-
options:NAS のカスタムマウントオプション。「xxx,xxx,xxx」の形式で指定します (例:
nolock,tcp,noresvport)。
-
ボリュームのマウント
ボリュームを指定した後、VolumeMount 関連のパラメーターを使用してボリュームをコンテナにマウントできます。
パラメーター | タイプ | 例 | 説明 |
Container.N.VolumeMount.N.Name | String | test-volume | コンテナ N にマウントするボリューム N の名前。この値は Volume.N.Name の値です。 |
Container.N.VolumeMount.N.MountPath | String | /usr/share | ボリュームをマウントするコンテナ内のパス。このディレクトリ内のデータは、ボリューム上のデータによって上書きされます。 |
Container.N.VolumeMount.N.SubPath | String | /usr/sub | ボリュームのサブディレクトリ。このパラメーターは、インスタンスが同じボリュームの異なるサブディレクトリをコンテナの異なるサブディレクトリにマウントできるように指定します。 |
Container.N.VolumeMount.N.ReadOnly | Boolean | false | マウントディレクトリが読み取り専用かどうかを指定します。デフォルト値:false。 |
Container.N.VolumeMount.N.MountPropagation | String | None | ボリューム N のマウントプロパゲーション設定。マウントプロパゲーションを使用すると、1 つのコンテナにマウントされたボリュームを、同じ ECI インスタンス内の他のコンテナ、または同じホスト上の他の ECI インスタンスと共有できます。有効値:
デフォルト値:None。 |
ボリュームは init コンテナにもマウントできます。必要なパラメーターは、前の表のパラメーターと似ています。Container を InitContainer に変更するだけです。
設定の詳細 (コンソール)
Elastic Container Instance 購入ページで Elastic Container Instance を作成する際に、[コンテナグループ設定] セクションでボリュームを指定し、[コンテナ設定] セクションでコンテナにボリュームをマウントできます。
ボリュームの宣言
-
[コンテナグループ構成] セクションで、[詳細設定] を展開します。
-
[ストレージ] で、[NAS 永続ストレージ] タブを選択し、[追加] をクリックします。
-
NAS ボリュームのパラメーターを設定します。
-
名前: NAS ボリュームの名前。
-
マウントポイント:NAS ファイルシステムのマウントポイント。
-
パス: マウントする NAS ファイルシステムのパス。
-
読み取り専用: データの読み取り権限です。デフォルトでは、読み取りと書き込みが有効になっています。必要に応じて読み取り専用を選択してください。
-
ボリュームのマウント
-
[コンテナ構成] セクションで、コンテナを選択してその詳細設定を展開します。
-
[ストレージ] トグルをオンにして、[追加] をクリックします。
利用可能なボリュームは、コンテナグループの設定時に宣言されたものです。
[ストレージの選択] で、宣言したボリューム (例:nas-demo) を選択します。ストレージタイプを [NAS 永続ストレージ] に設定します。[コンテナ内のマウントパス] に
/dataを、[サブディレクトリ] に/testを入力します。必要に応じて [読み取り専用] を選択します。
複数のコンテナにボリュームをマウントする場合は、さらにコンテナを選択して上記の手順を繰り返します。
設定例
-
ECI インスタンス A を作成し、NAS ボリュームをマウントします。
次の例は、CreateContainerGroup オペレーションを呼び出してインスタンス A を作成するために使用されるパラメーターを示しています。詳細については、「CreateContainerGroup」をご参照ください。
ContainerGroupName=test-nas-a SecurityGroupId=sg-bp1daxpbz9lzpvvc**** VSwitchId=vsw-bp1gds63lmlm7ib05**** # ボリュームの宣言 Volume.1.Name=nas-demo Volume.1.Type=NFSVolume Volume.1.NFSVolume.Server=3f9cd4****-na***.cn-shanghai.nas.aliyuncs.com Volume.1.NFSVolume.Path=/share # ボリュームをコンテナにマウント Container.1.Name=nginx Container.1.Image=registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2 Container.1.VolumeMount.1.Name=nas-demo Container.1.VolumeMount.1.MountPath=/data-a -
インスタンス A に接続し、マウントディレクトリにファイルを作成します。
ECI インスタンスへの接続については、「Workbench を使用して ECI インスタンスに接続する」をご参照ください。
root@test-nas-a:/# cd data-a root@test-nas-a:/data-a# ls root@test-nas-a:/data-a# echo "hello" >test root@test-nas-a:/data-a# ls test root@test-nas-a:/data-a# cat test hello -
インスタンス A を削除します。
-
ECI インスタンス B を作成し、同じ NAS ボリュームをマウントします。
ContainerGroupName=test-nas-b SecurityGroupId=sg-bp1daxpbz9lzpvvc**** VSwitchId=vsw-bp1gds63lmlm7ib05**** # ボリュームの宣言 Volume.1.Name=nas-demo Volume.1.Type=FlexVolume Volume.1.FlexVolume.Driver=alicloud/nas Volume.1.FlexVolume.Options={"server":"3f9cd4****-na***.cn-shanghai.nas.aliyuncs.com","path": "/share"} # ボリュームをコンテナにマウント Container.1.Name=nginx Container.1.Image=registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2 Container.1.VolumeMount.1.Name=nas-demo Container.1.VolumeMount.1.MountPath=/data-b -
インスタンス B に接続し、マウントディレクトリ内のファイルを確認します。
インスタンス A とインスタンス B の両方が同じ NAS ボリュームをマウントし、NAS が永続ストレージを提供するため、インスタンス A が削除された後も、インスタンス A によって作成されたファイルはインスタンス B を介してアクセスできます。
root@test-nas-b:/# cd data-b root@test-nas-b:/data-b# ls test root@test-nas-b:/data-b# cat test hello