我要提问
ARTICLE DETAIL

资讯详情

前沿编程新知与开发实战干货的深度解读。

CubeFS blobstore-cli 命令行工具使用指南:配置、命令与源码解析

CubeFS blobstore-cli 命令行工具使用指南:配置、命令与源码解析 存储分布式文件系统对象存储云原生【免费下载链接】cubefscloud-native distributed storage项目地址https://gitcode.com/gh_mirrors/cu/cubefs点击查看免费下载本篇指南围绕 CubeFS 纠删码blobstore子系统的运维调试命令行工具blobstore-cli展开完整覆盖其编译启动方式、配置文件结构、命令体系config / util / access / cm / scheduler 等以及后台任务开关、手动迁移等典型实操场景。阅读完本文你将能够独立配置并启动 blobstore-cli借助它完成文件上传下载删除、location/token/vuid 解析、集群与磁盘信息查看、后台任务启停以及迁移任务管理等高阶运维操作并结合仓库源码理解各命令背后的调用链。工具概览与能力边界blobstore-cli 是 CubeFS 纠删码子系统位于 blobstore 目录提供的一个交互式命令行管理工具用于对接 access、clustermgr、scheduler、blobnode、proxy、shardnode 等模块的服务接口。原文档明确提示目前该工具还不够完善功能覆盖不到 70%后续会持续完善最终实现对于集群各模块接口功能的 100% 覆盖。因此部分模块的子命令处于补充完善中的状态使用时应以help输出的实际命令为准。工具的两个基础特性命令行自动补全功能基于grumble交互框架实现在交互模式下输入命令时支持 Tab 补全显示为可读数据类型所有输出经过统一的格式化层处理将底层 JSON/字节数据转换为人类可读的展示形式Readable渲染并支持--verbose/--vverbose逐级展开详情。从源码结构看所有模块的注册集中在 blobstore/cli/app.go 的init()中依次注册了config、rpc2、util以及access、clustermgr、scheduler、blobnode、proxy、shardnode、sdk、toolbox等命令组。入口文件 blobstore/cli/cli/main.go 仅一行核心逻辑grumble.Main(cli.App)。交互模式下提示符为BS $历史记录保存在系统临时目录下的.blobstore_cli.history文件中上限 10000 条。编译与配置启动命令./bin/blobstore-cli -c cli/cli/cli.conf其中-c cli/cli/cli.conf是可选配置项用于预先注入一些常用变量例如 access 接入层服务发现地址、clustermgr 服务地址等。若不带-c直接执行./bin/blobstore-cli也可以进入交互式命令行再通过config set等命令在运行期动态补充配置见下文 Config 一节。配置文件详解仓库内置的示例配置为 blobstore/cli/cli/cli.conf完整内容如下{ access: { conn_mode: 4, priority_addrs: [ http://localhost:9500 ] }, region: test-region, cluster_consul: 127.0.0.1:8500, default_cluster_id: 1, cm_cluster: { 1: [ http://127.0.0.1:9998, http://127.0.0.1:9999, http://127.0.0.1:10000 ] }, rpc2_client: { connector: { network: tcp, dial_timeout: 200ms }, timeout: 10s }, verbose: true, vverbose: true }其中文档核心示例包含 5 个关键项结合 blobstore/cli/config/config.go 中Config结构体的定义各配置项的语义如下表配置项类型说明access.conn_modeuint8access 客户端连接模式4 表示不设超时配合api/access/client.go使用access.priority_addrs[]stringaccess 接入层优先尝试的服务地址列表regionstring区域名用于选择所属 region 的集群cluster_consulstringregion 内集群的 Consul 服务发现地址如127.0.0.1:8500default_cluster_idint默认操作的集群 ID缺省时所有cm、scheduler命令使用该 IDcm_clustermap[string][]string集群 ID 到 clustermgr 地址列表的映射示例中集群 1 对应 9998/9999/10000 三个 raft 节点cm_secretstringclustermgr 访问密钥非空时启用鉴权EnableAuthsdk_config_pathstringsdk 服务配置文件路径配置后 access 命令将改用 sdk 客户端loglevel/verbose/vverboseint / bool / bool日志级别与输出详细程度开关rpc2_clientobjectrpc2 客户端参数如网络类型tcp、拨号超时200ms、总超时10s从源码看blobstore/cli/config/config.go 的LoadConfig会读取该 JSON 并通过反射将每个带cache标签的字段写入内存缓存config.Set(key, value)随后各命令通过config.Get(Key-...)读取这就是config命令管理内存配置机制的底层实现。使用方法blobstore-cli 既可以当作普通命令行工具一次性执行也可以进入交互模式。通用命令格式为blobstore-cli MainCmd SubCmd [Cmd ...] [--flag Val ...] -- [-arg ...]两个官方示例# 1. 设置内存配置项 ./blobstore-cli config set conf-key conf-val To set Key: conf-key Value: conf-val # 2. 查看当前时间 ./blobstore-cli util time timestamp 1640156245364981202 (seconds 1640156245 nanosecs 364981202) -- format: 2021-12-22T14:57:25.36498120208:00 (now)使用要点输入help可以查看所有命令及简要说明建议使用cmd subCmd ... --flag -- -arg方式传递参数即参数一律通过--flag形式传入避免与位置参数混淆交互模式下直接输入子命令即可执行同样支持help逐级查看子命令帮助。命令总览目前实现了部分模块的主要功能命令与用途对照如下命令描述blobstore-cli config管理该 blobstore-cli 内存中的配置项blobstore-cli util小工具集合如解析 location、解析时间、生成特定数据blobstore-cli access文件的上传、下载、删除等blobstore-cli cm集群信息查看和管理、后台任务开关管理blobstore-cli scheduler后台任务管理blobstore-cli blobnode / proxy / shardnode / sdk / toolbox分别对应各模块的调试工具从 blobstore/cli/app.go 注册可见处于补充完善中Config内存配置管理manager memory cache of config Usage: config [flags] Sub Commands: del del config of keys get get config in cache set set config to cache type print type in cache对应源码实现见 blobstore/cli/config.goconfig set key value将值写入内存缓存。源码约定若配置项类型为[]string多个值以英文逗号拼接若为map则以 JSON 字符串传入。执行后会打印To set Key: ... Value: ...确认信息config get [keys...]读取缓存中的配置值不带参数时打印全部缓存项键按字典序排序输出config del keys...删除指定配置键config type [keys...]打印缓存中配置项的类型。Util小工具集合util commands, parse everything Usage: util [flags] Sub Commands: location parse location [json | hex | base64] redis redis tools time time format [unix] [format] token parse token token vuid parse vuid vuid结合 blobstore/cli/util.go 的注册逻辑各子命令的实际能力为util time [unix] [format]不传参时输出当前时间戳UnixNano、秒、纳秒并附 RFC3339Nano 格式化结果与人类可读相对时间如now传入 Unix 时间戳时可指定输出格式默认time.RFC3339Nano源码会自动将输入补足为 19 位数字再拆分秒与纳秒解析util location json|hex|base64解析 location 数据支持 JSON 字符串、hex 编码或 base64 编码输入最终以可读形式打印数据条带stripe信息util vuid vuid/util suid suid解析纠删码子系统中的卷单元 IDVUID与条带单元 IDSUID输出其编码的各字段含义util token token解析 putat 写入令牌输出 Checksum、MinBid、Count 与过期时间过期与否分别以不同颜色标识util bytes encode/decode/parseJSON 字节串转换与解析工具源码中额外注册可用于ListBlobEncodeMarker等结构的字节解析。Access文件上传、下载与删除blobstore access api tools Usage: access [flags] Sub Commands: cluster show cluster del del file ec show ec buffer size get get file put put file命令注册见 blobstore/cli/access/access.go核心参数如下access put上传文件。常用参数-d/--data直接指定原始数据-f/--filepath指定待上传文件路径--size指定大小0 表示取文件实际大小--hashes指定哈希类型--codemode指定纠删码模式--clusterid指定目标集群 IDaccess get下载文件。-f/--filepath为保存路径--offset与--readsize支持按偏移读取部分数据readsize为 0 表示读完整文件access del删除文件access cluster [region]展示指定 region 下的集群信息access ec [blobsize]展示指定 blobsize配合--codemode下 EC 缓冲区大小。upload/download/delete 三类操作均通过-l/--locationlocation 字符串支持 json/hex/base64或-p/--locationpathlocation 文件路径指定数据位置blobstore/cli/access/access.go 中newAccessClient显示access 命令优先读取sdk_config_path指向的 sdk 配置构建客户端否则通过 access 客户端直连priority_addrs或 Consul 发现的服务。另有access writereadonly --forcewrite可强制向只读集群写入。Clustermgr集群信息查看与管理cluster manager tools Usage: cm [flags] Sub Commands: background background task switch control tools cluster cluster tools config config tools disk disk tools kv kv tools listAllDB list all db tools raft raft db tools service service tools snapshot snapshot tools stat show stat of clustermgr volume volume tools wal wal toolscm组的注册见 blobstore/cli/clustermgr/clustermgr.go。所有cm子命令支持三个通用 flag见clusterFlags--cluster_id指定目标 clustermgr 集群 ID缺省使用配置中的default_cluster_id--secret指定访问密钥--hosts以空格分隔直接指定 clustermgr 地址列表覆盖cm_cluster配置。后台任务开关管理backgroundblobstore-cli cm background是文档重点演示的功能用于集群后台任务的启停控制blobstore-cli cm backgroundBackground task switch control for clustermgr, currently supported: [disk_repair, balance, disk_drop, manual_migrate, volume_inspect, shard_repair, blob_delete] Usage: background [flags] Flags: -h, --help display help Sub Commands: disable disable background task enable enable background task status show status of a background task switch从 blobstore/cli/clustermgr/background.go 的源码看受支持的任务类型实际包含 8 种disk_repair、balance、disk_drop、manual_migrate、volume_inspect、shard_repair、blob_delete、shard_disk_repair文档列出的 7 种之外源码还注册了shard_disk_repair。三个子命令的典型用法以balance任务为例blobstore-cli cm background status balance # 查看balance后台任务开关状态 blobstore-cli cm background enable balance # 打开balance后台任务开关 blobstore-cli cm background disable balance # 关闭balance后台任务开关enable/disable在执行前会先读取当前开关值若已是目标状态则提示already enabled/disabled否则会打印状态变更如false -- true并要求二次确认后通过SetConfig写入 clustermgr 配置见 blobstore/cli/clustermgr/background.go。status在配置不存在时会显示not set。Scheduler后台任务管理scheduler tools Usage: scheduler [flags] Flags: -h, --help display help Sub Commands: checkpoint inspect checkpoint tools kafka kafka consume tools migrate migrate tools stat show leader stat of schedulerscheduler组注册见 blobstore/cli/scheduler/scheduler.go各子命令均支持-c/--cluster_id指定集群 ID缺省取default_cluster_id。scheduler stat展示 scheduler 主节点leader的统计信息scheduler checkpoint检查点管理子命令get获取 inspect 检查点、set设置检查点用于 volume inspect 任务的进度控制scheduler kafkaKafka 消费管理子命令get获取消费位点offset、set设置消费位点用于调整后台任务的消息消费进度scheduler migrate迁移任务管理这是最常用的子命令组migrate tools for scheduler Usage: migrate [flags] Sub Commands: add add manual migrate task disk get migrating disk get get migrate task list list migrate tasks progress show migrating progress对应实现见 blobstore/cli/scheduler/migrate.gomigrate add添加手动迁移任务需指定--vuid要迁移的卷单元 ID与--direct_download是否直接下载默认 true执行前会显示add manual migrate task: vid[...], vuid[...] ?并请求确认成功输出add manual migrate task successfullymigrate get按--task_type如disk_repair、disk_drop、balance、manual_migrate与--task_id查询单个迁移任务详情migrate list列出迁移任务支持--task_type、--disk_id按磁盘过滤与--count数量默认 10结果按 marker 分页每页结束会询问for more?是否继续取下一页migrate disk查询正在迁移的磁盘传--disk_id查单个磁盘不传则列出全部迁移中磁盘输出包含磁盘 ID 与已用 chunk 数migrate progress展示迁移进度--task_type仅支持disk_repair与disk_drop--disk_id必填输出形如[----------] MigratedTasksCnt: 10/TotalTasksCnt: 20的 50 格进度条。典型实战组合将以上命令组合起来可以覆盖 blobstore 集群日常运维的典型场景# 1. 查看默认集群的状态 ./bin/blobstore-cli cm stat # 2. 查看并启停 balance 后台任务 ./bin/blobstore-cli cm background status balance ./bin/blobstore-cli cm background enable balance # 3. 解析一次写入返回的 locationJSON 或 hex 形式 ./bin/blobstore-cli util location {cluster_id:1,...} # 4. 上传文件并获取 location再按 location 下载 ./bin/blobstore-cli access put -f ./test.data ./bin/blobstore-cli access get -l location-string -f ./download.data # 5. 查看磁盘迁移进度disk_repair 类型 ./bin/blobstore-cli scheduler migrate progress --task_type disk_repair --disk_id 1024 # 6. 手动添加一个 vuid 的迁移任务 ./bin/blobstore-cli scheduler migrate add --vuid 1000000000000001 --direct_downloadtrue注意以上命令依赖配置文件中cm_cluster、default_cluster_id、access.priority_addrs等项与实际部署环境一致若部署了多个集群cm与scheduler命令均可通过--cluster_id显式指定目标集群。总结blobstore-cli 是 CubeFS 纠删码子系统运维调试的核心命令行入口围绕配置内存化、输出可读化、命令模块化三条主线设计配置通过-c cli/cli/cli.conf预载 region、集群地址、access 地址等常用变量运行期可用config命令动态调整命令体系access覆盖文件读写删、cm覆盖集群/磁盘/后台任务开关、scheduler覆盖迁移与检查点/消费位点管理另有util提供 location/token/vuid 等解析能力演进状态截至当前仓库版本该工具功能覆盖不到 70%blobnode、proxy、shardnode、sdk、toolbox等模块仍在持续完善中最终目标是 100% 覆盖集群各模块接口。如需进一步深入可阅读命令注册入口 blobstore/cli/app.go、配置结构定义 blobstore/cli/config/config.go 以及各命令组实现如 blobstore/cli/access/access.go、blobstore/cli/clustermgr/background.go、blobstore/cli/scheduler/migrate.go从而理解每个命令背后的完整调用链。赞分享存储分布式文件系统对象存储云原生【免费下载链接】cubefscloud-native distributed storage项目地址https://gitcode.com/gh_mirrors/cu/cubefs点击查看免费下载相关推荐CubeFS 命令行工具 cfs-cli 使用指南编译、配置与集群管理命令全解析CubeFS 命令行工具 cfs cli 使用指南编译、配置与集群管理命令全解析 导读 cfs cli 是 CubeFS 提供的命令行管理工具用于对集群进行存储分布式文件系统对象存储云原生Gitpod CLIgp 命令完全指南工作区内置命令行工具的架构、命令全景与源码级解析Gitpod CLIgp 命令完全指南工作区内置命令行工具的架构、命令全景与源码级解析 导读 Gitpod CLI即可执行文件 gp 是随 Gitp开发工具后端云原生Byzer-lang数据融合技术整合多源异构数据的终极指南Byzer lang数据融合技术整合多源异构数据的终极指南 Byzer lang原MLSQL作为一款低代码开源编程语言专为数据管道、分析和AI任务设计后端大数据数据管道上一篇easy-vibe 实践Claude Code 移动端开发完全指南——七种方案让 AI 编程助手装进口袋下一篇Scapy ForwardMachine 实战指南基于 L4 的透明转发与数据包在线改写引擎创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表