TFS(Taobao File System)是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,主要针对海量的非结构化数据,它构筑在普通的Linux机器集群上,可为外部提供高可靠和高并发的存储访问。TFS为淘宝提供海量小文件存储,通常文件大小不超过1M,满足了淘宝对小文件存储的需求,被广泛地应用 在淘宝各项应用中。它采用了HA架构和平滑扩容,保证了整个文件系统的可用性和扩展性。同时扁平化的数据组织结构,可将文件名映射到文件的物理地址,简化了文件的访问流程,一定程度上为TFS提供了良好的读写性能。
上面说有太美好了,实际使用起来还是挺周折的。TFS有三个主要大版本:1.x,2.0.x,2.2.x,我先后试用了多个版本,认为2.0.4相对来说 比较稳定,其它版本(2.2.8,2.2.10)问题很多。这话是2012年11月说的,如果以后TFS的新版本稳定了另当别论。
TFS文件系统的安装说明
— 注:本文本操作系统是RedHat5.6
—- 第1步 准备工作—-
检查服务器是否能正常DNS解析,目的是正常解析域名,可以进行yum更新。
如果你的服务器DNS解析正常,可跳过此步。
CentOS修改DNS方法:(修改后可即时生效,重启后同样有效)
修改对应网卡的DNS的配置文件:
#vi/etc/resolv.conf
修改以下内容:
nameserver8.8.8.8#google域名服务器 nameserver8.8.4.4#google域名服务器
—- 第2步 准备工作—-
RedHat5.6使用centos yum源:由于RedHat的yum在线更新是收费的,我们的RedHat没有注册,不能在线更新下载rpm包。需将RedHat的yum卸载后,重启安装Centos的yum,再配置其他yum源。
如果你的服务器yum可正常工作,可跳过此步。
具体操作请看: RedHat5.6、6.0使用CentOS yum源
—- 第3步 准备工作—-
先更新yum:
yumupdate
到这里yum已可以正常工作。后面都需要使用的yum。
—- 第4步 准备工作—-
RedHat5.x和Centos 5.x使用gcc版本是4.1.2,RedHat6.x和Centos 6.x使用gcc版本是4.4.6,对编译的语法检查更严格,编译TFS给报错。
淘宝的tfs官网上要求使用gcc版本是4.1.2。
确认gcc版本:
gcc-v
结果:以上所有机器返回结果 :gcc version 4.1.2 20080704 (Red Hat 4.1.2-50)
如果你使用RedHat6.x和Centos 6.x,就要重新安装低版本的gcc,g++。
—- 第5步 升级安装高版本mysql—-
TFS要求MySql版本>= 5.1.40,不然编译时报错:checking if MySQL version is >= 5.1.40… no
但我的CentOS 5的yum源中***只有 5.0.95版本,所有使用这个yum源在线安装***也只能安装5.0.95,换一个yum来解决问题。
1.安装配置yum源:
wgethttp://centos.ustc.edu.cn/epel/5/x86_64/epel-release-5-4.noarch.rpm wgethttp://rpms.famillecollet.com/enterprise/5/remi/x86_64/remi-release-5-8.el5.remi.noarch.rpm rpm-ivh*.rpm
2.向以下3个文件尾部追加一个文本(可以不做):
echo‘priority=1′>>/etc/yum.repos.d/remi.repo echo‘priority=1′>>/etc/yum.repos.d/epel-testing.repo echo‘priority=1′>>/etc/yum.repos.d/epel.repo
3.检查mysql 是否有可升级版本。发现有版本可以升级到mysql5.5.11。
yum–enablerepo=remilistmysql
4.检查是否有可升级版本。发现有版本可以升级到mysql5.5.11。
yum–enablerepo=remilistmysql5.删除操作系统自带的低版本的mysql yumremovemysql
6.通过新yum源安装高版本的mysql
yum-y–enablerepo=remiinstallmysqlmysql-servermysql.x86_64mysql-devel.x86_64
—- 第6步 安装支持包—-
需要确保安装了automake autoconfig 和 libtool,一般情况下已安装。
auotmake 1.4以上版本需要安装libuuid-devel,zlib-devel,mysql-devel三个开发包验证automake是否安装:
rpm-qa|grepautomake
结果:已安装
验证autoconfig是否安装:
/usr/bin/autoconf-V
结果:已安装
查看以安装的rpm包:rpm -qa|grep 包名:
rpm-qa|greplibuuid rpm-qa|grepzlib-devel rpm-qa|grepmysql-devel
如果你使用RedHat5.x和Centos 5.x会找不到libuuid-devel包,请看下面。
- RedHat5.x和Centos 5.x 安装: yum install uuidd
- RedHat6.x和Centos 6.x 安装: yum install libuuid-devel
- 安装其它支持包: yum install libtool zlib-devel
升级autoconf (不升级也可以):
[root@locatfslocal]#whereisautoconf [root@locatfslocal]#rpm-qf/usr/bin/autoconf [root@locatfslocal]#/usr/bin/autoconf-V [root@locatfslocal]#rpm-e–nodepsautoconf-2.59-12 [root@locatfslocal]#wgethttp://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz [root@locatfslocal]#tarzxvfautoconf-latest.tar.gz [root@locatfslocal]#cdautoconf-2.69 [root@locatfslocal]#./configure–prefix=/usr [root@locatfslocal]#make [root@locatfslocal]#makeinstall [root@locatfslocal]#/usr/bin/autoconf-V#查看是否安装成功
下面的readline包系统自带了,ncurses包系统默认没有,我也没有安装,你安不安自已定吧。
[root@locatfslocal]#yuminstallreadline-develreadline [root@locatfslocal]#yuminstallncurses-devel.x86_64ncurses.x86_64
—- 第7步 安装ext4格式—-
安装ext4格式工具:
[root@locatfslocal]#yuminstalle4fsprogse4fsprogs-devel
加载ext4模块,让系统支持ext4文件系统
[root@locatfslocal]#modprobeext4
说明:
1、TSF使用ext3文件系统,可以工作。
2、TSF的数据盘,只使用一个文件夹,可以工作,研究时不能分区格盘时可以这么做。
—- 第8步 安装tb-common-utils—-
tb-common-utils是淘宝开发使用的一个公共库。tbsys是对操作系统服务的封装,tbnet则提供了网络框架。 tbnet和tbsys被作为tb-common-utils被开源了,可以访问:http://code.taobao.org/trac/tb-common-utils/wiki。
TFS依赖于底层开发包tbnet。tb-common-utils里面含有tbsys和tbnet。
首先编译安装tblib(tb-common-utils),这里我安装在和tfs同一个路径。
gtest库是单元测试框架,下面安装安装gtest:
自行上网下载gtest,新建一个下载目录,并进入这个目录。
wgethttp://googletest.googlecode.com/files/gtest-1.6.0.zip [root@locatfslocal]#unzipgtest-1.6.0.zip [root@locatfslocal]#cdgtest-1.6.0 [root@locatfslocal]#./configure [root@locatfslocal]#make [root@locatfslocal]#cdmake/ [root@locatfslocal]#make [root@locatfslocal]#./sample1_unittest 安装tb-common-utils
新建一个下载目录,并进入这个目录。下载源码:
[root@locatfslocal]#svncheckouthttp://code.taobao.org/svn/tb-common-utils/trunk/tb-common-utils
编译和安装tbnet, tbsys库:
指定环境变量 TBLIB_ROOT为需要安装的目录。这个环境变量在后续tfs的编译安装中仍旧会被使用到. 比如要安装到当前用户的lib目录下, 则指定 export,
TBLIB_ROOT=”/home/xxxx/lib”
ps:建议将这行命令直接写入~/.bash_profile,然后执行“. ~/.bash_profile”
修改:
[root@locatfslocal]#vi/etc/profile
添加:(计划安装在/usr/local/tb/lib目录)
exportTBLIB_ROOT=/usr/local/tb/lib
生效:
[root@locatfslocal]#source/etc/profile
进入tb-common-utils文件夹, 执行build.sh进行安装。
[root@locatfslocal]#cdtb-common-utils/ [root@locatfslocal]#chmod+x*.sh [root@locatfslocal]#./build.sh
安装完成后,在TBLIB_ROOT表示的目录(/usr/local/tb/lib),应该可以看到include、lib 两个目录。
—- 第9步 编译安装TFS—-
编译安装tfs (安装到 /usr/local/tfs目录)
[root@locatfslocal]#svncheckouthttp://code.taobao.org/svn/tfs/tags/release-2.2.10tfs-2.2.10(这个编译成功了) [root@locatfslocal]#svncheckouthttp://code.taobao.org/svn/tfs/trunk/tfs(这个编译不成功)
进入 tfs 目录:
[root@locatfslocal]#cdtfs/ [root@locatfslocal]#chmod+x*.sh [root@locatfslocal]#./build.shinit [root@locatfslocal]#./configure–prefix=/usr/local/tfs–without-tcmalloc [root@locatfslocal]#make [root@locatfslocal]#makeinstall #如果提示找不到/usr/local/tfs/scripts/cs_sync #把tfs下的cs_sync.sh复制成cs_sync执行:cp-a./scripts/cs_sync.sh/root/tfs_bin/scripts/cs_sync如果出错:checkingfortc_cfreein-ltcmalloc…no
这是因为后面的tfs版本使用tcmalloc库了。
可以在config时加–without-tcmalloc参数,重新编译,或者装tcmalloc库。我试过前者,是可以编译的。
TCMalloc(Thread-Caching Malloc)是google开发的开源工具。与标准的glibc库的malloc相比,TCMalloc在内存的分配上效率和速度要高,可以在很大程度上提高服务器在高并发情况下的性能,降低系统负载。这个模块可以用来让MySQL在高并发下内存占用更加稳定。(参考博客)
make完后,如果有类似以下信息,表示编译不成功,如果没有报错,说明安装成功。
我make成功了,make install也成功了。到这里本文结束了。
make[3]:***[read_block_prefix]Error1 make[3]:Leavingdirectory`/tmp/tfs/src/tools/dataserver’ make[2]:***[all-recursive]Error1 make[2]:Leavingdirectory`/tmp/tfs/src/tools’ make[1]:***[all-recursive]Error1 make[1]:Leavingdirectory`/tmp/tfs/src’ make:***[all-recursive]Error1
官网:http://code.taobao.org/p/tfs/wiki/index/
转载请注明:IT运维空间 » 运维技术 » 淘宝分布式文件系统TFS安装配置手册:系统安装
发表评论