FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。FastDFS特别适合以文件为载体的在线服务,多图片、多视频的服务等等。

  先普及一下在fastDFS的结构中的一些概念:

  在fastDFS中,共分为三个部分:client、tracker Server、storage Server;→ 其中的client是用来对fastDFS发起操作的,如上传、下载;→ 其中的tracker Server是一个调配角色(中间人),当我们在client发起操作请求后,需要tracker Server来将我们与storage Server联系起来,它是负载均衡的核心;→ 其中storage Server可以理解为仓库,文件的存储就在于storage Server,一个完整的fastDFS的存储结构中,最大单位为group(或volume),通常以group来划分文件类型,如图片类型为一个group、视频类型为一个group等等,而一个group内,含有一个或多个storage Server。重点:storage Server是文件存储的核心,但它并不是文件存储中的最大单位,很多初学者会在这个地方迷惑。

  一、两个角色:

  FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。

  ①跟踪器(tracker)

  tracker Server是fastDFS的协调者(中间人角色);完整的fastDFS服务运行期间,我们将对无法对storage Server进行直接管理,仅仅我们发起的操作会对storage Server内的文件进行操作,而真正对storage Server进行管理的是tracker Server——每个storage Server在启动后,会连接tracker Server并告知之自己的信息(如所在group),并且在tracker Server与该storage Server之间保持连接,两个角色之间会进行信息的交流,tracker Server会根据storage Server的反馈信息,在内存中(tracker Server不需要持久化任何数据)建立group==>[storage server list]映射表。

  在fastDFS集群中,多个tracker Server之间的信息数据会进行同步,而这一机制并不是由tracker Server之间互相完成的,而是由storage Server完成的。因为在storage Server的配置文件有该fastDFS服务中的所有tracker Server,storage Server会为每一个tracker Server创建一个通信线程,在storage Server与tracker Server通信过程中,如果该tracker Server返回的该group的storage Server列表信息相对于本机较少,那么storage Server就会将该tracker Server上所没有的该group的storage Server列表信息同步给该tracker Server。这就使得各tracker Server之间的数据保持一致。

  ②存储节点(storage)

  storage Server是存储的角色,存储文件由storage Server进行管理。每一个storage Server的数据存储目录会有两级子目录,每一级都有256个子文件夹,一共有256*256=65536个文件夹。当有新文件被写入时,会以hash的方式被路由到其中的某个子目录下,然后新文件数据直接作为一个本地文件存储到该目录中。

  storage Server以group【或volume(一个意思)】为单位组织,即便整个fastDFS只有一个storage Server,它也有一个group。

  在fastDFS集群中,以group为单位可以方便负载均衡,由tracker Server配合可以实现改组内访问压力的均衡;也可以方便副本(即备份)数量的定制,同一组内的storage Server的数量减一,即为副本的数量。

  在一个group内的storage Server之间的数据会互为备份,这一功能是由后台线程完成的。当客户端将一个文件写入group内的一个storage Server,则会认为文件写入成功,后台线程便会将文件同步到该group内的storage Server。注意:由于一个group内的storage Server数据互为备份,所以存储空间的容量由该group内的最小容量的storage Server决定。

  同一个group内的storage Server在写文件后,会写一份binlog,这个binlog记录着文件名等元信息,它用于后台的同步,每个storage Server会记录向该group内其他storage Server的同步进度,记录进度的方式是时间戳,为的是避免机器down掉失去同步进度,以便在机器重启后接着进度继续同步。同时storage Server的同步进度会以元数据发送给tracker Server,以便在client访问文件时,作为tracker Server选择服务的storage Server的参考(即哪台strong Server上有该文件)。

  图解:

  

  二、文件的Upload过程

  

  1、选择tracker Server

  当集群不止一个tracker Server时,由于tracker Server之间是数据互为同步,完全对等,客户端任意选择即可。

  2、选择存储的group

  

  这个是tracker.conf配置文件的两项,其中的store_lookup用来选择group的规则;当tracker接收到upload file的请求时,会为该文件分配一个可以存储该文件的group,支持如下选择group的规则: 1. Round robin,所有的group间轮询 2. Specified group,指定某一个确定的group 3. Load balance,剩余存储空间多多group优先。当store_lookup为2时,可通过store_group进行指定group。

  3、选择storage Server

  

  这个是tracker.conf配置文件的一项,其中的store_server用来选择storage Server的规则;当选定group后,tracker会在group内选择一个storage server给客户端,支持如下选择storage的规则: 1. Round robin,在group内的所有storage间轮询 2. First server ordered by ip,按ip排序 3. First server ordered by priority,按优先级排序(优先级在storage上配置)。

  4、选择storage path

  

  这个是tracker.conf配置文件的一项,其中的store_path用来选择storage path的规则;当分配好storage server后,客户端将向storage发送写文件请求,storage将会为文件分配一个数据存储目录,支持如下规则: 1. Round robin,多个存储目录间轮询 2. 剩余存储空间最多的优先。

  5、选择目录并生成文件名

  当选定存储目录后,storage Server会为文件生成一个file_id,然后将文件路由到一个二级目录,并以file_id为文件名存储到该子目录。当文件存储到某个子目录后,即认为该文件存储成功,接下来会为该文件生成一个文件名,文件名由group、存储目录、两级子目录、fileid、文件后缀名(由客户端指定,主要用于区分文件类型)拼接而成。

  

  三、文件的下载及Nginx模块

  

  访问过程:

  client发送download请求给某个tracker Server,必须带上文件名信息,tracke Server从文件名中解析出文件的group、大小、创建时间等信息,然后为该请求选择一个storage Server用来服务该download请求。

  HTTP访问支持:

  FastDFS的tracker Server和storage Server都内置了http协议的支持,客户端可以通过http协议来下载文件,tracker在接收到请求时,通过http的redirect机制将请求重定向至文件所在的storage Server上;除了内置的http协议外,FastDFS还提供了通过apache或nginx扩展模块下载文件的支持。

  Nginx扩展模块:

  在storage Server节点与tracker Server节点都需要安装nginx模块。

  目的:

  1、在storage Server安装nginx模块是结合fastdfs-nginx-module模块提供的Http访问服务,同时解决group中storage Serve而服务器的同步延迟;可能有些同学不理解,通俗一下:

  假设Tracker服务器将文件上传到了192.168.1.80,文件ID已经返回客户端,这时,后台会将这个文件复制到192.168.1.30,如果复制没有完成,客户端就用这个ID在192.168.1.30取文件,肯定会出现错误。这个fastdfs-nginx-module可以重定向连接到源服务器取文件,避免客户端由于复制延迟的问题,出现错误。

  2、在tracker Server上安装nginx模块是为了反向代理到storage Server上的nginx,并进行负载均衡,同时利用ngx_cache_purge模块实现缓存。

  

  四、配置文件详解

  (摘自XuJiaqing的博客)

  1、tracker Server的配置详解

  

 # is this config file disabled  

 # false for enabled  

 # true for disabled  

 disabled=false  

 #当前配置是否不可用false可用,true不可用  

 # bind an address of this host  

 # empty for bind all addresses of this host  

 bind_addr=  

 #是否绑定IP如果一个服务器上有多个IP则设置哪个IP可用,如果不设置则不限制  

 # the tracker server port  

 port=

 #默认端口为22122 如果不冲突,则尽量不要修改

 # connect timeout in seconds  

 # default value is 30s  

 connect_timeout=  

 #针对socket套接字函数connect的连接超时时间设置  

 # network timeout in seconds  

 # default value is 30s  

 network_timeout=  

 #设置网络超时,单位秒,发送或接收数据时,如果在超时时间之后依然不能进行,则本次网络通讯失败  

 # the base path to store data and log files  

 base_path=/home/fdfs  

 #配置保存根目录地址,这个目录必须存在,子目录将自动创建,保存数据和日志文件呢 

 # max concurrent connections this server supported  

 max_connections=  

 #服务器支持的最大连接数  

 # work thread count, should <= max_connections  

 # default value is   

 # since V2.  

 work_threads=  

 #工作线程数,通常设置为CPU数量  

 # the method of selecting group to upload files  

 # : round robin  

 # : specify group  

 # : load balance, select the max free space group to upload file  

 store_lookup=  

 #上传组(卷)的方式:0轮询,:指定,:负载平衡(剩余空间最大选择)  

 # which group to upload file  

 # when store_lookup set to , must set store_group to the group name  

 store_group=group2  

 #如果上一参数选择1方式,即制定组名,当前参数用来设置指定的组,如果选择其他方式,当前参数无效  

 # which storage server to upload file  

 # : round robin (default)  

 # : the first server order by ip address  

 # : the first server order by priority (the minimal)  

 store_server=  

 #同组推送方式0.轮询方式,.根据ip地址进行排序选择第一个服务器,.根据优先级进行排序(优先级由storeServer的配置文件中upload_priority属性设置)  

 # which path(means disk or mount point) of the storage server to upload file  

 # : round robin  

 # : load balance, select the max free space path to upload file  

 store_path=  

 #选择哪个文件目录进行上传(一个StoreServer上面可以有多个base_path).轮询,.剩余空间最大  

 # which storage server to download file  

 # : round robin (default)  

 # : the source storage server which the current file uploaded to  

 download_server=  

 #选择哪个storeServer最为下载服务器,.轮询,.哪个为源则哪个下载  

 # reserved storage space for system or other applications.  

 # if the free(available) space of any stoarge server in   

 # a group <= reserved_storage_space,   

 # no file can be uploaded to this group.  

 # bytes unit can be one of follows:  

 ### G or g for gigabyte(GB)  

 ### M or m for megabyte(MB)  

 ### K or k for kilobyte(KB)  

 ### no unit for byte(B)  

 ### XX.XX% as ratio such as reserved_storage_space = %  

 reserved_storage_space = %  

 #系统保留空间大小,用来保证系统和其他应用的正常运行  

 #standard log level as syslog, case insensitive, value list:  

 ### emerg for emergency  

 ### alert  

 ### crit for critical  

 ### error  

 ### warn for warning  

 ### notice  

 ### info  

 ### debug  

 log_level=info  

 #日志级别  

 #unix group name to run this program,   

 #not set (empty) means run by the group of current user  

 run_by_group=  

 #使用那个系统用户组运行FastDFS,默认为启动线程的用户组  

 #unix username to run this program,  

 #not set (empty) means run by current user  

 run_by_user=  

 #使用那个系统用户运行FastDFS。默认为启动线程的用户  

 # allow_hosts can ocur more than once, host can be hostname or ip address,  

 # "*" means match all ip addresses, can use range like this: 10.0..[-,] or  

 # host[-,-].domain.com, for example:  

 # allow_hosts=10.0..[-,]  

 # allow_hosts=host[-,-].domain.com  

 allow_hosts=*  

 #设置可以连接当前tracker的IP范围,包括client和store_server,* 代表所有

 # sync log buff to disk every interval seconds  

 # default value is  seconds  

 sync_log_buff_interval =   

 #同步或刷新日志到本地硬盘的时间间隔,单位:秒  

 # check storage server alive interval seconds  

 check_active_interval =   

 #检测storage_server的存活状态时间间隔,单位:秒,本参数要大于storage server的心跳包发送间隔一般为2-3倍  

 # thread stack size, should >= 64KB  

 # default value is 64KB  

 thread_stack_size = 64KB  

 #tracker server的线程栈大小,要求大于等于64K  

 # auto adjust when the ip address of the storage server changed  

 # default value is true  

 storage_ip_changed_auto_adjust = true  

 #当storage server的IP发生变化时集群是否自动调整。只有在storage server进程重启时才能完成自动调整  

 # storage sync file max delay seconds  

 # default value is  seconds (one day)  

 # since V2.  

 storage_sync_file_max_delay =   

 #存储服务器之间同步文件的最大延迟时间,缺省为1天,可以根据实际情况进行调整  

 # the max time of storage sync a file  

 # default value is  seconds  

 # since V2.  

 storage_sync_file_max_time =   

 #同步一个文件需要消耗的最大时间,缺省为300秒,即5分钟  

 # if use a trunk file to store several small files  

 # default value is false  

 # since V3.  

 use_trunk_file = false   

 #是否使用小文件合并存储特性,缺省关闭,打开时可以减少碎片文件的出现,但同时加大服务器的负载  

 # the min slot size, should <= 4KB  

 # default value is  bytes  

 # since V3.  

 slot_min_size =   

 #为trunk file分配的最小字节数,比如一个文件只有16字节,根据当前设置,也会为其分配256字节  

 # the max slot size, should > slot_min_size  

 # store the upload file to trunk file when it's size <=  this value  

 # default value is 16MB  

 # since V3.  

 slot_max_size = 16MB  

 #为trunk file分配的最大字节数,如果文件小于大小则使用trunk方式存储,当文件大小大于这个数值是直接保存到一个文件中(不采用合并存储方式)  

 # the trunk file size, should >= 4MB  

 # default value is 64MB  

 # since V3.  

 trunk_file_size = 64MB  

 #trunk file的大小,不建议设置过大  

 # if create trunk file advancely  

 # default value is false  

 # since V3.  

 trunk_create_file_advance = false  

 #是否提前创建好trunk文件,只用当这个参数设置为true时下面的3个以trunk_create_file开头的参数将不用设置  

 # the time base to create trunk file  

 # the time format: HH:MM  

 # default value is :  

 # since V3.  

 trunk_create_file_time_base = :  

 #创建trunk file的起始时间点,当前为凌晨2点开始  

 # the interval of create trunk file, unit: second  

 # default value is  (one day)  

 # since V3.  

 trunk_create_file_interval =   

 #提前创建trunk file的时间间隔,默认为1天  

 # the threshold to create trunk file  

 # when the free trunk file size less than the threshold, will create   

 # the trunk files  

 # default value is   

 # since V3.  

 trunk_create_file_space_threshold = 20G  

 #提前创建trunk file时,需要达到的空闲trunk大小  

 #例如:当前配置为20G,现在空闲的trunk file大小为4G,那么只创建16G的trunk file  

 # if check trunk space occupying when loading trunk free spaces  

 # the occupied spaces will be ignored  

 # default value is false  

 # since V3.  

 # NOTICE: set this parameter to true will slow the loading of trunk spaces   

 # when startup. you should set this parameter to true when neccessary.  

 trunk_init_check_occupying = false  

 #trunk file 初始化时,是否检查可用空间是否被占用  

 # if ignore storage_trunk.dat, reload from trunk binlog  

 # default value is false  

 # since V3.  

 # set to true once for version upgrade when your version less than V3.  

 trunk_init_reload_from_binlog = false  

 #是否无条件从trunk binlog中加载trunk可用空间信息  

 # if use storage ID instead of IP address  

 # default value is false  

 # since V4.  

 use_storage_id = false  

 #是否使用 serverID作为storage server标识  

 # specify storage ids filename, can use relative or absolute path  

 # since V4.  

 storage_ids_filename = storage_ids.conf  

 #use_storage_id设置为true,才需要设置本参数,详见源码目录下的conf/storage_ids.conf  

 #这个文件中设置组名、serverID和对应的IP地址  

 # id type of the storage server in the filename, values are:  

 ## ip: the ip address of the storage server  

 ## id: the server id of the storage server  

 # this paramter is valid only when use_storage_id set to true  

 # default value is ip  

 # since V4.  

 id_type_in_filename = ip  

 #use_storage_id设置为true时才需要设置本参数  

 # if store slave file use symbol link  

 # default value is false  

 # since V4.  

 store_slave_file_use_link = false  

 #存储从文件是否采用symbol link(符号链接)方式  

 #如果设置为true,一个从文件将占用两个文件:原始文件及指向它的符号链接  

 # if rotate the error log every day  

 # default value is false  

 # since V4.  

 rotate_error_log = false  

 #是否定期轮转error log,目前仅支持一天轮转一次  

 # rotate error log time base, time format: Hour:Minute  

 # Hour from  to , Minute from  to   

 # default value is :  

 # since V4.  

 error_log_rotate_time=:  

 #error log定期轮转的时间节点,rotate_error_log参数设置为true时,本参数有效  

 # rotate error log when the log file exceeds this size  

 #  means never rotates log file by log file size  

 # default value is   

 # since V4.  

 rotate_error_log_size =   

 #error log按大小进行轮转 0代表不按大小进行轮转,否则当error log文件达到大小则轮转  

 # if use connection pool  

 # default value is false  

 # since V4.  

 use_connection_pool = false  

 #是否使用连接池  

 # connections whose the idle time exceeds this time will be closed  

 # unit: second  

 # default value is   

 # since V4.  

 connection_pool_max_idle_time =   

 #连接池链接的最大生存时间,单位秒,use_connection_pool设置为true时有效  

 # HTTP port on this tracker server  

 http.server_port=  

 #http服务端口,默认情况下V4.06是不安装http服务的,详见INSTALL文件  

 # check storage HTTP server alive interval seconds  

 # <=  for never check  

 # default value is   

 http.check_alive_interval=  

 #检查长链接的存活时间30秒  

 # check storage HTTP server alive type, values are:  

 #   tcp : connect to the storge server with HTTP port only,   

 #   do not request and get response  

 #   http: storage check alive url must return http status   

 # default value is tcp  

 http.check_alive_type=tcp  

 #长链接的存在方式,当前配置为tcp方式  

 # check storage HTTP server alive uri/url  

 # NOTE: storage embed HTTP server support uri: /status.html  

 http.check_alive_uri=/status.html  

 #利用什么标识进行检查  

tracker.conf

  2、storage Server配置详解

  

 #这个配置文件是否失效

 disabled=false

 #false为有效 true为无效

 # 本storage server所属的group名

 group_name=group1

 # 可以版定一个ip,默认为空,绑定所有ip

 bind_addr=

 # 本配置只有在bind_addr设置以后才生效

 # 本机作为客户端访问其他服务时,是否使用绑定的ip去访问其他服务器

 client_bind=true

 # storage server监听端口

 port=

 #默认23000,如果不冲突,尽量不修改

 # 连接超时时间,针对socket套接字函数connect,默认为30秒

 connect_timeout=

 # 网络通讯超时时间,默认是60秒

 network_timeout=

 # 向tracker server发送心跳时间间隔,默认30秒

 heart_beat_interval=

 # 向tracker server汇报磁盘使用情况时间间隔,默认为60秒

 stat_report_interval=

 # 工作文件夹,日志也存在此(这里不是上传的文件存放的地址)

 base_path=/home/yuqing/fastdfs

 # 本traceserver最大连接数

 max_connections=

 # 发送或接收数据的buffer大小,工作队列消耗的内存大小 = buff_size * max_connections

 # 建议这个设置大于8k,默认256k

 buff_size = 256KB

 # 接收数据的线程数

 # 默认1个

 # since V4.

 accept_threads=

 # 工作线程数,小于max_connections

 # 默认4个,通常设置为CPU核数,效率最高

 work_threads=

 # 磁盘读写是否分离,默认为true

 disk_rw_separated = true

 # 磁盘读取的线程数(每个工作文件夹)

 # 对于磁盘读写不分离的模式,这个参数可以设置为0

 # 默认为1

 disk_reader_threads = 

 # 磁盘写的线程数(每个工作文件夹)

 # 对于磁盘读写不分离的模式,这个参数可以设置为0

 # 默认为1

 disk_writer_threads = 

 # 当发现没有需要同步的文件时,需要等待sync_wait_msec毫秒再去binlog中检查

 # 不能设置为0,默认为50毫秒

 sync_wait_msec=

 # 同步完一个文件后,休眠sync_interval毫秒后继续同步下一个文件

 sync_interval=

 # 允许存储同步的开始时间

 # Hour from  to , Minute from  to 

 sync_start_time=:

 # 允许存储同步的结束时间,也就是说,storage server只能在sync_start_time到sync_end_time这段时间内同步数据

 # 默认是全天都可以同步

 # Hour from  to , Minute from  to 

 sync_end_time=:

 #由开始时间和结束时间,指定了同步时间的范围

 # 同步完write_mark_file_freq个文件后,如果markfile有变化,将mark file写入磁盘

 write_mark_file_freq=

 # 工作路径个数(可以挂载多个磁盘),默认是1个

 store_path_count=

 # 工作路径列表,如果store_path0不设置,那么使用base_path存储

 # 设置的路径一定是存在的文件夹

 # 需要配置store_path_count个

 store_path0=/home/yuqing/fastdfs

 #store_path1=/home/yuqing/fastdfs2

 # FastDFS是通过二级目录来存储文件的,该配置是每级目录的文件夹数据

 # 如果设置为256,那么会生成256*=65535个文件夹

 # 这个值默认大小256,可以设置区间1-

 subdir_count_per_path=

 # tracer server列表,多个tracer server的话,分行列出

 tracker_server=192.168.209.121:

 #日志级别

 ### emerg for emergency

 ### alert

 ### crit for critical

 ### error

 ### warn for warning

 ### notice

 ### info

 ### debug

 log_level=info

 # 运行本进程的Unix用户组,如果不设置,默认是当前用户所在的group

 run_by_group=

 # 运行本进程的用户名,如果不设置,默认是当前用户的用户名

 run_by_user=

 # 可以连接到本机的主机ip范围,*代表允许所有服务器

 # 支持这样的表达式:10.0..[-,] or host[-,-].domain.com

 allow_hosts=*

 # 文件分布式存储策略

 # : 轮询

 # : 根据文件名hash结果随机存储

 file_distribute_path_mode=

 # 本配置在 file_distribute_path_mode= 时有效

 # 当写文件数据达到file_distribute_rotate_count值时,换轮换到另外一个路径继续写入

 # 本配置默认值是100

 file_distribute_rotate_count=

 # 是否在写大文件的时候,调用fsync落地文件

 # :永远不调用

 # 其他数值:每写入fsync_after_written_bytes个字节,调用一次fsync

 # 默认为0

 fsync_after_written_bytes=

 # 将缓存中的日志落地到磁盘的间隔时间,默认是10秒

 sync_log_buff_interval=

 # 将缓存中的binlog落地到磁盘的间隔时间,默认是10秒

 sync_binlog_buff_interval=

 # 将storage server缓存中的状态数据落地到磁盘的间隔时间,默认是10秒

 sync_stat_file_interval=

 # 线程栈大小,默认64k,不建议设置小于64k,默认512k

 thread_stack_size=512KB

 # 和 tracker.conf 中store_server= 2时的配置相对应,本storage server作为目标服务器,上传文件的优先级,可以为负数。值越小,优先级越高。

 # tracker.conf 中store_server参数的描述:

 # 上传文件选择服务器的规则:

 # :轮询(默认)

 # :按照IP排序,排在第一的server

 # :按照优先级排序,最小的server

 upload_priority=

 # 网卡别名,用ifconfig -a可以看到很多本机的网卡别名,类似eth0,eth0:0等等

 # 多个网卡别名使用逗号分割,默认为空,让系统自动选择

 if_alias_prefix=

 # 是否检查重复文件,如果设置成true,使用FastDHT来存储文件索引

 #  or yes: 需要检查

 #  or no: 不需要检查

 # 默认值是 

 check_file_duplicate=

 # 文件签名形式,hash或md5,用来做文件排重,默认为hash

 file_signature_method=hash

 # 存储文件索引的命名空间(在check_file_duplicate=1是生效)

 key_namespace=FastDFS

 # 是否和FastDHT之间使用长连接

 # 0代表短链接,1代表长连接

 # 默认值为0

 keep_alive=

 # 可以使用#include filename来加载FastDHT服务器列表,filename可以是相对路径(基于base_path)

 # 在check_file_duplicate=1时有效

 # 更多信息参见FastDHT的安装须知

 ##include /home/yuqing/fastdht/conf/fdht_servers.conf

 # 是否记录访问日志

 use_access_log = false

 # 是否定期轮转访问日志,目前仅支持一天轮转一次

 rotate_access_log = false

 # 如果按天轮转访问日志,具体生成新错误日志文件的时间

 # Hour from  to , Minute from  to 

 access_log_rotate_time=:

 # 是否定期轮转错误日志,目前仅支持一天轮转一次

 rotate_error_log = false

 # 如果按天轮转错误日志,具体生成新错误日志文件的时间

 # Hour from  to , Minute from  to 

 error_log_rotate_time=:

 # 是否在错误访问文件达到一定大小时生成新的访问日志文件

 # 0代表对日志文件大小不敏感

 rotate_access_log_size = 

 # 是否在错误日志文件达到一定大小时生成新的错误日志文件

 # 0代表对日志文件大小不敏感

 rotate_error_log_size = 

 # 日志文件保存日期

 # 0表示永久保存,不删除

 # 默认为0

 log_file_keep_days =  

 # if skip the invalid record when sync file

 # default value is false

 # since V4.

 file_sync_skip_invalid_record=false

 # 是否使用连接池

 use_connection_pool = false

 # 连接闲置超时时间,连接如果闲置的时间超过本配置,则关闭次连接,单位秒

 connection_pool_max_idle_time = 

 # storage server的http访问方式的域名,如果域名为空,则只能使用ip访问

 http.domain_name=

 # HTTP端口

 http.server_port=

storage.conf

  3、client的配置文件详解

  

 # 连接超时时间

 # 默认30秒

 connect_timeout=

 # 网络超时时间

 # default value is 30s

 network_timeout=

 # 工作文件夹,日志存在此

 base_path=/home/yuqing/fastdfs

 # tracer server列表,多个tracer server的话,分行列出

 tracker_server=192.168.0.197:

 #日志级别

 ### emerg for emergency

 ### alert

 ### crit for critical

 ### error

 ### warn for warning

 ### notice

 ### info

 ### debug

 log_level=info

 # 是否使用连接池

 use_connection_pool = false

 # 连接闲置超时时间,连接如果闲置的时间超过本配置,则关闭次连接,单位秒

 connection_pool_max_idle_time = 

 # 是否从tracer server读取fastdfs的参数,默认为false

 load_fdfs_parameters_from_tracker=false

 # 是否使用storage id 替换 ip,默认为false

 # 和tracker.conf该参数含义一样

 # 本配置只有在load_fdfs_parameters_from_tracker=false时生效

 # 本配置默认为false

 use_storage_id = false

 # 指定storage id的文件名,允许使用绝对路径

 # 和tracker.conf该参数含义一样

 # 本配置只有在load_fdfs_parameters_from_tracker=false时生效

 storage_ids_filename = storage_ids.conf

 #HTTP settings

 http.tracker_server_port=

 #引入HTTP相关配置

 ##include http.conf

client.conf

  五、总结

  fastDFS是为集群而生,单机的fastDFS意义不大,因为fastDFS存在的意义在于其分布式文件系统,想要玩转fastDFS,仅仅掌握fastDFS是远远不够的。

浅谈fastDFS服务器的更多相关文章

  1. 浅谈|WEB 服务器 -- Caddy

    浅谈|WEB 服务器 -- Caddy 2018年03月28日 12:38:00 yori_chen 阅读数:1490 标签: caddyserverwebhttps反向代理 更多 个人分类: ser ...

  2. NIO原理剖析与Netty初步----浅谈高性能服务器开发(一)

    除特别注明外,本站所有文章均为原创,转载请注明地址 在博主不长的工作经历中,NIO用的并不多,由于使用原生的Java NIO编程的复杂性,大多数时候我们会选择Netty,mina等开源框架,但理解NI ...

  3. 浅谈web服务器的编写之http协议

    本书是介绍怎么编写一个Web服务器,而Web服务器是基于HTTP(HyperText Transfer Protocol)协议实现的,所以要实现一个Web服务器就必须了解HTTP协议,本章主要介绍HT ...

  4. 浅谈Web服务器和应用服务器的区别

    1Web服务器和应用服务器简介 通俗的讲,Web服务器传送页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程序可以调用(call)的方法(methods).确切一点,你可以说:Web服务器专 ...

  5. 浅谈Nginx服务器的内部核心架构设计

    前言 Nginx 是一个 免费的 , 开源的 , 高性能 的 HTTP 服务器和 反向代理 ,以及 IMAP / POP3代理服务器. Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消 ...

  6. Web服务器和动态语言如何交互--CGI&FastCGI&FPM浅谈

    一个用户的Request是如何经过Web服务器(Apache,Nginx,IIS,Light)与后端的动态语言(如PHP等)进行交互并将结果返回给用户的呢? 本文浅谈个人观点,可能有误,欢迎拍砖,共同 ...

  7. 浅谈Hybrid技术的设计与实现第二弹

    前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术的设计与实现第三弹——落地篇 接上文:浅谈Hybrid技术的设计与实现(阅读本文前,建议阅读这个先) ...

  8. 浅谈Hybrid技术的设计与实现

    前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术的设计与实现第三弹——落地篇 随着移动浪潮的兴起,各种APP层出不穷,极速的业务扩展提升了团队对开发 ...

  9. 浅谈Nginx负载均衡和F5的区别

    前言 笔者最近在负责某集团网站时,同时用到了Nginx与F5,如图所示,负载均衡器F5作为处理外界请求的第一道"墙",将请求分发到web服务器后,web服务器上的Nginx再进行处 ...

随机推荐

  1. Mongodb实战使用指南

    REL_LINK: http://www.mongodb.org.cn/tutorial/9.html   一 启动 启动 mongodb 服务(Mac) $ mongod --config /usr ...

  2. 从零开始——Java异常处理机制

    在编程的时候,总是出现需要throws的情况,然后需要在SQLException和Exception中进行选择,看着名字,总有一种错觉,认为SQLException是Exception的一个子类,因此 ...

  3. CI框架去除index.php

    打开apache的配置文件,conf/httpd.conf : LoadModule rewrite_module modules/mod_rewrite.so 把该行前的#去掉. 搜索 AllowO ...

  4. Linux入门-7 Linux管道、重定向以及文本处理

    Linux管道.重定向以及文本处理 1 Linux多命令协作:管道及重定向 管道和重定向 2 Linux命令行文本处理工具 文件浏览 基于关键字搜索-grep 基于列处理文本-cut 文本统计-wc ...

  5. Python初学者第十六天 文件处理操作练习

    16day 练习:模拟登陆 1.用户输入账号密码进行登陆: 2.用户信息保存在文件内: 3.用户密码输入错误三次后,锁定用户,下次登陆,检测到这个用户再也登陆不了 #获取用户名及密码f_user = ...

  6. 在 Windows Server Container 中运行 Azure Storage Emulator(一):能否监听自定义地址?

    我要做什么? 改 ASE 的监听地址.对于有强迫症的我来说,ASE 默认监听的是 127.0.0.1:10000-10002,这让我无法接受,所以我要将它改成域名 + 80 端口的方式: 放到容器中. ...

  7. INSERT CLAUSE

    a.single table insert INSERT INTO jobs(job_id,job_title,min_salary,Max_Salary) VALUES('IT_PM','PROJE ...

  8. 彻底解密 Spark 的 HashShuffle

    本课主题 Shuffle 是分布式系统的天敌 Spark HashShuffle介绍 Spark Consolidated HashShuffle介绍 Shuffle 是如何成为 Spark 性能杀手 ...

  9. August 10th 2017 Week 32nd Thursday

    Break through the psychological barrier to surpass themselves. 突破心理障碍,才能超越自己. To break through those ...

  10. PetaPoco轻量级ORM框架 - Database API 手册

    PetaPoco Database API #region IDisposable public void Dispose() #endregion #region Constructors publ ...