淘宝TFS分布式文件系统亲测

对于淘宝TFS分布式文件系统的功能、原理、优势等就不多做介绍了,这里主要说明配置方面。
可访问TFS开源官网:

         tfs相关文档:

tfs交流论坛:

系统环境:
3台 64位CentOS5.8    1G内存
nameserver    192.168.0.10
dataserver1    192.168.0.13
dataserver2    192.168.0.25 
下面的一些配置不考虑单机跑多个dataserver、 dataserver+ nameserver 的情况.


一、配置基本环境

yum update

需要确保安装了automake autoconfig 和 libtool,使用auotmake --version查看,一般情况下已安装。 1.4以上版本需要安装libuuid-devel,zlib-devel,mysql-devel三个开发包

[root@locatfs local]# yum install readline-devel readline
[root@locatfs local]# yum install ncurses-devel.x86_64  ncurses.x86_64
[root@locatfs local]# yum install -y automake libtool  libxslt groff pcre-devel  gcc* zlib-devel
[root@locatfs local]# yum install  e4fsprogs e4fsprogs-devel    //ext4

加载ext4模块,让系统支持ext4文件系统

[root@locatfs local]#  modprobe ext4



升级autoconf
[root@locatfs local]# whereis autoconf
[root@locatfs local]# rpm -qf /usr/bin/autoconf
[root@locatfs local]# /usr/bin/autoconf -V
[root@locatfs local]# rpm -e --nodeps autoconf-2.59-12
[root@locatfs local]# tar zxvf autoconf-latest.tar.gz
[root@locatfs local]# cd autoconf-2.69
[root@locatfs local]# ./configure  --prefix=/usr
[root@locatfs local]# make
[root@locatfs local]# make install
[root@locatfs local]# /usr/bin/autoconf -V #查看是否安装成功


二、升级安装高版本mysql

1.安装配置yum源
wget
wget
rpm -ivh *.rpm

2.编辑/etc/yum.repos.d/remi.repo
#vi /etc/yum.repos.d/remi.repo
在这个文件的最后增加一行:priority=1
保存退出。

3.编辑/etc/yum.repos.d/epel-testing.repo,
#vi /etc/yum.repos.d/epel-testing.repo
在这个文件的最后增加一行:priority=1
保存退出。

4.编辑/etc/yum.repos.d/epel.repo
#vi /etc/yum.repos.d/epel.repo
在这个文件的最后增加一行:priority=1
保存退出。

5.使用yum --enablerepo=remi list mysql php 检查是否有可升级版本。发现有版本可以升级到mysql5.5.11和php5.3.6。

6.使用命令yum --enablerepo=remi update mysql 进行升级,升级mysql的时候会一并升级PHP,有些提示我都选择Y,直到升级结束。整个过程包含下载、安装。
yum --enablerepo=remi install mysql-server mysql.x86_64  mysql-devel.x86_64


三、下载安装TFS(亦可参照官网)
[root@locatfs local]# cd /opt
[root@locatfs local]# svn checkout tb-common-utils
[root@locatfs local]# svn checkout tfs
还有gtest(自行上网下载)

1.安装gtest
[root@locatfs local]# unzip gtest-1.6.0.zip
[root@locatfs local]# cd gtest-1.6.0
[root@locatfs local]# ./configure
[root@locatfs local]# make
[root@locatfs local]# cd make/
[root@locatfs local]# make
[root@locatfs local]# ./sample1_unittest


2.编译和安装tbnet, tbsys库
[root@locatfs local]# vi /etc/profile
添加
export TBLIB_ROOT=/usr/local/tb/lib
[root@locatfs local]# source /etc/profile

进入tb-common-utils文件夹, 执行build.sh进行安装.

[root@locatfs local]# cd tb-common-utils/
[root@locatfs local]# chmod +x *.sh
[root@locatfs local]# ./build.sh


3.编译安装tfs

进入 tfs 目录
[root@locatfs local]# cd tfs/
[root@locatfs local]# ./build.sh  init
[root@locatfs local]# ./configure
#如果提示找不到/usr/local/tfs/scripts/cs_sync  
# 把tfs下的cs_sync.sh复制成cs_sync 执行:cp -a ./scripts/cs_sync.sh /root/tfs_bin/scripts/cs_sync
[root@locatfs local]# make
[root@locatfs local]# make install


四、配置启动
参考TFS_HA.docx

 

免费下载地址在

用户名与密码都是

具体下载目录在 /2012年资料/8月/7日/淘宝TFS分布式文件系统亲测


目前的情况
tfs安装在 /root/tfs_bin
tbsys、tbnet 安装在  /usr/local/tb/
 /usr/local/tfs/conf/共有三个文件需要配置:
ns.conf、ads.conf和ds.conf 
其中
ns.conf  用于启动nameserver                        
//只运行dataserver的服务器不用配置。

ads.conf和ds.conf   用于启动dataserver     //只运行nameserver的服务器不用配置。

nameserver和dataserver的启动顺序不限

1.配置nameserver

这里直接贴测试后的配置文件:ns.conf
 该文件位于
/usr/local/tfs/conf下,自行添加
cat  ns.conf

[public]
##日志文件的size,默认 1GB
log_size=1073741824

#保留日志文件的个数,默认 64
log_num = 4

#日志文件的级别, 默认 debug
log_level = error       //不然日志会很大

#工作队列size,  默认  10240
task_max_queue_size = 10240

#nameserver监听端口
port =8888

#工作目录,也就是tfs的安装目录
work_dir=/root/tfs_bin

#网络设备,即通信网卡,一般用内网
dev_name= eth0

#工作线程池 default  4
thread_count = 4

#本机IP地址(vip),配置ha时为vip,没配置可以为主ns的ip
ip_addr = 192.168.0.10

[nameserver]

#系统保护时间,单位(秒), default: 300
#保护时间内不进行任何操作,包括添加block等
safe_mode_time = 300

#nameserver IP地址列表(master, salve的ip地址,只能以'|'分隔)
#单台nameserver时,另一个ip配置为无效ip即可
ip_addr_list = 192.168.0.10|192.168.0.2

#Ip地址 mask
#用于区分dataserver所在的子网,选择不同子网的dataserver备份数据
group_mask = 255.255.255.255

#Block size的最大值, 单位(字节)
block_max_size = 83886080   //这个值到底怎么配置好,有待实验。 必须 >= dataserver的mainblock_size,推荐设置一致。

#Block 最大备份数, default: 2
#单台dataserver时,需要配置为1
max_replication = 2

#Block 最小备份数, default: 2
#单台dataserver时,需要配置为1
min_replication = 2

#DataServer 容量使用的百分比, default: 98
use_capacity_ratio = 98

#Block使用的百分比, default: 95
block_max_use_ratio = 98

#Dataserver 与 nameserver 的心跳时间, 单位(秒), default: 2
heart_interval = 2

# object 死亡的最大时间, 单位(秒), default: 86400
object_dead_max_time = 3600

# 集群号
cluster_id = 1

# Block当前备份数与最大备份数百分比,如果大于这个百分比,就开始复制
replicate_ratio_ = 50

#每个DataServer 主可写块的大小, default: 3
max_write_filecount = 16

#dataserver 与 nameserver 的心跳线程池的大小, default: 2
heart_thread_count = 2

#dataserver 与 nameserver 的心跳工作队列的大小, default: 10
heart_max_queue_size = 10

#block 缺失备份时, 需要等待多长时间才进行复制, 单位(秒), default: 240
repl_max_time = 60

#block进行压缩的比例, block 删除的文件的比例达到这个值时进行压缩
compact_delete_ratio =  15

#block进行压缩时, dataserver的最大负载,超出这个值dataserver,不进行压缩
compact_max_load = 200

# object 清理的时间, 单位(秒), default: 300
object_clear_max_time = 300

#nameserver上出现租约等待时, 阻塞线程最大个数, 这个值最好是工作线程的一半
max_wait_write_lease = 15

#租约删除的最长��间, 单位(小时), default: 1
lease_expired_time = 3

#最大租约超时时间
max_lease_timeout = 3000

#清理租约的阀值, default: 102400
cleanup_lease_threshold = 102400

#创建计划的间隔时间, 单位(秒), default: 30
build_plan_interval = 10

#计划超时时间, 单位(秒), default: 120
run_plan_expire_interval = 120

#创建计划的百分比, 计划数量 = dataserver 数量 * build_plan_ratio
build_plan_ratio = 25

#定时dump统计信息的间隔时间, 单位(微秒), default: 60000000
dump_stat_info_interval = 60000000

#创建计划等待时间, 主要用有很多紧急复制时,单位(秒), default: 2
build_plan_default_wait_time = 2

#负载均衡时block相关的个数(这个参数有点问题, 以后会改成百分比), default: 5
balance_max_diff_block_num = 5

#每次新增Block的个数, default: 3
add_primary_block_count = 3

#存储block桶的个数, default: 32
block_chunk_num = 32

#每个任务处理的预期时间, 单位(微秒), default: 200
task_percent_sec_size = 200

#每个任务队列的最大size
task_max_queue_size = 10000

#同步日志缓冲区slot的大小, 超出这个值会写入磁盘, default: 1
oplog_sync_max_slots_num = 1024

#同步日志线程池的大小, default: 1
oplog_sync_thread_num = 1


启动nameserver
执行scripts目录下的tfs
cd /usr/local/tfs/scripts
./tfs start_ns 
执行正常返回:

 

 查看监听端口:

淘宝TFS分布式文件系统亲测

说明nameserver启动成功。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/f6692bab673fa67b105a8073a1051791.html