FastDFS 分布式文件系统部署实战及基本使用

                                           作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

  FastDFS是一个开源的高性能分布式文件系统。它的主要功能包括:文件存储,文件同步和文件访问(文件上传和文件下载),它可以解决高容量和负载平衡问题。FastDFS应满足基于照片共享站点和视频共享站点等文件服务的网站的要求。它的应用场景非常适合存储大于4k小于500M左右的音频,图片,APP安装包等二进制文件。FastDFS典型用户有UC,支付宝,京东,飞信,58同城,51CTO等等。GitHub地址为:https://github.com/happyfish100/fastdfs

一.FastDFS基础知识

1>.什么是FastDFS

  FastDFS是一个开源的轻量级分布式文件系统。它解决了大数据量存储和负载均衡等问题。特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务,如相册网站、视频网站等等。在UC基于FastDFS开发向用户提供了:网盘,社区,广告和应用下载等业务的存储服务。

  FastDFS是一款开源的轻量级分布式文件系统纯C实现,支持Linux、FreeBSD等UNIX系统类google FS,不是通用的文件系统,只能通过专有API访问,目前提供了C、Java和PHP API为互联网应用量身定做,解决大容量文件存储问题,追求高性能和高扩展性FastDFS可以看做是基于文件的key value pair存储系统,称作分布式文件存储服务更为合适。

2>.FastDFS的特性

  2.1>.文件不分块存储,上传的文件和OS文件系统中的文件一一对应;

  2.2>.支持相同内容的文件只保存一份,节约磁盘空间;

  2.3>.下载文件支持HTTP协议,可以使用内置Web Server,也可以和其他Web Server配合使用;

  2.4>.支持在线扩容;

  2.5>.支持主从文件;

  2.6>.存储服务器上可以保存文件属性(meta-data)V2.0网络通信采用libevent,支持大并发访问,整体性能更好;

3>.FastDFS架构

FastDFS相关概念

FastDFS服务端有三个角色:跟踪服务器(tracker server)、存储服务器(storage server)和客户端(client)。

tracker server:跟踪服务器,主要做调度工作,起负载均衡的作用。在内存中记录集群中所有存储组和存储服务器的状态信息,是客户端和数据服务器交互的枢纽。相比GFS中的master更为精简,不记录文件索引信息,占用的内存量很少。

Tracker是FastDFS的协调者,负责管理所有的storage server和group,每个storage在启动后会连接Tracker,告知自己所属的group等信息,并保持周期性的心跳,tracker根据storage的心跳信息,建立group==>[storage server list]的映射表。

Tracker需要管理的元信息很少,会全部存储在内存中;另外tracker上的元信息都是由storage汇报的信息生成的,本身不需要持久化任何数据,这样使得tracker非常容易扩展,直接增加tracker机器即可扩展为tracker cluster来服务,cluster里每个tracker之间是完全对等的,所有的tracker都接受stroage的心跳信息,生成元数据信息来提供读写服务。

storage server:存储服务器(又称:存储节点或数据服务器),文件和文件属性(meta data)都保存到存储服务器上。Storage server直接利用OS的文件系统调用管理文件。

Storage server(后简称storage)以组(卷,group或volume)为单位组织,一个group内包含多台storage机器,数据互为备份,存储空间以group内容量最小的storage为准,所以建议group内的多个storage尽量配置相同,以免造成存储空间的浪费。

以group为单位组织存储能方便的进行应用隔离、负载均衡、副本数定制(group内storage server数量即为该group的副本数),比如将不同应用数据存到不同的group就能隔离应用数据,同时还可根据应用的访问特性来将应用分配到不同的group来做负载均衡;缺点是group的容量受单机存储容量的限制,同时当group内有机器坏掉时,数据恢复只能依赖group内地其他机器,使得恢复时间会很长。

group内每个storage的存储依赖于本地文件系统,storage可配置多个数据存储目录,比如有10块磁盘,分别挂载在/data/disk1-/data/disk10,则可将这10个目录都配置为storage的数据存储目录。

storage接受到写文件请求时,会根据配置好的规则(后面会介绍),选择其中一个存储目录来存储文件。为了避免单个目录下的文件数太多,在storage第一次启动时,会在每个数据存储目录里创建2级子目录,每级256个,总共65536个文件,新写的文件会以hash的方式被路由到其中某个子目录下,然后将文件数据直接作为一个本地文件存储到该目录中。

client:客户端,作为业务请求的发起方,通过专有接口,使用TCP/IP协议与跟踪器服务器或存储节点进行数据交互。FastDFS向使用者提供基本文件访问接口,比如upload、download、append、delete等,以客户端库的方式提供给用户使用。

另外两个概念:

group :组, 也可称为卷。 同组内服务器上的文件是完全相同的 ,同一组内的storage server之间是对等的, 文件上传、 删除等操作可以在任意一台storage server上进行 。

meta data :文件相关属性,键值对( Key Value Pair) 方式,如:width=,heigth= 。

FastDFS相关概念

FastDFS有两个角色:跟踪器和存储。
跟踪服务器(Tracker)负责文件访问的调度和负载平衡。在内存中记录集群中group(同一个group的数据是相同的,和raid1原理很相似,group是支持在线添加的,各个group之间并不互相通信!它们只和追踪服务器通信!)和storage server的状态信息,是连接client和storage server的枢纽。因为相关信息全部在内存中,Tracker server的性能非常高,一个较大的集群(比如上百个group)中有3台就足够了。

  存储服务器(Storage)负责存储文件及其功能是文件管理,包括:文件存储,文件同步,提供文件访问接口。它还管理元数据(meta data),这些元数据表示为文件的键值对。例如:width = ,键为“width”,值为“”。 跟踪器和存储器包含一个或多个服务器。可以随时向集群中添加或删除跟踪器或存储集群中的服务器,而不会影响在线服务。跟踪器集群中的服务器是对等的。 由文件卷/组组织的storarge服务器以获得高容量。存储系统包含一个或多个卷,这些卷的文件在这些卷中是独立的。整个存储系统的容量等于所有容量的总和。文件卷包含一个或多个存储服务器,这些服务器的文件在这些服务器中相同。文件卷中的服务器相互备份,所有这些服务器都是负载平衡的。将存储服务器添加到卷时,此卷中已存在的文件会自动复制到此新服务器,完成此复制后,系统将在线将此服务器切换为提供存储服务。 当整个存储容量不足时,您可以添加一个或多个卷以扩展存储容量。为此,您需要添加一个或多个存储服务器。 文件的标识由两部分组成:卷名和文件名。 Tracker相当于FastDFS的大脑,不论是上传还是下载都是通过tracker来分配资源;客户端一般可以使用ngnix等静态服务器来调用或者做一部分的缓存;存储服务器内部分为卷(或者叫做组),卷于卷之间是平行的关系,可以根据资源的使用情况随时增加,卷内服务器文件相互同步备份,以达到容灾的目的。

4>.FastDFS上传文件

  首先客户端请求Tracker服务获取到存储服务器的ip地址和端口,然后客户端根据返回的IP地址和端口号请求上传文件,存储服务器接收到请求后生产文件,并且将文件内容写入磁盘并返回给客户端file_id、路径信息、文件名等信息,客户端保存相关信息上传完毕。

内部机制如下:

、选择tracker server

当集群中不止一个tracker server时,由于tracker之间是完全对等的关系,客户端在upload文件时可以任意选择一个trakcer。
选择存储的group
当tracker接收到upload file的请求时,会为该文件分配一个可以存储该文件的group,支持如下选择group的规则: 、Round robin,所有的group间轮询
、Specified group,指定某一个确定的group
、Load balance,剩余存储空间多多group优先
、选择storage server 当选定group后,tracker会在group内选择一个storage server给客户端,支持如下选择storage的规则: 、Round robin,在group内的所有storage间轮询
、First server ordered by ip,按ip排序
、First server ordered by priority,按优先级排序(优先级在storage上配置)
、选择storage path 当分配好storage server后,客户端将向storage发送写文件请求,storage将会为文件分配一个数据存储目录,支持如下规则: 、Round robin,多个存储目录间轮询
、剩余存储空间最多的优先
、生成Fileid 选定存储目录之后,storage会为文件生一个Fileid,由storage server ip、文件创建时间、文件大小、文件crc32和一个随机数拼接而成,然后将这个二进制串进行base64编码,转换为可打印的字符串。
选择两级目录
当选定存储目录之后,storage会为文件分配一个fileid,每个存储目录下有两级256*256的子目录,storage会按文件fileid进行两次hash(猜测),路由到其中一个子目录,然后将文件以fileid为文件名存储到该子目录下。 、生成文件名 当文件存储到某个子目录后,即认为该文件存储成功,接下来会为该文件生成一个文件名,文件名由group、存储目录、两级子目录、fileid、文件后缀名(由客户端指定,主要用于区分文件类型)拼接而成。

FastDFS内部机制详解

5>.FastDFS下载文件

  客户端带上文件名信息请求Tracker服务获取到存储服务器的ip地址和端口,然后客户端根据返回的IP地址和端口号请求下载文件,存储服务器接收到请求后返回文件给客户端。

跟upload file一样,在download file时客户端可以选择任意tracker server。tracker发送download请求给某个tracker,必须带上文件名信息,tracke从文件名中解析出文件的group、大小、创建时间等信息,然后为该请求选择一个storage用来服务读请求。由于group内的文件同步时在后台异步进行的,所以有可能出现在读到时候,文件还没有同步到某些storage server上,为了尽量避免访问到这样的storage,tracker按照如下规则选择group内可读的storage。

、该文件上传到的源头storage - 源头storage只要存活着,肯定包含这个文件,源头的地址被编码在文件名中。
、文件创建时间戳==storage被同步到的时间戳 且(当前时间-文件创建时间戳) > 文件同步最大时间(如5分钟) - 文件创建后,认为经过最大同步时间后,肯定已经同步到其他storage了。
、文件创建时间戳 < storage被同步到的时间戳。 - 同步时间戳之前的文件确定已经同步了
、(当前时间-文件创建时间戳) > 同步延迟阀值(如一天)。 - 经过同步延迟阈值时间,认为文件肯定已经同步了。

FastDFS下载内部机制详解

6>.精巧的文件ID-FID

  说到下载就不得不提文件索引(又称:FID)的精巧设计了。文件索引结构如下图,是客户端上传文件后存储服务器返回给客户端,用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。

组名:文件上传后所在的存储组名称,在文件上传成功后有存储服务器返回,需要客户端自行保存。

虚拟磁盘路径:存储服务器配置的虚拟路径,与磁盘选项store_path*对应。

数据两级目录:存储服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。

文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。

7>.快速定位文件

知道FastDFS FID的组成后,我们来看看FastDFS是如何通过这个精巧的FID定位到需要访问的文件。

、通过组名tracker能够很快的定位到客户端需要访问的存储服务器组,并将选择合适的存储服务器提供客户端访问;

、存储服务器根据“文件存储虚拟磁盘路径”和“数据文件两级目录”可以很快定位到文件所在目录,并根据文件名找到客户端需要访问的文件。

  以上信息引用自:https://www.cnblogs.com/ityouknow/p/8240976.html

二.安装libfastcommon类库(安装FastDFS必须先安装libfastcommon类库,否则会导致报错)

1>.查看happyfish100/libfastcommon地址

2>.下载libfastcommon安装包

[root@node101 ~]# yum -y install gcc gcc-c++ libstdc++-devel pcre-devel zlib-devel wget make
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.jdcloud.com
* extras: mirror.jdcloud.com
* updates: mirror.jdcloud.com
base | 3.6 kB ::
extras | 3.4 kB ::
myglusterfs | 2.9 kB ::
mysql-connectors-community | 2.5 kB ::
mysql-tools-community | 2.5 kB ::
mysql80-community | 2.5 kB ::
updates | 3.4 kB ::
Package gcc-4.8.-.el7.x86_64 already installed and latest version
Package wget-1.14-.el7.x86_64 already installed and latest version
Package :make-3.82-.el7.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package gcc-c++.x86_64 :4.8.-.el7 will be installed
---> Package libstdc++-devel.x86_64 :4.8.-.el7 will be installed
---> Package pcre-devel.x86_64 :8.32-.el7 will be installed
---> Package zlib-devel.x86_64 :1.2.-.el7 will be installed
--> Finished Dependency Resolution Dependencies Resolved ===================================================================================================================================================================================================================
Package Arch Version Repository Size
===================================================================================================================================================================================================================
Installing:
gcc-c++ x86_64 4.8.-.el7 base 7.2 M
libstdc++-devel x86_64 4.8.-.el7 base 1.5 M
pcre-devel x86_64 8.32-.el7 base k
zlib-devel x86_64 1.2.-.el7 base k Transaction Summary
===================================================================================================================================================================================================================
Install Packages Total download size: 9.2 M
Installed size: M
Downloading packages:
(/): libstdc++-devel-4.8.-.el7.x86_64.rpm | 1.5 MB ::
(/): zlib-devel-1.2.-.el7.x86_64.rpm | kB ::
(/): pcre-devel-8.32-.el7.x86_64.rpm | kB ::
(/): gcc-c++-4.8.-.el7.x86_64.rpm | 7.2 MB ::
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total kB/s | 9.2 MB ::
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : libstdc++-devel-4.8.-.el7.x86_64 /
Installing : gcc-c++-4.8.-.el7.x86_64 /
Installing : zlib-devel-1.2.-.el7.x86_64 /
Installing : pcre-devel-8.32-.el7.x86_64 /
Verifying : gcc-c++-4.8.-.el7.x86_64 /
Verifying : pcre-devel-8.32-.el7.x86_64 /
Verifying : zlib-devel-1.2.-.el7.x86_64 /
Verifying : libstdc++-devel-4.8.-.el7.x86_64 / Installed:
gcc-c++.x86_64 :4.8.-.el7 libstdc++-devel.x86_64 :4.8.-.el7 pcre-devel.x86_64 :8.32-.el7 zlib-devel.x86_64 :1.2.-.el7 Complete!
[root@node101 ~]#

[root@node101 ~]# yum -y install gcc gcc-c++ libstdc++-devel pcre-devel zlib-devel wget make          #安装依赖软件

[root@node101 ~]# wget https://github.com/happyfish100/libfastcommon/archive/V1.0.39.tar.gz
---- ::-- https://github.com/happyfish100/libfastcommon/archive/V1.0.39.tar.gz
Resolving github.com (github.com)... 52.74.223.119, 13.229.188.59, 13.250.177.223
Connecting to github.com (github.com)|52.74.223.119|:... connected.
HTTP request sent, awaiting response... Found
Location: https://codeload.github.com/happyfish100/libfastcommon/tar.gz/V1.0.39 [following]
---- ::-- https://codeload.github.com/happyfish100/libfastcommon/tar.gz/V1.0.39
Resolving codeload.github.com (codeload.github.com)... 54.251.140.56, 13.250.162.133, 13.229.189.0
Connecting to codeload.github.com (codeload.github.com)|54.251.140.56|:... connected.
HTTP request sent, awaiting response... OK
Length: unspecified [application/x-gzip]
Saving to: ‘V1.0.39.tar.gz’ [ <=> ] , .6KB/s in .0s -- :: (75.6 KB/s) - ‘V1.0.39.tar.gz’ saved [] [root@node101 ~]#
[root@node101 ~]# ls
glusterfs-rhel8.repo V1.0.39.tar.gz
[root@node101 ~]#
[root@node101 ~]#

[root@node101 ~]# wget https://github.com/happyfish100/libfastcommon/archive/V1.0.39.tar.gz

3>. 安装libfastcommon(本实验使用的是CentOS 7.6,两台配置一样的虚拟机测试,因此2台虚拟机都需要做同的操作)

[root@node101 ~]# tar -zxf V1.0.39.tar.gz -C /yinzhengjie/softwares/
[root@node101 ~]#
[root@node101 ~]# ll /yinzhengjie/softwares/libfastcommon-1.0./
total
drwxrwxr-x root root Jul doc
-rw-rw-r-- root root Jul HISTORY
-rw-rw-r-- root root Jul INSTALL
-rw-rw-r-- root root Jul libfastcommon.spec
-rwxrwxr-x root root Jul make.sh
drwxrwxr-x root root Jul php-fastcommon
-rw-rw-r-- root root Jul README
drwxrwxr-x root root Jul src
[root@node101 ~]#
[root@node101 ~]# cd /yinzhengjie/softwares/libfastcommon-1.0./
[root@node101 libfastcommon-1.0.]#
[root@node101 libfastcommon-1.0.]# ./make.sh
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o hash.o hash.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o chain.o chain.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o shared_func.o shared_func.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o ini_file_reader.o ini_file_reader.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o logger.o logger.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o sockopt.o sockopt.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o base64.o base64.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o sched_thread.o sched_thread.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o http_func.o http_func.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o md5.o md5.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o pthread_func.o pthread_func.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o local_ip_func.o local_ip_func.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o avl_tree.o avl_tree.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o ioevent.o ioevent.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o ioevent_loop.o ioevent_loop.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o fast_task_queue.o fast_task_queue.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o fast_timer.o fast_timer.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o process_ctrl.o process_ctrl.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o fast_mblock.o fast_mblock.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o connection_pool.o connection_pool.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o fast_mpool.o fast_mpool.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o fast_allocator.o fast_allocator.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o fast_buffer.o fast_buffer.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o multi_skiplist.o multi_skiplist.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o flat_skiplist.o flat_skiplist.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o system_info.o system_info.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o fast_blocked_queue.o fast_blocked_queue.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o id_generator.o id_generator.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o char_converter.o char_converter.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o char_convert_loader.o char_convert_loader.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o common_blocked_queue.o common_blocked_queue.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o multi_socket_client.o multi_socket_client.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o skiplist_set.o skiplist_set.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o hash.lo hash.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o chain.lo chain.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o shared_func.lo shared_func.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o ini_file_reader.lo ini_file_reader.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o logger.lo logger.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o sockopt.lo sockopt.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o base64.lo base64.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o sched_thread.lo sched_thread.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o http_func.lo http_func.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o md5.lo md5.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o pthread_func.lo pthread_func.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o local_ip_func.lo local_ip_func.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o avl_tree.lo avl_tree.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o ioevent.lo ioevent.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o ioevent_loop.lo ioevent_loop.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o fast_task_queue.lo fast_task_queue.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o fast_timer.lo fast_timer.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o process_ctrl.lo process_ctrl.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o fast_mblock.lo fast_mblock.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o connection_pool.lo connection_pool.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o fast_mpool.lo fast_mpool.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o fast_allocator.lo fast_allocator.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o fast_buffer.lo fast_buffer.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o multi_skiplist.lo multi_skiplist.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o flat_skiplist.lo flat_skiplist.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o system_info.lo system_info.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o fast_blocked_queue.lo fast_blocked_queue.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o id_generator.lo id_generator.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o char_converter.lo char_converter.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o char_convert_loader.lo char_convert_loader.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o common_blocked_queue.lo common_blocked_queue.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o multi_socket_client.lo multi_socket_client.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o skiplist_set.lo skiplist_set.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -o libfastcommon.so -shared hash.lo chain.lo shared_func.lo ini_file_reader.lo logger.lo sockopt.lo base64.lo sched_thread.lo http_func.lo md5.lo pthread_func.lo local_ip_func.lo avl_tree.lo ioevent.lo ioevent_loop.lo fast_task_queue.lo fast_timer.lo process_ctrl.lo fast_mblock.lo connection_pool.lo fast_mpool.lo fast_allocator.lo fast_buffer.lo multi_skiplist.lo flat_skiplist.lo system_info.lo fast_blocked_queue.lo id_generator.lo char_converter.lo char_convert_loader.lo common_blocked_queue.lo multi_socket_client.lo skiplist_set.lo -lm -lpthread
ar rcs libfastcommon.a hash.o chain.o shared_func.o ini_file_reader.o logger.o sockopt.o base64.o sched_thread.o http_func.o md5.o pthread_func.o local_ip_func.o avl_tree.o ioevent.o ioevent_loop.o fast_task_queue.o fast_timer.o process_ctrl.o fast_mblock.o connection_pool.o fast_mpool.o fast_allocator.o fast_buffer.o multi_skiplist.o flat_skiplist.o system_info.o fast_blocked_queue.o id_generator.o char_converter.o char_convert_loader.o common_blocked_queue.o multi_socket_client.o skiplist_set.o
[root@node101 libfastcommon-1.0.]# echo $? [root@node101 libfastcommon-1.0.]#

[root@node101 libfastcommon-1.0.39]# ./make.sh

[root@node101 libfastcommon-1.0.]# ./make.sh install
mkdir -p /usr/lib64
mkdir -p /usr/lib
mkdir -p /usr/include/fastcommon
install -m libfastcommon.so /usr/lib64
install -m common_define.h hash.h chain.h logger.h base64.h shared_func.h pthread_func.h ini_file_reader.h _os_define.h sockopt.h sched_thread.h http_func.h md5.h local_ip_func.h avl_tree.h ioevent.h ioevent_loop.h fast_task_queue.h fast_timer.h process_ctrl.h fast_mblock.h connection_pool.h fast_mpool.h fast_allocator.h fast_buffer.h skiplist.h multi_skiplist.h flat_skiplist.h skiplist_common.h system_info.h fast_blocked_queue.h php7_ext_wrapper.h id_generator.h char_converter.h char_convert_loader.h common_blocked_queue.h multi_socket_client.h skiplist_set.h fc_list.h /usr/include/fastcommon
if [ ! -e /usr/lib/libfastcommon.so ]; then ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so; fi
[root@node101 libfastcommon-1.0.]#

[root@node101 libfastcommon-1.0.39]# ./make.sh install

[root@node102 ~]# yum -y install gcc gcc-c++ libstdc++-devel pcre-devel zlib-devel wget make
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.huaweicloud.com
base | 3.6 kB ::
extras | 3.4 kB ::
myglusterfs | 2.9 kB ::
updates | 3.4 kB ::
Package gcc-4.8.-.el7.x86_64 already installed and latest version
Package :make-3.82-.el7.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package gcc-c++.x86_64 :4.8.-.el7 will be installed
---> Package libstdc++-devel.x86_64 :4.8.-.el7 will be installed
---> Package pcre-devel.x86_64 :8.32-.el7 will be installed
---> Package wget.x86_64 :1.14-.el7 will be installed
---> Package zlib-devel.x86_64 :1.2.-.el7 will be installed
--> Finished Dependency Resolution Dependencies Resolved ===================================================================================================================================================================================================================
Package Arch Version Repository Size
===================================================================================================================================================================================================================
Installing:
gcc-c++ x86_64 4.8.-.el7 base 7.2 M
libstdc++-devel x86_64 4.8.-.el7 base 1.5 M
pcre-devel x86_64 8.32-.el7 base k
wget x86_64 1.14-.el7 base k
zlib-devel x86_64 1.2.-.el7 base k Transaction Summary
===================================================================================================================================================================================================================
Install Packages Total download size: 9.7 M
Installed size: M
Downloading packages:
(/): libstdc++-devel-4.8.-.el7.x86_64.rpm | 1.5 MB ::
(/): wget-1.14-.el7.x86_64.rpm | kB ::
(/): pcre-devel-8.32-.el7.x86_64.rpm | kB ::
(/): zlib-devel-1.2.-.el7.x86_64.rpm | kB ::
(/): gcc-c++-4.8.-.el7.x86_64.rpm | 7.2 MB ::
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 1.1 MB/s | 9.7 MB ::
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : libstdc++-devel-4.8.-.el7.x86_64 /
Installing : gcc-c++-4.8.-.el7.x86_64 /
Installing : zlib-devel-1.2.-.el7.x86_64 /
Installing : wget-1.14-.el7.x86_64 /
Installing : pcre-devel-8.32-.el7.x86_64 /
Verifying : gcc-c++-4.8.-.el7.x86_64 /
Verifying : pcre-devel-8.32-.el7.x86_64 /
Verifying : wget-1.14-.el7.x86_64 /
Verifying : zlib-devel-1.2.-.el7.x86_64 /
Verifying : libstdc++-devel-4.8.-.el7.x86_64 / Installed:
gcc-c++.x86_64 :4.8.-.el7 libstdc++-devel.x86_64 :4.8.-.el7 pcre-devel.x86_64 :8.32-.el7 wget.x86_64 :1.14-.el7 zlib-devel.x86_64 :1.2.-.el7 Complete!
[root@node102 ~]#

[root@node102 ~]# yum -y install gcc gcc-c++ libstdc++-devel pcre-devel zlib-devel wget make          #安装依赖软件

[root@node102 ~]# wget https://github.com/happyfish100/libfastcommon/archive/V1.0.39.tar.gz
---- ::-- https://github.com/happyfish100/libfastcommon/archive/V1.0.39.tar.gz
Resolving github.com (github.com)... 13.229.188.59, 13.250.177.223, 52.74.223.119
Connecting to github.com (github.com)|13.229.188.59|:... connected.
HTTP request sent, awaiting response... Found
Location: https://codeload.github.com/happyfish100/libfastcommon/tar.gz/V1.0.39 [following]
---- ::-- https://codeload.github.com/happyfish100/libfastcommon/tar.gz/V1.0.39
Resolving codeload.github.com (codeload.github.com)... 54.251.140.56, 13.229.189.0, 13.250.162.133
Connecting to codeload.github.com (codeload.github.com)|54.251.140.56|:... connected.
HTTP request sent, awaiting response... OK
Length: unspecified [application/x-gzip]
Saving to: ‘V1.0.39.tar.gz’ [ <=> ] , 264KB/s in .6s -- :: ( KB/s) - ‘V1.0.39.tar.gz’ saved [] [root@node102 ~]#

[root@node102 ~]# wget https://github.com/happyfish100/libfastcommon/archive/V1.0.39.tar.gz

[root@node102 ~]# mkdir -pv /yinzhengjie/softwares
mkdir: created directory ‘/yinzhengjie’
mkdir: created directory ‘/yinzhengjie/softwares’
[root@node102 ~]#
[root@node102 ~]# tar -zxf V1.0.39.tar.gz -C /yinzhengjie/softwares/
[root@node102 ~]#
[root@node102 ~]# ll /yinzhengjie/softwares/libfastcommon-1.0./
total
drwxrwxr-x root root Jul doc
-rw-rw-r-- root root Jul HISTORY
-rw-rw-r-- root root Jul INSTALL
-rw-rw-r-- root root Jul libfastcommon.spec
-rwxrwxr-x root root Jul make.sh
drwxrwxr-x root root Jul php-fastcommon
-rw-rw-r-- root root Jul README
drwxrwxr-x root root Jul src
[root@node102 ~]#
[root@node102 ~]# cd /yinzhengjie/softwares/libfastcommon-1.0./
[root@node102 libfastcommon-1.0.]#
[root@node102 libfastcommon-1.0.]# ./make.sh
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o hash.o hash.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o chain.o chain.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o shared_func.o shared_func.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o ini_file_reader.o ini_file_reader.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o logger.o logger.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o sockopt.o sockopt.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o base64.o base64.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o sched_thread.o sched_thread.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o http_func.o http_func.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o md5.o md5.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o pthread_func.o pthread_func.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o local_ip_func.o local_ip_func.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o avl_tree.o avl_tree.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o ioevent.o ioevent.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o ioevent_loop.o ioevent_loop.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o fast_task_queue.o fast_task_queue.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o fast_timer.o fast_timer.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o process_ctrl.o process_ctrl.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o fast_mblock.o fast_mblock.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o connection_pool.o connection_pool.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o fast_mpool.o fast_mpool.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o fast_allocator.o fast_allocator.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o fast_buffer.o fast_buffer.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o multi_skiplist.o multi_skiplist.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o flat_skiplist.o flat_skiplist.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o system_info.o system_info.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o fast_blocked_queue.o fast_blocked_queue.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o id_generator.o id_generator.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o char_converter.o char_converter.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o char_convert_loader.o char_convert_loader.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o common_blocked_queue.o common_blocked_queue.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o multi_socket_client.o multi_socket_client.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -o skiplist_set.o skiplist_set.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o hash.lo hash.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o chain.lo chain.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o shared_func.lo shared_func.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o ini_file_reader.lo ini_file_reader.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o logger.lo logger.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o sockopt.lo sockopt.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o base64.lo base64.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o sched_thread.lo sched_thread.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o http_func.lo http_func.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o md5.lo md5.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o pthread_func.lo pthread_func.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o local_ip_func.lo local_ip_func.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o avl_tree.lo avl_tree.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o ioevent.lo ioevent.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o ioevent_loop.lo ioevent_loop.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o fast_task_queue.lo fast_task_queue.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o fast_timer.lo fast_timer.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o process_ctrl.lo process_ctrl.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o fast_mblock.lo fast_mblock.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o connection_pool.lo connection_pool.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o fast_mpool.lo fast_mpool.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o fast_allocator.lo fast_allocator.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o fast_buffer.lo fast_buffer.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o multi_skiplist.lo multi_skiplist.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o flat_skiplist.lo flat_skiplist.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o system_info.lo system_info.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o fast_blocked_queue.lo fast_blocked_queue.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o id_generator.lo id_generator.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o char_converter.lo char_converter.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o char_convert_loader.lo char_convert_loader.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o common_blocked_queue.lo common_blocked_queue.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o multi_socket_client.lo multi_socket_client.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -c -fPIC -o skiplist_set.lo skiplist_set.c
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O3 -o libfastcommon.so -shared hash.lo chain.lo shared_func.lo ini_file_reader.lo logger.lo sockopt.lo base64.lo sched_thread.lo http_func.lo md5.lo pthread_func.lo local_ip_func.lo avl_tree.lo ioevent.lo ioevent_loop.lo fast_task_queue.lo fast_timer.lo process_ctrl.lo fast_mblock.lo connection_pool.lo fast_mpool.lo fast_allocator.lo fast_buffer.lo multi_skiplist.lo flat_skiplist.lo system_info.lo fast_blocked_queue.lo id_generator.lo char_converter.lo char_convert_loader.lo common_blocked_queue.lo multi_socket_client.lo skiplist_set.lo -lm -lpthread
ar rcs libfastcommon.a hash.o chain.o shared_func.o ini_file_reader.o logger.o sockopt.o base64.o sched_thread.o http_func.o md5.o pthread_func.o local_ip_func.o avl_tree.o ioevent.o ioevent_loop.o fast_task_queue.o fast_timer.o process_ctrl.o fast_mblock.o connection_pool.o fast_mpool.o fast_allocator.o fast_buffer.o multi_skiplist.o flat_skiplist.o system_info.o fast_blocked_queue.o id_generator.o char_converter.o char_convert_loader.o common_blocked_queue.o multi_socket_client.o skiplist_set.o
[root@node102 libfastcommon-1.0.]#

[root@node102 libfastcommon-1.0.39]# ./make.sh

[root@node102 libfastcommon-1.0.]# ./make.sh install
mkdir -p /usr/lib64
mkdir -p /usr/lib
mkdir -p /usr/include/fastcommon
install -m libfastcommon.so /usr/lib64
install -m common_define.h hash.h chain.h logger.h base64.h shared_func.h pthread_func.h ini_file_reader.h _os_define.h sockopt.h sched_thread.h http_func.h md5.h local_ip_func.h avl_tree.h ioevent.h ioevent_loop.h fast_task_queue.h fast_timer.h process_ctrl.h fast_mblock.h connection_pool.h fast_mpool.h fast_allocator.h fast_buffer.h skiplist.h multi_skiplist.h flat_skiplist.h skiplist_common.h system_info.h fast_blocked_queue.h php7_ext_wrapper.h id_generator.h char_converter.h char_convert_loader.h common_blocked_queue.h multi_socket_client.h skiplist_set.h fc_list.h /usr/include/fastcommon
if [ ! -e /usr/lib/libfastcommon.so ]; then

[root@node102 libfastcommon-1.0.39]# ./make.sh install

三.部署FastDFS

1>.查看happyfish100/fastdfs地址

2>.选择FastDFS的版本

3>.安装FastDFS

[root@node101 ~]# wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz
---- ::-- https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz
Resolving github.com (github.com)... 13.229.188.59, 13.250.177.223, 52.74.223.119
Connecting to github.com (github.com)|13.229.188.59|:... connected.
HTTP request sent, awaiting response... Found
Location: https://codeload.github.com/happyfish100/fastdfs/tar.gz/V5.11 [following]
---- ::-- https://codeload.github.com/happyfish100/fastdfs/tar.gz/V5.11
Resolving codeload.github.com (codeload.github.com)... 13.250.162.133, 54.251.140.56, 13.229.189.0
Connecting to codeload.github.com (codeload.github.com)|13.250.162.133|:... connected.
HTTP request sent, awaiting response... OK
Length: unspecified [application/x-gzip]
Saving to: ‘V5..tar.gz’ [ <=> ] , 480KB/s in .7s -- :: ( KB/s) - ‘V5..tar.gz’ saved [] [root@node101 ~]#

[root@node101 ~]# wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz

[root@node101 ~]# tar -zxf V5..tar.gz -C /yinzhengjie/softwares/
[root@node101 ~]#
[root@node101 ~]# ll /yinzhengjie/softwares/fastdfs-5.11/
total
drwxrwxr-x root root Jun client
drwxrwxr-x root root Jun common
drwxrwxr-x root root Jun conf
-rw-rw-r-- root root Jun COPYING-3_0.txt
-rw-rw-r-- root root Jun fastdfs.spec
-rw-rw-r-- root root Jun HISTORY
drwxrwxr-x root root Jun init.d
-rw-rw-r-- root root Jun INSTALL
-rwxrwxr-x root root Jun make.sh
drwxrwxr-x root root Jun php_client
-rw-rw-r-- root root Jun README.md
-rwxrwxr-x root root Jun restart.sh
-rwxrwxr-x root root Jun stop.sh
drwxrwxr-x root root Jun storage
drwxrwxr-x root root Jun test
drwxrwxr-x root root Jun tracker
[root@node101 ~]#
[root@node101 ~]# cd /yinzhengjie/softwares/fastdfs-5.11/
[root@node101 fastdfs-5.11]#
[root@node101 fastdfs-5.11]# ./make.sh
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o ../common/fdfs_global.o ../common/fdfs_global.c -I../common -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o tracker_proto.o tracker_proto.c -I../common -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o tracker_mem.o tracker_mem.c -I../common -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o tracker_service.o tracker_service.c -I../common -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o tracker_status.o tracker_status.c -I../common -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o tracker_global.o tracker_global.c -I../common -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o tracker_func.o tracker_func.c -I../common -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o fdfs_shared_func.o fdfs_shared_func.c -I../common -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o tracker_nio.o tracker_nio.c -I../common -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o tracker_relationship.o tracker_relationship.c -I../common -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o tracker_dump.o tracker_dump.c -I../common -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_trackerd fdfs_trackerd.c ../common/fdfs_global.o tracker_proto.o tracker_mem.o tracker_service.o tracker_status.o tracker_global.o tracker_func.o fdfs_shared_func.o tracker_nio.o tracker_relationship.o tracker_dump.o -L/usr/lib64 -lpthread -lfastcommon -I../common -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o tracker_client_thread.o tracker_client_thread.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o storage_global.o storage_global.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o storage_func.o storage_func.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o storage_service.o storage_service.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o storage_sync.o storage_sync.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o storage_nio.o storage_nio.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o storage_dio.o storage_dio.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o storage_ip_changed_dealer.o storage_ip_changed_dealer.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o storage_param_getter.o storage_param_getter.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o storage_disk_recovery.o storage_disk_recovery.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o trunk_mgr/trunk_mem.o trunk_mgr/trunk_mem.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o trunk_mgr/trunk_shared.o trunk_mgr/trunk_shared.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o trunk_mgr/trunk_sync.o trunk_mgr/trunk_sync.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o trunk_mgr/trunk_client.o trunk_mgr/trunk_client.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o trunk_mgr/trunk_free_block_checker.o trunk_mgr/trunk_free_block_checker.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o ../client/client_global.o ../client/client_global.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o ../client/tracker_client.o ../client/tracker_client.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o ../client/storage_client.o ../client/storage_client.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o ../client/client_func.o ../client/client_func.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o fdht_client/fdht_proto.o fdht_client/fdht_proto.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o fdht_client/fdht_client.o fdht_client/fdht_client.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o fdht_client/fdht_func.o fdht_client/fdht_func.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o fdht_client/fdht_global.o fdht_client/fdht_global.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o storage_dump.o storage_dump.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_storaged fdfs_storaged.c ../common/fdfs_global.o ../tracker/fdfs_shared_func.o ../tracker/tracker_proto.o tracker_client_thread.o storage_global.o storage_func.o storage_service.o storage_sync.o storage_nio.o storage_dio.o storage_ip_changed_dealer.o storage_param_getter.o storage_disk_recovery.o trunk_mgr/trunk_mem.o trunk_mgr/trunk_shared.o trunk_mgr/trunk_sync.o trunk_mgr/trunk_client.o trunk_mgr/trunk_free_block_checker.o ../client/client_global.o ../client/tracker_client.o ../client/storage_client.o ../client/client_func.o fdht_client/fdht_proto.o fdht_client/fdht_client.o fdht_client/fdht_func.o fdht_client/fdht_global.o storage_dump.o -L/usr/lib64 -lpthread -lfastcommon -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o ../common/fdfs_http_shared.o ../common/fdfs_http_shared.c -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o ../common/mime_file_parser.o ../common/mime_file_parser.c -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -fPIC -o ../common/fdfs_global.lo ../common/fdfs_global.c -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -fPIC -o ../common/fdfs_http_shared.lo ../common/fdfs_http_shared.c -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -fPIC -o ../common/mime_file_parser.lo ../common/mime_file_parser.c -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -fPIC -o ../tracker/tracker_proto.lo ../tracker/tracker_proto.c -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -fPIC -o ../tracker/fdfs_shared_func.lo ../tracker/fdfs_shared_func.c -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -fPIC -o ../storage/trunk_mgr/trunk_shared.lo ../storage/trunk_mgr/trunk_shared.c -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -fPIC -o tracker_client.lo tracker_client.c -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -fPIC -o client_func.lo client_func.c -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -fPIC -o client_global.lo client_global.c -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -fPIC -o storage_client.lo storage_client.c -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_monitor fdfs_monitor.c ../common/fdfs_global.o ../common/fdfs_http_shared.o ../common/mime_file_parser.o ../tracker/tracker_proto.o ../tracker/fdfs_shared_func.o ../storage/trunk_mgr/trunk_shared.o tracker_client.o client_func.o client_global.o storage_client.o -L/usr/lib64 -lpthread -lfastcommon -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_test fdfs_test.c ../common/fdfs_global.o ../common/fdfs_http_shared.o ../common/mime_file_parser.o ../tracker/tracker_proto.o ../tracker/fdfs_shared_func.o ../storage/trunk_mgr/trunk_shared.o tracker_client.o client_func.o client_global.o storage_client.o -L/usr/lib64 -lpthread -lfastcommon -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_test1 fdfs_test1.c ../common/fdfs_global.o ../common/fdfs_http_shared.o ../common/mime_file_parser.o ../tracker/tracker_proto.o ../tracker/fdfs_shared_func.o ../storage/trunk_mgr/trunk_shared.o tracker_client.o client_func.o client_global.o storage_client.o -L/usr/lib64 -lpthread -lfastcommon -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_crc32 fdfs_crc32.c ../common/fdfs_global.o ../common/fdfs_http_shared.o ../common/mime_file_parser.o ../tracker/tracker_proto.o ../tracker/fdfs_shared_func.o ../storage/trunk_mgr/trunk_shared.o tracker_client.o client_func.o client_global.o storage_client.o -L/usr/lib64 -lpthread -lfastcommon -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_upload_file fdfs_upload_file.c ../common/fdfs_global.o ../common/fdfs_http_shared.o ../common/mime_file_parser.o ../tracker/tracker_proto.o ../tracker/fdfs_shared_func.o ../storage/trunk_mgr/trunk_shared.o tracker_client.o client_func.o client_global.o storage_client.o -L/usr/lib64 -lpthread -lfastcommon -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_download_file fdfs_download_file.c ../common/fdfs_global.o ../common/fdfs_http_shared.o ../common/mime_file_parser.o ../tracker/tracker_proto.o ../tracker/fdfs_shared_func.o ../storage/trunk_mgr/trunk_shared.o tracker_client.o client_func.o client_global.o storage_client.o -L/usr/lib64 -lpthread -lfastcommon -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_delete_file fdfs_delete_file.c ../common/fdfs_global.o ../common/fdfs_http_shared.o ../common/mime_file_parser.o ../tracker/tracker_proto.o ../tracker/fdfs_shared_func.o ../storage/trunk_mgr/trunk_shared.o tracker_client.o client_func.o client_global.o storage_client.o -L/usr/lib64 -lpthread -lfastcommon -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_file_info fdfs_file_info.c ../common/fdfs_global.o ../common/fdfs_http_shared.o ../common/mime_file_parser.o ../tracker/tracker_proto.o ../tracker/fdfs_shared_func.o ../storage/trunk_mgr/trunk_shared.o tracker_client.o client_func.o client_global.o storage_client.o -L/usr/lib64 -lpthread -lfastcommon -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_appender_test fdfs_appender_test.c ../common/fdfs_global.o ../common/fdfs_http_shared.o ../common/mime_file_parser.o ../tracker/tracker_proto.o ../tracker/fdfs_shared_func.o ../storage/trunk_mgr/trunk_shared.o tracker_client.o client_func.o client_global.o storage_client.o -L/usr/lib64 -lpthread -lfastcommon -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_appender_test1 fdfs_appender_test1.c ../common/fdfs_global.o ../common/fdfs_http_shared.o ../common/mime_file_parser.o ../tracker/tracker_proto.o ../tracker/fdfs_shared_func.o ../storage/trunk_mgr/trunk_shared.o tracker_client.o client_func.o client_global.o storage_client.o -L/usr/lib64 -lpthread -lfastcommon -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_append_file fdfs_append_file.c ../common/fdfs_global.o ../common/fdfs_http_shared.o ../common/mime_file_parser.o ../tracker/tracker_proto.o ../tracker/fdfs_shared_func.o ../storage/trunk_mgr/trunk_shared.o tracker_client.o client_func.o client_global.o storage_client.o -L/usr/lib64 -lpthread -lfastcommon -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_upload_appender fdfs_upload_appender.c ../common/fdfs_global.o ../common/fdfs_http_shared.o ../common/mime_file_parser.o ../tracker/tracker_proto.o ../tracker/fdfs_shared_func.o ../storage/trunk_mgr/trunk_shared.o tracker_client.o client_func.o client_global.o storage_client.o -L/usr/lib64 -lpthread -lfastcommon -I../common -I../tracker -I/usr/include/fastcommon
ar cru libfdfsclient.a ../common/fdfs_global.o ../common/fdfs_http_shared.o ../common/mime_file_parser.o ../tracker/tracker_proto.o ../tracker/fdfs_shared_func.o ../storage/trunk_mgr/trunk_shared.o tracker_client.o client_func.o client_global.o storage_client.o
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o libfdfsclient.so -shared ../common/fdfs_global.lo ../common/fdfs_http_shared.lo ../common/mime_file_parser.lo ../tracker/tracker_proto.lo ../tracker/fdfs_shared_func.lo ../storage/trunk_mgr/trunk_shared.lo tracker_client.lo client_func.lo client_global.lo storage_client.lo -L/usr/lib64 -lpthread -lfastcommon
[root@node101 fastdfs-5.11]#

[root@node101 fastdfs-5.11]# ./make.sh

[root@node101 fastdfs-5.11]# ./make.sh install
mkdir -p /usr/bin
mkdir -p /etc/fdfs
cp -f fdfs_trackerd /usr/bin
if [ ! -f /etc/fdfs/tracker.conf.sample ]; then cp -f ../conf/tracker.conf /etc/fdfs/tracker.conf.sample; fi
if [ ! -f /etc/fdfs/storage_ids.conf.sample ]; then cp -f ../conf/storage_ids.conf /etc/fdfs/storage_ids.conf.sample; fi
mkdir -p /usr/bin
mkdir -p /etc/fdfs
cp -f fdfs_storaged /usr/bin
if [ ! -f /etc/fdfs/storage.conf.sample ]; then cp -f ../conf/storage.conf /etc/fdfs/storage.conf.sample; fi
mkdir -p /usr/bin
mkdir -p /etc/fdfs
mkdir -p /usr/lib64
mkdir -p /usr/lib
cp -f fdfs_monitor fdfs_test fdfs_test1 fdfs_crc32 fdfs_upload_file fdfs_download_file fdfs_delete_file fdfs_file_info fdfs_appender_test fdfs_appender_test1 fdfs_append_file fdfs_upload_appender /usr/bin
if [ -eq ]; then cp -f libfdfsclient.a /usr/lib64; cp -f libfdfsclient.a /usr/lib/;fi
if [ -eq ]; then cp -f libfdfsclient.so /usr/lib64; cp -f libfdfsclient.so /usr/lib/;fi
mkdir -p /usr/include/fastdfs
cp -f ../common/fdfs_define.h ../common/fdfs_global.h ../common/mime_file_parser.h ../common/fdfs_http_shared.h ../tracker/tracker_types.h ../tracker/tracker_proto.h ../tracker/fdfs_shared_func.h ../storage/trunk_mgr/trunk_shared.h tracker_client.h storage_client.h storage_client1.h client_func.h client_global.h fdfs_client.h /usr/include/fastdfs
if [ ! -f /etc/fdfs/client.conf.sample ]; then cp -f ../conf/client.conf /etc/fdfs/client.conf.sample; fi
[root@node101 fastdfs-5.11]#

[root@node101 fastdfs-5.11]# ./make.sh install

[root@node102 ~]# wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz
---- ::-- https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz
Resolving github.com (github.com)... 13.250.177.223, 52.74.223.119, 13.229.188.59
Connecting to github.com (github.com)|13.250.177.223|:... connected.
HTTP request sent, awaiting response... Found
Location: https://codeload.github.com/happyfish100/fastdfs/tar.gz/V5.11 [following]
---- ::-- https://codeload.github.com/happyfish100/fastdfs/tar.gz/V5.11
Resolving codeload.github.com (codeload.github.com)... 13.250.162.133, 54.251.140.56, 13.229.189.0
Connecting to codeload.github.com (codeload.github.com)|13.250.162.133|:... connected.
HTTP request sent, awaiting response... OK
Length: unspecified [application/x-gzip]
Saving to: ‘V5..tar.gz’ [ <=> ] , 294KB/s in .1s -- :: ( KB/s) - ‘V5..tar.gz’ saved [] [root@node102 ~]#

[root@node102 ~]# wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz

[root@node102 ~]# tar -zxf V5..tar.gz  -C /yinzhengjie/softwares/
[root@node102 ~]#
[root@node102 ~]# cd /yinzhengjie/softwares/fastdfs-5.11/
[root@node102 fastdfs-5.11]#
[root@node102 fastdfs-5.11]# ./make.sh
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o ../common/fdfs_global.o ../common/fdfs_global.c -I../common -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o tracker_proto.o tracker_proto.c -I../common -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o tracker_mem.o tracker_mem.c -I../common -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o tracker_service.o tracker_service.c -I../common -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o tracker_status.o tracker_status.c -I../common -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o tracker_global.o tracker_global.c -I../common -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o tracker_func.o tracker_func.c -I../common -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o fdfs_shared_func.o fdfs_shared_func.c -I../common -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o tracker_nio.o tracker_nio.c -I../common -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o tracker_relationship.o tracker_relationship.c -I../common -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o tracker_dump.o tracker_dump.c -I../common -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_trackerd fdfs_trackerd.c ../common/fdfs_global.o tracker_proto.o tracker_mem.o tracker_service.o tracker_status.o tracker_global.o tracker_func.o fdfs_shared_func.o tracker_nio.o tracker_relationship.o tracker_dump.o -L/usr/lib64 -lpthread -lfastcommon -I../common -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o tracker_client_thread.o tracker_client_thread.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o storage_global.o storage_global.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o storage_func.o storage_func.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o storage_service.o storage_service.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o storage_sync.o storage_sync.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o storage_nio.o storage_nio.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o storage_dio.o storage_dio.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o storage_ip_changed_dealer.o storage_ip_changed_dealer.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o storage_param_getter.o storage_param_getter.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o storage_disk_recovery.o storage_disk_recovery.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o trunk_mgr/trunk_mem.o trunk_mgr/trunk_mem.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o trunk_mgr/trunk_shared.o trunk_mgr/trunk_shared.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o trunk_mgr/trunk_sync.o trunk_mgr/trunk_sync.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o trunk_mgr/trunk_client.o trunk_mgr/trunk_client.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o trunk_mgr/trunk_free_block_checker.o trunk_mgr/trunk_free_block_checker.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o ../client/client_global.o ../client/client_global.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o ../client/tracker_client.o ../client/tracker_client.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o ../client/storage_client.o ../client/storage_client.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o ../client/client_func.o ../client/client_func.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o fdht_client/fdht_proto.o fdht_client/fdht_proto.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o fdht_client/fdht_client.o fdht_client/fdht_client.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o fdht_client/fdht_func.o fdht_client/fdht_func.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o fdht_client/fdht_global.o fdht_client/fdht_global.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o storage_dump.o storage_dump.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_storaged fdfs_storaged.c ../common/fdfs_global.o ../tracker/fdfs_shared_func.o ../tracker/tracker_proto.o tracker_client_thread.o storage_global.o storage_func.o storage_service.o storage_sync.o storage_nio.o storage_dio.o storage_ip_changed_dealer.o storage_param_getter.o storage_disk_recovery.o trunk_mgr/trunk_mem.o trunk_mgr/trunk_shared.o trunk_mgr/trunk_sync.o trunk_mgr/trunk_client.o trunk_mgr/trunk_free_block_checker.o ../client/client_global.o ../client/tracker_client.o ../client/storage_client.o ../client/client_func.o fdht_client/fdht_proto.o fdht_client/fdht_client.o fdht_client/fdht_func.o fdht_client/fdht_global.o storage_dump.o -L/usr/lib64 -lpthread -lfastcommon -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o ../common/fdfs_http_shared.o ../common/fdfs_http_shared.c -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -o ../common/mime_file_parser.o ../common/mime_file_parser.c -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -fPIC -o ../common/fdfs_global.lo ../common/fdfs_global.c -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -fPIC -o ../common/fdfs_http_shared.lo ../common/fdfs_http_shared.c -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -fPIC -o ../common/mime_file_parser.lo ../common/mime_file_parser.c -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -fPIC -o ../tracker/tracker_proto.lo ../tracker/tracker_proto.c -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -fPIC -o ../tracker/fdfs_shared_func.lo ../tracker/fdfs_shared_func.c -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -fPIC -o ../storage/trunk_mgr/trunk_shared.lo ../storage/trunk_mgr/trunk_shared.c -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -fPIC -o tracker_client.lo tracker_client.c -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -fPIC -o client_func.lo client_func.c -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -fPIC -o client_global.lo client_global.c -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -c -fPIC -o storage_client.lo storage_client.c -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_monitor fdfs_monitor.c ../common/fdfs_global.o ../common/fdfs_http_shared.o ../common/mime_file_parser.o ../tracker/tracker_proto.o ../tracker/fdfs_shared_func.o ../storage/trunk_mgr/trunk_shared.o tracker_client.o client_func.o client_global.o storage_client.o -L/usr/lib64 -lpthread -lfastcommon -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_test fdfs_test.c ../common/fdfs_global.o ../common/fdfs_http_shared.o ../common/mime_file_parser.o ../tracker/tracker_proto.o ../tracker/fdfs_shared_func.o ../storage/trunk_mgr/trunk_shared.o tracker_client.o client_func.o client_global.o storage_client.o -L/usr/lib64 -lpthread -lfastcommon -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_test1 fdfs_test1.c ../common/fdfs_global.o ../common/fdfs_http_shared.o ../common/mime_file_parser.o ../tracker/tracker_proto.o ../tracker/fdfs_shared_func.o ../storage/trunk_mgr/trunk_shared.o tracker_client.o client_func.o client_global.o storage_client.o -L/usr/lib64 -lpthread -lfastcommon -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_crc32 fdfs_crc32.c ../common/fdfs_global.o ../common/fdfs_http_shared.o ../common/mime_file_parser.o ../tracker/tracker_proto.o ../tracker/fdfs_shared_func.o ../storage/trunk_mgr/trunk_shared.o tracker_client.o client_func.o client_global.o storage_client.o -L/usr/lib64 -lpthread -lfastcommon -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_upload_file fdfs_upload_file.c ../common/fdfs_global.o ../common/fdfs_http_shared.o ../common/mime_file_parser.o ../tracker/tracker_proto.o ../tracker/fdfs_shared_func.o ../storage/trunk_mgr/trunk_shared.o tracker_client.o client_func.o client_global.o storage_client.o -L/usr/lib64 -lpthread -lfastcommon -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_download_file fdfs_download_file.c ../common/fdfs_global.o ../common/fdfs_http_shared.o ../common/mime_file_parser.o ../tracker/tracker_proto.o ../tracker/fdfs_shared_func.o ../storage/trunk_mgr/trunk_shared.o tracker_client.o client_func.o client_global.o storage_client.o -L/usr/lib64 -lpthread -lfastcommon -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_delete_file fdfs_delete_file.c ../common/fdfs_global.o ../common/fdfs_http_shared.o ../common/mime_file_parser.o ../tracker/tracker_proto.o ../tracker/fdfs_shared_func.o ../storage/trunk_mgr/trunk_shared.o tracker_client.o client_func.o client_global.o storage_client.o -L/usr/lib64 -lpthread -lfastcommon -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_file_info fdfs_file_info.c ../common/fdfs_global.o ../common/fdfs_http_shared.o ../common/mime_file_parser.o ../tracker/tracker_proto.o ../tracker/fdfs_shared_func.o ../storage/trunk_mgr/trunk_shared.o tracker_client.o client_func.o client_global.o storage_client.o -L/usr/lib64 -lpthread -lfastcommon -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_appender_test fdfs_appender_test.c ../common/fdfs_global.o ../common/fdfs_http_shared.o ../common/mime_file_parser.o ../tracker/tracker_proto.o ../tracker/fdfs_shared_func.o ../storage/trunk_mgr/trunk_shared.o tracker_client.o client_func.o client_global.o storage_client.o -L/usr/lib64 -lpthread -lfastcommon -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_appender_test1 fdfs_appender_test1.c ../common/fdfs_global.o ../common/fdfs_http_shared.o ../common/mime_file_parser.o ../tracker/tracker_proto.o ../tracker/fdfs_shared_func.o ../storage/trunk_mgr/trunk_shared.o tracker_client.o client_func.o client_global.o storage_client.o -L/usr/lib64 -lpthread -lfastcommon -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_append_file fdfs_append_file.c ../common/fdfs_global.o ../common/fdfs_http_shared.o ../common/mime_file_parser.o ../tracker/tracker_proto.o ../tracker/fdfs_shared_func.o ../storage/trunk_mgr/trunk_shared.o tracker_client.o client_func.o client_global.o storage_client.o -L/usr/lib64 -lpthread -lfastcommon -I../common -I../tracker -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o fdfs_upload_appender fdfs_upload_appender.c ../common/fdfs_global.o ../common/fdfs_http_shared.o ../common/mime_file_parser.o ../tracker/tracker_proto.o ../tracker/fdfs_shared_func.o ../storage/trunk_mgr/trunk_shared.o tracker_client.o client_func.o client_global.o storage_client.o -L/usr/lib64 -lpthread -lfastcommon -I../common -I../tracker -I/usr/include/fastcommon
ar cru libfdfsclient.a ../common/fdfs_global.o ../common/fdfs_http_shared.o ../common/mime_file_parser.o ../tracker/tracker_proto.o ../tracker/fdfs_shared_func.o ../storage/trunk_mgr/trunk_shared.o tracker_client.o client_func.o client_global.o storage_client.o
cc -Wall -D_FILE_OFFSET_BITS= -D_GNU_SOURCE -g -O -DDEBUG_FLAG -o libfdfsclient.so -shared ../common/fdfs_global.lo ../common/fdfs_http_shared.lo ../common/mime_file_parser.lo ../tracker/tracker_proto.lo ../tracker/fdfs_shared_func.lo ../storage/trunk_mgr/trunk_shared.lo tracker_client.lo client_func.lo client_global.lo storage_client.lo -L/usr/lib64 -lpthread -lfastcommon
[root@node102 fastdfs-5.11]#

[root@node102 fastdfs-5.11]# ./make.sh

[root@node102 fastdfs-5.11]# ./make.sh install
mkdir -p /usr/bin
mkdir -p /etc/fdfs
cp -f fdfs_trackerd /usr/bin
if [ ! -f /etc/fdfs/tracker.conf.sample ]; then cp -f ../conf/tracker.conf /etc/fdfs/tracker.conf.sample; fi
if [ ! -f /etc/fdfs/storage_ids.conf.sample ]; then cp -f ../conf/storage_ids.conf /etc/fdfs/storage_ids.conf.sample; fi
mkdir -p /usr/bin
mkdir -p /etc/fdfs
cp -f fdfs_storaged /usr/bin
if [ ! -f /etc/fdfs/storage.conf.sample ]; then cp -f ../conf/storage.conf /etc/fdfs/storage.conf.sample; fi
mkdir -p /usr/bin
mkdir -p /etc/fdfs
mkdir -p /usr/lib64
mkdir -p /usr/lib
cp -f fdfs_monitor fdfs_test fdfs_test1 fdfs_crc32 fdfs_upload_file fdfs_download_file fdfs_delete_file fdfs_file_info fdfs_appender_test fdfs_appender_test1 fdfs_append_file fdfs_upload_appender /usr/bin
if [ -eq ]; then cp -f libfdfsclient.a /usr/lib64; cp -f libfdfsclient.a /usr/lib/;fi
if [ -eq ]; then cp -f libfdfsclient.so /usr/lib64; cp -f libfdfsclient.so /usr/lib/;fi
mkdir -p /usr/include/fastdfs
cp -f ../common/fdfs_define.h ../common/fdfs_global.h ../common/mime_file_parser.h ../common/fdfs_http_shared.h ../tracker/tracker_types.h ../tracker/tracker_proto.h ../tracker/fdfs_shared_func.h ../storage/trunk_mgr/trunk_shared.h tracker_client.h storage_client.h storage_client1.h client_func.h client_global.h fdfs_client.h /usr/include/fastdfs
if [ ! -f /etc/fdfs/client.conf.sample ]; then cp -f ../conf/client.conf /etc/fdfs/client.conf.sample; fi
[root@node102 fastdfs-5.11]#

[root@node102 fastdfs-5.11]# ./make.sh install

4>.FastDFS的文件存放说明

[root@node101 ~]# ll /etc/fdfs/                          #配置文件存放路径
total
-rw-r--r-- root root Feb : client.conf.sample
-rw-r--r-- root root Feb : storage.conf.sample
-rw-r--r-- root root Feb : storage_ids.conf.sample
-rw-r--r-- root root Feb : tracker.conf.sample
[root@node101 ~]#
[root@node101 ~]#
[root@node101 ~]# ll /etc/init.d/fdfs_*                    #脚本存放路径
-rwxr-xr-x root root Feb : /etc/init.d/fdfs_storaged     #用于存储的脚本
-rwxr-xr-x root root Feb : /etc/init.d/fdfs_trackerd     #用于追踪的脚本
[root@node101 ~]#     
[root@node101 ~]#

5>.创建存储数据的路径

[root@node101 ~]# mkdir -p /home/yinzhengjie/
.bash_logout .bash_profile .bashrc Desktop/ glusterfs/
[root@node101 ~]# mkdir -p /home/yinzhengjie/fastdfs/data/fdfs_tracker
[root@node101 ~]#
[root@node101 ~]# mkdir -p /home/yinzhengjie/fastdfs/data/fdfs_storage
[root@node101 ~]#
[root@node101 ~]# ssh node102.yinzhengjie.org.cn
Last login: Tue Feb :: from node101.yinzhengjie.org.cn
[root@node102 ~]#
[root@node102 ~]# mkdir -p /home/yinzhengjie/fastdfs/data/fdfs_tracker
[root@node102 ~]#
[root@node102 ~]# mkdir -p /home/yinzhengjie/fastdfs/data/fdfs_storage
[root@node102 ~]#
[root@node102 ~]# exit
logout
Connection to node102.yinzhengjie.org.cn closed.
[root@node101 ~]#

6>.修改配置文件(我这里的做法是在node101.yinzhengjie.org.cn上配置好后,将该配置文件拷贝到node102.yinzhengjie.org.cn节点上去!)

[root@node101 ~]# cd /etc/fdfs/
[root@node101 fdfs]#
[root@node101 fdfs]# ll
total
-rw-r--r-- root root Feb : client.conf.sample
-rw-r--r-- root root Feb : storage.conf.sample
-rw-r--r-- root root Feb : storage_ids.conf.sample
-rw-r--r-- root root Feb : tracker.conf.sample
[root@node101 fdfs]#
[root@node101 fdfs]# cp storage.conf.sample storage.conf
[root@node101 fdfs]#
[root@node101 fdfs]# cp tracker.conf.sample tracker.conf
[root@node101 fdfs]#
[root@node101 ~]# grep base_path /etc/fdfs/tracker.conf
base_path=/home/yuqing/fastdfs
[root@node101 ~]#
[root@node101 ~]#
[root@node101 ~]# sed -i s'#base_path=/home/yuqing/fastdfs#base_path=/home/yinzhengjie/fastdfs/data/fdfs_tracker#' /etc/fdfs/tracker.conf
[root@node101 ~]#
[root@node101 ~]# grep base_path /etc/fdfs/tracker.conf
base_path=/home/yinzhengjie/fastdfs/data/fdfs_tracker
[root@node101 ~]#
[root@node101 ~]#

[root@node101 ~]# sed -i s'#base_path=/home/yuqing/fastdfs#base_path=/home/yinzhengjie/fastdfs/data/fdfs_tracker#' /etc/fdfs/tracker.conf

[root@node101 ~]# grep base_path /etc/fdfs/storage.conf | grep -v ^#
base_path=/home/yuqing/fastdfs
[root@node101 ~]#
[root@node101 ~]#
[root@node101 ~]# sed -i s'#base_path=/home/yuqing/fastdfs#base_path=/home/yinzhengjie/fastdfs/data/fdfs_storage#' /etc/fdfs/storage.conf
[root@node101 ~]#
[root@node101 ~]# grep base_path /etc/fdfs/storage.conf | grep -v ^#
base_path=/home/yinzhengjie/fastdfs/data/fdfs_storage
[root@node101 ~]#
[root@node101 ~]#

[root@node101 ~]# sed -i s'#base_path=/home/yuqing/fastdfs#base_path=/home/yinzhengjie/fastdfs/data/fdfs_storage#' /etc/fdfs/storage.conf

[root@node101 ~]# grep store_path0 /etc/fdfs/storage.conf | grep -v ^#
store_path0=/home/yuqing/fastdfs
[root@node101 ~]#
[root@node101 ~]#
[root@node101 ~]# sed -i s'#store_path0=/home/yuqing/fastdfs#store_path0=/home/yinzhengjie/fastdfs/data/fdfs_storage/store#' /etc/fdfs/storage.conf
[root@node101 ~]#
[root@node101 ~]# grep store_path0 /etc/fdfs/storage.conf | grep -v ^#
store_path0=/home/yinzhengjie/fastdfs/data/fdfs_storage/store
[root@node101 ~]#
[root@node101 ~]#

[root@node101 ~]# sed -i s'#store_path0=/home/yuqing/fastdfs#store_path0=/home/yinzhengjie/fastdfs/data/fdfs_storage/store#' /etc/fdfs/storage.conf

[root@node101 ~]# grep tracker_server /etc/fdfs/storage.conf | grep -v ^#
tracker_server=192.168.209.121:
[root@node101 ~]#
[root@node101 ~]#
[root@node101 ~]# sed -i s'#tracker_server=192.168.209.121:22122#tracker_server=node101.yinzhengjie.org.cn:22122\ntracker_server=node102.yinzhengjie.org.cn:22122\n#' /etc/fdfs/storage.conf
[root@node101 ~]#
[root@node101 ~]# grep tracker_server /etc/fdfs/storage.conf | grep -v ^#
tracker_server=node101.yinzhengjie.org.cn:
tracker_server=node102.yinzhengjie.org.cn:
[root@node101 ~]#
[root@node101 ~]#

[root@node101 ~]# sed -i s'#tracker_server=192.168.209.121:22122#tracker_server=node101.yinzhengjie.org.cn:22122\ntracker_server=node102.yinzhengjie.org.cn:22122\n#' /etc/fdfs/storage.conf

[root@node101 ~]# scp /etc/fdfs/tracker.conf /etc/fdfs/storage.conf node102.yinzhengjie.org.cn:/etc/fdfs/              #将node101.yinzhengjie.org.cn的配置同步到node102.yinzhengjie.org.cn上去!
tracker.conf % .9MB/s :
storage.conf % .1MB/s :
[root@node101 ~]#
[root@node101 ~]# ssh node102.yinzhengjie.org.cn
Last login: Tue Feb :: from node101.yinzhengjie.org.cn
[root@node102 ~]#
[root@node102 ~]#
[root@node102 ~]# cat /etc/redhat-release
CentOS Linux release 7.6. (Core)
[root@node102 ~]#
[root@node102 ~]# hostname
node102.yinzhengjie.org.cn
[root@node102 ~]#
[root@node102 ~]#
[root@node102 ~]# grep base_path /etc/fdfs/tracker.conf
base_path=/home/yinzhengjie/fastdfs/data/fdfs_tracker
[root@node102 ~]#
[root@node102 ~]# grep base_path /etc/fdfs/storage.conf | grep -v ^#
base_path=/home/yinzhengjie/fastdfs/data/fdfs_storage
[root@node102 ~]#
[root@node102 ~]# grep store_path0 /etc/fdfs/storage.conf | grep -v ^#
store_path0=/home/yinzhengjie/fastdfs/data/fdfs_storage/store
[root@node102 ~]#
[root@node102 ~]# grep tracker_server /etc/fdfs/storage.conf | grep -v ^#
tracker_server=node101.yinzhengjie.org.cn:
tracker_server=node102.yinzhengjie.org.cn:
[root@node102 ~]#  
[root@node102 ~]# diff /etc/fdfs/storage.conf /etc/fdfs/storage.conf.sample
41c41
< base_path=/home/yinzhengjie/fastdfs/data/fdfs_storage
---
> base_path=/home/yuqing/fastdfs
109c109
< store_path0=/home/yinzhengjie/fastdfs/data/fdfs_storage/store
---
> store_path0=/home/yuqing/fastdfs
,120c118
< tracker_server=node101.yinzhengjie.org.cn:
< tracker_server=node102.yinzhengjie.org.cn:
<
---
> tracker_server=192.168.209.121:
[root@node102 ~]#

[root@node102 ~]# diff /etc/fdfs/storage.conf /etc/fdfs/storage.conf.sample

[root@node102 ~]# diff /etc/fdfs/tracker.conf /etc/fdfs/tracker.conf.sample
22c22
< base_path=/home/yinzhengjie/fastdfs/data/fdfs_tracker
---
> base_path=/home/yuqing/fastdfs
[root@node102 ~]#
[root@node102 ~]#

[root@node102 ~]# diff /etc/fdfs/tracker.conf /etc/fdfs/tracker.conf.sample

7>.在各个节点上启动FastDFS服务

[root@node102 ~]# yum -y install net-tools
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.huaweicloud.com
Resolving Dependencies
--> Running transaction check
---> Package net-tools.x86_64 :2.0-0.24.20131004git.el7 will be installed
--> Finished Dependency Resolution Dependencies Resolved ===================================================================================================================================================================================================================
Package Arch Version Repository Size
===================================================================================================================================================================================================================
Installing:
net-tools x86_64 2.0-0.24.20131004git.el7 base k Transaction Summary
===================================================================================================================================================================================================================
Install Package Total download size: k
Installed size: k
Downloading packages:
net-tools-2.0-0.24.20131004git.el7.x86_64.rpm | kB ::
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : net-tools-2.0-0.24.20131004git.el7.x86_64 /
Verifying : net-tools-2.0-0.24.20131004git.el7.x86_64 / Installed:
net-tools.x86_64 :2.0-0.24.20131004git.el7 Complete!
[root@node102 ~]#

[root@node102 ~]# yum -y install net-tools        #安装网络工具

[root@node101 ~]# /etc/init.d/fdfs_trackerd start
Reloading systemd: [ OK ]
Starting fdfs_trackerd (via systemctl): [ OK ]
[root@node101 ~]#
[root@node101 ~]# mkdir -pv /home/yinzhengjie/fastdfs/data/fdfs_storage/store/data          #这个目录需要我们手动创建一下,否则启动时日志会报错!
mkdir: created directory ‘/home/yinzhengjie/fastdfs/data/fdfs_storage/store’
mkdir: created directory ‘/home/yinzhengjie/fastdfs/data/fdfs_storage/store/data’
[root@node101 ~]#
[root@node101 ~]# /etc/init.d/fdfs_storaged start
Starting fdfs_storaged (via systemctl): [ OK ]
[root@node101 ~]#
[root@node101 ~]#
[root@node101 ~]# netstat -untalp | grep fdfs
tcp 0.0.0.0: 0.0.0.0:* LISTEN /fdfs_trackerd
tcp 0.0.0.0: 0.0.0.0:* LISTEN /fdfs_storaged
tcp 172.30.1.101: 172.30.1.102: ESTABLISHED /fdfs_trackerd
tcp 172.30.1.101: 172.30.1.102: ESTABLISHED /fdfs_storaged
tcp 172.30.1.101: 172.30.1.101: ESTABLISHED /fdfs_storaged
tcp 172.30.1.101: 172.30.1.102: ESTABLISHED /fdfs_storaged
tcp 172.30.1.101: 172.30.1.102: ESTABLISHED /fdfs_trackerd
tcp 172.30.1.101: 172.30.1.101: ESTABLISHED /fdfs_trackerd
tcp 172.30.1.101: 172.30.1.102: ESTABLISHED /fdfs_storaged
[root@node101 ~]#
[root@node101 ~]#
[root@node101 ~]# netstat -untalp | grep
tcp 0.0.0.0: 0.0.0.0:* LISTEN /fdfs_storaged
tcp 172.30.1.101: 172.30.1.102: ESTABLISHED /fdfs_storaged
tcp 172.30.1.101: 172.30.1.102: ESTABLISHED /fdfs_storaged
[root@node101 ~]#
[root@node101 ~]# netstat -untalp | grep
tcp 0.0.0.0: 0.0.0.0:* LISTEN /fdfs_trackerd
tcp 172.30.1.101: 172.30.1.102: ESTABLISHED /fdfs_trackerd
tcp 172.30.1.101: 172.30.1.101: ESTABLISHED /fdfs_storaged
tcp 172.30.1.101: 172.30.1.102: ESTABLISHED /fdfs_trackerd
tcp 172.30.1.101: 172.30.1.101: ESTABLISHED /fdfs_trackerd
tcp 172.30.1.101: 172.30.1.102: ESTABLISHED /fdfs_storaged
[root@node101 ~]#
[root@node101 ~]#
[root@node102 ~]# /etc/init.d/fdfs_trackerd start
Reloading systemd: [ OK ]
Starting fdfs_trackerd (via systemctl): [ OK ]
[root@node102 ~]#

[root@node102 ~]# /etc/init.d/fdfs_trackerd start

[root@node102 ~]# mkdir -pv /home/yinzhengjie/fastdfs/data/fdfs_storage/store/data
mkdir: created directory ‘/home/yinzhengjie/fastdfs/data/fdfs_storage/store’
mkdir: created directory ‘/home/yinzhengjie/fastdfs/data/fdfs_storage/store/data’
[root@node102 ~]#
[root@node102 ~]# /etc/init.d/fdfs_storaged start
Starting fdfs_storaged (via systemctl): [ OK ]
[root@node102 ~]#

[root@node102 ~]# /etc/init.d/fdfs_storaged start

[root@node101 ~]# tail -1000f /home/yinzhengjie/fastdfs/data/fdfs_tracker/logs/trackerd.log
[-- ::] INFO - FastDFS v5., base_path=/home/yinzhengjie/fastdfs/data/fdfs_tracker, run_by_group=, run_by_user=, connect_timeout=30s, network_timeout=60s, port=, bind_addr=, max_connections=, accept_threads=, work_threads=, min_buff_size=, max_buff_size=, store_lookup=, store_group=, store_server=, store_path=, reserved_storage_space=10.00%, download_server=, allow_ip_count=-, sync_log_buff_interval=10s, check_active_interval=120s, thread_stack_size= KB, storage_ip_changed_auto_adjust=, storage_sync_file_max_delay=86400s, storage_sync_file_max_time=300s, use_trunk_file=, slot_min_size=, slot_max_size= MB, trunk_file_size= MB, trunk_create_file_advance=, trunk_create_file_time_base=:, trunk_create_file_interval=, trunk_create_file_space_threshold= GB, trunk_init_check_occupying=, trunk_init_reload_from_binlog=, trunk_compress_binlog_min_interval=, use_storage_id=, id_type_in_filename=ip, storage_id_count=, rotate_error_log=, error_log_rotate_time=:, rotate_error_log_size=, log_file_keep_days=, store_slave_file_use_link=, use_connection_pool=, g_connection_pool_max_idle_time=3600s
[-- ::] ERROR - file: tracker_service.c, line: , client ip: 172.30.1.101, invalid group_name: group1
[-- ::] ERROR - file: tracker_service.c, line: , client ip: 172.30.1.102, leader 172.30.1.102: not exist
[-- ::] INFO - file: tracker_mem.c, line: , sys files loaded from tracker server 172.30.1.102:
[-- ::] INFO - file: tracker_relationship.c, line: , selecting leader...
[-- ::] INFO - file: tracker_relationship.c, line: , selecting leader...
[-- ::] INFO - file: tracker_relationship.c, line: , selecting leader...
[-- ::] INFO - file: tracker_relationship.c, line: , selecting leader...
[-- ::] INFO - file: tracker_service.c, line: , the tracker leader is 172.30.1.102:
[-- ::] ERROR - file: tracker_service.c, line: , client ip: 172.30.1.102, group_name: group1, storage server: 172.30.1.102 not exist
[-- ::] WARNING - file: tracker_mem.c, line: , storage server: 172.30.1.102:, dest status: , my status: , should change my status!
[-- ::] WARNING - file: tracker_mem.c, line: , storage server: 172.30.1.102:, dest status: , my status: , should change my status!

[root@node101 ~]# tail -1000f /home/yinzhengjie/fastdfs/data/fdfs_tracker/logs/trackerd.log            #查看trackerd进程日志

[root@node102 ~]# tail -1000f /home/yinzhengjie/fastdfs/data/fdfs_storage/logs/storaged.log
[-- ::] INFO - FastDFS v5., base_path=/home/yinzhengjie/fastdfs/data/fdfs_storage, store_path_count=, subdir_count_per_path=, group_name=group1, run_by_group=, run_by_user=, connect_timeout=30s, network_timeout=60s, port=, bind_addr=, client_bind=, max_connections=, accept_threads=, work_threads=, disk_rw_separated=, disk_reader_threads=, disk_writer_threads=, buff_size=256KB, heart_beat_interval=30s, stat_report_interval=60s, tracker_server_count=, sync_wait_msec=50ms, sync_interval=0ms, sync_start_time=:, sync_end_time=:, write_mark_file_freq=, allow_ip_count=-, file_distribute_path_mode=, file_distribute_rotate_count=, fsync_after_written_bytes=, sync_log_buff_interval=10s, sync_binlog_buff_interval=10s, sync_stat_file_interval=300s, thread_stack_size= KB, upload_priority=, if_alias_prefix=, check_file_duplicate=, file_signature_method=hash, FDHT group count=, FDHT server count=, FDHT key_namespace=, FDHT keep_alive=, HTTP server port=, domain name=, use_access_log=, rotate_access_log=, access_log_rotate_time=:, rotate_error_log=, error_log_rotate_time=:, rotate_access_log_size=, rotate_error_log_size=, log_file_keep_days=, file_sync_skip_invalid_record=, use_connection_pool=, g_connection_pool_max_idle_time=3600s
data path: /home/yinzhengjie/fastdfs/data/fdfs_storage/store/data, mkdir sub dir...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: 0A ...
mkdir data path: 0B ...
mkdir data path: 0C ...
mkdir data path: 0D ...
mkdir data path: 0E ...
mkdir data path: 0F ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: 1A ...
mkdir data path: 1B ...
mkdir data path: 1C ...
mkdir data path: 1D ...
mkdir data path: 1E ...
mkdir data path: 1F ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: 2A ...
mkdir data path: 2B ...
mkdir data path: 2C ...
mkdir data path: 2D ...
mkdir data path: 2E ...
mkdir data path: 2F ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: 3A ...
mkdir data path: 3B ...
mkdir data path: 3C ...
mkdir data path: 3D ...
mkdir data path: 3E ...
mkdir data path: 3F ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: 4A ...
mkdir data path: 4B ...
mkdir data path: 4C ...
mkdir data path: 4D ...
mkdir data path: 4E ...
mkdir data path: 4F ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: 5A ...
mkdir data path: 5B ...
mkdir data path: 5C ...
mkdir data path: 5D ...
mkdir data path: 5E ...
mkdir data path: 5F ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: 6A ...
mkdir data path: 6B ...
mkdir data path: 6C ...
mkdir data path: 6D ...
mkdir data path: 6E ...
mkdir data path: 6F ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: 7A ...
mkdir data path: 7B ...
mkdir data path: 7C ...
mkdir data path: 7D ...
mkdir data path: 7E ...
mkdir data path: 7F ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: 8A ...
mkdir data path: 8B ...
mkdir data path: 8C ...
mkdir data path: 8D ...
mkdir data path: 8E ...
mkdir data path: 8F ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: ...
mkdir data path: 9A ...
mkdir data path: 9B ...
mkdir data path: 9C ...
mkdir data path: 9D ...
mkdir data path: 9E ...
mkdir data path: 9F ...
mkdir data path: A0 ...
mkdir data path: A1 ...
mkdir data path: A2 ...
mkdir data path: A3 ...
mkdir data path: A4 ...
mkdir data path: A5 ...
mkdir data path: A6 ...
mkdir data path: A7 ...
mkdir data path: A8 ...
mkdir data path: A9 ...
mkdir data path: AA ...
mkdir data path: AB ...
mkdir data path: AC ...
mkdir data path: AD ...
mkdir data path: AE ...
mkdir data path: AF ...
mkdir data path: B0 ...
mkdir data path: B1 ...
mkdir data path: B2 ...
mkdir data path: B3 ...
mkdir data path: B4 ...
mkdir data path: B5 ...
mkdir data path: B6 ...
mkdir data path: B7 ...
mkdir data path: B8 ...
mkdir data path: B9 ...
mkdir data path: BA ...
mkdir data path: BB ...
mkdir data path: BC ...
mkdir data path: BD ...
mkdir data path: BE ...
mkdir data path: BF ...
mkdir data path: C0 ...
mkdir data path: C1 ...
mkdir data path: C2 ...
mkdir data path: C3 ...
mkdir data path: C4 ...
mkdir data path: C5 ...
mkdir data path: C6 ...
mkdir data path: C7 ...
mkdir data path: C8 ...
mkdir data path: C9 ...
mkdir data path: CA ...
mkdir data path: CB ...
mkdir data path: CC ...
mkdir data path: CD ...
mkdir data path: CE ...
mkdir data path: CF ...
mkdir data path: D0 ...
mkdir data path: D1 ...
mkdir data path: D2 ...
mkdir data path: D3 ...
mkdir data path: D4 ...
mkdir data path: D5 ...
mkdir data path: D6 ...
mkdir data path: D7 ...
mkdir data path: D8 ...
mkdir data path: D9 ...
mkdir data path: DA ...
mkdir data path: DB ...
mkdir data path: DC ...
mkdir data path: DD ...
mkdir data path: DE ...
mkdir data path: DF ...
mkdir data path: E0 ...
mkdir data path: E1 ...
mkdir data path: E2 ...
mkdir data path: E3 ...
mkdir data path: E4 ...
mkdir data path: E5 ...
mkdir data path: E6 ...
mkdir data path: E7 ...
mkdir data path: E8 ...
mkdir data path: E9 ...
mkdir data path: EA ...
mkdir data path: EB ...
mkdir data path: EC ...
mkdir data path: ED ...
mkdir data path: EE ...
mkdir data path: EF ...
mkdir data path: F0 ...
mkdir data path: F1 ...
mkdir data path: F2 ...
mkdir data path: F3 ...
mkdir data path: F4 ...
mkdir data path: F5 ...
mkdir data path: F6 ...
mkdir data path: F7 ...
mkdir data path: F8 ...
mkdir data path: F9 ...
mkdir data path: FA ...
mkdir data path: FB ...
mkdir data path: FC ...
mkdir data path: FD ...
mkdir data path: FE ...
mkdir data path: FF ...
data path: /home/yinzhengjie/fastdfs/data/fdfs_storage/store/data, mkdir sub dir done.
[-- ::] INFO - file: storage_param_getter.c, line: , use_storage_id=, id_type_in_filename=ip, storage_ip_changed_auto_adjust=, store_path=, reserved_storage_space=10.00%, use_trunk_file=, slot_min_size=, slot_max_size= MB, trunk_file_size= MB, trunk_create_file_advance=, trunk_create_file_time_base=:, trunk_create_file_interval=, trunk_create_file_space_threshold= GB, trunk_init_check_occupying=, trunk_init_reload_from_binlog=, trunk_compress_binlog_min_interval=, store_slave_file_use_link=
[-- ::] INFO - file: storage_func.c, line: , tracker_client_ip: 172.30.1.102, my_server_id_str: 172.30.1.102, g_server_id_in_filename:
[-- ::] ERROR - file: tracker_proto.c, line: , server: 172.30.1.101:, response status !=
[-- ::] ERROR - file: tracker_client_thread.c, line: , fdfs_recv_response fail, result:
[-- ::] ERROR - file: tracker_proto.c, line: , server: 172.30.1.102:, response status !=
[-- ::] ERROR - file: tracker_client_thread.c, line: , fdfs_recv_response fail, result:
[-- ::] INFO - file: tracker_client_thread.c, line: , successfully connect to tracker server 172.30.1.102:, as a tracker client, my ip is 172.30.1.102
[-- ::] INFO - file: tracker_client_thread.c, line: , tracker server: #. 172.30.1.101:, my_report_status: -
[-- ::] INFO - file: tracker_client_thread.c, line: , tracker server 172.30.1.102:, set tracker leader: 172.30.1.102:
[-- ::] INFO - file: storage_sync.c, line: , successfully connect to storage server 172.30.1.101:
[-- ::] INFO - file: tracker_client_thread.c, line: , successfully connect to tracker server 172.30.1.101:, as a tracker client, my ip is 172.30.1.102

[root@node102 ~]# tail -1000f /home/yinzhengjie/fastdfs/data/fdfs_storage/logs/storaged.log            #查看storaged进程日志

四.FastDFS的基本使用

1>.配置FastDFS的client的配置文件

[root@node101 ~]# cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
[root@node101 ~]#
[root@node101 ~]# grep base_path /etc/fdfs/client.conf
base_path=/home/yuqing/fastdfs
[root@node101 ~]#
[root@node101 ~]# sed -i s'#base_path=/home/yuqing/fastdfs#base_path=/var/log/fastdfs_client#' /etc/fdfs/client.conf          #配置日志的存放路径
[root@node101 ~]#
[root@node101 ~]# grep base_path /etc/fdfs/client.conf
base_path=/var/log/fastdfs_client
[root@node101 ~]#
[root@node101 ~]# grep tracker_server= /etc/fdfs/client.conf | grep -v ^#
tracker_server=192.168.0.197:
[root@node101 ~]#
[root@node101 ~]#
[root@node101 ~]# sed -i s'#tracker_server=192.168.0.197:22122#tracker_server=node101.yinzhengjie.org.cn:22122\ntracker_server=node102.yinzhengjie.org.cn:22122#' /etc/fdfs/client.conf      #配置Tracker地址
[root@node101 ~]#
[root@node101 ~]# grep tracker_server= /etc/fdfs/client.conf | grep -v ^#
tracker_server=node101.yinzhengjie.org.cn:
tracker_server=node102.yinzhengjie.org.cn:
[root@node101 ~]#
[root@node101 ~]# mkdir /var/log/fastdfs_client                                            #这一步骤必须做,如果该目录不存在的话,我们在下一步测试上传文件时会报错!
[root@node101 ~]#

2>.上传文件到FastDFS

[root@node101 ~]# fdfs_upload_file /etc/fdfs/client.conf /etc/passwd
group1/M00///rB4BZVxr8omAKBoWAAAEXu7xndU2260655          #注意,这里返回的值就是fastDFS存储路径
[root@node101 ~]#
[root@node101 ~]#

3>.下载文件到本地

[root@node101 ~]# fdfs_download_file /etc/fdfs/client.conf group1/M00///rB4BZVxr8omAKBoWAAAEXu7xndU2260655
[root@node101 ~]#
[root@node101 ~]# md5sum rB4BZVxr8omAKBoWAAAEXu7xndU2260655             
b8e310865d07d9d3a9eac16f6c5547ee rB4BZVxr8omAKBoWAAAEXu7xndU2260655
[root@node101 ~]#
[root@node101 ~]# md5sum /etc/passwd                      #我们会发现文件的内容并没有被修改!
b8e310865d07d9d3a9eac16f6c5547ee /etc/passwd
[root@node101 ~]#  
[root@node101 ~]# ls  /home/yinzhengjie/fastdfs/data/fdfs_storage/store/data///rB4BZVxr8omAKBoWAAAEXu7xndU2260655
/home/yinzhengjie/fastdfs/data/fdfs_storage/store/data///rB4BZVxr8omAKBoWAAAEXu7xndU2260655
[root@node101 ~]#
[root@node101 ~]# md5sum /home/yinzhengjie/fastdfs/data/fdfs_storage/store/data///rB4BZVxr8omAKBoWAAAEXu7xndU2260655
b8e310865d07d9d3a9eac16f6c5547ee /home/yinzhengjie/fastdfs/data/fdfs_storage/store/data///rB4BZVxr8omAKBoWAAAEXu7xndU2260655
[root@node101 ~]#
[root@node101 ~]# md5sum /etc/passwd
b8e310865d07d9d3a9eac16f6c5547ee /etc/passwd
[root@node101 ~]#
[root@node101 ~]# cat /home/yinzhengjie/fastdfs/data/fdfs_storage/store/data///rB4BZVxr8omAKBoWAAAEXu7xndU2260655
root:x:::root:/root:/bin/bash
bin:x:::bin:/bin:/sbin/nologin
daemon:x:::daemon:/sbin:/sbin/nologin
adm:x:::adm:/var/adm:/sbin/nologin
lp:x:::lp:/var/spool/lpd:/sbin/nologin
sync:x:::sync:/sbin:/bin/sync
shutdown:x:::shutdown:/sbin:/sbin/shutdown
halt:x:::halt:/sbin:/sbin/halt
mail:x:::mail:/var/spool/mail:/sbin/nologin
operator:x:::operator:/root:/sbin/nologin
games:x:::games:/usr/games:/sbin/nologin
ftp:x:::FTP User:/var/ftp:/sbin/nologin
nobody:x:::Nobody:/:/sbin/nologin
systemd-network:x:::systemd Network Management:/:/sbin/nologin
dbus:x:::System message bus:/:/sbin/nologin
polkitd:x:::User for polkitd:/:/sbin/nologin
sshd:x:::Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x::::/var/spool/postfix:/sbin/nologin
chrony:x::::/var/lib/chrony:/sbin/nologin
yinzhengjie:x:::Jason Yin:/home/yinzhengjie:/bin/bash
ntp:x::::/etc/ntp:/sbin/nologin
mysql:x:::MySQL Server:/var/lib/mysql:/bin/false
gluster:x:::GlusterFS daemons:/run/gluster:/sbin/nologin
rpc:x:::Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
[root@node101 ~]#

[root@node101 ~]# md5sum /home/yinzhengjie/fastdfs/data/fdfs_storage/store/data/00/00/rB4BZVxr8omAKBoWAAAEXu7xndU2260655

4>.查询文件信息

[root@node101 ~]# fdfs_file_info /etc/fdfs/client.conf group1/M00///rB4BZVxr8omAKBoWAAAEXu7xndU2260655
source storage id:
source ip address: 172.30.1.101
file create timestamp: -- ::
file size:
file crc32: (0xEEF19DD5)
[root@node101 ~]#

5>.给某个文件追加内容

[root@node101 ~]#
[root@node101 ~]# echo "尹正杰到此一游!" > .txt
[root@node101 ~]#
[root@node101 ~]# echo "Jason Yin" > .txt
[root@node101 ~]#
[root@node101 ~]# cat .txt
尹正杰到此一游!
[root@node101 ~]#
[root@node101 ~]# cat .txt
Jason Yin
[root@node101 ~]#
[root@node101 ~]# fdfs_upload_appender /etc/fdfs/client.conf .txt
group1/M00///rB4BZVxr9pOEPLVbAAAAAEM-3fw595.txt
[root@node101 ~]#
[root@node101 ~]# fdfs_append_file /etc/fdfs/client.conf group1/M00///rB4BZVxr9pOEPLVbAAAAAEM-3fw595.txt .txt         #我们这里吧2.txt的内容追加到了1.txt中!
[root@node101 ~]#           
[root@node101 ~]# fdfs_download_file /etc/fdfs/client.conf group1/M00///rB4BZVxr9pOEPLVbAAAAAEM-3fw595.txt
[root@node101 ~]#
[root@node101 ~]# cat rB4BZVxr9pOEPLVbAAAAAEM-3fw595.txt
尹正杰到此一游!
Jason Yin
[root@node101 ~]#

6>.删除文件

[root@node101 ~]#
[root@node101 ~]# fdfs_file_info /etc/fdfs/client.conf group1/M00///rB4BZVxr9pOEPLVbAAAAAEM-3fw595.txt          #我们已经确认该文件已经存在,使用下面的命令删除该文件后就无法查看到该文件的信息啦!
source storage id:
source ip address: 172.30.1.101
file create timestamp: -- ::
file size:
file crc32: (0x433EDDFC)
[root@node101 ~]#
[root@node101 ~]#
[root@node101 ~]# fdfs_delete_file /etc/fdfs/client.conf group1/M00///rB4BZVxr9pOEPLVbAAAAAEM-3fw595.txt          #删除FastDFS中已经存在的文件
[root@node101 ~]#
[root@node101 ~]#
[root@node101 ~]# fdfs_file_info /etc/fdfs/client.conf group1/M00///rB4BZVxr9pOEPLVbAAAAAEM-3fw595.txt
[-- ::] ERROR - file: tracker_proto.c, line: , server: 172.30.1.101:, response status !=
[-- ::] ERROR - file: ../client/storage_client.c, line: , fdfs_recv_response fail, result:
query file info fail, error no: , error info: No such file or directory
[root@node101 ~]#
[root@node101 ~]#

7>.监控FastDFS集群信息

[root@node101 ~]# fdfs_monitor /etc/fdfs/client.conf
[-- ::] DEBUG - base_path=/var/log/fastdfs_client, connect_timeout=, network_timeout=, tracker_server_count=, anti_steal_token=, anti_steal_secret_key length=, use_connection_pool=, g_connection_pool_max_idle_time=3600s, use_storage_id=, storage server id count: server_count=, server_index= tracker server is 172.30.1.102: group count: Group :
group name = group1
disk total space = MB
disk free space = MB
trunk free space = MB
storage server count =
active server count =
storage server port =
storage HTTP port =
store path count =
subdir count per path =
current write server index =
current trunk file id = Storage :
id = 172.30.1.101
ip_addr = 172.30.1.101 (node101.yinzhengjie.org.cn) ACTIVE
http domain =
version = 5.11
join time = -- ::
up time = -- ::
total storage = MB
free storage = MB
upload priority =
store_path_count =
subdir_count_per_path =
storage_port =
storage_http_port =
current_write_path =
source storage id =
if_trunk_server =
connection.alloc_count =
connection.current_count =
connection.max_count =
total_upload_count =
success_upload_count =
total_append_count =
success_append_count =
total_modify_count =
success_modify_count =
total_truncate_count =
success_truncate_count =
total_set_meta_count =
success_set_meta_count =
total_delete_count =
success_delete_count =
total_download_count =
success_download_count =
total_get_meta_count =
success_get_meta_count =
total_create_link_count =
success_create_link_count =
total_delete_link_count =
success_delete_link_count =
total_upload_bytes =
success_upload_bytes =
total_append_bytes =
success_append_bytes =
total_modify_bytes =
success_modify_bytes =
stotal_download_bytes =
success_download_bytes =
total_sync_in_bytes =
success_sync_in_bytes =
total_sync_out_bytes =
success_sync_out_bytes =
total_file_open_count =
success_file_open_count =
total_file_read_count =
success_file_read_count =
total_file_write_count =
success_file_write_count =
last_heart_beat_time = -- ::
last_source_update = -- ::
last_sync_update = -- ::
last_synced_timestamp = -- :: (0s delay)
Storage :
id = 172.30.1.102
ip_addr = 172.30.1.102 (node102.yinzhengjie.org.cn) ACTIVE
http domain =
version = 5.11
join time = -- ::
up time = -- ::
total storage = MB
free storage = MB
upload priority =
store_path_count =
subdir_count_per_path =
storage_port =
storage_http_port =
current_write_path =
source storage id = 172.30.1.101
if_trunk_server =
connection.alloc_count =
connection.current_count =
connection.max_count =
total_upload_count =
success_upload_count =
total_append_count =
success_append_count =
total_modify_count =
success_modify_count =
total_truncate_count =
success_truncate_count =
total_set_meta_count =
success_set_meta_count =
total_delete_count =
success_delete_count =
total_download_count =
success_download_count =
total_get_meta_count =
success_get_meta_count =
total_create_link_count =
success_create_link_count =
total_delete_link_count =
success_delete_link_count =
total_upload_bytes =
success_upload_bytes =
total_append_bytes =
success_append_bytes =
total_modify_bytes =
success_modify_bytes =
stotal_download_bytes =
success_download_bytes =
total_sync_in_bytes =
success_sync_in_bytes =
total_sync_out_bytes =
success_sync_out_bytes =
total_file_open_count =
success_file_open_count =
total_file_read_count =
success_file_read_count =
total_file_write_count =
success_file_write_count =
last_heart_beat_time = -- ::
last_source_update = -- ::
last_sync_update = -- ::
last_synced_timestamp = -- :: (0s delay)
[root@node101 ~]#
[root@node101 ~]#

[root@node101 ~]# fdfs_monitor /etc/fdfs/client.conf

FastDFS 分布式文件系统部署实战及基本使用的更多相关文章

  1. 07.Linux系统-Fastdfs分布式文件系统-互为主从配置搭建部署

    Fastdfs分布式文件系统-互为主从配置部署 1.安装基础依赖 yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl ...

  2. FastDFS分布式文件系统

    FastDFS分布式文件系统 阅读目录 相关文章 1 分布式文件系统介绍 2 系统架构介绍 3 FastDFS性能方案 4 Linux基本命令操作 5 安装VirtualBox虚拟机并配置Ubuntu ...

  3. django中使用FastDFS分布式文件系统接口代码实现文件上传、下载、更新、删除

    运维使用docker部署好之后FastDFS分布式文件系统之后,提供给我接口如下: fastdfs tracker 192.168.1.216 192.168.1.217 storage 192.16 ...

  4. Dubbo入门到精通学习笔记(八):ActiveMQ的安装与使用(单节点)、Redis的安装与使用(单节点)、FastDFS分布式文件系统的安装与使用(单节点)

    文章目录 ActiveMQ的安装与使用(单节点) 安装(单节点) 使用 目录结构 edu-common-parent edu-demo-mqproducer edu-demo-mqconsumer 测 ...

  5. FastDFS 分布式文件系统的安装与使用(单节点)

    FastDFS 分布式文件系统的安装与使用(单节点) 跟踪服务器:192.168.4.121 (edu-dfs-tracker-01) 存储服务器:192.168.4.125 (edu-dfs-sto ...

  6. 使用Webupload上传图片到FastDFS分布式文件系统

    使用Webupload插件上传图片到FastDFS分布式文件系统. 前提条件:1.已安装FastDFS分布式文件系统 2.使用webuploader插件上传文件 3.maven工程已引入FastDFS ...

  7. GlusterFS分布式文件系统部署及基本使用(CentOS 7.6)

    GlusterFS分布式文件系统部署及基本使用(CentOS 7.6) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Gluster File System 是一款自由软件,主要由 ...

  8. CentOS7 安装FastDFS分布式文件系统

    CentOS7 安装FastDFS分布式文件系统 最近要用到fastDFS,所以自己研究了一下,在搭建FastDFS的过程中遇到过很多的问题,为了能帮忙到以后搭建FastDFS的同学,少走弯路,与大家 ...

  9. FastDFS分布式⽂文件系统

    FastDFS分布式⽂文件系统  1. 什么是FastDFS FastDFS 是⽤用 c 语⾔言编写的⼀一款开源的分布式⽂文件系统.FastDFS 为互联⽹网量量身定制, 充分考虑了了冗余备份.负载均 ...

随机推荐

  1. 读取CSV到DataTable

    using System; using System.Collections.Generic; using System.Data; using System.Data.OleDb; using Sy ...

  2. 基准对象object中的基础类型----元组 (五)

    object有如下子类: CLASSES object basestring str unicode buffer bytearray classmethod complex dict enumera ...

  3. 【XSY2772】数列 特征多项式 数学

    题目描述 给你一个数列: \[ f_n=\begin{cases} a^n&1\leq n\leq k\\ \sum_{i=1}^k(a-1)f_{n-i}&n>k \end{c ...

  4. 【AGC013C】Ants on a Circle 弹性碰撞

    题目大意 一个长度为\(lm\)的环上有\(n\)只蚂蚁,告诉你每只蚂蚁的位置和朝向,每只蚂蚁会向前爬,速度为\(1m/s\),两只蚂蚁相遇后都会掉头,问你\(t\)秒后每只蚂蚁的位置. \(n\le ...

  5. swagger2 如何匹配多个controller

    方法一:使用多个controller的共同拥有的父类,即精确到两个controller的上一级 @Bean public Docket createRestApi() { return new Doc ...

  6. reactNative 基础

    参考:中文网,极客 一 . 基本程序: import React, { Component } from 'react'; import { Text } from 'react-native'; e ...

  7. MT【306】圆与椭圆公切线段

    已知椭圆方程$\dfrac{x^2}{4}+\dfrac{y^2}{3}=1$,圆方程$x^2+y^2=r^2,(3<r^2<4)$,若直线$l$与椭圆和圆分别切于点$P,Q$求$|PQ| ...

  8. 【CodeForces706E】Working routine(二维链表)

    BUPT2017 wintertraining(15) #6B 题意 q次操作,每次把两个给定子矩阵交换,求最后的矩阵.(2 ≤ n, m ≤ 1000, 1 ≤ q ≤ 10 000) 题解 用R[ ...

  9. 聊聊jvm的CompressedClassSpace

    序本文主要研究一下jvm的CompressedClassSpace CompressedClassSpacejava8移除了permanent generation,然后class metadata存 ...

  10. [SHOI2014]概率充电器(概率+换根dp)

    著名的电子产品品牌SHOI 刚刚发布了引领世界潮流的下一代电子产品—— 概率充电器: “采用全新纳米级加工技术,实现元件与导线能否通电完全由真随机数决 定!SHOI 概率充电器,您生活不可或缺的必需品 ...