
# 配置函数的磁盘挂载
本章节介绍如何通过函数工作流控制台，配置函数的磁盘挂载，扩展函数的存储空间。
#### 操作场景
FunctionGraph支持通过挂载文件系统为函数提供持久化存储能力，挂载文件系统可为函数带来如下优势：
- 多个函数之间可以挂载同一个文件系统，共享访问已经配置好的文件系统。
- 利用ECS已有的存储能力，可实现计算资源的动态扩展。
- 相比于临时存储空间/tmp，可以极大的扩展函数的执行存储空间。
![](https://support.huaweicloud.com/usermanual-functiongraph/public_sys-resources/note_3.0-zh-cn.png)
函数的临时存储空间**/tmp**路径下可存储临时文件，默认为512MB，最大不能超过10,240MB。
FunctionGraph当前支持挂载以下文件系统：
表1函数的磁盘挂载 
| 磁盘挂载类型              | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|
| SFS Turbo文件系统       | 专属弹性文件服务（SFS Turbo）为用户提供一个完全托管的共享文件存储，能够弹性伸缩至PB级规模，最高可提供亚毫秒级低时延、千万级IOPS、百GB带宽。具备高可用性和持久性，为海量的小文件、低延迟高IOPS型应用提供有力支持。**SFS Turbo文件系统详情请参见[SFS Turbo产品介绍](https://support.huaweicloud.com/productdesc-sfsturbo/sfsturbo_01_0360.html)。** 使用SFS Turbo作为函数挂载的优势如下： - 可以将临时文件存储到SFS Turbo文件系统中，临时文件大小不受实例本地磁盘空间限制。  - 多个函数可以共用一个SFS Turbo文件系统，实现文件共享。   |
| 通用文件系统              | 弹性文件服务（Scalable File Service，SFS）通用文件系统为用户提供一个完全托管的共享文件存储，能够弹性伸缩至PB规模、TB级带宽，具备高可用性和持久性，为海量数据、高带宽型应用提供有力支持。适用于处理大规模数据吞吐、高带宽型业务（如视频转码、日志批量存储与分析场景等）场景。**通用文件系统详情请参见[通用文件系统产品介绍](https://support.huaweicloud.com/productdesc-sfs/zh-cn_topic_0034428718.html)。**                                                                                                                                                                                                                                                                                                                                                                      |
| 弹性云服务器ECS共享目录       | ECS共享目录，是通过NFS（网络文件系统）把ECS上的指定目录设置为共享目录，函数可以挂载对应目录进行读写等操作，实现计算资源的动态扩展，同时通过配置特定用户权限能有效进行共享数据的资源管理。适用于希望快速依托已有ECS资源实现轻量级数据处理、文件共享等业务不太频繁的场景。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| SFS容量型文件系统（仅存量用户支持） | 弹性文件服务（Scalable File Service，SFS）容量型文件系统为用户提供一个完全托管的共享文件存储，能够弹性伸缩至PB规模，具备高可用性和持久性，为海量数据、高带宽型应用提供有力支持**。**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   
#### 约束与限制
- **当前挂载SFS容量型文件系统仅支持存量用户使用，请选择SFS Turbo文件系统、通用文件系统和ECS共享目录进行挂载。各文件系统支持挂载的区域请以控制台展示为准。**
- 请勿在初始化函数中执行挂载磁盘的读写操作，这将导致函数无法读取磁盘中的内容。
- 使用磁盘挂载功能需要文件系统开放端口：111、445、2049、2051、2052、20048。
  对于Ubuntu系统还需再开放3个端口，获取方式请在任意目录下执行如下命令。
  ```
  rpcinfo -p|grep mountd|grep tcp
  ```
  具体请参见[弹性文件服务会占用用户的哪些资源](https://support.huaweicloud.com/sfs_faq/sfs_01_0094.html)。
  
 
 #### 前提条件
表2磁盘挂载前提条件 
| 文件系统来源                                                               | 前提条件                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|
| [挂载SFS Turbo文件系统]       | - 已创建待挂载的SFS Turbo文件系统，具体操作请参见[创建文件系统](https://support.huaweicloud.com/usermanual-sfsturbo/sfsturbo_01_0359.html)。 创建SFS Turbo文件系统时请记录文件系统所使用的VPC和子网信息。   - 已创建挂载SFS Turbo文件系统所需的相关委托，具体操作请参见[配置函数的委托权限](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0920.html)。                                                                                                                                  |
| [挂载通用文件系统]             | - 已创建待挂载的通用文件系统，具体操作请参见[创建文件系统](https://support.huaweicloud.com/usermanual-sfsturbo/sfsturbo_01_0359.html#section3)。 创建通用文件系统时请记录文件系统所使用的VPC和子网信息。   - 已创建挂载通用文件系统所需的相关委托，具体操作请参见[配置函数的委托权限](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0920.html)。                                                                                                                                                        |
| [挂载ECS共享目录]           | - 已创建待挂载的ECS，具体操作请参见[购买ECS](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7001.html)。 创建ECS时请记录ECS所使用的VPC和子网信息。   - 已在ECS上创建NFS共享目录，具体操作请参考[在ECS创建NFS共享目录]。  - 已创建挂载ECS共享目录所需的相关委托，具体操作请参见[配置函数的委托权限](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0920.html)。   |
| [挂载SFS容量型文件系统（仅存量用户支持）] | - 已创建待挂载的SFS容量型文件系统，具体操作请参见[创建文件系统](https://support.huaweicloud.com/usermanual-sfsturbo/sfsturbo_01_0359.html)。  - 已创建挂载SFS容量型文件系统所需的相关委托，具体操作请参见[配置函数的委托权限](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0920.html)。                                                                                                                                                                                 |
   
- [挂载SFS Turbo文件系统]
  
  1. 登录[函数工作流控制台](https://console.huaweicloud.com/functiongraph/?locale=zh-cn)，在左侧的导航栏选择"函数 \> 函数列表"。
  
  2. 单击函数的名称，进入函数详情页。
  
  3. 在"设置"页签下选择"权限"，配置函数访问SFS Turbo文件系统的委托。
     1. "函数配置委托"参数选择[前提条件]中已创建的委托权限。
     
     2. 单击"保存"完成配置。
      
  
  4. 在"设置"页签下选择"网络配置"，配置函数访问SFS Turbo文件系统的VPC网络。
     1. 开启"函数访问VPC内资源"。
     
     2. 配置"VPC"和"子网"为[前提条件]中记录的VPC和子网。
     
     3. 单击"保存"完成配置。
      
  
  5. 在"设置"页签下选择"磁盘挂载"。
  
  6. 单击"添加挂载"，在弹窗中配置SFS Turbo文件系统的挂载信息。
     表3挂载SFS Turbo文件系统参数说明 
     | 参数     | 说明                                                                                                                                                                                                                                                                                                                         | 取值样例         |
     |:---|:---|:---|
     | 用户ID   | 函数访问文件系统所需要的身份标识，取值范围为-1或1\~65534的整数且不包含1000和1002，默认值为-1，表示由系统自动分配用户ID。 对于SFS Turbo文件系统，保持默认值-1。                                                                                                                                                                                   | -1           |
     | 用户组ID  | 函数访问文件系统所需要的身份标识，取值范围为-1或1\~65534的整数且不包含1000和1002，默认值为-1，表示由系统自动分配用户组ID。 对于SFS Turbo文件系统，保持默认值-1。                                                                                                                                                                                | -1           |
     | 文件系统来源 | 选择要挂载的文件系统类型，此处选择"SFS Turbo"，即SFS Turbo文件系统。                                                                                                                                                                                                                                                                               | SFS Turbo    |
     | 文件系统名称 | 选择要挂载的SFS Turbo文件系统名称。                                                                                                                                                                                                                                                                                                     | sfs-turbo-fg |
     | 共享目录路径 | 文件系统共享的目录路径，路径须以"/"开头，例如：/a。 不配置表示函数能访问文件系统所有的目录路径。如果配置具体目录路径，则表示函数只能访问该目录路径。                                                                                                                                                                                                    | /a           |
     | 函数访问路径 | 函数访问文件系统中文件时所使用的目录路径，路径须以"/"开头，且最多设置为两级，建议配置为**/mnt** 或**/home**开头的二级目录。 **不能使用系统已存在的目录，否则会报"failed to mount exist system path"错误。** 例如，共享目录路径为"/a"，其下有文件"/a/b"和"/a/c/d"，函数访问路径为"/mnt/test"，则函数访问文件b和文件d的路径为"/mnt/test/b"和"/mnt/test/c/d"。 | /mnt/test    |
        
     
  
  7. 单击"确定"，完成挂载配置。
   
- [挂载通用文件系统]
  
  当前仅"华北-乌兰察布一"区域支持挂载通用文件系统。
  1. 登录[函数工作流控制台](https://console.huaweicloud.com/functiongraph/?locale=zh-cn)，在左侧的导航栏选择"函数 \> 函数列表"。
  
  2. 单击函数的名称，进入函数详情页。
  
  3. 在"设置"页签下选择"权限"，配置函数访问通用文件系统的委托。
     1. "函数配置委托"参数选择[前提条件]中已创建的委托权限。
     
     2. 单击"保存"完成配置。
      
  
  4. 在"设置"页签下选择"网络配置"，配置函数访问通用文件系统的VPC网络。
     1. 开启"函数访问VPC内资源"。
     
     2. 配置"VPC"和"子网"为[前提条件]中记录的VPC和子网。
     
     3. 单击"保存"完成配置。
      
  
  5. 在"设置"页签下选择"磁盘挂载"。
  
  6. 单击"添加挂载"，在弹窗中配置通用文件系统的挂载信息。
     表4挂载通用文件系统参数说明 
     | 参数     | 说明                                                                                                                                                                                                                                                                                                                       | 取值样例      |
     |:---|:---|:---|
     | 用户ID   | 函数访问文件系统所需要的身份标识，取值范围为-1或1\~65534的整数且不包含1000和1002，默认值为-1，表示由系统自动分配用户ID。 对于SFS Turbo文件系统，保持默认值-1。                                                                                                                                                                                    | -1        |
     | 用户组ID  | 函数访问文件系统所需要的身份标识，取值范围为-1或1\~65534的整数且不包含1000和1002，默认值为-1，表示由系统自动分配用户组ID。 对于SFS Turbo文件系统，保持默认值-1。                                                                                                                                                                                 | -1        |
     | 文件系统来源 | 选择要挂载的文件系统类型，此处选择"通用文件系统"。                                                                                                                                                                                                                                                                                               | 通用文件系统    |
     | 文件系统名称 | 选择要挂载的通用文件系统名称。                                                                                                                                                                                                                                                                                                          | sfs-fg    |
     | 函数访问路径 | 函数访问文件系统中文件时所使用的目录路径，路径须以"/"开头，且最多设置为两级，建议配置为**/mnt** 或**/home**开头的二级目录。 **不能使用系统已存在的目录，否则会报"failed to mount exist system path"错误。** 例如，共享目录路径为"/a"，其下有文件"/a/b"和"/a/c/d"，函数访问路径为"/mnt/test"，则函数访问文件b和文件d的路径为"/mnt/test/b"和"/mnt/test/c/d"。 | /mnt/test |
        
     
  
  7. 单击"确定"，完成挂载配置。
   
- [挂载ECS共享目录]
  
  1. 登录[函数工作流控制台](https://console.huaweicloud.com/functiongraph/?locale=zh-cn)，在左侧的导航栏选择"函数 \> 函数列表"。
  
  2. 单击函数的名称，进入函数详情页。
  
  3. 在"设置"页签下选择"权限"，配置函数访问ECS共享目录的委托权限。
     1. "函数配置委托"参数选择[前提条件]中已创建的委托。
     
     2. 单击"保存"完成配置。
      
  
  4. 在"设置"页签下选择"网络配置"，配置函数访问ECS共享目录的VPC网络。
     1. 开启"函数访问VPC内资源"。
     
     2. 配置"VPC"和"子网"为[前提条件]中记录的VPC和子网。
     
     3. 单击"保存"完成配置。
      
  
  5. 在"设置"页签下选择"磁盘挂载"。
  
  6. 单击"添加挂载"，在弹窗中配置ECS共享目录的挂载信息。
     表5挂载ECS共享目录参数说明 
     | 参数     | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 取值样例      |
     |:---|:---|:---|
     | 用户ID   | 函数访问文件系统所需要的身份标识，取值范围为-1或1\~65534的整数且不包含1000和1002，默认值为-1，表示由系统自动分配用户ID。 - 对于使用Windows系统的ECS，保持默认值-1。  - 对于使用Linux系统的ECS，为系统中的uid。例如Linux系统的用户名为test-user，则可以在系统中使用用**id test-user**命令查询uid和gid。   | -1        |
     | 用户组ID  | 函数访问文件系统所需要的身份标识，取值范围为-1或1\~65534的整数且不包含1000和1002，默认值为-1，表示由系统自动分配用户组ID。 - 对于使用Windows系统的ECS，保持默认值-1。  - 对于使用Linux系统的ECS，为系统中的gid。例如Linux系统的用户名为test-user，则可以在系统中使用用**id test-user**命令查询gid。         | -1        |
     | 文件系统来源 | 选择要挂载的文件系统类型，此处选择"ECS"，即ECS共享目录。                                                                                                                                                                                                                                                                                                                                                                                                                        | ECS       |
     | 云服务器名称 | 选择要挂载的ECS名称。                                                                                                                                                                                                                                                                                                                                                                                                                                            | ecs-fg    |
     | 共享目录路径 | 文件系统共享的目录路径，请输入实际存在的路径，路径须以"/"开头，例如：/a。 不配置表示函数能访问文件系统所有的目录路径，如果配置具体目录路径，则表示函数只能访问该目录路径。                                                                                                                                                                                                                                                                                                                       | /a        |
     | 函数访问路径 | 函数访问文件系统中文件时所使用的目录路径，路径须以"/"开头，且最多设置为两级，建议配置为**/mnt** 或**/home**开头的二级目录。 **不能使用系统已存在的目录，否则会报"failed to mount exist system path"错误。** 例如，共享目录路径为"/a"，其下有文件"/a/b"和"/a/c/d"，函数访问路径为"/mnt/test"，则函数访问文件b和文件d的路径为"/mnt/test/b"和"/mnt/test/c/d"。                                                                                                                               | /mnt/test |
        
     
  
  7. 单击"确定"，完成挂载配置。
   
- [挂载SFS容量型文件系统（仅存量用户支持）]
  
  1. 登录[函数工作流控制台](https://console.huaweicloud.com/functiongraph/?locale=zh-cn)，在左侧的导航栏选择"函数 \> 函数列表"。
  
  2. 单击函数的名称，进入函数详情页。
  
  3. 在"设置"页签下选择"权限"，配置函数访问SFS容量型文件系统的委托权限。
     1. "函数配置委托"参数选择[前提条件]中已创建的委托。
     
     2. 单击"保存"完成配置。
      
  
  4. 在"设置"页签下选择"磁盘挂载"。
  
  5. 单击"添加挂载"，在弹窗中配置SFS容量型文件系统的挂载信息。
     表6挂载SFS容量型文件系统参数说明 
     | 参数     | 说明                                                                                                                                                                                                                                                                                                                         | 取值样例      |
     |:---|:---|:---|
     | 用户ID   | 函数访问文件系统所需要的身份标识，取值范围为-1或1\~65534的整数且不包含1000和1002，默认值为-1，表示由系统自动分配用户ID。 对于SFS容量型文件系统，保持默认值-1。                                                                                                                                                                                      | -1        |
     | 用户组ID  | 函数访问文件系统所需要的身份标识，取值范围为-1或1\~65534的整数且不包含1000和1002，默认值为-1，表示由系统自动分配用户组ID。 对于SFS容量型文件系统，保持默认值-1。                                                                                                                                                                                     | -1        |
     | 文件系统来源 | 选择要挂载的文件系统类型，此处选择"SFS"，即SFS容量型文件系统。                                                                                                                                                                                                                                                                                        | SFS       |
     | 文件系统名称 | 选择要挂载的SFS容量型文件系统名称。                                                                                                                                                                                                                                                                                                        | SFS-fg    |
     | 共享目录路径 | 文件系统共享的目录路径，路径须以"/"开头，例如：/a。 不配置表示函数能访问文件系统所有的目录路径，如果配置具体目录路径，则表示函数只能访问该目录路径。                                                                                                                                                                                                      | /a        |
     | 函数访问路径 | 函数访问文件系统中文件时所使用的目录路径，路径须以"/"开头，且最多设置为两级，建议配置为**/mnt** 或**/home**开头的二级目录。 **不能使用系统已存在的目录，否则会报"failed to mount exist system path"错误。** 例如，共享目录路径为"/a"，其下有文件"/a/b"和"/a/c/d"，函数访问路径为"/mnt/test"，则函数访问文件b和文件d的路径为"/mnt/test/b"和"/mnt/test/c/d"。 | /mnt/test |
        
     
  
  6. 单击"确定"，完成挂载配置。
   
 #### 在ECS创建NFS共享目录
Linux系统（CentOS、SUSE、Euler OS、Fedora、OpenSUSE等）
- Linux系统（CentOS、SUSE、Euler OS、Fedora、OpenSUSE等）创建NFS共享目录操作步骤：
  1. 配置Yum源。
     1. 在/etc/yum.repos.d目录下创建文件euleros.repo（文件名称euleros可自定义，但文件扩展名必须以".repo"结尾）。
     
     2. 执行以下命令编辑euleros.repo文件。
        ```
        vi /etc/yum.repos.d/euleros.repo
        ```
        
     
     3. 在euleros.repo文件中添加如下配置信息。 Euler 2.0SP3版本yum添加的配置信息如下：
        ```
        [base] 
        name=EulerOS-2.0SP3 base
        baseurl=http://repo.huaweicloud.com/euler/2.3/os/x86_64/
        enabled=1
        gpgcheck=1
        gpgkey=http://repo.huaweicloud.com/euler/2.3/os/RPM-GPG-KEY-EulerOS
        ```
        Euler 2.0SP5版本yum添加的配置信息如下：
        ```
        [base] 
        name=EulerOS-2.0SP5 base
        baseurl=http://repo.huaweicloud.com/euler/2.5/os/x86_64/
        enabled=1
        gpgcheck=1
        gpgkey=http://repo.huaweicloud.com/euler/2.5/os/RPM-GPG-KEY-EulerOS
        ```
        表7参数说明 
        | 名称       | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                           |
        |:---|:---|
        | name     | 仓库的名称。                                                                                                                                                                                                                                                                                                                                                                                                                                       |
        | baseurl  | 仓库的地址。 - 使用http协议的网络地址：http://path/to/repo  - 使用本地仓库地址：file:///path/to/local/repo                                                                                                         |
        | gpgcheck | 表示是否进行gpg（GNU Private Guard）校验，以确定RPM包来源的有效性和安全性。 - 1：表示进行gpg校验。  - 0：表示不进行gpg校验。  - 不配置：默认行gpg校验。   |
           
        
     
     4. 按"Esc"退出编辑模式，然后输入":wq"并回车，保存euleros.repo文件并退出。
     
     5. 执行以下命令清理缓存。
        ```
        yum clean all
        ```
        
      
  
  2. 执行以下命令安装nfs-utils。
     ```
     yum install nfs-utils
     ```
     
  
  3. 设置共享目录。
     1. 执行以下命令编辑/etc/exports文件。
        ```
        vi /etc/exports
        ```
        
     
     2. 在exports文件中添加如下配置信息。
        ```
        /sharedata  192.168.0.0/24(rw,sync,no_root_squash)
        ```
        **/sharedata** 表示要共享的目录路径，**192.168.0.0/24**表示目录要共享给该网段的其他服务器。
        
     
     3. 按"Esc"退出编辑模式，然后输入":wq"并回车，保存exports文件并退出。
      
  
  4. 执行以下命令启动nfs服务。
     ```
     systemctl start rpcbind
     service nfs start
     ```
     
  
  5. 执行以下命令判断是否设置成功。
     ```
     exportfs -v
     ```
     如果回显信息有打印刚配置的共享目录路径，表示设置成功。
     
  
  6. 修改共享目录。 如果需要修改或新增共享目录，参考[3]修改配置文件，修改完成后执行以下命令重启nfs服务。
     ```
     service nfs restart
     ```
     
  
  7. 设置rpcbind开机启动（可选） 如果需要设置rpcbind服务开机启动，可执行以下命令。
     ```
     systemctl enable rpcbind
     ```
     
   
 
Linux系统（Ubuntu）
- Linux系统（Ubuntu）创建NFS共享目录操作步骤：
  1. 执行以下命令安装nfs-kernel-server。
     ```
     sudo apt-get update
     sudo apt install nfs-kernel-server
     ```
     
  
  2. 设置共享目录。
     1. 执行以下命令编辑/etc/exports文件。
        ```
        vim /etc/exports
        ```
        
     
     2. 在exports文件中添加如下配置信息。
        ```
        /sharedata  192.168.0.0/24(rw,sync,no_root_squash)
        ```
        **/sharedata** 表示要共享的目录路径，**192.168.0.0/24**表示目录要共享给该网段的其他服务器。
        
     
     3. 按"Esc"退出编辑模式，然后输入":wq"并回车，保存exports文件并退出。
      
  
  3. 执行以下命令启动nfs服务。
     ```
     service nfs-kernel-server restart
     ```
     
  
  4. 执行以下命令判断是否设置成功。
     ```
     exportfs -v
     ```
     如果回显信息有打印刚配置的共享目录路径，表示设置成功。
     
  
  5. 修改共享目录。 如果需要修改或新增共享目录，参考[2]修改配置文件，修改完成后执行以下命令重启nfs服务。
     ```
     service nfs restart
     ```
     
  
  6. 设置rpcbind开机启动（可选） 如果需要设置rpcbind服务开机启动，可执行以下命令。
     ```
     systemctl enable rpcbind
     ```
     
   
 
Windows系统
- Windows系统创建NFS共享目录操作步骤： 请参考在Windows系统中部署NFS的[官方文档](https://learn.microsoft.com/en-us/windows-server/storage/nfs/deploy-nfs?tabs=gui)进行NFS安装和文件共享。
  
 
Windows系统（haneWIN NFS Server软件）
- Windows系统（haneWIN NFS Server软件）创建NFS共享目录操作步骤：
  1. 从官网获取haneWIN NFS Server软件。 **注意，haneWIN NFS Server为收费软件。**
     
  
  2. 以Windows系统管理员身份运行软件包中的".exe"文件，安装haneWIN NFS Server。
  
  3. 安装完成后打开"NFS Server"软件，选择"Edit \> Preferences"。
  
  4. 选择"Exports"页签，单击"Edit exports file"，配置共享目录，"NFS"、"Server"和"PortMapper"页签下的配置保持默认，完成后单击"Save"保存。 配置共享目录的格式为"**D:\\share** -public -name:nfs"，表示将"D:\\share"文件夹权限设置为"public"，同时定义了一个别名"nfs"。
     
  
  5. 单击"确定"完成配置。
  
  6. 关闭所有的防火墙，包括"域网络"、"专用网络"和"公用网络"，等使用完后，再打开防火墙。
  
  
  ![](https://support.huaweicloud.com/usermanual-functiongraph/public_sys-resources/note_3.0-zh-cn.png)
  可以在Linux系统中执行如下命令挂载目录，验证文件共享是否成功。
  ```
  mount -t nfs -o nolock 192.168.xxx.xxx:/nfs /mnt
  ```
  - "192.168.xxx.xxx"是Windows系统的IP地址。
  
  - "nfs"是配置共享目录时创建的别名。
  
  - "/mnt"是指定将远程目录挂载到本地的"/mnt"目录下。
    
 
#### 相关文档
函数工作流支持的存储类型的适用场景及差异，请参考[函数存储选型](https://support.huaweicloud.com/productdesc-functiongraph/functiongraph_02_1002.html)进行函数存储选型。
