OSS、NAS、データセット、コードセット、またはモデルを EAS サービスにマウントすることで、インスタンス間でデータを共有でき、イメージを再ビルドせずにコンテンツを更新できます。
ストレージソリューションの選択
最初にストレージタイプを選択し、次にマウント方法を選択します。
1. 基盤ストレージタイプの選択
データの特性とパフォーマンス要件に基づいて選択します。
|
ストレージタイプ |
ファイルの特性 |
読み取り/書き込みパターン |
パフォーマンス特性 |
一般的なユースケース |
|
OSS |
大量の大容量ファイル |
読み取り中心 |
高スループット、低コスト |
モデルファイルの保存、静的アセットの管理 |
|
汎用 NAS |
中~大容量ファイル |
読み取り/書き込み混在、複数インスタンス共有 |
中程度の IOPS、中程度のレイテンシー |
複数インスタンスで共有するディレクトリ、設定ファイルの管理 |
|
エクストリーム NAS |
多数の小さなファイル |
高頻度、低レイテンシーの読み取り/書き込み操作 |
低レイテンシー、高 IOPS |
AI トレーニング、ハイパフォーマンスコンピューティング |
|
CPFS |
超大規模ファイル |
大規模並列読み取り/書き込み |
極めて低いレイテンシー、極めて高スループット |
分散トレーニング、大規模並列コンピューティング |
推奨事項:
-
コスト重視のアプリケーションの場合: OSS はストレージコストが最も低く、パフォーマンスが重要ではない大容量データに適しています。
-
パフォーマンス重視のアプリケーションの場合: パフォーマンスは CPFS > エクストリーム NAS > 汎用 NAS > OSS の順です。予算とパフォーマンス要件に基づいて選択します。
-
ストレージの組み合わせ: 複数のストレージタイプを同時にマウントします。たとえば、大規模なモデルには OSS を使用し、共有の設定ファイルには汎用 NAS を使用します。
-
移行パス: まず OSS で迅速に検証し、必要に応じて本番環境向けに NAS または CPFS にアップグレードします。
-
CPFS を使用するには、Lingjun コンピューティングリソースクォータが必要です。
-
EAS サービスと NAS マウントターゲットは、同じ VPC 内に存在する必要があります。詳細については、「EAS からのパブリックリソースまたは内部リソースへのアクセス」をご参照ください。
2. マウント方法の選択
ユースケースに基づいてマウント方法を選択します。
|
マウント方法 |
ユースケース |
主なメリット |
説明 |
|
ストレージパスを直接マウント |
迅速な検証、一時的な利用 |
設定が簡単、必要に応じて利用 |
OSS または NAS のパスを直接指定します。 |
|
PAI データセットをマウント |
データバージョン管理、チームでの共同作業 |
バージョン管理、アセットの再利用 |
OSS または NAS のパスをデータセットとして登録します。 |
|
Git からマウント |
アプリケーションコードとスクリプトのデプロイ |
コードのバージョン管理 |
Git リポジトリからプルし、読み取り専用でマウントします。 |
|
PAI コードセットをマウント |
企業のコードアセット管理 |
標準化された管理、監査とトレーサビリティ |
Git リポジトリをコードセットとして登録します。 |
|
PAI モデルをマウント |
モデルのバージョン管理 |
イテレーション、チームでの共同作業 |
モデルを PAI AI アセットとして登録します。 |
基本的なストレージマウント
OSS マウント
ユースケース
-
大容量のモデルファイル (GB レベル以上) を保存します。
-
画像、動画、設定ファイルなど、推論に必要な静的アセットを保存します。
-
データ読み取りが主体の、読み取り負荷の高いワークロードに使用します。
-
低コストのストレージを必要とする、コストに敏感なアプリケーションに使用します。
設定
コンソールのストレージマウントセクションで OSS を選択し、バケットとマウントパスを指定します。
JSON の例:
{
"storage": [
{
"oss": {
"path": "oss://bucket/path/",
"readOnly": false
},
"mount_path": "/mnt/data/"
}
]
}
パラメータ:
|
パラメータ (コンソール) |
パラメータ (JSON) |
説明 |
|
Uri |
oss.path |
ソース OSS バケットのパスです。バケットを作成するには、クイックスタートをご参照ください。 |
|
Mount Path |
mount_path |
サービスインスタンス内の宛先パスです。このパスからソースファイルにアクセスします。例: |
|
Read-only |
oss.readOnly |
読み取り専用モードでマウントするかどうかを指定します。 |
NAS マウント
NAS マウントは、ストレージソリューションの選択に記載されているネットワーク要件に従い、汎用 NAS、エクストリーム NAS、CPFS をサポートします。
JSON の例:
{
"storage": [
{
"nfs": {
"path": "/",
"server": "06ba74****-a****.cn-hangzhou.nas.aliyuncs.com",
"readOnly": false
},
"mount_path": "/mnt/data/"
}
]
}
パラメータ:
|
パラメータ (コンソール) |
パラメータ (JSON) |
説明 |
|
Storage Permission Resource Group |
nfs.resourceGroup |
ファイルシステムが属するリソースグループです。リソースグループによってファイルシステムをフィルタリングします。リソースグループ設計のベストプラクティスをご参照ください。 [All Storage Permission Resource Groups] を選択した場合、JSON ファイルでこのパラメータを設定する必要はありません。 |
|
Select File System |
N/A |
NAS ファイルシステム ID です。ご利用のリージョンの NAS コンソールで確認できます。 |
|
File System Mount Target |
nfs.server |
NAS マウントターゲットのアドレスです。マウントターゲットアドレスの表示で確認できます。 説明
コンソールでマウントターゲットを選択すると、関連付けられている VPC が自動的に選択されます。 |
|
File System Path |
nfs.path |
NAS ファイルシステム内のソースパスです (例: |
|
Mount Path |
mount_path |
サービスインスタンス内の宛先パスです。例: |
|
Read-only |
nfs.readOnly |
読み取り専用モードでマウントするかどうかを指定します。 |
Git マウント
JSON の例:
{
"storage": [
{
"git": {
"repo": "https://codeup.aliyun.com/xxx/eas/aitest.git",
"branch": "master",
"commit": "xxx",
"username": "username",
"password": "パスワードまたはアクセストークン"
},
"mount_path": "/mnt/data/"
}
]
}
パラメータ:
|
パラメータ (コンソール) |
パラメータ (JSON) |
説明 |
|
Git URL |
git.repo |
Git リポジトリの HTTPS URL です。Git プロトコルはサポートされていません。 |
|
Branch |
git.branch |
プルするブランチです。デフォルト: master。 |
|
Commit |
git.commit |
プルするコミット ID です。 |
|
Git Username |
git.username |
プライベートリポジトリ認証用のユーザー名です。 |
|
Access Token |
git.password |
プライベート Git リポジトリ用のパスワードまたはアクセストークンです。付録:GitHub アカウントのトークンを取得するをご参照ください。 |
|
Mount Path |
mount_path |
サービスインスタンス内の宛先パスです。例: |
プラットフォームアセットのマウント
PAI AI アセットとして登録されたデータセット、コードセット、モデルをマウントすることで、集中管理と再利用が可能になります。
データセットのマウント
データまたは設定ファイルを PAI データセットとして登録することで、バージョン管理や複数のデプロイにわたる再利用が可能になります。
OSS、汎用 NAS、エクストリーム NAS、および CPFS を基盤とするカスタムデータセットをサポートします。
JSON の例:
"storage": [
{
"dataset": {
"id": "d-pcsah1t86bm8******",
"version": "v1",
"read_only": false
},
"mount_path": "/mnt/data/"
}
]
パラメーター:
|
パラメーター (コンソール) |
パラメーター (JSON) |
説明 |
|
[Custom Dataset] |
dataset.id |
登録済みのカスタムデータセット。「データセットの作成と管理」で作成し、その ID を確認してください。 |
|
[Version] |
version |
データセットのバージョン。例: v1。 |
|
[Read-only] |
dataset.read_only |
データセットを読み取り専用でマウントするかどうか。 |
|
[Mount Path] |
mount_path |
サービスインスタンス内でのマウントパス。例: |
コードセットのマウント
Git リポジトリを PAI コードセットとして登録します。コードセットは読み取り専用モードでマウントされます。
JSON の例:
"storage": [
{
"code": {
"id": "code-4d3b42a1152****"
},
"mount_path": "/data_image"
}
]
パラメーター:
|
パラメーター (コンソール) |
パラメーター (JSON) |
説明 |
|
[Code Configuration] |
code.id |
登録済みのコードセット。「コード設定」で作成し、その ID を確認してください。 |
|
[Mount Path] |
mount_path |
サービスインスタンス内でのマウントパス。例: |
PAI モデルのマウント
モデルを PAI AI アセットとして登録し、バージョンとメタデータを集中管理します。モデルは読み取り専用モードでマウントされます。詳細については、「モデルの登録と管理」をご参照ください。
パラメーター:
|
パラメーター (コンソール) |
説明 |
|
[PAI Model] |
登録済みの PAI モデル。「モデルの登録と管理」で作成してください。 |
|
[Mount Path] |
モデルのマウントパス。例: |
高度なマウントオプション
EAS は以下の追加マウント方法をサポートしています:
-
イメージマウント:Docker イメージパスから一時的なローカルボリュームにファイルをコピーし、サービスインスタンスにマウントします。大規模なディレクトリは、ストレージ使用量と起動時間を増加させます。
-
emptyDir マウント:実行中のインスタンスの一時ローカルストレージです。予期しない再起動後もコンテンツは保持されます。キャッシュや一時ファイルに使用します。
イメージマウント
JSON で設定します:
{
"storage": [
{
"image": {
"image": "registry-vpc.cn-xxxx.aliyuncs.com/eas/image_name:v1",
"path": "/path/to/mount/"
},
"mount_path": "/data_image"
}
]
}
イメージは、同一リージョン内の内部ネットワークアドレスからのみマウントできます。プライベートイメージの場合は、認証に dockerAuth パラメーターを使用します。dockerAuth の設定については、「カスタムイメージの使用」をご参照ください。
パラメーター:
|
パラメーター (JSON) |
説明 |
|
image.image |
イメージリポジトリの内部ネットワークアドレス。 |
|
image.path |
イメージ内のコピー元のパス。 |
|
mount_path |
サービスインスタンス内の宛先パス。例: |
emptyDir マウント
JSON で設定します:
{
"storage": [
{
"empty_dir": {},
"mount_path": "/mnt/temp"
}
]
}
パラメーター:
|
パラメーター (JSON) |
説明 |
|
mount_path |
サービスインスタンス内の宛先パス。 |
|
empty_dir |
|
共有メモリの設定
より高いパフォーマンスを得るために、共有メモリボリューム (tmpfs) をマウントします:
{
"storage": [
{
"empty_dir": {
"medium": "memory",
"size_limit": 20
},
"mount_path": "/dev/shm"
}
]
}
パラメーター:
|
パラメーター (JSON) |
説明 |
|
medium |
このパラメーターを memory に設定します。 |
|
mount_path |
このパラメーターを |
|
size_limit |
メモリサイズの上限 (GB 単位)。 |
JSON 設定例
完全な設定例です。JSON によるデプロイメントについては、「JSON を使用したサービスのデプロイ」をご参照ください。
{
"name": "service_name",
"model_path": "http://path/to/model",
"processor": "pmml",
"storage": [
{
"oss": {
"path": "oss://bucket/path/",
"readOnly": false
},
"mount_path": "/mnt/oss_data/"
},
{
"nfs": {
"path": "/",
"server": "06ba74****-a****.cn-hangzhou.nas.aliyuncs.com",
"readOnly": false
},
"mount_path": "/mnt/nfs_data/"
},
{
"image": {
"image": "registry-vpc.cn-shanghai.aliyuncs.com/eas/test_image:v1",
"path": "/path/to/mount/"
},
"mount_path": "/data_image"
},
{
"empty_dir": {
"medium": "memory",
"size_limit": 20
},
"mount_path": "/dev/shm"
},
{
"git": {
"repo": "https://codeup.aliyun.com/xxx/eas/aitest.git",
"branch": "master",
"commit": "xxx",
"username": "username",
"password": "password or access token"
},
"mount_path": "/mnt/git_code/"
}
],
"metadata": {
"cpu": 1,
"instance": 1,
"resource": "eas-r-xxx"
}
}
よくある質問
-
OSS バケットをマウントした後に "file not found" エラーが表示されるのはなぜですか?
多くの場合、パスの指定ミスが原因です。マウント設定とアクセスパスを確認してください。
例えば、
oss://my-bucket/を/mnt/dataにマウントする場合、OSS のファイルoss://my-bucket/subfolder/myfile.txtには、/mnt/data/myfile.txtではなく、コンテナ内のパス/mnt/data/subfolder/myfile.txtからアクセスする必要があります。 -
ネットワーク接続の問題で NAS マウントに失敗した場合はどうすればよいですか?
NAS をマウントするには、EAS サービスと NAS マウントターゲットが同じ VPC 内に存在する必要があります。以下を確認してください。
-
VPC の整合性:EAS サービスと NAS マウントターゲットの VPC ID が同一であることを確認してください。
-
ネットワーク設定:NAS にアクセスするには、Access public or internal resources from EAS の手順に従ってネットワークを設定してください。
-
マウントターゲットの状態:NAS マウントターゲットが存在し、状態が
Availableであることを確認してください。
-
-
認証エラーにより Git マウントに失敗した場合はどうすればよいですか?
以下を確認してください。
-
アクセストークンの有効性:Git のアクセストークンが有効期限が切れておらず、リポジトリに対する読み取り権限があることを確認してください。
-
リポジトリの権限:プライベートリポジトリの場合は、ユーザー名とパスワードまたはトークンが正しく、読み取り権限があることを確認してください。
-
リポジトリのアドレス形式:
https://github.com/user/repo.gitのような HTTPS プロトコルを使用します。Git プロトコルはサポートされていません。 -
ブランチ/コミットの存在:指定したブランチ名またはコミット ID がリポジトリに存在することを確認してください。
-
-
マウントパスの競合によりサービスの起動に失敗した場合はどうすればよいですか?
マウントパスの競合は、次のような原因で発生することがあります。
-
マウントパスの重複: 同一サービス内で、複数のストレージ設定が同じマウントパスを使用しています。各ストレージの
mount_pathが一意になるようにしてください。 -
システムディレクトリの競合: マウントパスとして、
/bin、/etc、/usr、または/libなどの重要なシステムディレクトリを指定することはできません。/mntまたは/data配下のパスを使用してください。 -
不正なパス形式: マウントパスは、スラッシュ (
/) で始まる絶対パスである必要があります。
-
-
FTP または SSH ツールを使用してインスタンスに接続し、ファイルをアップロードまたはダウンロードできますか?
できません。EAS インスタンスでは FTP または SSH アクセスは提供されません。
-
EAS サービスとは異なるリージョンにある OSS バケットをマウントできますか?
できません。EAS はリージョンをまたいで OSS バケットをマウントできません。OSS の クロスリージョンレプリケーション 機能を使用して、EAS サービスと同じリージョンにある OSS バケットにデータを同期してください。
-
ストレージをマウントしていない場合、インスタンスにダウンロードしたファイルはどこに保存されますか?
ファイルは、インスタンスのシステムディスクに保存されます。このシステムディスクは一時的なものです。インスタンスの再起動または更新を行うと、システムディスク上のデータは失われます。データを永続化するには、外部ストレージをマウントしてください。
-
EAS サービスで OSS のマウントに失敗し、s3fs ログに
signal terminatedと表示される場合はどうすればよいですか?signal terminatedは、マウントプロセスが外部シグナルによって終了されたことを示しており、OSS がエラーを返したわけではありません。次の順序でトラブルシューティングを行います。-
エンドポイントとバケット間のリージョンの一貫性: Uri (
oss.path) で指定されたエンドポイントが、ターゲットバケットと同じリージョンにあることを確認してください。内部エンドポイントは、同じリージョン内でのみ利用可能です。バケットが存在するリージョンとは異なるリージョンのエンドポイントを使用すると、s3fs 接続は失敗します。 -
RAM ロールの権限:サービスに設定した RAM ロールに、対象バケットに対する読み取り/書き込み権限があることを確認してください。権限が不足している場合、起動時にマウントプロセスが終了します。
-
curldbg からの詳細なエラー: マウント設定に
-o curldbgパラメーターを追加し、サービスを再起動します。このパラメーターを設定すると、ログに詳細な HTTP リクエストエラーが含まれるようになり、ネットワーク、認証、パスの問題を切り分けることができます。 -
ヘルスチェックとリソース制限: サービスのヘルスチェックのタイムアウトが十分に長く、コンテナリソースが超過していないことを確認してください。ヘルスチェックのタイムアウトやリソース制限の超過も、インスタンスプロセスを終了させてデータ損失を引き起こす原因となります。この場合も、ログには
signal terminatedと報告されます。
-
-
リージョンをまたいだコンテナイメージのプルに失敗した場合はどうすればよいですか?
サービスと同じリージョンでランタイムイメージを再ビルドしてプッシュするか、仮想プライベートクラウド (VPC) を設定してクロスリージョンの内部ネットワークに接続してください。詳細なトラブルシューティング手順については、EAS に関するよくある質問 および カスタムイメージの使用 をご参照ください。