华为云文件存储CPFS高性能计算存储集群搭建全攻略
1. 引言:为什么高性能计算需要CPFS
高性能计算场景对存储系统的要求极其苛刻。AI大模型训练需要频繁读取海量小文件,自动驾驶仿真涉及PB级数据的随机访问,EDA芯片设计对元数据操作延迟极度敏感。传统的NAS存储基于单机架构,无法支撑成百上千个计算节点同时并发读写,IOPS和吞吐量很快成为整个集群的性能瓶颈。
华为云SFS Turbo(即云原生的并行文件系统CPFS)采用分布式并行架构,将数据以条带化方式分散存储在集群中的多个数据节点上,由多个客户端同时并行访问。这种架构能够提供最高20GB/s的吞吐量和百万级IOPS,同时保持1-3ms的低延迟。更关键的是,CPFS完全兼容POSIX标准,计算节点可以像访问本地文件系统一样挂载和使用,无需修改现有应用程序的代码。
需要先登录华为云控制台,点击:华为云控制台,还没有账号,点击:注册并关联,已有账号点击:登录后关联
2. CPFS核心架构与性能规格
2.1 并行分布式架构原理
CPFS的底层架构由元数据服务器和数据服务器集群构成。文件被拆分为多个分片(stripe),以条带化方式均匀分布在不同的数据服务器上。当应用发起高并发读写请求时,多个数据服务器可以同时响应,从而实现聚合带宽和IOPS的线性扩展。这种全对称的分布式架构,使得CPFS在NFS协议下也能提供远超传统NAS单机架构的性能指标。
2.2 SFS Turbo HPC型规格详解
华为云SFS Turbo提供了多种性能规格,按每TiB容量对应的带宽进行划分。以下是主要规格及其性能参数:
- 20MB/s/TiB:最大带宽8GB/s,最大IOPS 25万,延迟2-5ms,容量范围3.6TB-1PB,适用于日志存储、文件共享等大容量低成本场景。
- 40MB/s/TiB:最大带宽8GB/s,最大IOPS 25万,延迟2-5ms,容量范围1.2TB-1PB,同样适用于大容量低成本场景。
- 125MB/s/TiB:最大带宽20GB/s,最大IOPS 100万,延迟1-3ms,容量范围1.2TB-1PB,适用于AI训练、自动驾驶、EDA仿真、渲染等场景。
- 250MB/s/TiB:最大带宽20GB/s,最大IOPS 100万,延迟1-3ms,容量范围1.2TB-1PB,适用于对带宽要求更高的AI训练和HPC场景。
- 500MB/s/TiB:最大带宽80GB/s,最大IOPS 400万,延迟1-3ms,容量范围1.2TB-1PB,适用于极致性能场景。
- 1000MB/s/TiB:最大带宽80GB/s,最大IOPS 400万,延迟1-3ms,容量范围1.2TB-1PB,为最高性能规格。
所有规格均支持在线扩容,最高可达32PB。如需提高吞吐能力或IOPS上限,可在创建文件系统前提交工单申请。
2.3 CPFS与其他存储方案的对比
与对象存储OBS相比,CPFS提供文件语义和POSIX兼容性,适合需要随机读写和细粒度访问的场景。与普通云盘EVS相比,CPFS支持多计算节点共享访问,是构建HPC集群共享存储的唯一选择。与SFS容量型相比,SFS Turbo HPC型在IOPS和延迟上有数量级的优势。
3. 集群搭建前置准备
3.1 网络规划:VPC与子网
CPFS文件系统必须与计算节点部署在同一个区域(Region)的同一个虚拟私有云(VPC)中,才能实现内网高速访问。建议在创建文件系统之前先完成VPC和子网的规划。
创建VPC时需注意:选择与计算节点相同的地域;子网的可用区应与计算节点所在可用区保持一致;规划充足的IP地址段,因为每个挂载点会占用IP资源。如果计算节点与文件系统不在同一VPC,可以通过VPC对等连接或云专线打通网络。
3.2 计算节点规格要求
挂载CPFS的计算节点需要满足一定的规格要求。至少需要2 vCPU和4 GiB内存才能保证CPFS-POSIX客户端正常运行。对于大规模高性能计算集群,建议选择更高规格的ECS实例或裸金属服务器(BMS),并结合100G网络以充分发挥CPFS的性能潜力。计算节点的操作系统推荐使用EulerOS或HCE(华为云自研操作系统),这些系统对SFS Turbo定制客户端有更好的兼容性。
4. 创建SFS Turbo HPC型文件系统
4.1 控制台创建步骤
登录华为云控制台后,按以下步骤创建文件系统:
- 在服务列表中选择"弹性文件服务 SFS",进入SFS Turbo控制台。
- 单击页面右上角的"创建文件系统"按钮。
- 在创建页面配置以下参数:
- 区域:选择与计算节点相同的区域。
- 可用区:选择与计算节点相同的可用区。
- 文件系统类型:选择"SFS Turbo"。
- 规格:根据性能需求选择对应的MB/s/TiB规格,高性能计算场景推荐125MB/s/TiB或更高。
- 容量:根据数据量需求设置,支持后续在线扩容。
- VPC:选择已规划好的VPC。
- 子网:选择与计算节点相同的子网。
- 配置完成后单击"立即创建",等待文件系统创建完成。
4.2 API方式创建(自动化部署)
对于需要自动化部署的场景,可以通过调用华为云API创建SFS Turbo文件系统。创建HPC型文件系统时,需要指定
{
"share": {
"name": "hpc-shared-storage",
"description": "HPC集群共享存储",
"share_proto": "NFS",
"size": 10240,
"vpc_id": "vpc-xxxxx",
"subnet_id": "subnet-xxxxx",
"hpc": true,
"hpc_bw": "125MB/s/TiB"
}
}创建HPC缓存型文件系统时,需要填写
5. 客户端安装与文件系统挂载
5.1 安装SFS Turbo定制客户端
为了获得最佳性能和兼容性,华为云提供了SFS Turbo定制客户端。定制客户端目前支持特定的Linux内核版本。如果计算节点的内核版本不在支持列表中,可以使用原生NFS客户端。
安装定制客户端的步骤如下:
# 下载客户端安装包(需替换{region_id}为实际区域ID)
wget --no-check-certificate -O /root/sfsturbo_client_plus.tar.gz \
https://sfsturbo-client-plus.obs.{region_id}.huawei.com/v24.04.01.B010/sfsturbo_client_plus.tar.gz
# 创建安装目录并解压
mkdir -p /opt/sfs
tar -zxvf /root/sfsturbo_client_plus.tar.gz -C /opt/sfs
# 执行安装脚本
cd /opt/sfs && sh install_sfsturbo_client_plus.sh安装成功后,执行以下命令验证安装状态:
grep "status" /opt/sfs/ko_version如果回显包含"status":"installed",说明客户端已成功安装。
5.2 挂载文件系统
安装完成后,首先创建用于挂载的本地目录:
mkdir -p /mnt/cpfs然后执行挂载命令:
mount -t nfs -o vers=3,timeo=600,noresvport,nolock,tcp <挂载地址> /mnt/cpfs各参数的含义如下:
- vers=3:指定NFS协议版本为v3,目前SFS Turbo仅支持NFSv3。
- timeo=600:NFS客户端重传请求前的等待时间,单位为0.1秒,建议值600。
- noresvport:指定网络故障恢复后使用新的TCP端口重新建立连接,强烈建议启用此参数以保障服务不中断。
- nolock:客户端锁操作在本地完成。由于SFS Turbo暂未实现多客户端互斥锁,加此参数可避免锁操作失败。
- tcp:使用TCP协议传输。
挂载地址的格式为文件系统IP:/,例如192.168.0.0:/。可以在SFS Turbo控制台的文件系统详情页面复制完整的挂载命令。
5.3 验证挂载成功
挂载完成后,通过以下命令验证:
df -h | grep cpfs
mount | grep nfs如果能看到文件系统的挂载信息,说明挂载成功。可以进一步测试读写:
echo "test" > /mnt/cpfs/test.txt
cat /mnt/cpfs/test.txt5.4 配置自动挂载
为了确保计算节点重启后文件系统自动挂载,需要配置/etc/fstab文件:
echo "<挂载地址> /mnt/cpfs nfs vers=3,timeo=600,noresvport,nolock,tcp 0 0" >> /etc/fstab配置完成后,可以通过mount -a测试fstab配置是否正确。
6. 多计算节点集群挂载
6.1 批量挂载方案
在生产环境中,通常有数十甚至数百个计算节点需要同时挂载同一个CPFS文件系统。批量挂载有两种主流方案:
方案一:使用自动化运维工具。通过Ansible、Puppet等配置管理工具,将挂载命令和fstab配置分发到所有计算节点。
方案二:使用HPC集群管理平台。华为云HPC-S²控制台支持在创建集群时直接指定共享存储。在"新建集群"的"硬件配置"页面,选择PFS作为共享存储类型,然后选择已创建的SFS Turbo文件系统。集群创建完成后,所有计算节点会自动挂载该共享存储。
6.2 通过HPC控制台创建集群
使用HPC-S²控制台创建集群的具体步骤:
- 登录高性能计算HPC控制台。
- 单击"新建集群",进入新建集群页面。
- 在"硬件配置"页面配置:可用区、计费模式(按需或包周期)、管控服务器规格、计算服务器数量与规格。
- 选择HPC镜像。
- 在"共享存储"区域,文件系统类型选择PFS,然后选择已创建的SFS Turbo文件系统。
- 配置专有网络(VPC)和安全组。
- 单击"下一步"完成后续配置并创建集群。
集群创建完成后,可以在"节点管理"页面查看每个节点的共享存储挂载状态。
7. 性能调优
7.1 条带化(Striping)优化
CPFS的核心性能优势来自条带化存储。文件以分片方式均匀分布在多个数据服务器上,高并发读写时多个服务器并行响应。对于视频处理等大文件顺序读写场景,启用条带化功能可将IO吞吐量提升90%以上。
条带化配置通常在文件系统创建时确定,不支持在线修改。因此,在创建文件系统前应充分评估工作负载特征,选择合适的条带大小和条带宽度。
7.2 客户端参数调优
CPFS客户端提供了多个可调参数,合理配置可以显著提升性能:
- workerThreads:客户端的线程数量。适当调高此参数会提升IOPS指标。但需注意,增加线程数会消耗更多的客户端CPU和内存资源。
- maxStatCache:最大缓存文件属性的数量。优化该参数可提升频繁读取文件属性场景下的文件系统性能。
- maxFileToCache:最大缓存文件的数量。对于频繁访问相同文件的场景,增大此参数可减少网络往返次数。
这些参数通常在客户端的配置文件中设置,修改后需要重启客户端服务生效。需要注意的是,增加缓存相关参数会导致客户端消耗额外的内存。
7.3 分级缓存策略
对于基因组分析等对延迟极度敏感的场景,可以采用分级缓存策略(内存缓存+SSD缓存+磁盘)。热数据缓存在内存中,温数据存放在SSD缓存层,冷数据落盘。这种策略可以将访问延迟降低60%以上。
7.4 网络与内核参数调优
除了CPFS客户端参数,操作系统层面的网络和内核参数也对性能有重要影响。建议调整以下参数:
# 增大TCP缓冲区
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
# 增大文件系统缓存
vm.vfs_cache_pressure = 507.5 性能基准测试(FIO)
使用FIO工具可以对CPFS文件系统进行吞吐和IOPS的性能测试。以下是一个典型的FIO测试命令:
# 顺序读吞吐测试
fio --name=seq-read --directory=/mnt/cpfs --rw=read --bs=1M --size=10G \
--numjobs=4 --iodepth=32 --runtime=60 --group_reporting
# 随机写IOPS测试
fio --name=rand-write --directory=/mnt/cpfs --rw=randwrite --bs=4k --size=10G \
--numjobs=4 --iodepth=32 --runtime=60 --group_reporting
# 混合读写测试
fio --name=mixed --directory=/mnt/cpfs --rw=randrw --rwmixread=70 \
--bs=4k --size=10G --numjobs=4 --iodepth=32 --runtime=60 --group_reporting测试时应确保文件系统有足够的空闲容量,并在测试后清理测试文件以避免影响后续测试的准确性。
8. 高可用与数据保护
8.1 服务高可用
CPFS的所有节点均为高可用设计,实现集群内秒级别的故障检测。当某个节点发生故障时,CPFS集群调度器会自动将服务切换到其他节点,同时兼顾负载均衡。这种架构提供了远高于传统两节点架构的可用性。
8.2 云备份(CBR)策略
华为云云备份服务(CBR)支持对SFS Turbo文件系统进行备份。CBR提供以下核心能力:
- 多AZ冗余:支持将备份数据冗余存储至多个可用区,提升可靠性。
- 跨区域复制:支持将备份数据复制到异地Region,实现异地灾备。
- 增量备份:增量备份可将备份时间减少95%。
- 即时恢复:RPO最低可达1小时,RTO仅需数分钟。
建议对核心数据配置定期自动备份策略,并结合生命周期管理自动淘汰过期备份。
8.3 数据生命周期管理
高性能计算场景中,数据往往具有明显的温度特征。热数据(正在训练或计算的数据)存放在高性能的SFS Turbo层,冷数据(已完成计算的结果数据)可自动或手动迁移至OBS对象存储。这种分层存储策略可将整体存储成本降低30%以上。
9. 监控与告警
9.1 云监控服务(CES)配置
华为云云监控服务(CES)支持对SFS Turbo文件系统进行全方位的性能监控。可监控的指标包括读写吞吐、读写IOPS、读写时延、元数据QPS等。
创建告警规则的步骤:
- 登录管理控制台,选择"服务列表 > 云监控服务"。
- 在左侧导航栏选择"告警 > 告警规则"。
- 单击"创建告警规则"。
- 配置告警规则的基本信息:选择SFS Turbo资源、配置监控指标(如带宽利用率、IOPS等)、设置阈值条件。
- 配置告警通知方式(短信、邮件、企业微信等)。
- 单击"立即创建"完成配置。
建议对以下关键指标配置告警:带宽利用率超过80%、IOPS接近上限、文件系统容量使用率超过85%。
9.2 容量监控与扩容
CPFS支持在线扩容,扩容过程不影响业务。当监控到容量使用率达到告警阈值时,可以在控制台直接调整文件系统容量。扩容后,所有数据以条带化方式重新分布,并支持自动负载平衡,即时利用新增节点的吞吐和存储能力。
10. 成本优化
10.1 计费模式选择
华为云SFS Turbo提供按需计费和包年包月两种模式。短期项目或波动的AI训练任务建议按需计费;长期稳定运行的生产环境建议包年包月,可节省40%以上的成本。
10.2 规格与容量合理规划
规格选择应基于实际性能需求,避免过度配置。对于大部分HPC场景,125MB/s/TiB规格已经能够满足需求。容量规划应预留20%-30%的余量以应对数据增长和性能波动。
10.3 数据分层与生命周期策略
如前所述,将冷数据迁移至OBS可大幅降低成本。可以结合华为云OBS的生命周期管理功能,自动将超过指定时间的文件从SFS Turbo迁移至OBS,或从OBS的标准存储转为归档存储。
11. 常见问题与解答
问题1:CPFS和SFS Turbo是什么关系?
华为云SFS Turbo中的HPC型文件系统,就是基于CPFS(Cloud Parallel File System)并行文件系统技术构建的。在日常使用中,CPFS和SFS Turbo HPC型可以视为同一概念。
问题2:计算节点挂载CPFS时提示"access denied"怎么办?
首先检查安全组规则是否允许NFS通信(端口2049)。其次确认VPC和子网配置正确,文件系统与计算节点必须在同一VPC下。如果问题仍然存在,检查是否使用了正确的挂载地址。
问题3:CPFS支持Windows计算节点吗?
目前SFS Turbo仅支持NFSv3协议,主要面向Linux云服务器。Windows计算节点可以通过安装NFS客户端(如Services for NFS)尝试挂载,但兼容性和性能不如Linux原生支持。
问题4:如何评估我的业务需要哪种规格的CPFS?
评估维度包括:并发计算节点数量、总数据量、典型IO大小(4K小文件还是1M大文件)、对延迟的敏感度。建议先用FIO工具在测试环境中模拟业务负载,根据测试结果选择合适规格。也可以先选择较低规格,后续通过工单申请升级。
问题5:CPFS的备份和恢复如何操作?
通过云备份服务CBR可以配置自动备份策略。恢复时可以选择恢复到原文件系统或新建的文件系统,支持即时恢复,RTO仅需数分钟。
问题6:CPFS出现性能瓶颈时如何排查?
建议按以下顺序排查:首先通过云监控查看带宽、IOPS、延迟等指标是否达到规格上限;其次检查客户端workerThreads等参数是否配置合理;然后使用FIO进行基准测试,排除应用自身的问题;最后检查网络延迟和丢包情况,确保计算节点与文件系统在同一可用区。



