@HUST张友东 work@taobao zyd_com@126.com
分类: 服务器与存储
2013-10-02 17:56:14
TFS(Taobao FileSystem)是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,其设计目标是支持海量的非结构化数据的存储;TFS使用C++语言开发,需要运行在64bit Linux OS上,本文介绍如何在Linux环境编译安装TFS。
安装依赖的软件包
安装tb-common-utils
TFS使用tb-common-utils软件包,tb-common-utils包含淘宝使用的基础系统库tbsys和网络库tbnet两个组件;安装tb-common-utils前需要设置环境变量TBLIB_ROOT,tbsys和tbnet将会被安装TBLIB_ROOT对应的路径(必须是绝对路径)下,TFS会在这个路径下查找tbsys、tbnet头文件和库。
设置TBLIB_ROOT环境变量
在~/.bash_profile文件中加入,export TBLIB_ROOT=path_to_tbutil , 然后执行source ~/.bash_profile
下载源码
# svn co -r 18 tb-common-utils 注意: 这里不要checkout最新版本,version18以后的修改导致部分接口不能前向兼容。
编译安装
# cd tb-common-utils # sh build.sh
如果一切顺利,tb-common-utils已经安装成功到$TBLIB_ROOT路径下;如遇到问题请先阅读后面的编译FAQ。
安装TFS
TFS开源用户大都只使用TFS的基本功能,所以这个版本我们默认只编译TFS的nameserver,dataserver,client和tool,以去除对mysql的依赖,需要使用到rcserver(全局资源管理服务),metaserver(TFS自定义文件名服务)的用户请自行编译安装这两个服务。
下载源码
# svn co http://code.taobao.org/svn/tfs/branches/dev_for_outer_users tfs
编译安装
# cd tfs # sh build.sh init # ./configure --prefix=path_to_tfs --with-release # make # make install
至此,TFS已经安装成功了,你可以开始部署TFS服务。
编译FAQ
Q: 使用TFS一定需要64bit Liunx? A: 是的,否则整个项目不能正常编译通过。 Q: 编译TFS过程中出现出现类似tbnet.h:39: fatal error: tbsys.h: No such file or directory的错误提示? A: 需要先安装tb-common-utils软件包。 Q: 在安装tb-common-utils过程中,提示设置please set TBLIB_ROOT varialbe first!!? A: 需要先设置TBLIB_ROOT环境变量,再编译安装tb-common-utils。 Q: 编译过程中出现类似警告:格式 ‘%lu’ 需要类型 ‘long unsigned int’,但实参 3 的类型为 ‘size_t’ ? A: 你的机器使用的应该是32bit OS,如果你坚持要编译,可以自行修改代码或者直接忽略这些警告。 Q: 执行./configure时,提示configure: error: readline header files not found, --disable-readline or install gnu readline library? A: 你需要安装readline库,或在configure时加上--disable-readline参数,不使用readline库。 Q: 执行./configure时,提示configure: error: tcmalloc link failed (--without-tcmalloc to disable)? A: 你需要安装tcmalloc库, 或在configure时加上--without-tcmalloc参数,不使用tcmalloc库。 Q: 编译过程中出现大量的错误信息,类似于warnings being treated as error? A: 请确认在./configure的时候是否加了--with-release参数。 Q: 编译过程中提示类似client_request_server.cpp:722:38: error: no matching function for call to ‘atomic_inc(volatile uint64_t*)’的错误信息? A: 你的系统时32位的,请在64bit Linux编译安装TFS;因为32bit系统不支持对64bit整数的原子操作。 Q: 编译时遇到session_util.cpp:2:23: fatal error: uuid/uuid.h: No such file or directory? A: 你需要先安装uuid库, 用于生成全局唯一ID, uuid库是e2fsprogs包工具的一部分; Q: 编译时提示tfs_meta_helper.cpp:15:18: fatal error: zlib.h: No such file or directory? A: 你需要先安装zlib,用于压缩/解压缩。
有问题或建议请直接留言,或微博@淘宝TFS。
原创文章,转载请注明:转载自Yun Notes 本文链接地址: TFS使用文档-安装篇
minminmsn2016-06-12 11:12:52
tfs mysql分库怎么操作?有人清楚吗?望不吝赐教。谢谢!
meta.conf配置文件中如下
#rc 后端数据库信息,格式为“ip:port:dbname,dbuser,dbpasswd”,有分库时用;分割
meta_db_infos = 10.11.12.12:1234:tfs_name_db,root,root;10.11.12.12:1234:tfs_name_db,root,root
有一点不明白,这里的分库是tfs自己的功能吗?如果这里填上几组mysql数据库,tfs会自动根据自己的某种策略分库吗?还是mysql首先自己分库,让后tfs连接就行呢?
前几天测似oneproxy分库中间件,tfs貌似不支持。
[2016-06-03 14:43:00] ERROR connect (mysql_database_helper.cpp:70) [140490863277824] Error: prepared statement not supported in OneProxy (errno:&nb
baochenggood2014-12-11 10:00:59
make 报错,求解决
make[2]: *** [session_util.o] Error 1
make[2]: Leaving directory `/usr/local/src/tfs/src/common'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/tfs/src'
make: *** [all-recursive] Error 1