使用ECS作为NFS服务器实现多用户资源隔离
使用ECS作为NFS服务器实现多用户资源隔离
FunctionGraph的函数实例除了支持挂载SFS弹性文件系统外,也支持挂载ECS服务器共享出来的NFS共享路径,使用ECS更便于进行多租户的资源管理。
- 购买ECS服务器,其中以下几点需要注意:
- 请注意区域选择“华东-上海一”,具体ECS的规格和镜像版本用户可以根据业务需要自行选择,此处以EulerOS 2.5 64bit(40GiB)为例,不同镜像版本的部分Linux命令略有不同,请注意区分。
图1 基础配置
- 由于很多模型文件都在1G到10G+的大小,建议您根据具体需要选择系统盘容量,或者挂载数据盘。配置好后,单击“下一步:网络配置”,进入网络配置页面。
图2 系统盘选择
- VPC、子网请选择之前步骤创建的VPC和子网。
图3 VPC和子网配置
- 安全组设置请参考以下截图,入方向规则对子网内IP网段开放111、2049、2051、2052、20048端口,用于NFS服务;其他端口如:22端口用于SSH和SFTP、21端口用于FTP等,具体请根据实际需要配置。
图4 安全组设置
- 公网IP也请您根据业务需要购买。
图5 公网IP购买
- 请注意区域选择“华东-上海一”,具体ECS的规格和镜像版本用户可以根据业务需要自行选择,此处以EulerOS 2.5 64bit(40GiB)为例,不同镜像版本的部分Linux命令略有不同,请注意区分。
- 设置NFS共享。
ECS购买完成后即可进行NFS共享设置,以下示例中以两个用户user1、user2进行介绍。
- 添加用户user1、user2并创建home目录。
useradd -m user1 && useradd -m user1
- 修改密码。
passwd user1 passwd user2
- 创建用户的共享目录,并修改共享目录操作权限为777。
mkdir /home/user1/share && chmod 777 /home/user1/share mkdir /home/user2/share && chmod 777 /home/user2/share
共享目录是用户home目录的子目录,其他用户不能操作该目录,进而保证函数挂载该目录后具有操作权限,所以权限为777不会造成越权。
- 安装NFS服务。
yum install rpcbind nfs-utils // 使用apt或其他包管理工具的镜像请使用相应的命令
- 编辑/etc/exports,写入如下内容:
/home/user1/share xx.xx.xx.xx/xx(rw) // xx.xx.xx.xx/xx请填写之前创建的子网的网段 /home/user2/share xx.xx.xx.xx/xx(rw) // xx.xx.xx.xx/xx请填写之前创建的子网的网段
- 启动NFS服务。
systemctl start rpcbind nfs
- 设置开机自启。
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
- 查看共享信息,显示如下即表示创建NFS共享成功。
showmount -e xx.xx.xx.xx (此处IP地址为搭建服务器主机地址)
图6 查看共享信息
- 添加用户user1、user2并创建home目录。
应用挂载
在FunctionGraph应用中心为user1和user2分别创建一个Stable-Diffusion应用,下面以user1为例介绍,user2操作步骤相同。
- 进入user1的应用“总览”页,在“资源”列表中分别找到逻辑名称为“stable_diffusion”和“custom_models_tool”的资源,单击链接进入函数详情页面。两个函数的操作相同,此处以“stable_diffusion”函数为例。
图7 user1的函数服务
- 进入函数详情页,依次单击“设置 > 网络配置”,打开“函数访问VPC内资源”开关并配置VPC、子网,请选择与ECS相同的VPC和子网,最后单击“保存”。
图8 网络配置
- 在左侧导航栏中,选择“磁盘挂载 > 添加挂载”。
- 文件系统来源:选择“ECS”。
- 云服务器名称:选择之前创建NFS共享的ECS。
- 共享目录路径:填写“/home/user1/share”(user2的应用则填写/home/user2/share)。
- 函数访问路径:填写“/mnt/auto”。
图9 添加挂载
- 配置完成后,单击“确定”。
访问WebUI程序创建相关目录和文件
- 进入user1的应用“总览”页,单击右上角“开始使用”,耐心等待函数启动。函数会自动在挂载目录中创建应用所需目录。
- 回到user1的应用“总览”页,单击“上传模型”打开文件管理工具。
图10 文件管理工具
- 将您的模型、插件等文件分别放入对应目录。以下介绍部分主要目录,其他目录请自行查看。
- sd/models/Stable-diffusion,用于保存Stable-Diffusion checkpoint模型文件。
- sd/models/VAE,用于保存VAE文件。
- sd/models/Lora,用于保存Lora模型。
- sd/extensions,用于保存插件。
- 重新加载WebUI,即可看到新传入的模型。
图11 Checkpoints新增模型
图12 LoRA新增模型
- 单击右上角“生成”,图片会自动保存到“/home/user1/share/sd/outputs/txt2img/202x-xx-xx”目录。
图13 图片保存目录