文件存储NAS是一种分布式的网络文件存储系统,为ECS、HPC、Docker、BatchCompute等提供安全、高性能、高可靠、简单易用的文件存储服务。本文介绍如何通过函数计算控制台配置NAS文件系统。
背景信息
阿里云函数计算支持与文件存储NAS无缝集成。您可以在函数计算的服务上配置NAS,包括NAS的地域、挂载点、分组等信息。配置成功后,该服务下的函数就可以像访问本地文件系统一样访问指定的NAS文件系统。
- 可以将临时文件存储到NAS中,临时文件大小不受实例本地磁盘空间限制。
- 多个函数可以共用一个NAS,实现文件共享。
前提条件
配置NAS
函数计算的NAS配置为服务级别,为一个服务配置NAS挂载点后,此服务下的所有函数都可以访问指定NAS文件系统上的文件。
- 登录函数计算控制台,在左侧导航栏,单击服务及函数。
- 在顶部菜单栏,选择地域,然后在服务列表页面,单击目标服务操作列的配置。
- 在编辑服务页面的存储配置区域,配置以下参数,然后单击保存。
- 挂载 NAS 文件系统:是否启用NAS文件系统。取值说明如下。
- 启用:启用NAS文件系统。
- 禁用:不启用NAS文件系统。
- NAS 配置方式:NAS文件系统的配置方式。取值说明如下。
- 自动配置:系统自动为您配置NAS文件系统。
- 自定义配置:您需要手动配置如下参数才能配置NAS文件系统。
- NAS 文件系统:选择已创建的NAS文件系统。如需创建新的NAS文件系统,单击下方的创建新的 NAS 文件系统,跳转到文件存储控制台手动创建。仅支持NFS协议类型的NAS文件系统,不支持SMB协议类型。
- (可选)用户:在文本框中填写自定义的用户ID。如您不输入任何值,系统将使用root用户ID,即
UID=0
。更多信息,请参见NAS用户和用户组。 - (可选)用户组:在文本框中填写自定义的用户组ID。如您不输入任何值,系统将使用root用户组ID,即
GID=0
。更多信息,请参见NAS用户和用户组。 - NAS 挂载点:选择NAS挂载相关配置和设置相关目录。关于目录设置的更多信息,请参见地址配置。
- 挂载点:选择与当前服务配置的专有网络和交换机匹配的NAS挂载点。
- 数据传输方式:选择普通传输方式或加密传输方式。仅通用型NAS支持加密传输,加密传输会对数据传输路径进行加密,但是存在一定的资源消耗。更多信息,请参见NFS文件系统传输加密。
- 远端 NAS 中的目录:通用型NAS的该目录必须以/开头,极速型NAS的该目录必须以/share开头。若您配置的目录在远端NAS中不存在,函数计算将会为您自动创建该目录。目录所有者为上述配置的用户和用户组,权限等级为
777
。 - 函数运行环境中的本地目录:必须为/home、/mnt或/data的子目录。
说明- 配置NAS 挂载点之前,需先允许函数访问VPC内资源,并选择同一地域下的一个专有网络和交换机。具体操作,请参见配置网络。
- 一个服务最多可以挂载5个NAS挂载点。
- 挂载 NAS 文件系统:是否启用NAS文件系统。取值说明如下。
NAS用户和用户组
在配置函数的NAS挂载时,首先需要配置UserID(用户ID)和GroupID(用户组ID),这两个值等同于文件系统中的用户和组的概念。请根据需求设置文件的拥有者和相应的组权限,确保文件读写权限一致。
UserID和GroupID取值范围为[0, 65534]。UserID和GroupID值配置可选,如果不填写UserID,系统会使用root用户ID,即0
UserID值为0
;如果不填写GroupID,系统会使用root用户组ID,即GroupID值为0
。
- 使用NAS实例挂载远端NAS的根目录。具体操作,请参见配置NAS。
挂载成功后使用以下示例创建子目录,例如fc-1。然后将NAS挂载点中的远端 NAS 中的目录由根目录修改为创建的子目录(由/修改为/fc-1),实现远端挂载子目录。
#!/usr/bin/env python # -*- coding: utf-8 -*- import os def handler(event, context): print('uid : ' + str(os.geteuid())) print('gid : ' + str(os.getgid())) # 请手动更改为 NAS 挂载的本地目录 local_nas_dir = "/home/app" # 请手动更改为目标子目录名 target_sub_dir = "fc-1" # 在 FC 中利用当前实例执行用户权限创建目标目录 new_dir = local_nas_dir + '/' + target_sub_dir + '/' print('new_dir : ' + str(new_dir)) os.mkdir(new_dir) return 'success'
- 使用云服务器ECS挂载NAS。具体操作,请参见使用ECS挂载NAS文件系统。
挂载成功后创建子目录,然后执行
chmod 777
为子目录授权。
- 系统默认的用户和用户组无文件的读写权限,因此建议您将UserId和GroupId设置为具体的值,即1~65534的任意数字。此时,该服务下不同函数可以共享这些文件资源。
- 上传至NAS的文件权限与本地文件权限完全相同。
地址配置
每个NAS 挂载点地址由远端 NAS 中的目录和函数运行环境中的本地目录组成。远端目录与本地目录结合,实现从NAS文件系统中的某个目录到本地文件系统中的某个目录的映射。
- 远端 NAS 中的目录
远端NAS中的目录是指服务需要访问的NAS文件系统的目录,由挂载点和绝对目录两部分组成。挂载点可以通过NAS控制台来添加。将挂载点和绝对目录拼接得到远端目录。例如,如果NAS文件系统的挂载点是xxxx-nas.aliyuncs.com,您希望被访问的绝对目录是/workspace/document,对应完整的远端目录就是xxxx-nas.aliyuncs.com:/workspace/document。
您可以登录NAS控制台,在文件系统列表中,单击目标文件系统,然后单击挂载使用,在挂载点列表中获取挂载点。
- 函数运行环境中的本地目录
函数运行环境中的本地目录是指本地文件系统的挂载点。不能使用通用的Linux和Unix系统目录,例如bin、opt、var或dev等挂载NAS,函数计算允许您使用非系统目录mnt、home或data挂载NAS。
更多信息
您还可以使用Serverless Devs为服务挂载NAS系统。具体操作,请参见使用s nas相关命令挂载硬盘。