This topic describes the following types of external storage that you can mount to service instances: Object Storage Service (OSS), File Storage NAS (NAS), Git repositories, Docker images, and emptyDir volumes.
Background information
Elastic Algorithm Service (EAS) allows you to mount the following types of external storage: OSS, NAS, Git repositories, Docker images, and emptyDir volumes. In the runtime of a service, you can mount the specific storage to one or more instances of a service. You can mount one or more types of external storage based on your business requirements. To mount external storage, add the storage field in the service configuration file. The field is used to specify the storage type, the path of the storage that you want to mount, and the path on service instances to which you want to mount the storage.
Mount an OSS bucket
To mount an OSS bucket, you must authorize EAS to read the specified path of the OSS bucket on the Elastic Algorithm Service page of the Machine Learning Platform for AI (PAI) console. For more information, see Activate and grant permissions on required Alibaba Cloud services.
Sample configurations in the service configuration file:
{ "name": "service_name", "storage": [ { "mount_path": "/data_oss", "oss": { "endpoint": "oss-cn-shanghai-internal.aliyuncs.com", "path": "oss://bucket/path/" } } ] }
Parameters
Parameter
Description
mount_path
The path on service instances to which you want to mount the storage.
oss.endpoint
The internal endpoint of OSS in the region where the service instances reside. The internal endpoint contains -internal.
oss.path
The path of the OSS bucket to be mounted. The path must start with
oss://
.
You can mount an OSS bucket to service instances only in dedicated resource groups.
Mount a NAS file system
You can mount a NAS file system that resides in the same region as service instances. To mount the NAS file system, you must use the internal domain name of a mount target in the NAS file system and connect service instances to the virtual private cloud (VPC) in which the NAS file system resides. For more information about how to configure the network connection, see Configure network connectivity.
Sample configurations in the service configuration file:
{ "name": "service_name", "storage": [ { "mount_path": "/data_nas", "nfs": { "path": "/", "readOnly": false, "server": "xxx.cn-shanghai.nas.aliyuncs.com" } } ] }
Parameters
Parameter
Description
mount_path
The path on service instances to which you want to mount the storage.
nfs.path
The path of the NAS file system to be mounted.
nfs.readOnly
Specifies whether to access the storage that you want to mount in the read-only mode.
nfs.server
The domain name of the mount target.
Mount a Git repository
If a Git repository is mounted to service instances and EAS accesses the Git repository in the read-only mode, code in the Git repository can be pulled during the startup of service instances. The mounted Git repository is not updated automatically. If the code in the source Git repository changes, you must restart service instances to pull the latest code.
Sample configurations in the service configuration file:
{ "name": "service_name", "storage": [ { "mount_path": "/data_git", "git": { "repo": "https://codeup.aliyun.com/xxx/eas/aitest.git", "username": "username", "password": "password or access token" } } ] }
Parameters
Parameter
Required
Description
mount_path
Yes
The path on service instances to which you want to mount the storage.
git.repo
Yes
The HTTPS address of the Git repository to be mounted. The Git protocol is not supported.
git.username
No
The username that is used to log on to the private Git repository.
git.password
No
The password that is used to log on to the private Git repository.
git.branch
No
The branch of the Git repository from which you want to pull code. Default value: master.
git.commit
No
The commit ID of the Git repository from which you want to pull code.
Mount a Docker image
You cannot directly mount a Docker image to service instances. You must copy the files in the path of the Docker image to a local shared volume and mount the shared volume to service instances. If the data amount in the specified path is large, more local storage is consumed and the period used to start service instances is extended. If you want to use this feature, we recommend that you take these factors into consideration.
{ "name": "service_name", "storage": [ { "image": { "image": "registry-vpc.cn-shanghai.aliyuncs.com/eas/test_image:v1", "path": "/path/to/mount/" }, "mount_path": "/data_image" } ] }
NoteYou can mount a Docker image that resides in the same region as service instances. To mount the image, you must use the internal address of the image. If the image is from a private image repository, you can set the dockerAuth parameter to specify the authentication information used to access the private image repository. For more information about the description of the dockerAuth parameter, see Deploy a model service by using a custom image.
Parameters
Parameter
Description
mount_path
The path on service instances to which you want to mount the storage.
image.image
The internal address of the image.
image.path
The path of the image that you want to mount to service instances.
Mount an emptyDir volume
You can mount an emptyDir volume to your service instances to meet the following requirements: Running service instances can read data from and write data into a local disk, and the data written into the local disk can be retained even after service instances restart due to exceptions.
Sample configurations in the service configuration file:
{ "name": "service_name", "storage": [ { "empty_dir": {}, "mount_path": "/data_image" } ] }
Parameters
Parameter
Description
mount_path
The path on service instances to which you want to mount the storage.
empty_dir
The map object that specifies an emptyDir volume. The value must be left empty. You cannot configure other properties in this parameter.
Configure the shared memory
The following sample configurations show how to configure the shared memory.
{
"name": "service_name",
"storage": [
{
"empty_dir": {
"medium": "memory",
"size_limit": 20
},
"mount_path": "/dev/shm"
}
]
}
Parameters:
medium: Set this parameter to memory.
mount_path: Set this parameter to
/dev/shm
.size_limit: Specify the upper limit on the shared memory size. Unit: GB.
Complete configuration example
In the following sample complete configurations, an OSS bucket, NAS file system, Git repository, image, and emptyDir volume are mounted to a service instance.
{
"name": "service_name",
"model_path": "http://path/to/model",
"processor": "pmml",
"storage": [
{
"mount_path": "/data_oss1",
"oss": {
"endpoint": "oss-cn-shanghai-internal.aliyuncs.com",
"path": "oss://bucket1/path/"
}
},
{
"mount_path": "/data_oss2",
"oss": {
"endpoint": "oss-cn-shanghai-internal.aliyuncs.com",
"path": "oss://bucket2/path/"
}
},
{
"mount_path": "/data_nfs1",
"nfs": {
"path": "/",
"readOnly": false,
"server": "xxx.cn-shanghai.nas.aliyuncs.com"
}
},
{
"mount_path": "/data_nfs2",
"nfs": {
"path": "/",
"readOnly": true,
"server": "yyy.cn-shanghai.nas.aliyuncs.com"
}
},
{
"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"
},
{
"mount_path": "/data_git",
"git": {
"repo": "https://codeup.aliyun.com/xxx/eas/aitest.git",
"username": "username",
"password": "password or access token"
}
}
],
"metadata": {
"cpu": 1,
"instance": 1,
"resource": "eas-r-xxx"
}
}