CubeFS 命令行工具 cfs-cli 使用指南:编译、配置与集群管理命令全解析
存储分布式文件系统对象存储云原生【免费下载链接】cubefscloud-native distributed storage项目地址https://gitcode.com/gh_mirrors/cu/cubefs点击查看免费下载导读cfs-cli是 CubeFS 提供的命令行管理工具用于对集群进行日常运维与管理查看集群及各节点状态执行数据节点、元数据节点、数据分片、元数据分片、卷Volume、用户、目录配额等资源的创建、删除、变更操作。本文以官方文档 docs-zh/source/user-guide/cli/overview.md 为主线结合仓库源码cli/cli.go、cli/cmd/root.go、cli/cmd/config.go 等深入讲解cfs-cli的编译方式、配置文件结构与修改方法、帮助系统以及各类子命令的分类与典型用法帮助读者快速上手并理解其底层实现。一、cfs-cli 是什么cfs-cli是 CubeFS 的命令行界面CLI客户端位于仓库根目录的 cli 目录下。它是一个独立可执行的二进制程序通过调用 Master 节点提供的 HTTP 接口实现集群管理具备以下能力查看集群整体状态、拓扑及各节点MetaNode / DataNode / FlashNode的运行状态对节点执行下线decommission、迁移、状态查询等运维操作创建、删除、扩容、缩容卷Volume管理卷的副本数、容量、读写属性等管理用户User及其授权关系管理目录配额Quota、节点集Nodeset、数据分片Data Partition与元数据分片Meta Partition等。官方文档指出随着 CLI 的不断完善最终将会实现对于集群各节点接口功能的 100% 覆盖。这意味着运维人员可以完全脱离手工调用 Master HTTP API统一通过cfs-cli完成集群管理。二、编译与配置2.1 编译生成 cfs-cli下载 CubeFS 源码后进入cli目录运行build.sh即可生成cfs-cli可执行程序cd cli ./build.sh生成的可执行文件cfs-cli位于cli目录下。此外仓库根目录的 Makefile 也提供了统一的构建入口其中定义了cli构建目标build: server authtool client cli libsdk fsck fdstore bcache blobstore deploy cli: build/build.sh cli $(GOMOD) --threads$(threads)因此在仓库根目录执行make cli同样可以完成构建。从源码看cfs-cli的入口在 cli/cli.go其启动流程为初始化日志输出到/tmp/cfs目录下的 cli 日志通过 cli/cmd/config.go 中的LoadConfig()加载用户配置文件使用配置中的masterAddr创建 Master 客户端sdk/master 中的NewMasterClient并设置请求超时时间与认证用的ClientIDKey基于 spf13/cobra 命令行框架组装根命令并执行。2.2 配置文件 .cfs-cli.json编译完成后首次运行cfs-cli时会在当前用户主目录$HOME下自动生成名为.cfs-cli.json的配置文件。该文件用于指定要连接的 Master 集群地址等信息。默认配置文件内容与 cli/cmd/config.go 中的defaultConfigData一致{ masterAddr: [ master.cube.io ], timeout: 60 }配置项说明如下配置项类型说明默认值masterAddr[]stringMaster 节点地址列表可配置多个地址实现故障转移格式为HOST:PORT[master.cube.io]timeoutuint16所有请求的超时时间单位为秒60clientIDKeystring集群开启认证时需要设置的客户端 ID Key空对应源码中的结构体定义cli/cmd/config.gotype Config struct { MasterAddr []string json:masterAddr Timeout uint16 json:timeout ClientIDKey string json:clientIDKey }需要注意的细节配置文件的权限为0600仅当前用户可读写若timeout为 0加载配置时会被重置为默认值 60若文件不存在程序会自动写入默认配置后再加载因此首次使用无需手动创建文件只需修改其中的 master 地址即可。修改配置的两种方式方式一直接编辑~/.cfs-cli.json将masterAddr修改为当前集群的 Master 地址多个 Master 用逗号分隔或配置为数组。方式二使用cfs-cli config命令查看与设置./cfs-cli config info # 查看当前配置文件内容 ./cfs-cli config set --addr 192.168.0.11:17010,192.168.0.12:17010 --timeout 60config set命令的参数详见 cli/cmd/config.go 中的newConfigSetCmd参数说明默认值--addr指定 Master 地址格式{HOST}:{PORT}[,{HOST}:{PORT}]多个地址用逗号分隔必填--timeout请求超时时间单位秒取值范围为 165535uint16且不能为 060配置成功后会输出Config has been set successfully!。config info则会打印类似如下的信息Config info: Master Address : [192.168.0.11:17010 192.168.0.12:17010] Request Timeout [s]: 60从源码实现看setConfig会先加载现有配置再用新地址列表替换MasterAddr、用新超时覆盖Timeout最后以 JSON 格式原子写回配置文件cli/cmd/config.go。2.3 使用 gencfg 批量生成集群配置除了cfs-cli自身的配置文件外CLI 还提供了一个gencfg子命令用于根据一份 YAML 集群描述文件批量生成 Master、MetaNode、DataNode、ObjectNode、Client 等全部角色的 JSON 配置文件方便部署。其定义位于 cli/cmd/gen_config.go./cfs-cli gencfg --yaml config/cluster.yaml --out build/config--yaml, -i输入的集群 YAML 配置默认config/cluster.yaml--out, -o输出 JSON 配置目录默认build/config。仓库中提供了完整的示例文件 cli/cluster-example.yaml涵盖version、cluster.name、公共config如consulAddr、logLevel、logDir、master.hosts与master.configlisten、prof、exportPort、walDir、storeDir以及nodes列表中各类角色的差异化配置。生成逻辑会根据 YAML 中的 master 地址推导出 peers 列表并写入各节点的masterAddr实现一键式集群配置下发。三、使用方法3.1 查看帮助在cli目录下执行以下任一命令即可获取 CLI 的帮助文档./cfs-cli --help ./cfs-cli -h除此之外cfs-cli还支持--version, -v参数打印版本信息cli/cmd/root.go以及completion子命令生成 Bash 自动补全脚本cli/cli.go./cfs-cli completion # 会在当前目录生成 cfs-cli.sh之后在 ~/.bashrc 中 source 该文件即可启用补全3.2 命令分类总览官方文档将 CLI 管理命令划分为以下几类命令描述cfs-cli cluster集群管理cfs-cli metanode元数据节点管理cfs-cli datanode数据节点管理cfs-cli datapartition数据分片管理cfs-cli metapartition元数据分片管理cfs-cli config配置管理cfs-cli volume, vol卷管理cfs-cli user用户管理cfs-cli nodesetnodeset 管理cfs-cli quota目录配额管理从 cli/cmd/root.go 的源码看当前版本实际注册的子命令比文档表格更丰富除上述命令外还包括zoneZone 管理acl访问控制列表管理uidUID 管理disk磁盘管理含坏盘查询、下线等操作flashnode/flashgroupFlash 节点及 Flash 组管理对应云闪存/远端缓存场景balance数据均衡管理version查看版本信息gencfg批量生成集群配置。各类命令下又细分出多个操作子命令。操作动词与资源名在 cli/cmd/const.go 中统一维护例如create、delete、set、get、list、stat、expand、shrink、decommission下线缩写dec、recommission重新上线、migrate迁移、freeze冻结、threshold阈值设置等。部分资源还支持短名称如dndatanode、mnmetanode、dpdatapartition、mpmetapartition。各子命令的详细参数与用法见官方文档对应章节集群管理docs-zh/source/user-guide/cli/cluster.md配置管理docs-zh/source/user-guide/cli/config.md数据节点docs-zh/source/user-guide/cli/datanode.md元数据节点docs-zh/source/user-guide/cli/metanode.md数据分片docs-zh/source/user-guide/cli/datapartition.md元数据分片docs-zh/source/user-guide/cli/metapartition.md卷管理docs-zh/source/user-guide/cli/volume.md用户管理docs-zh/source/user-guide/cli/user.mdnodeset 管理docs-zh/source/user-guide/cli/nodeset.md目录配额docs-zh/source/user-guide/cli/quota.mdFlash 节点docs-zh/source/user-guide/cli/flashnode.mdBlobStore CLIdocs-zh/source/user-guide/cli/blobstore-cli.md3.3 典型使用示例下面结合源码中定义的命令结构给出几个最常用的操作示例具体参数以各命令的-h帮助为准查看集群信息./cfs-cli cluster info创建卷Volume./cfs-cli volume create --name ltptest --user ltptest --capacity 100 --dp-count 10 --mp-count 3 --replica-num 3其中--name指定卷名、--user指定卷属主、--capacity指定容量GB、--dp-count/--mp-count指定数据分片与元数据分片数量、--replica-num指定副本数对应 cli/cmd/const.go 中的CliFlagDataPartitionCount、CliFlagMetaPartitionCount、CliFlagReplicas等 Flag 定义。查看/管理用户./cfs-cli user list ./cfs-cli user create --name alice --password xxx管理节点下线./cfs-cli datanode decommission --addr 192.168.0.21:173103.4 底层工作方式cfs-cli本身不直接与节点通信所有管理操作最终都汇聚到 Master 集群执行。从 cli/cli.go 可以看到程序启动时会通过master.NewMasterClient(cfg.MasterAddr, false)创建指向配置中masterAddr的客户端并通过SetTimeout设置全局请求超时、通过SetClientIDKey设置认证密钥。因此修改masterAddr配置后所有命令的请求目标都会随之切换当集群开启了认证时需要在配置中设置clientIDKeycfs-cli config set暂未提供该字段的设置入口可通过直接编辑~/.cfs-cli.json完成否则操作会被拒绝。四、常见问题与注意事项找不到配置文件首次运行前请确保cfs-cli可执行程序与$HOME目录可写程序会自动创建~/.cfs-cli.json若想查看当前生效配置使用./cfs-cli config info。Master 地址错误导致连接失败请确认masterAddr中的地址格式为IP:PORT且与集群 Master 实际监听端口默认17010一致多 Master 场景可配置多个地址提升可用性。请求超时集群规模较大或分片数量多时个别操作如创建大容量卷可能耗时较长可通过--timeout适当调大超时时间上限 65535 秒。命令拼写与补全cfs-cli基于 cobra 框架输入错误命令时会给出 Did you mean this? 的相似命令提示也可运行./cfs-cli completion生成 Bash 补全脚本提升操作效率。认证集群集群开启认证后需在配置中补充clientIDKey否则命令会被拒绝执行。五、小结cfs-cli是 CubeFS 集群运维的入口工具覆盖集群、节点、分片、卷、用户、配额、nodeset 等核心管理能力。通过build.sh或make cli即可快速构建配合~/.cfs-cli.json配置文件或config set/config info命令指定 Master 地址后即可使用。掌握本文介绍的编译、配置与命令分类方法即可在此基础上通过各子命令的-h帮助深入操作实现高效、脚本化的集群管理。赞分享存储分布式文件系统对象存储云原生【免费下载链接】cubefscloud-native distributed storage项目地址https://gitcode.com/gh_mirrors/cu/cubefs点击查看免费下载相关推荐CubeFS 集群管理实战cfs-cli cluster 命令完全指南CubeFS 集群管理实战cfs cli cluster 命令完全指南 本篇指南以 CubeFS 官方中文文档 docs zh/source/user gui存储分布式文件系统对象存储云原生EverOS 新增业务记忆类型add-memory-kind完整指南从存储选型到三层持久化接线EverOS 新增业务记忆类型add memory kind完整指南从存储选型到三层持久化接线 EverOS 将每个业务记忆类型Episode、Case存储分布式文件系统对象存储云原生CubeFS cfs-cli 配置管理完全指南config info 与 config set 命令详解CubeFS cfs cli 配置管理完全指南config info 与 config set 命令详解 导读 本文以 CubeFS 官方中文文档中的「配置管存储分布式文件系统对象存储云原生上一篇GHelper如何用5MB软件替代华硕Armoury Crate实现性能与续航的完美平衡下一篇3分钟掌握HsMod告别炉石传说的55个烦恼开启极致游戏体验创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考