TFSTaobao File System完整部署文档

备注1:prefix 指定tfs安装径,默认会被安装到~/tfs_bin目录

with-release 指定按release版本的参数进行编译,如果不指定这个参数,则会按版本比较严格的参数编译,包含-Werror参数,所有           的都会被当错误,在高版本gcc下会导致项目编 译不过,很多开源用户反馈  的编译问题都跟这个有关,因为gcc高版本对代码的检查越           来越严格,天猫内部使用的gcc版本是gcc-4.1.2。

至此,TFS已经安装成功了,你可以开始部署TFS服务。

三、部署TFS(Taobao File System)

在成功安装TFS之后,在你的安装目录(默认为~/tfs_bin),包含几个子目录bin、conf、include、lib、logs、script等。

bin:包含tfs所有的可执行程序文件,如nameserver(NS)、dataserver(DS)、tfstool。

conf:包含tfs的配置文件,如NS的配置文件ns.conf,DS的配置文件ds.conf。

include:包含TFS客户端库相关的头文件,应用程序使用TFS需要包含这些头文件。

lib:包含TFS客户端的静/动态库,应用程序使用TFS需要连接libtfsclient。

logs:用于存储TFS运行过程中的日志。

script:包含tfs常用的一些运维脚本,如stfs用于格式化DS, tfs启动/停止NS、DS。

~/tfs_bin/conf目录下包含TFS的配置文件模板,在部署前需要根据修改配置文件,下面对NS,DS一些关键的配置项进行说明,所有配置项使用key=value的形式进行配置,每行一项,在行首加#可直接注释配置项使之不生效;使用者应该根据实际情况,修改conf/ns.conf、conf/ds.conf这两个配置文件,本次我的安装中,安装目录conf下没有这些.conf结尾的配置文件。

1、安装NS(NameServer)

安装过程中如果报错,请参考FAQ,大部分原因可能是因为GCC版本的问题。

开始安装前,先介绍一下ns.conf的相关重要参数,如下:

[public]通用配置

日志文件大小,当日志大小超过这个配置值时,TFS会进行rotate,产生新的日志文件, 不修改

log_size=1073741824

用于区分机架的子网掩码,可根据实际网络修改。如果你配置为255.255.255.255,那么任意两个ip不同的机器都被认为在不同的机架;如果你配置为255.255.255.0, 那么192.168.0.x与192.168.0.y将被认为在同一个机架,依次类推;TFS数据块的多个副本不能分布在同一个机架内,以提高可靠性。

group_sk=255.255.255.255

2、安装DS1与DS2(DataServer)

在本例的中,192.168.3.251/252上都附带两块没有使用的磁盘/dev/sdb、/dev/sdc,磁盘空间均为一块10G,另一块10G;TFS采用每个DS进程管理一块磁盘的方式,也就是说,每个机器上都会运行2个DS进程,分别管理/dev/sdb、/dev/sdc, 并且这两块盘应该挂载到/data/disk1、/data/disk2两个目录(因为配置文件中指定mount_path为/data/disk),启动DS时指定序(如1、2)这个DS进程就会加载对应目录里的数据(1对应/data/disk1、2对应/data/disk2,依次类推)开始服务。

对每个机器上多个DS进程使用的端口,TFS也做了统一以方便运维,比如DS配置port为8200,那么序为1的DS进程会在8200端口,序为2的DS进程会在8202端口,依次类推,序为n的DS在8200 + (n 1) 2 端口上。强烈每个DS public下的port项都配置相同的值,这样根据端口就能直接换算出DS的序(序一旦确定,通过df命令就能确定具体磁盘),对定位问题很方便。

另外,TFS的DS对存储空间有自己独特的管理方式,将可用的存储空间分成多个block进行管理,使用前DS需要先进行fort(使用TFS提供的工具),预分配各个block的存储空间,block的存储空间在磁盘上连续(理论上),从而避免动态分配时产生大量的磁盘碎片,降低服务效率。

在两台机器上分别进行如下操作,准备好数据目录:

(注,DS1和DS2基本相同,但是请注意IP和一些不一样的参数,这里不浪费篇幅再写一次)