@HUST张友东 work@taobao zyd_com@126.com
分类: LINUX
2014-01-09 09:50:43
作者:zyd_com@126.com
博客:ydzhang.blog.chinaunix.net | blog.yunnotes.net
微博:
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
fortfs2016-09-29 15:09:07
fortfs:东哥,专门注册了chinaunix的会员来向你取经~。
最近在搭建tfs,使用tfstool上传put 文件的时候总是出错
ERROR process_success_response (tfs_file.cpp:672) [140529788323648] get zero response. client id: 0x826630, phase: 3
INFO ient_manager.cpp:222 [140566001997568] client not found, id: 5, pcode: 1
但是通过查看block能找到刚才上传的文件,而且,也可以get下来
另外使用ssm工具show的时候总是抛出buffer overflow detected 的bug,不管输入任何东西都会抛出这个错误,求指点~,谢谢 。另外,tfs的阿里旺旺账号多少呢,方便告知吗
put 的问题已经解决了,犯了个“高级”错误~,ns.conf 里的ip_addr 配错了,而下面的ip_addr_list配正确了,可能就会出现我上面说的put问题吧。
另外,ssm工具还是有buffer overflow detected的bug啊,这个是编译器的原因吗,我用的gcc 4.6编译的
fortfs2016-09-29 11:42:26
东哥,专门注册了chinaunix的会员来向你取经~。
最近在搭建tfs,使用tfstool上传put 文件的时候总是出错
ERROR process_success_response (tfs_file.cpp:672) [140529788323648] get zero response. client id: 0x826630, phase: 3
INFO ient_manager.cpp:222 [140566001997568] client not found, id: 5, pcode: 1
但是通过查看block能找到刚才上传的文件,而且,也可以get下来
另外使用ssm工具show的时候总是抛出buffer overflow detected 的bug,不管输入任何东西都会抛出这个错误,求指点~,谢谢 。另外,tfs的阿里旺旺账号多少呢,方便告知吗