ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

CubeFS 性能评估环境准备与卷配置实战指南(v3.3.1)

CubeFS 性能评估环境准备与卷配置实战指南(v3.3.1) 存储分布式文件系统对象存储云原生【免费下载链接】cubefscloud-native distributed storage项目地址https://gitcode.com/gh_mirrors/cu/cubefs点击查看免费下载本指南对应仓库 docs-zh/source/evaluation/env.md讲解在 CubeFS v3.3.1 集群上开展性能评估如 fio、mdtest 基准测试之前的环境准备工作从集群节点规划、卷Volume关键参数选型到使用cfs-cli创建测试卷、并通过 Master API 批量扩容数据分区Data Partition的完整操作流程。读完本文你将掌握一套可直接复制的性能测试环境搭建方法并理解每个卷参数背后的源码实现逻辑。一、集群信息规划测试环境的硬件基线性能测试结果的可信度首先取决于测试集群的硬件配置。本仓库评估文档给出的参考集群由三类节点组成均以容器化docker 容器方式部署节点类型节点数CPU内存存储网络备注管理节点Master3832GiB197GiB SSD10 Gb/sdocker 容器元数据节点MetaNode580377GiB4 x 3.7TiB SSD50 Gb/s混合部署数据节点DataNode580377GiB4 x 3.7TiB SSD50 Gb/s混合部署规划要点说明管理节点三副本Master 依赖 Raft 协议保证元数据一致性3 节点可容忍单点故障是生产与测试环境的常规配置元数据节点与数据节点混合部署文档注明两者“混合部署”即同一批 5 台物理机上同时运行 MetaNode 与 DataNode 进程。这种拓扑在压测时会让元数据操作与数据读写共享网络与磁盘资源评估结果更贴近真实混合负载高性能 SSD 与高带宽网络元数据节点承载 B 树索引与目录项操作数据节点承载数据分片的读写4 x 3.7TiB SSD 与 50 Gb/s 网络可显著降低 I/O 与网络瓶颈避免压测结果被基础设施拖累。该表是性能评估文档给出的基线环境实际部署时可参考仓库 docs-zh/source 下的部署文档按需调整节点规模。二、卷设置性能测试前必须明确的参数卷Volume是 CubeFS 中用户可操作的存储容器性能测试前需要根据测试目标顺序/随机读写、元数据密集型等预先规划好卷参数。评估环境在未设置配额、DataNode 未设置流控限速的前提下采用了以下卷参数参数默认值推荐值说明FollowerReadFalseFalse是否开启 FollowerRead从副本读Capacity10 GB300 000 000 GB容量Data Replica Number3500数据副本数Meta Replica Number310元数据副本数Data Partition Size120 GB120 GB只是理论值上限并不预分配空间Data Partition Count101500数据分区数Meta Partition Count310元数据分区数Cross ZoneFalseFalse是否跨 zone需要说明的是表中“默认值”列与实际 CLI 工具的默认参数略有出入。从源码看cfs-cli volume create的真实默认值为容量 10单位 GB、初始 Meta 分区数 3、初始 Data 分区数 3、Data 分区大小 120 GB见 cli/cmd/vol.gocmdVolDefaultMPCount 3 cmdVolDefaultDPCount 3 cmdVolDefaultDPSize 120 cmdVolDefaultCapacity 10 // 100GB cmdVolDefaultEbsBlkSize 8 * 1024 * 1024各参数在性能测试中的实际影响Capacity容量单位 GB。文档推荐值 300 000 000 GB 是面向大规模评测的理论上限测试卷容量只决定卷的“配额上限”不会预占磁盘空间与 Data Partition Size 一样为逻辑上限Data Replica Number / Meta Replica Number副本数分别控制数据分区与元数据分区的副本个数副本数越高冗余与读并发能力越强但写入开销也越大。文档给出的推荐值面向大规模并发评测场景Data Partition Size数据分区大小单个数据分区的逻辑容量上限默认与推荐值均为 120 GB。需要注意它“只是理论值上限并不预分配空间”实际磁盘占用随写入增长Data Partition Count / Meta Partition Count分区数创建卷时初始化的数据分区数与元数据分区数。分区数越多数据打散到更多 DataNode、元数据索引分布更广并发吞吐上限更高这也是文档推荐值远高于默认值的原因FollowerRead默认 False即客户端默认从数据分区主副本读取。若开启客户端可从 follower 副本读适合读多写少场景但对一致性与副本间同步有额外要求评估文档选择保持默认关闭Cross Zone默认 False即单 zone 部署不启用跨可用区容灾简化测试拓扑。三、使用 cfs-cli 创建测试卷卷创建通过cfs-cli对应仓库 cli 目录下的 CLI 工具入口为 cli/cli.go执行。评估文档给出的完整命令如下./cfs-cli volume create test-vol {owner} --capacity300000000 --mp-count10其中{owner}为卷属主用户。命令执行后 CLI 会回显将要创建的卷配置并请求确认完整输出如下Create a new volume: Name : test-vol Owner : {owner} capacity : 300000000 G deleteLockTime : 0 h crossZone : false DefaultPriority : false description : mpCount : 10 replicaNum : size : 120 G volType : 0 followerRead : false readOnlyWhenFull : false zoneName : ebsBlkSize : 8388608 byte cacheTTL : 30 day cacheHighWater : 80 cacheLowWater : 60 cacheLRUInterval : 5 min TransactionMask : TransactionTimeout : 1 min TxConflictRetryNum : 0 TxConflictRetryInterval : 0 ms Confirm (yes/no)[yes]: yes Create volume success.从源码 cli/cmd/vol.go 可以看出CLI 在回显后等待用户输入确认Confirm (yes/no)[yes]输入yes或直接回车即提交随后通过client.AdminAPI().CreateVolName(...)调用 Master 创建卷。该命令常用的核心参数及含义如下CLI 参数默认值说明--capacity10卷容量单位 GBcli/cmd/vol.go中CliFlagCapacity--mp-count3初始元数据分区数CliFlagMPCount--dp-count3初始数据分区数CliFlagDPCount--dp-size120数据分区大小单位 GBCliFlagDataPartitionSize--replica-num3普通卷/1低频卷数据分区副本数CliFlagReplicaNum--follower-readfalse是否开启从副本读CliFlagFollowerRead--crossZonefalse是否跨 zoneCliFlagCrossZone--zone-name空卷所在 zone 名称--delete-lock-time0卷删除锁定时间单位小时--ebs-blk-size8388608与 BlobStore 对接的数据块大小单位字节--yes/-yfalse跳过确认提示直接创建其余回显字段如cacheTTL、cacheHighWater、cacheLowWater、TransactionMask等为远程缓存与事务相关配置的当前值未显式指定时使用 Master 侧默认值一般性能测试无需调整。命令参数定义可进一步查看 cli/cmd/const.go 中的CliFlagMPCount、CliFlagDPCount、CliFlagCapacity、CliFlagReplicaNum、CliFlagFollowerRead等常量。四、通过 Master API 扩容数据分区性能测试需要足够多的数据分区来分散 I/O 负载因此评估文档在创建卷后还进行了数据分区扩容使用 Master 的 HTTP API 直接批量创建分区curl -v http://10.196.59.198:17010/dataPartition/create?count32nametest-vol参数说明10.196.59.198:17010Master 节点地址与 HTTP 服务端口nametest-vol目标卷名称count32本次批量创建的数据分区数量。文档标题注明“扩容 dp 至 500 个”即通过多次执行或调整 count分批将分区总数扩到目标值 500。从源码 master/http_server.go 可以看到该路由注册在 Master HTTP 服务上处理函数为 master/api_service.go 中的createDataPartition。该处理逻辑的关键点包括每次请求的count不能超过单次上限maxInitDataPartitionCnt值为 200见 master/const.go否则直接返回参数错误默认未加forcetrue时会检查卷当前可写分区数是否超过 Master 配置的MaxWritableDataPartitionCnt上限该上限默认 1000可通过 Master 配置项maxWritableDataPartitionCnt调整见 master/config.go 与 master/server.go低频卷StorageClass 为 BlobStore不允许调用此接口扩容成功后会返回“createDataPartition succeeeds”并附带扩容前后的分区数量对比信息。因此文档示例中count32完全在单次上限 200 以内若要一次性创建更多分区可调大 count≤200或分批执行直至卷的总数据分区数达到目标值如 500。扩容后新建的数据分区会由 Master 依据 DataNode 的容量与负载均衡策略自动选择宿主节点客户端写入时数据将被均匀打散到这些分区上。五、测试前的检查清单完成上述环境准备后建议在正式压测前核对以下几点卷状态确认通过./cfs-cli volume info test-vol确认容量、分区数与副本数与规划一致分区分布确认确认扩容后的数据分区已成功创建、宿主节点分布均衡可参考 master/data_partition_test.go 中createDataPartition测试对创建数量与总数的断言方式来验证流控与配额本评估环境未设置配额、DataNode 未设置流控限速以保证测试数据能反映集群真实吞吐上限若你的环境开启了流控需注意其会对带宽/IOPS 结果产生影响挂载验证环境准备完成后即可挂载测试卷后续的 I/O 基准测试如仓库 docs-zh/source/evaluation/io.md 涉及的 fio 场景与元数据基准测试如 docs-zh/source/evaluation/meta.md 涉及的 mdtest 场景都建立在本指南的集群与卷配置之上。六、小结本指南围绕 CubeFS v3.3.1 性能评估的“环境准备”阶段完整覆盖了三件事规划由 3 管理节点 5 元数据节点 5 数据节点构成的混合部署测试集群依据卷参数表确定 FollowerRead、容量、副本数、分区大小与分区数量等关键配置通过cfs-cli volume create创建测试卷并通过dataPartition/createAPI 将数据分区批量扩容至测试所需规模。结合 cli/cmd/vol.go、master/api_service.go 等源码你既能照此步骤复现测试环境也能理解每个参数在 Master 调度与客户端读写路径中的实际作用为后续解读 I/O 与元数据基准测试结果打下基础。赞分享存储分布式文件系统对象存储云原生【免费下载链接】cubefscloud-native distributed storage项目地址https://gitcode.com/gh_mirrors/cu/cubefs点击查看免费下载相关推荐CubeFS 元数据性能评估基于 mdtest 的目录与文件操作基准测试实战指南CubeFS 元数据性能评估基于 mdtest 的目录与文件操作基准测试实战指南 本指南以 CubeFS 官方在 v3.3.1 集群环境下使用 mdtest存储分布式文件系统对象存储云原生如何为Amlogic设备打造高效Armbian系统性能评估与适配实战指南如何为Amlogic设备打造高效Armbian系统性能评估与适配实战指南 Amlogic s9xxx armbian项目是一款专为Amlogic、Allwin嵌入式开发工具构建工具操作系统SWE-bench 完整安装指南从环境准备到 Docker 评估环境搭建SWE bench 完整安装指南从环境准备到 Docker 评估环境搭建 本篇技术指南聚焦 SWE bench 的本地安装与运行环境配置覆盖前置条件、标准安模型评测AI 评测大模型人工智能上一篇Obsidian Admonition与其他插件协作Templater和Templates插件集成教程下一篇Apereo CAS 配置管理基于 Spring Cloud Kubernetes 的 ConfigMap 与 Secret 配置源实战创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表