ns1 192.168.10.11
ns2 192.168.10.12
ds1 192.168.10.13
ds2 192.168.10.14
vip 192.168.19.10
# svn checkout -r 15 http://code.taobao.org/svn/tb-common-utils/trunk/ tb-common-utils ##最新版本有问题
# echo 'export TBLIB_ROOT="/usr/local/tb_lib"' >> /etc/profile ##生明环境变量,安装库会使用该变量,将来tfs会根椐该变量来调用库
# . /etc/profile ##生效配置
# cd tb-common-utils/
# chmod +x build.sh
# ./build.sh 编译安装
# wget http://googletest.googlecode.com/files/gtest-1.5.0.tar.bz2
# tar xvf gtest-1.5.0.tar.bz2
# cd gtest-1.5.0
# ./configure
# make && make install
# rpm -ivh MySQL-*
# service mysql stop ##安装完毕后mysql会自动启动
# chkconfig mysql off
# cd /usr/lib64/mysql/
# ln -s libmysqlclient.a libmysqlclient.so ##否则编译tfs会报错
# ln -s libmysqlclient_r.a libmysqlclient_r.so
# svn checkout http://code.taobao.org/svn/tfs/tags/release-2.2.11 tfs-2.2.11 ##获取2.2.11版本的
# cd tfs-2.2.11/
# ./build.sh init ##初始化
# ./configure --prefix=/usr/local/tfs --without-tcmalloc
## 如果mysql是编译的添加--with-mysql 选项后面是mysql安装目录bin下的mysql_config
##安装到/usr/local/tfs下,取消tcmalloc这个特性否则会报错
# cp conf/ns.conf /usr/local/tfs/conf/ ##ns1,ns2拷贝ns.conf
# cp conf/{ds.conf,ads.conf} /usr/local/tfs/conf ## ds1,ds2拷贝这两个
# modprobe ext4 ##加载ext4的模块
# yum -y install e4fsprogs e4fsprogs-devel ##安装格式化软件
# mkfs.ext4 /dev/sdb;mkfs.ext4 /dev/sdc;mkfs.ext4 /dev/sdd ##格式化
# mkdir -p /data/{tfs1,tfs2,tfs3}
# mount /dev/sdb /data/tfs1;mount /dev/sdc /data/tfs2;mount /dev/sdd /data/tfs3 ##挂载
# cd /usr/local/tfs
# vim conf/ns.conf
[public]
log_size=1073741824
log_num = 64
log_level=debug
task_max_queue_size = 10240
port = 8108 ##监听端口号,重要!dataserver配置需要
work_dir=/usr/local/tfs ##工作目录,也就是tfs的安装目录
dev_name= eth0 ##网卡设备,我的是eth0
thread_count = 4 ##工作线程
ip_addr = 192.168.10.11 ##如果是ha写vip,如果是主备或单namserver,写主nameserver的ip
[nameserver]
safe_mode_time = 300
ip_addr_list = 192.168.10.11|192.168.10.12 ##前面是主nameserver的ip后是备nameserver的
group_mask = 255.255.255.255
block_max_size = 83886080
max_replication = 2 ##最大复制份数,如果你就一个ds,则为1
min_replication = 2 ##最小复制份数
use_capacity_ratio = 98
block_max_use_ratio = 98
heart_interval = 2
object_dead_max_time = 3600
cluster_id = 1
replicate_ratio_ = 50
max_write_filecount = 16
heart_thread_count = 2
heart_max_queue_size = 10
repl_max_time = 60
compact_delete_ratio = 15
compact_max_load = 200
object_dead_max_time = 86400
object_clear_max_time = 300
max_wait_write_lease = 15
lease_expired_time = 3
max_lease_timeout = 3000
cleanup_lease_threshold = 102400
build_plan_interval = 10
run_plan_expire_interval = 120
build_plan_ratio = 25
dump_stat_info_interval = 60000000
build_plan_default_wait_time = 2
balance_max_diff_block_num = 5
add_primary_block_count = 3
block_chunk_num = 32
task_percent_sec_size = 200
task_max_queue_size = 10000
oplog_sync_max_slots_num = 1024
oplog_sync_thread_num = 1
[public]
log_size=1073741824
log_num = 64
log_level=error
task_max_queue_size = 10240
port = 9998 #设置dataserver监听端口号
work_dir = /usr/local/tfs #设置tfs的实际安装目录
dev_name= eth0 #设置网卡设备
thread_count = 4 #设置dataserver工作线程池,根据CPU核数量*2定
ip_addr = 192.168.10.13 #设置当前dataserver的IP地址,只有这与ds2不同
[dataserver]
ip_addr = 192.168.10.11 #设置nameserver的地址,如果是ha为vip否则是主ns IP
ip_addr_list = 192.168.10.11|192.168.10.12 #设置需要通讯的主备nameserver的Real IP列表,与ns.conf配置项一致
port = 8108 #设置nameserver的监听端口,与ns.conf配置项一致
heart_interval = 2
check_interval = 2
replicate_threadcount = 2
block_max_size = 75497472 #块最大尺寸,单位(字节),根据实际情况修改,这里使用默认值:75497472,即64M。或83886080(80m)
dump_visit_stat_interval = 60
backup_type = 0 #备件类型, 1: tfs, 2: nfs, 0:不备份
backup_path = /data/tfs #备件路径
max_data_file_nums = 100 #最大datafile值, default: 50,这里改为100;
mount_name = /data/tfs #设置DataServer
mount_maxsize = 1782579200 #mount 时磁盘的大小
base_filesystem_type = 1 #文件系统类型: 0: no initialize, 1: ext4, 2: ext3 posix fallocate, 3: ext3 ftruncate
superblock_reserve = 0
avg_file_size = 40960
mainblock_size = 75497472 #主块的大小, 单位(字节),不能超过block_max_size设置,这里改为:75497472;或83886080(80m)
extblock_size = 419430
block_ratio = 0.5
hash_slot_ratio = 0.5
ds_thread_count = 4
vim ./conf/ads.conf
[public]
#log file size default 1GB
log_size=1073741824
#log file num default 64
log_num = 64
#log file level default debug
log_level=debug
#main queue size default 10240
task_max_queue_size = 10240
#listen port
port = 12000
#work directoy
work_dir=/usr/local/tfs
#device name
ev_name= eth0
#work thread count default 4
thread_count = 4
ip_addr = 192.168.10.13 ##只有这与ds2不同
[adminserver]
# check interval
check_interval = 5
# check count
check_count = 5
# warn threshhold
warn_dead_count = 3
# wait time before kill ds
ds_fkill_waittime = 15
# ds start base cmd
ds_script = /usr/local/tfs/bin/dataserver -f /usr/local/tfs/conf/ds.conf -d
ds_index_list = 1,2,3
[nameserver]
ip_addr = 192.168.10.11
port = 8108
[dataserver]
port = 9998
lock_file = /usr/local/tfs/logs/dataserver
mount_name = /usr/local/tfs/
# /usr/local/tfs/scripts/tfs start_ns ##关闭是stop_ns
ds1上存储区预分配
# /usr/local/tfs/scripts/stfs format 1-3 ##如果有successful字样代表成功
ds2上存储区预分配
# /usr/local/tfs/scripts/stfs format 1-3
ds1,ds2上启动dataserver
# /usr/local/tfs/scripts/tfs admin_ds ##启动了ds
# /usr/local/tfs/scripts/tfs check_ds ##查看ds运行情况,如下代表正常
dataserver [ 1 2 3 ] is running
# ./scripts/tfs stop_admin ##关闭ds
# ./scripts/tfs stop_ds_all ##关闭ds
# /usr/local/tfs/bin/ds_client -d 192.168.10.13:9998 ##链接dsserver
DataServer> list_block 1 ##是数字1,查看block,如果没类似如下的显示,可能是ds启动不正常
get message type: 32
Logic Block Nums :9
496 497 498 499 500 502 506 508 515
Logic Block Nums :9
DataServer> quit
# /usr/local/tfs/bin/tfstool -s 192.168.10.11:8108 ##连接到namserver,上传文件测试
TFS> put /etc/passwd ##上传/etc/passwd文件
put /etc/passwd => T19RETByJT1RCvBVdK success. ##出现这个代表成功
TFS> get T19RETByJT1RCvBVdK passwd.1
fetch T19RETByJT1RCvBVdK => passwd.1 success ##下载成功
TFS>quit ##退出,打开查看该文件
# /usr/local/tfs/bin/tfstool -s 192.168.10.12:8108 ##连接到备用namserver,下载测试
TFS> get T19RETByJT1RCvBVdK passwd.bak
fetch T19RETByJT1RCvBVdK => passwd.bak success
六.部署namserver Ha