热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

啊里云分布式文件系统TFS安装配置手册:系统安装

TFS(TaobaoFileSystem)是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,主要针对海量的非结构化数据,它构筑在普通的Linux机器集群上,可为外部提供高可靠和高并发的存储访问。TFS为淘宝提供海量小文件存储,通常文件大小不超过1M,满足了淘宝对小文件存储的需求,被广泛地应用在淘宝各项应用中。它采用了HA架构和平滑扩容,保证了整个文件系统的可用性和扩展性。同

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的配置文件:

  1. # vi /etc/resolv.conf

修改以下内容:

  1. nameserver 8.8.8.8 #google域名服务器  

  2. nameserver 8.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:

  1. yum update

到这里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版本:

  1. 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源:

  1. wget http://centos.ustc.edu.cn/epel/5/x86_64/epel-release-5-4.noarch.rpm

  2. wget http://rpms.famillecollet.com/enterprise/5/remi/x86_64/remi-release-5-8.el5.remi.noarch.rpm

  3. rpm -ivh *.rpm

2.向以下3个文件尾部追加一个文本(可以不做):

  1. echo ‘priority=1>> /etc/yum.repos.d/remi.repo

  2. echo ‘priority=1>> /etc/yum.repos.d/epel-testing.repo

  3. echo ‘priority=1>> /etc/yum.repos.d/epel.repo

3.检查mysql 是否有可升级版本。发现有版本可以升级到mysql5.5.11。

  1. yum ?enablerepo=remi list mysql

4.检查是否有可升级版本。发现有版本可以升级到mysql5.5.11。

  1. yum ?enablerepo=remi list mysql5.删除操作系统自带的低版本的mysql

  2. yum remove mysql

6.通过新yum源安装高版本的mysql

  1. yum -y ?enablerepo=remi install mysql mysql-server mysql.x86_64  mysql-devel.x86_64

—- 第6步 安装支持包—-

需要确保安装了automake autoconfig 和 libtool,一般情况下已安装。

auotmake 1.4以上版本需要安装libuuid-devel,zlib-devel,mysql-devel三个开发包验证automake是否安装:

  1. rpm -qa |grep automake      

结果:已安装

验证autoconfig是否安装:

  1. /usr/bin/autoconf -V  

结果:已安装

查看以安装的rpm包:rpm -qa|grep 包名:

  1. rpm -qa|grep libuuid

  2. rpm -qa|grep zlib-devel

  3. rpm -qa|grep mysql-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 (不升级也可以):

  1. [root@locatfs local]# whereis autoconf

  2. [root@locatfs local]# rpm -qf /usr/bin/autoconf

  3. [root@locatfs local]# /usr/bin/autoconf -V

  4. [root@locatfs local]# rpm -e ?nodeps autoconf-2.59-12

  5. [root@locatfs local]# wget http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz

  6. [root@locatfs local]# tar zxvf autoconf-latest.tar.gz

  7. [root@locatfs local]# cd autoconf-2.69

  8. [root@locatfs local]# ./configure  ?prefix=/usr

  9. [root@locatfs local]# make

  10. [root@locatfs local]# make install

  11. [root@locatfs local]# /usr/bin/autoconf -V   #查看是否安装成功

下面的readline包系统自带了,ncurses包系统默认没有,我也没有安装,你安不安自已定吧。

  1. [root@locatfs local]# yum install readline-devel readline

  2. [root@locatfs local]# yum install ncurses-devel.x86_64  ncurses.x86_64

—- 第7步 安装ext4格式—-

安装ext4格式工具:

  1. [root@locatfs local]# yum install  e4fsprogs e4fsprogs-devel

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

  1. [root@locatfs local]#  modprobe ext4

说明:

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,新建一个下载目录,并进入这个目录。

  1. wget http://googletest.googlecode.com/files/gtest-1.6.0.zip

  2. [root@locatfs local]# unzip gtest-1.6.0.zip

  3. [root@locatfs local]# cd gtest-1.6.0

  4. [root@locatfs local]# ./configure

  5. [root@locatfs local]# make

  6. [root@locatfs local]# cd make/

  7. [root@locatfs local]# make

  8. [root@locatfs local]# ./sample1_unittest

  9. 安装tb-common-utils

新建一个下载目录,并进入这个目录。下载源码:

  1. [root@locatfs local]# svn checkout http://code.taobao.org/svn/tb-common-utils/trunk/ tb-common-utils

编译和安装tbnet, tbsys库:

指定环境变量 TBLIB_ROOT为需要安装的目录。这个环境变量在后续tfs的编译安装中仍旧会被使用到. 比如要安装到当前用户的lib目录下, 则指定 export,

  1. TBLIB_ROOT=”/home/xxxx/lib”

ps:建议将这行命令直接写入~/.bash_profile,然后执行“. ~/.bash_profile”

修改:

  1. [root@locatfs local]# vi /etc/profile

添加:(计划安装在/usr/local/tb/lib目录)

  1. export TBLIB_ROOT=/usr/local/tb/lib

生效:

  1. [root@locatfs local]# source /etc/profile

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

  1. [root@locatfs local]# cd tb-common-utils/

  2. [root@locatfs local]# chmod +x *.sh

  3. [root@locatfs local]# ./build.sh

安装完成后,在TBLIB_ROOT表示的目录(/usr/local/tb/lib),应该可以看到include、lib 两个目录。

—- 第9步 编译安装TFS—-

编译安装tfs   (安装到 /usr/local/tfs目录)

  1. [root@locatfs local]# svn checkout http://code.taobao.org/svn/tfs/tags/release-2.2.10 tfs-2.2.10 (这个编译成功了)

  2. [root@locatfs local]# svn checkout http://code.taobao.org/svn/tfs/trunk/ tfs (这个编译不成功)

进入 tfs 目录:

  1. [root@locatfs local]# cd tfs/

  2. [root@locatfs local]# chmod +x *.sh

  3. [root@locatfs local]# ./build.sh  init

  4. [root@locatfs local]# ./configure ?prefix=/usr/local/tfs ?without-tcmalloc

  5. [root@locatfs local]# make

  6. [root@locatfs local]# make install

  7. #如果提示找不到/usr/local/tfs/scripts/cs_sync

  8. # 把tfs下的cs_sync.sh复制成cs_sync 执行:cp -a ./scripts/cs_sync.sh /root/tfs_bin/scripts/cs_sync如果出错:checking for tc_cfree in -ltcmalloc… no

这是因为后面的tfs版本使用tcmalloc库了。

可以在config时加?without-tcmalloc参数,重新编译,或者装tcmalloc库。我试过前者,是可以编译的。

TCMalloc(Thread-Caching Malloc)是google开发的开源工具。与标准的glibc库的malloc相比,TCMalloc在内存的分配上效率和速度要高,可以在很大程度上提高服务器在高并发情况下的性能,降低系统负载。这个模块可以用来让MySQL在高并发下内存占用更加稳定。(参考博客)

make完后,如果有类似以下信息,表示编译不成功,如果没有报错,说明安装成功。

我make成功了,make install也成功了。到这里本文结束了。

  1. make[3]: *** [read_block_prefix] Error 1

  2. make[3]: Leaving directory `/tmp/tfs/src/tools/dataserver’

  3. make[2]: *** [all-recursive] Error 1

  4. make[2]: Leaving directory `/tmp/tfs/src/tools’

  5. make[1]: *** [all-recursive] Error 1

  6. make[1]: Leaving directory `/tmp/tfs/src’

  7. make: *** [all-recursive] Error 1

官网:http://code.taobao.org/p/tfs/wiki/index/



推荐阅读
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
  • CentOS7.8下编译muduo库找不到Boost库报错的解决方法
    本文介绍了在CentOS7.8下编译muduo库时出现找不到Boost库报错的问题,并提供了解决方法。文章详细介绍了从Github上下载muduo和muduo-tutorial源代码的步骤,并指导如何编译muduo库。最后,作者提供了陈硕老师的Github链接和muduo库的简介。 ... [详细]
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
  • 像跟踪分布式服务调用那样跟踪Go函数调用链 | Gopher Daily (2020.12.07) ʕ◔ϖ◔ʔ
    每日一谚:“Acacheisjustamemoryleakyouhaven’tmetyet.”—Mr.RogersGo技术专栏“改善Go语⾔编程质量的50个有效实践” ... [详细]
  • 对于一般的扩展包,我们一般直接pipinstallxxx即可安装,但是unrar直接安装后,发现并不能通过Python程序实现解压的功能& ... [详细]
  • MySQL5.6.40在CentOS764下安装过程 ... [详细]
author-avatar
benpk2702933054
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有