
# 进阶使用：使用ECS作为NFS服务器实现多用户资源隔离
#### 应用场景
FunctionGraph的函数除了支持挂载弹性文件系统SFS外，也支持挂载ECS服务器共享出的NFS共享路径。在多用户使用场景下，使用ECS能够有效地进行多用户的资源管理，通过配置特定的权限，满足用户之间需要强隔离的使用需求。
#### 前提条件
1. 每位用户的FunctionGraph云服务委托中需包含"SWR Admin"、"VPC Administrator"、"Server Administrator"、"SFS FullAccess"和"SFS Turbo FullAccess"权限。
2. 每位用户均需完成[部署和使用AI绘画Stable Diffusion应用](https://support.huaweicloud.com/bestpractice-functiongraph/functiongraph_05_1158.html)步骤，应用创建成功。
3. 完成[创建虚拟私有云VPC和子网](https://support.huaweicloud.com/bestpractice-functiongraph/functiongraph_05_1159.html#functiongraph_05_1159__section164471115153711)。
 
 #### 步骤一：购买ECS服务器
进入[购买ECS服务器](https://console.huaweicloud.com/ecm/?#/ecs/createVm)页面，购买过程中请参照以下注意事项。实例类型和是否开启公网访问可根据业务需要自行选择，其他参数可参考[设置ECS购买参数](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7002.html)。
- 基础配置：如[图1]所示，本示例使用"按需计费"，区域选择"华东-上海一"。
  图1基础配置   
  ![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002167669597.png "点击放大") 
- 操作系统：本示例镜像选用EulerOS 2.5 64bit(40GiB)。
  ![](https://support.huaweicloud.com/bestpractice-functiongraph/public_sys-resources/note_3.0-zh-cn.png)
  不同镜像版本下，部分Linux命令可能存在差异。
  
- 储存与备份：鉴于多数模型文件的大小在1GB到10GB以上，建议依据具体需求选择系统盘容量，并参考[图2 系统盘选择]新增数据盘进行挂载。
  图2系统盘选择   
  ![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002132429858.png "点击放大") 
- 网络：虚拟私有云与主网卡请选择[创建虚拟私有云VPC和子网](https://support.huaweicloud.com/bestpractice-functiongraph/functiongraph_05_1159.html#functiongraph_05_1159__section164471115153711)中所创建VPC与子网，如[图3]所示。
  图3网络配置   
  ![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002132271702.png "点击放大") 
- 安全组：请参考[图4]新建安全组，入方向规则允许子网内IP访问端口111、2049、2051、2052、20048以支持NFS服务；其他端口，如22端口用于SSH和SFTP、21端口用于FTP等，具体协议端口和源地址请根据实际需要配置。
  图4安全组设置   
  ![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002167551161.png "点击放大") 
 
#### 步骤二：设置ECS下的NFS共享
ECS购买完成后即可进行NFS共享设置，以下示例中以两个用户user1和user2的场景进行介绍，可根据实际需要增减用户数。
1. 添加用户user1和user2并创建home目录。
   ```
   useradd -m user1 && useradd -m user2
   ```
   
2. 修改user1和user2的密码。
   ```
   passwd user1
   passwd user2
   ```
   
3. 创建用户的共享目录，并修改共享目录操作权限为777。
   ```
   mkdir /home/user1/share && chmod 777 /home/user1/share
   mkdir /home/user2/share && chmod 777 /home/user2/share
   ```
   ![](https://support.huaweicloud.com/bestpractice-functiongraph/public_sys-resources/note_3.0-zh-cn.png)
   共享目录作为用户home目录的子目录，限制其他用户操作，确保函数挂载该目录后拥有操作权限。因此，设置权限为777不会导致权限过度。
   
4. 安装NFS服务。
   ```
   yum install rpcbind nfs-utils // 使用apt或其他包管理工具的镜像请使用相应的命令
   ```
   
5. 编辑/etc/exports，写入如下内容：
   ```
   /home/user1/share xx.xx.xx.xx/xx(rw) // 网段处请填写之前创建的子网网段
   /home/user2/share xx.xx.xx.xx/xx(rw) // 网段处请填写之前创建的子网网段
   ```
   
6. 启动NFS服务。
   ```
   systemctl start rpcbind nfs
   ```
   
7. 设置开机自启。
   ```
   echo "xx.xx.xx.xx:/home/user1/share /nfs nfs4 defaults 0 0" >> /etc/fstab // IP处请填ECS在子网中的IP
   echo "xx.xx.xx.xx:/home/user2/share /nfs nfs4 defaults 0 0" >> /etc/fstab // IP处请填ECS在子网中的IP
   mount -av
   ```
   
8. 查看共享信息，显示如[图5]所示即表示创建NFS共享成功。
   ```
   showmount -e xx.xx.xx.xx  // IP处请填搭建服务器主机的私有地址
   ```
   图5查看共享信息   
   ![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002167669601.png) 
 
#### 步骤三：在Stable Diffusion应用中挂载ECS
登录[函数工作流控制台](https://console.huaweicloud.com/functiongraph/?locale=zh-cn)，进入应用中心，用户user1和user2已分别在各自的账号下成功创建了一个AI绘画Stable Diffusion应用。以下以user1为例进行介绍，user2的操作步骤相同。
1. user1进入应用详情页，在"资源"列表中分别找到逻辑名称为"stable_diffusion"和"custom_models_tool"的函数资源，如[图6]所示，单击链接进入函数详情页面。
   
   两个函数的操作相同，此处以"stable_diffusion"函数为例。
   图6user1的函数服务   
   ![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002132429862.png "点击放大")
   
   
2. 进入函数详情页，如[图7]所示，单击"设置 \> 网络配置"，打开"函数访问VPC内资源"开关并配置VPC和子网，请选择[步骤一：购买ECS服务器]中使用的VPC和子网，单击"保存"。
   
   图7网络配置   
   ![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002132271706.png "点击放大")
   
   
3. 在"设置"页签的左侧导航栏中，单击"磁盘挂载 \> 添加挂载"，配置完成后单击"确定"。
   
   - 文件系统来源：选择"ECS"。
   
   - 云服务器名称：选择[步骤一：购买ECS服务器]创建的云服务器。
   
   - 共享目录路径：填写"/home/user1/share"（user2的应用则填写/home/user2/share）。
   
   - 函数访问路径：填写"/mnt/auto"。
   
   
   ![](https://support.huaweicloud.com/bestpractice-functiongraph/public_sys-resources/note_3.0-zh-cn.png)
   如已挂载SFS Turbo文件系统，可在成功挂载ECS后取消挂载SFS Turbo文件系统，并及时释放SFS Turbo文件系统资源避免持续收费。
   
   
4. 参照[1]\~[3]完成"custom_models_tool"的函数设置。
 
#### 步骤四：上传与加载模型
1. 返回应用详情页，单击"开始使用"进入WebUI界面。函数会自动在挂载目录中创建应用所需目录和文件。
2. 页面成功加载后，返回应用详情页，单击"上传模型"打开文件管理工具，默认用户名和密码均为"admin"，登录后请在"设置"页签修改密码，保证数据安全。与应用相关的sd目录内容如[图8]所示。
   
   图8文件管理工具   
   ![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002167551173.png "点击放大")
   
   
3. 将模型、插件等文件分别上传至对应目录。部分关键目录可参考[表3](https://support.huaweicloud.com/bestpractice-functiongraph/functiongraph_05_1159.html#functiongraph_05_1159__table12333192181910)。
4. 重新加载Stable Diffusion WebUI界面，即可看到新传入的模型。
5. 单击右上角"生成"开始进行AI绘画，如[图9]所示，结果图片会自动保存到"/home/user1/share/sd/outputs/txt2img/202x-xx-xx"目录下。
   
   图9图片保存目录   
   ![](https://support.huaweicloud.com/bestpractice-functiongraph/zh-cn_image_0000002167669613.png "点击放大")
   
   
 
