TFS的安装,部署请参考TFS文档-安装篇、TFS文档-部署篇,本文主要介绍如何使用TFS提供的工具来管理、运维、诊断集群,主要包括tfstool、ssm、ds_client、admintool等,安装tfs后,所有的工具都在tfs-home/bin目录下,每个命令都包含help命令,用于打印帮助信息。
tfstool
提供写文件、读文件、删除文件的命令支持,使用方式如下:
tfstool -s ns-ip:port 进入TFS命令行 或 tfstool -s ns-ip:port -i "command"执行某个命令
put
用法:put local_file [tfs_name] [suffix] 描述:上传文件到TFS, TFS会返回为上传文件生成的文件名;如果是新建文件tfs_name可省略,如果是更新文件则需带上待更新文件的tfs_name。
get
用法:get tfs_name local_file 描述:从TFS下载tfs_name对应的文件到本地local_file
rm
用法:rm tfs_name 描述:从TFS删除文件
stat
用法:stat tfs_name 描述:获取tfs文件的状态信息,包括大小、创建时间、修改时间等
statblk
用法:statblk block_id 描述:获取block的元信息,如block里的文件数,删除文件数等
listblock
用法:listblock block_id 描述:列出该block所在DataServer列表
lsf
用法:lsf block_id [detail] 描述:列出指定block上的所有文件名,detail代表列出文件的详细元信息
batch
用法:batch file_name 描述:将所有需要执行的命令放到一个文件,使用batch命令可以批量执行文件里的所有命令
ssm
提供获取集群所有block、server、machine的工具,使用方式如下:
ssm -s ns-ip:port 进入TFS命令行 或 ssm -s ns-ip:port -i "command"直接执行某条命令。
block
用法:block [-d block_id] [-s] [-c] [-i] 描述:获取集群上所有block的信息 -d block_id 指定获取某个block的状态 -s 获取block副本对应的server信息 -c 指定获取block信息的总次数 -i 指定多次获取的时间间隔
server/machine server以DS为单位展示信息,machine以物理机器为单位展示
用法:server [-n num] [-r server_ip] [-b] [-w] [-m] [-c] [-i] 描述:获取集群内DS的信息 -b 列出每个DS所有的block -w 列出每个DS上可写的block -m 列出每个DS上自身为master副本的block
batch
使用方式与tfstool相同
admintool
提供针对TFS集群的管理工具,使用方式如下:
admintool -s ns-ip:port 进入TFS命令行 或 admintool -s ns-ip:port -i "command"直接执行某条命令
param
用法:param [param_name] [set value] 描述:在线获取、修改nameserver的配置项。直接param会列出所有可修改的参数;param param_name会列出对应配置项的值;param param_name set value会将param_name项的值设置为value。 其中有个特殊的项是plan_run_flag,是用于控制NS后台开启哪些任务,通过位图来控制。1代表复制任务、2代表迁移任务、4代表压缩任务、8代表删除任务,默认为15,也就是开启所有的任务。除了复制任务必须开启保证数据安全,迁移和压缩都可以在必要时临时关掉。 enum PlanRunFlag { PLAN_RUN_FLAG_NONE = 0, PLAN_RUN_FLAG_REPLICATE = 1, PLAN_RUN_FLAG_MOVE = 1 << 1, PLAN_RUN_FLAG_COMPACT = 1 << 2, PLAN_RUN_FLAG_DELETE = 1 << 3 };
clearsystemtable
用法:clearsystemtable type [1, 2, 4, 8] 描述:1: 清空NS任务列表; 2:清空正在写的block列表【很少用】 3:清空汇报队列; 4. 清空待删除block列表
getbpr/setbpr
获取和设置NS上的blance percent,假设为0.050000,代表DS的容量偏离平均值的5%就认为需要均衡了;该值越小,负载均衡越敏感。 用法:getbpr | setbpr value1 value2 【bpr是blance pecent的缩写,value1为整数部分,value2为小数部分(6位)】 描述:要将blance percent设置为0.010000,使用setbpr 0 010000
removeblk
用法:removeblk block_id 描述:从集群中删除block_id对应的block
replblk、compactblk
这两个命令主要用于开发过程中手动发起复制、迁移、压缩任务,运维过程中很少用到。
batch
使用方式与tfstool相同
convert_name/reverse_name
TFS的文件名是由cluster_id、block_id、file_id编码而成,从文件名里是可以解析出block_id、file_id。
convert_name将(block_id, file_id)转化为TFS文件名; reverse_name从TFS文件名解析出(block_id,file_id)。
convert_name block_id file_id reverse_name tfs_name
ds_client
提供直接从指定dataserver获取block,文件信息的接口,使用方式如下:
ds_client -s ds-ip:port 进入TFS命令行 或 ds_client -s ds-ip:port -i "command"直接执行某条命令
list_block
用法:list_block type [1, 2, 4] 描述:1 - 获取DS上所有的blockid列表; 2 - 获取DS上逻辑块==>物理块的映射关系表; 4 - 获取DS上所有block的详细元信息
get_block_info
用法:get_block_info block_id 描述:获取block的元信息
remove_block
用法:remove_block block_id
描述:删除指定的block
list_file
用法:list_file block_id 描述:获取block上所有的文件列表
read_file_info
用法:read_file_info block_id file_id 描述:读取有(block_id, file_id)表示的文件元信息
read_file_data
用法:read_file_data block_id file_id local_file 描述:读取(block_id, file_id)表示的文件数据,存储到本地local_file文件
unlink_file
用法:unlink_file block_id file_id 描述:删除(block_id, file_id)表示的文件
batch
使用方式与tfstool相同
format_file_system/clear_file_system/read_super_block
format_file_system/clear_file_system/read_super_block格式化TFS、清除TFS格式化的数据、读取格式化后的超级块信息
format_file_system -f ds_conf_path -i index clear_file_system -f ds_conf_path -i index read_super_block -f ds_conf_path -i index