1/28FastDFS使用文档目录一、FastDFS原理..........................................................................................3二、FastDFS分布式文件系统的安装与使用.....................................................91、所有跟踪服务器和存储服务器均执行如下操作.................................101.1、编译和安装所需的依赖包:.............................................................101.2、安装libfastcommon:....................................................................101.3、安装FastDFS..............................................................................112、配置置SFastDFS跟踪器((192.168.4.121))......................................142.1、复制FastDFS跟踪器样例配置文件,并重命名:................................142.2、编辑跟踪器配置文件:................................................................142.3、创建基础数据目录(参考基础目录base_path配置):....................152.4、防火墙中打开跟踪器端口(默认为22122):.................................152.5、启动Tracker:...........................................................................152.6、关闭Tracker:...........................................................................152.7、设置FastDFS跟踪器开机启动:..................................................153、配置置SFastDFS存储((192.168.4.125)).........................................163.1、复制FastDFS存储器样例配置文件,并重命名:................................163.2、编辑存储器样例配置文件:.........................................................163.3、创建基础数据目录(参考基础目录base_path配置):....................173.4、防火墙中打开存储器端口(默认为23000):.................................172/283.5、启动Storage:...........................................................................173.6、关闭Storage:...........................................................................173.7、设置FastDFS存储器开机启动:..................................................184、文件上传测试((192.168.4.121))......................................................184.1、修改Tracker服务器中的客户端配置文件:....................................184.2、执行如下文件上传命令:..............................................................185、在每个存储节点上安装nginx........................................................195.1、fastdfs-nginx-module作用说明.....................................................195.2、上传fastdfs-nginx-module_v1.16.tar.gz.........................................19位置:/usr/local/src.............................................................................195.3、解压...........................................................................................195.4、修改fastdfs-nginx-module的config配置文件................................205.5、上传当前的稳定版本Nginx(nginx-1.6.2.tar.gz)...............................20位置:/usr/local/src目录.....................................................................205.6、安装编译Nginx所需的依赖包.......................................................205.7、编译安装Nginx(添加fastdfs-nginx-module模块).......................205.8、复制fastdfs-nginx-module源码中的配置文件.................................21复制fastdfs-nginx-module到/etc/fdfs目录,并修改..............................215.9、复制FastDFS的部分配置文件到/etc/fdfs目录...............................215.10、在/fastdfs/storage文件存储目录下创建软连接..............................21创建软连接将其链接到实际存放数据的目录...........................................215.11、配置Nginx................................................................................215.12、防火墙中打开Nginx的8888端口...............................................235.13、启动Nginx................................................................................233/285.14、通过浏览器访问测试时上传的文件...............................................23三、java客户端测试代码...............................................................................24一、FastDFS原理FastDFS是一个开源的轻量级分布式文件系统,由跟踪服务器(trackerserver)、存储服务器(storageserver)和客户端(client)三个部分组成,主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KBfile_size500MB)为载体的在线服务。4/28StorageserverStorageserver(后简称storage)以组(卷,group或volume)为单位组织,一个group内包含多台storage机器,数据互为备份,存储空间以group内容量最小的storage为准,所以建议group内的多个storage尽量配置相同,以免造成存储空间的浪费。以group为单位组织存储能方便的进行应用隔离、负载均衡、副本数定制(group内storageserver数量即为该group的副本数),比如将不同应用数据存到不同的group就能隔离应用数据,同时还可根据应用的访问特性来将应用分配到不同的group来做负载均衡;缺点是group的容量受单机存储容量的限制,同时当group内有机器坏掉时,数据恢复只能依赖group内地其他机器,使得恢复时间会很长。5/28group内每个storage的存储依赖于本地文件系统,storage可配置多个数据存储目录,比如有10块磁盘,分别挂载在/data/disk1-/data/disk10,则可将这10个目录都配置为storage的数据存储目录。storage接受到写文件请求时,会根据配置好的规则(后面会介绍),选择其中一个存储目录来存储文件。为了避免单个目录下的文件数太多,在storage第一次启动时,会在每个数据存储目录里创建2级子目录,每级256个,总共65536个文件,新写的文件会以hash的方式被路由到其中某个子目录下,然后将文件数据直接作为一个本地文件存储到该目录中。TrackerserverTracker是FastDFS的协调者,负责管理所有的storageserver和group,每个storage在启动后会连接Tracker,告知自己所属的group等信息,并保持周期性的心跳,tracker根据storage的心跳信息,建立group==[storageserverlist]的映射表。Tracker需要管理的元信息很少,会全部存储在内存中;另外tracker上的元信息都是由storage汇报的信息生成的,本身不需要持久化任何数据,这样使得tracker非常容易扩展,直接增加tracker机器即可扩展为trackercluster来服务,cluster里每个tracker之间是完全对等的,所有的tracker都接受stroage的心跳信息,生成元数据信息来提供读写服务。UploadfileFastDFS向使用者提供基本文件访问接口,比如upload、download、append、delete等,以客户端库的方式提供给用户使用。选择trackerserver当集群中不止一个trackerserver时,由于tracker之间是完全对等的关系,客户端在upload文件时可以任意选择一个trakcer。6/28选择存储的group当tracker接收到uploadfile的请求时,会为该文件分配一个可以存储该文件的group,支持如下选择group的规则:1.Roundrobin,所有的group间轮询2.Specifiedgroup,指定某一个确定的group3.Loadbalance,剩余存储空间多多group优先选择storageserver当选定group后,track