更新时间:2022-04-29 GMT+08:00
分享

挂载文件系统

场景介绍

文件系统挂载功能为函数提供了按需扩展的文件存储,可为多个函数、多个实例提供共享访问,函数可以像访问本地文件系统一样对这些共享文件进行读写等操作。您只需要在函数上进行相关配置,如对应的文件系统,函数访问路径等信息。

目前FunctionGraph函数支持以下文件系统配置。

  • SFS文件系统

    弹性文件服务(Scalable File Service,SFS)提供按需扩展的高性能文件存储(NAS),可为云上多个弹性云服务器(Elastic Cloud Server,ECS),容器(CCE&CCI),裸金属服务器(BMS)提供共享访问。SFS为用户提供一个完全托管的共享文件存储,能够弹性伸缩至PB规模,具备高可用性和持久性,为海量数据、高带宽型应用提供有力支持。适用于多种应用场景,包括HPC、媒体处理、文件共享、内容管理和Web服务等。

  • SFS Turbo文件系统

    SFS Turbo分为SFS Turbo标准型、SFS Turbo标准型-增强版、SFS Turbo性能型和SFS Turbo性能型-增强版。SFS Turbo为用户提供一个完全托管的共享文件存储,能够弹性伸缩至320TB规模,具备高可用性和持久性,为海量的小文件、低延迟高IOPS型应用提供有力支持。适用于多种应用场景,包括高性能网站、日志存储、压缩解压、DevOps、企业办公、容器应用等。

  • ECS共享目录

    ECS共享目录是通过nfs服务,把ECS上的指定目录设置为共享文件系统(详情请参考添加ECS共享目录),函数(和ECS相同的VPC配置)可以挂载对应目录进行读写等操作,实现计算资源的动态扩展。此类型适合业务不太频繁的场景。

使用文件系统挂载功能具有以下优势:

  • 函数执行空间是之前/tmp的512M,可以极大扩展存储空间。
  • 多个函数之间可以共享访问已经配置好的文件系统。
  • ECS计算资源动态扩展,利用ECS已有的存储能力实现更大的计算能力。

    您可以在/tmp路径下写临时文件,最大不能超过512MB。

创建委托

为函数添加文件系统配置需要先给函数设置相关服务的委托。

创建委托时,委托类型选择云服务,云服务选择FunctionGraph,因为委托数目有限,而且目前界面上不支持修改,建议可以创建一个权限较大的委托(Tenant Adminitrator),可以支持在函数中操作当前区域内的所有资源,请参考创建委托

添加sfs文件系统

设置委托

进入需要进行挂载配置的函数详情页,在配置页选择已有的委托(委托需要拥有当前Region的sfs administrator或者是tenant administrator的权限)。

如果没有委托,需要创建新委托,创建完后回到此界面选择。

添加挂载配置

在函数详情页单击“挂载文件系统”页签,单击“添加挂载”,如果当前没有添加过文件系统配置,那么需要设置一下用户ID和组ID。

用户ID和用户组ID分别对应Linux系统中的uid和gid,作为函数在运行中访问文件系统的身份。

用户ID:支持输入-1或1~65534的整数且不包含1000和1002,默认值-1,表示FunctionGraph后台自动分配身份标识。

用户组ID:支持输入-1或1~65534的整数且不包含1000和1002,默认值-1,表示FunctionGraph后台自动分配身份标识。

如果已经在云上的服务器挂载过sfs,有一个目录的属主是test-user,那么就可以用id test-user命令查询对应的uid和gid。

图1 设置用户ID和用户组ID

接下来要选择需要挂载的sfs文件系统,然后设置在函数中访问的目录,如下图所示:

图2 添加挂载-sfs

其中函数访问路径最多设置为两级,/mnt和/home都是已存在的路径,FunctionGraph V1版本推荐挂载在以/mnt或/home开头的路径下。FunctionGraph V2版本增加了校验,您需要挂载在/mnt或/home以外的路径下,否则会报“failed to mount exist system path”。

添加sfs turbo文件系统

设置委托

挂载sfs turbo文件系统需要给函数设置委托(至少拥有sfs administrator以及VPC adminstrator权限)。如果没有对应权限的委托,需要新创建。

设置VPC

sfs turbo涉及VPC内部网络访问,添加sfs turbo文件系统前需要给函数配置sfs turbo对应的VPC。

  1. 在弹性文件服务中,获取需要挂载的文件系统的VPC和子网信息,具体操作请参考管理文件系统
  2. 在FunctionGraph控制台的“配置”页签,开启VPC访问,输入1中获取的VPC和子网。
    图3 设置VPC和子网

添加挂载-SFS Turbo

添加sfs turbo和添加sfs过程相似,只要选好需要挂载的文件系统,设置好函数访问路径即可。

图4 添加挂载-sfs turbo

添加ECS共享目录

添加委托

挂载ECS共享目录需要给函数设置委托(至少拥有tenant guest以及VPC administrator权限),如果没有对应权限的委托,需要新创建。

配置VPC

添加ECS共享目录前,也需要给函数配置ECS对应的VPC,可以到ECS详情页的“基本信息”页签中查看“虚拟私有云”。单击虚拟私有云名称,进入虚拟私有云的详情页,查看子网。

获取到这两个信息后,可以在函数配置中配置对应的VPC。

添加挂载-ECS

需要在界面上输入ECS上的共享目录路径信息和函数访问路径,如下图所示。

图5 添加ECS共享目录

后续操作

当函数挂载了文件系统配置后,对函数访问路径的读写就相当于对相关文件系统的读写。

如果把日志路径配置为函数访问路径的子目录,就可以轻松实现函数日志的持久化。

可以参考使用函数统计web服务器访问情况(应用模板),对运行在云上的服务器进行日志分析。

图6 函数模板

ECS创建nfs共享目录

  1. Linux系统
    • CentOS、SUSE、Euler OS、Fedora或OpenSUSE等系统
      1. 配置yum源

        ①在/etc/yum.repos.d目录下创建文件euleros.repo(文件名可随意取,但是必须以“.repo”结尾)。

        ②使用如下命令进入euleros.repo编辑配置信息。

        vi /etc/yum.repos.d/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

        参数说明

        name:仓库的名称。

        baseurl:仓库的地址。
        • 使用http协议的网络地址:http://path/to/repo
        • 使用本地仓库地址:file:///path/to/local/repo

        gpgcheck:表示是否进行gpg(GNU Private Guard)校验,以确定RPM包来源的有效性和安全性。gpgcheck设置为1表示进行gpg校验,0表示不进行gpg校验。如果没有这一项,默认是检查的。

        ③保存配置的repo文件。

        ④执行如下命令清理缓存。

        yum clean all
      2. 使用如下命令安装nfs-utils
        yum install nfs-utils
      3. 设置共享文件夹

        打开/etc/exports,比如要把/sharedata目录设置为共享目录,可以填入如下内容:

        /sharedata 192.168.0.0/24(rw,sync,no_root_squash)

        上述内容的含义是:把/sharedata这个目录共享给192.168.0.0/24这个子网段的其他服务器。

        命令输入完成后,可以执行命令exportfs -v 显示共享的目录,从而判断是否设置成功。

      4. 使用如下命令启动nfs服务
        systemctl start rpcbind
        service nfs start
      5. 修改共享目录

        比如需要新增/home/myself/download到共享目录,可以在/etc/exports中新增如下内容。

        /home/myself/download 192.168.0.0/24(rw,sync,no_root_squash)

        然后重启nfs服务。

        service nfs restart

        或者用如下命令,无需重启nfs服务。

        exportfs -rv
      6. 设置rpcbind开机启动(可选)

        如果需要设置rpcbind服务开机启动,可执行如下命令。

        systemctl enable rpcbind
    • Ubuntu系统
      1. 使用如下命令安装nfs-kernel-server
        sudo apt-get update
        sudo apt install nfs-kernel-server
      2. 设置共享文件夹

        打开/etc/exports,比如要把/sharedata目录设置为共享目录,可以填入如下内容。

        /sharedata 192.168.0.0/24(rw,sync,no_root_squash)

        上述内容的含义是:把/sharedata这个目录共享给192.168.0.0/24这个子网段的其他服务器。

        命令输入完成后,可以执行命令exportfs -v 显示共享的目录,从而判断是否设置成功。

      3. 启动nfs服务
        service nfs-kernel-server restart
      4. 修改共享目录

        比如需要新增/home/myself/download到共享目录,可以在/etc/exports中新增如下内容:

        /home/myself/download 192.168.0.0/24(rw,sync,no_root_squash)

        然后重启nfs服务

        service nfs restart

        或者用如下命令,无需重启nfs服务:

        exportfs -rv
  1. Windows系统
  1. 安装nfs server软件

    目前可用的收费软件有:hanewin nfs server,可到对应官网下载。

    免费的有:FreeNFS、winnfsd等,可到sourceforge上下载。

  2. 打开nfs功能
    • 如果是winnfsd,可参考:https://github.com/winnfsd/winnfsd
    • 如果是hanewin nfs server,可以参考如下步骤。
      1. 以管理员身份运行nfsctl.exe
      2. 在空白处右键,然后Insert,完成设置
        图7 Insert
分享:

    相关文档

    相关产品

close