全部產品
Search
文件中心

Platform For AI:進階配置:服務儲存掛載

更新時間:Jul 13, 2024

本文為您介紹OSS、NAS、Git代碼倉庫、Docker鏡像和EmptyDir四種形式的儲存掛載,協助您靈活選擇掛載的儲存類型。

背景資訊

當前EAS支援四種形式的儲存掛載:OSS、NAS、Git代碼倉庫、Docker鏡像和EmptyDir。在服務運行時將指定的儲存路徑掛載到服務的執行個體中,使用者可根據情境需求靈活選擇掛載的儲存類型,也支援多種儲存類型同時掛載。掛載方式是在服務的設定檔中增加storage欄位,用於指定儲存類型、儲存原地址和目標掛載目錄等資訊。

OSS掛載

OSS掛載需要使用者在EAS控制台對EAS進行一鍵授權,授權EAS讀取使用者的OSS目錄,詳情請參見開通並授權依賴的阿里雲產品

  • 設定檔如下所示。

    {
      "name": "service_name",
      "storage": [
            {
                "mount_path": "/data_oss",
                "oss": {
                    "endpoint": "oss-cn-shanghai-internal.aliyuncs.com",
                    "path": "oss://bucket/path/"
                }
            }
        ]
    }
  • 參數說明。

    參數名

    含義

    mount_path

    掛載服務執行個體中的目標路徑。

    oss.endpoint

    OSS的Endpoint地址,僅支援同地區內網地址掛載,需使用-internal地址的OSS Endpoint。

    oss.path

    OSS的源地址路徑,需以oss://開頭。

說明

OSS掛載僅支援專屬資源群組服務,公用資源群組暫時不支援。

NFS掛載

NFS掛載僅支援同地區內網地址掛載,可以使用內網NAS地址,且需要打通到NAS所在vSwitch的直連網路,資源群組中網路打通請參見配置網路連通

  • 設定檔如下所示。

    {
        "name": "service_name",
        "storage": [
            {
                "mount_path": "/data_nas",
                "nfs": {
                    "path": "/",
                    "readOnly": false,
                    "server": "xxx.cn-shanghai.nas.aliyuncs.com"
                }
            }
        ]
    }
                            
  • 參數說明。

    參數名

    含義

    mount_path

    掛載服務執行個體中的目標路徑。

    nfs.path

    需要掛載的NAS中的源路徑。

    nfs.readOnly

    是否以唯讀方式掛載。

    nfs.server

    NAS掛載點的地址。

Git代碼倉庫掛載

Git代碼倉庫掛載可以將一個Git倉庫中的代碼以唯讀方式直接掛載到服務執行個體中,在執行個體啟動階段會對代碼進行拉取。目前不會即時同步最新代碼,如果代碼倉庫中的代碼發生變更,需要重啟服務執行個體才會生效。

  • 設定檔如下所示。

    {
      "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"
          }
        }
      ]
    }
  • 參數說明。

    參數名

    是否必選

    含義

    mount_path

    掛載服務執行個體中的目標路徑。

    git.repo

    需要掛載的Git倉庫的HTTPS地址。暫不支援Git協議。

    git.username

    私人Git倉庫的登入使用者名稱。

    git.password

    私人Git倉庫的登入密碼。

    git.branch

    需要拉取的Git倉庫的分支,預設為master。

    git.commit

    需要拉取的Git倉庫的commit ID。

鏡像掛載

Docker Image的方式掛載並非直接將鏡像中的目錄直接掛載到服務執行個體中,而是通過Shared Volume先將要掛載的鏡像中的指定目錄中的檔案拷貝至本地Shared Volume中,在服務運行時掛載本地的Shared Volume,因此當要掛載的目錄中資料量較大時,會消耗較多的本機存放區,且會使服務執行個體啟動時間加長,請根據需要來使用該功能。

  • {
        "name": "service_name",
        "storage": [
            {
                "image": {
                    "image": "registry-vpc.cn-shanghai.aliyuncs.com/eas/test_image:v1",
                    "path": "/path/to/mount/"
                },
                "mount_path": "/data_image"
            }
        ]
    }
    說明

    僅支援同地區內網地址掛載,如要掛載的鏡像是private的時,需通過dockerAuth參數來指定鏡像倉庫的鑒權資訊。鏡像部署中關於dockerAuth參數的使用說明,請參見服務部署:自訂鏡像

  • 參數說明。

    參數名

    含義

    mount_path

    掛載服務執行個體中的目標路徑。

    image.image

    需要掛載的內網鏡像倉庫地址。

    image.path

    需要掛載到服務執行個體中的鏡像中的路徑。

EmptyDir掛載

如果您希望執行個體運行時讀寫本地磁碟目錄,且執行個體異常重啟後寫入的內容不會丟失,則可以使用EmptyDir的儲存掛載方式。

  • 設定檔如下所示。

    {
        "name": "service_name",
        "storage": [
            {
                "empty_dir": {},
                "mount_path": "/data_image"
            }
        ]
    }
  • 參數說明。

    參數名

    含義

    mount_path

    掛載服務執行個體中的目標路徑。

    empty_dir

    表示類型為EmptyDir、值為空白的Map。暫不支援其他屬性的配置。

配置共用記憶體

您可以使用以下設定檔來配置共用記憶體。

{
    "name": "service_name",
    "storage": [
        {
            "empty_dir": {
              "medium": "memory",
              "size_limit": 20
            },
            "mount_path": "/dev/shm"
        }
    ]
}

其中:

  • medium:指定為memory

  • mount_path:指定為/dev/shm

  • size_limit:用來限制記憶體上限,單位為GB。

完整配置樣本

OSS、NFS、Git代碼倉庫、鏡像及EmptyDir掛載,完整配置樣本如下所示。

{
    "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"
    }
}