CentOS_6.6上, FastDFS分布式文件系统搭建和Java测试
来源:互联网 发布:同步带轮生成软件 编辑:程序博客网 时间:2024/06/01 09:41
搭建环境: CentOS6.6_64Bit
所需软件下载链接:http://pan.baidu.com/s/1bp2ZGR1 密码:cm5i
FastDFS介绍
什么是FastDFS? FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
FastDFS架构包括 Tracker server (追踪系统) 和Storage server。客户端请求Tracker server进行文件上传、下载,通过Tracker server调度最终由Storage server完成文件上传和下载。
Tracker server作用是负载均衡和调度,通过Tracker server在文件上传时可以根据一些策略找到Storage server提供文件上传服务。可以将tracker称为追踪服务器或调度服务器。
Storage server作用是文件存储,客户端上传的文件最终存储在Storage服务器上,Storage server没有实现自己的文件系统而是利用操作系统的文件系统来管理文件。可以将storage称为存储服务器。
如下图:
Tracker集群:
FastDFS集群中的Tracker Server可以有多台,Tracker Server之间是相互平等关系同时提供服务,Tracker Server不存在单点故障。客户端请求Tracker Server采用轮询方式,如果请求的Tracker无法提供服务则换另一个Tracker。
Storage集群:
Storage集群采用了分组存储方式。Storage集群由一个或多个组构成,集群存储总容量为集群中所有组的存储容量之和。一个组由一台或多台存储服务器组成,组内的Storage Server之间是平等关系,不同组的Storage Server之间不会相互通信,同组内的Storage Server之间会相互连接进行文件同步,从而保证同组内每个Storage上的文件完全一致的。一个组的存储容量为该组内存储服务器容量最小的那个,由此可见组内存储服务器的软硬件配置最好是一致的。
采用分组存储方式的好处是灵活、可控性较强。比如上传文件时,可以由客户端直接指定上传到的组也可以由Tracker进行调度选择。一个分组的存储服务器访问压力较大时,可以在该组增加存储服务器来扩充服务能力(纵向扩容)。当系统容量不足时,可以增加组来扩充存储容量(横向扩容)。
Storage状态收集:
Storage Server会连接集群中所有的Tracker Server,定时向他们报告自己的状态,包括磁盘剩余空间、文件同步状况、文件上传下载次数等统计信息。
文件上传流程:
客户端上传文件后存储服务器将文件ID返回给客户端,此文件ID用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。
*~ 组名:文件上传后所在的storage组名称,在文件上传成功后有storage服务器返回,需要客户端自行保存。
~ 虚拟磁盘路径:storage配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推。
~ 数据两级目录:~ storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。
~ 文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。*
文件下载流程:
Tracker根据请求的文件路径即文件ID 来快速定义文件。比如请求下边的文件:
*1. 通过组名tracker能够很快的定位到客户端需要访问的存储服务器组是group1,并选择合适的存储服务器提供客户端访问。
2. 存储服务器根据“文件存储虚拟磁盘路径”和“数据文件两级目录”可以很快定位到文件所在目录,并根据文件名找到客户需要访问的文件。*
FastDFS+Nginx实现文件服务器
架构:
架构描述: 出于高可用的需求tracker和storage都使用两台服务器,storage使用两个组用以说明storage可以任意扩充组实现线性扩展。
Client:
client请求tracker进行文件上传、下载、删除。
client可以通过java client API方式进行文件上传、下载、删除。
client可以通过http方式进行文件下载。tracker通过nginx提供http下载接口。
client也可以直接访问storage进行文件上传、下载、删除,但建议client通过tracker进行文件上传、下载、删除。
Tracker Server:
每个tracker server互相平等,tracker server上部署nginx是为了对外提供http文件下载接口,tracker上nginx只是起到负载均衡的作用。tracker的nginx会代理转发至storage上的nginx。
Tracker上的两个nginx可以采用主备方式实现高可用。nginx高可用参数nginx文档。
Storage Server:
每台Storage上也部署nginx,Storage上的nginx与tracker上的nginx有区别,Storage上的nginx需要安装FastDSF-nginx模块,此模块的作用是使用FastDFS和nginx进行整合,nginx对外提供http文件下载接口,注意:nginx只提供文件下载接口不提供上传接口。文件上传仍然通过Java Client API进行。
FastDFS–Tracker安装:
Tracker测试虚拟机的IP地址为: 192.168.148.88. 只测试一台的安装过程,多台可以简单配置实现扩容。
下载: tracker和storage使用相同的安装包,下载地址:http://sourceforge.net/projects/FastDFS/ 或https://github.com/happyfish100/FastDFS(推荐), 前面的百度云链接中, 所有用到的文件都在里面, 可自行下载试验。
依赖安装:
FastDFS安装环境:FastDFS是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境。安装FastDFS需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:yum install gcc-c++。
安装libevent:FastDFS依赖libevent库,需要安装: yum -y install libevent
安装libfastcommon:
libfastcommon是FastDFS官方提供的,libfastcommon包含了FastDFS运行所需要的一些基础库。
将libfastcommonV1.0.7.tar.gz拷贝至/usr/local/下(记住这个路径)
# cd /usr/local# tar -zxvf libfastcommonV1.0.7.tar.gz# cd libfastcommon-1.0.7# ./make.sh# ./make.sh install
注意:libfastcommon安装好后会自动将库文件拷贝至/usr/lib64下,由于FastDFS程序引用usr/lib目录所以需要将/usr/lib64下的库文件拷贝至/usr/lib下。要拷贝的文件如下:
# cp /usr/lib64/libfastcommon.so /usr/lib
Tracker编译安装:
将FastDFS_v5.05.tar.gz拷贝至/usr/local/下:
# tar xf FastDFS_v5.05.tar.gz# cd FastDFS# ./make.sh# ./make.sh install
安装成功将安装目录下的conf下的文件拷贝到/etc/fdfs/下:
cp client.conf http.conf mime.types storage.conf storage_ids.conf tracker.conf /etc/fdfs/
Tracker的配置:
安装成功后进入/etc/fdfs目录:
# cp tracker.conf.sample tracker.conf# vim tracker.conf base_path=/home/yuqing/FastDFS --> base_path=/home/FastDFS //修改路径 http.server_port=80 //将默认端口改为80
Tracker的启动:
# /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart [root@Lius fdfs]# /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart waiting for pid [2842] exit ... starting ... # 实际pid随不同机器而不同, 另, 如事先没启动, 可以用start代替restart. 用ps查看一下进程: [root@Lius fdfs]# ps aux |grep fdfs root 5503 0.0 0.2 78728 2844 ? Sl 05:43 0:00 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start root 5511 0.0 0.0 103252 892 pts/2 S+ 05:43 0:00 grep --color=tty fdfs
FastDFS–Storage安装:
Storge也可以配置多台, 在这里只对配置一台的方法做介绍, 另附多台配置的conf文件即配置方法. Storge服务器的IP地址为: 192.168.148.99.
安装libevent: 同上, 不做介绍.安装libfastcommon: 同上, 不做介绍.Storge的编译安装: Tracker编译安装的FastDFS_v5.05.tar.gz编译安装相同, 不做介绍.
Storge的配置:
拷贝配置文件:
# cd /etc/fdfs# cp storage.conf.sample storage.conf# vim storage.conf group_name=group1 base_path=/home/yuqing/FastDFS --> base_path=/home/FastDFS store_path0=/home/yuqing/FastDFS --> store_path0=/home/FastDFS/fdfs_storage #如果有多个挂载磁盘则定义多个store_path,如下 #store_path1=..... #store_path2=...... tracker_server=192.168.148.88:22122 //配置Tracker的IP地址,端口默认22122. #如果有多个则配置多个tracker tracker_server=192.168.148.55:22122 http.server_port=80 //http端口,确认是80.
Storge的启动:
# /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart# 和上面介绍相同, 一开始是没启动, 可用start代替restart. ps查看进程情况. [root@Storge ~]# /usr/bin/fdfs_storaged /etc/fdfs/storage.conf start [root@Storge ~]# ps aux |grep fdfs root 8613 12.0 6.6 80848 66760 ? Sl 05:56 0:00 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf start root 8623 0.0 0.0 103252 884 pts/2 S+ 05:56 0:00 grep fdfs
上传图片测试:
如上部分, Tracker和Storge的配置部分就结束了, 下面进行配置结果的测试部分. 用到的模块是fdfs_test, 通过/usr/bin/fdfs_test测试上传、下载等操作。
在Tracker上, 修改/etc/fdfs/client.conf:
# vim /etc/fdfs/client.conf base_path=/home/FastDFS //注意路径的一致性. tracker_server=192.168.148.88:22122 //Tracker的IP和端口配置
测试语句格式: /usr/bin/fdfs_test 客户端配置文件地址 upload 上传文件, 示例如下:
# /usr/bin/fdfs_test /etc/fdfs/client.conf upload /home/tomcat.png
注解: dfs_test模块, 通过/etc/fdfs/client.conf文件中的配置, 将/home/tomcat.png文件, 上传到Storge服务器, 并返回存储链接. 注意, tomcat.png文件如果不存在, 可以手动touch一个.
如下, 是上传文件返回的结果:
[root@Lius fdfs]# touch /home/tomcat.png; /usr/bin/fdfs_test /etc/fdfs/client.conf upload /home/tomcat.pngThis is FastDFS client test program v5.05Copyright (C) 2008, Happy Fish / YuQingFastDFS may be copied only under the terms of the GNU GeneralPublic License V3, which may be found in the FastDFS source kit.Please visit the FastDFS Home Page http://www.csource.org/ for more detail.[2016-06-17 06:07:12] DEBUG - base_path=/home/FastDFS, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0tracker_query_storage_store_list_without_group: server 1. group_name=, ip_addr=192.168.148.99, port=23000group_name=group1, ip_addr=192.168.148.99, port=23000storage_upload_by_filenamegroup_name=group1, remote_filename=M00/00/00/wKiUY1djIxmAYbunAAAAAAAAAAA268.pngsource ip address: 192.168.148.99file timestamp=2016-06-17 06:07:21file size=0file crc32=0example file url: http://192.168.148.99/group1/M00/00/00/wKiUY1djIxmAYbunAAAAAAAAAAA268.pngstorage_upload_slave_by_filenamegroup_name=group1, remote_filename=M00/00/00/wKiUY1djIxmAYbunAAAAAAAAAAA268_big.pngsource ip address: 192.168.148.99file timestamp=2016-06-17 06:07:21file size=0file crc32=0example file url: http://192.168.148.99/group1/M00/00/00/wKiUY1djIxmAYbunAAAAAAAAAAA268_big.png
如上, http://192.168.148.99/group1/M00/00/00/wKiUY1djIxmAYbunAAAAAAAAAAA268_big.png就是文件的下载路径。对应storage服务器上的: /home/FastDFS/fdfs_storage/data/00/00/wKiUY1djIxmAYbunAAAAAAAAAAA268_big.png文件.
通过Java Client API, 测试网络上传下载:
完整的测试方法参考测试源代码:
public class FastdfsClientTest { //客户端配置文件 public String conf_filename = "F:\\workspace_indigo\\fastdfsClient\\src\\cn\\itcast\\fastdfs\\cliennt\\fdfs_client.conf"; //本地文件,要上传的文件 public String local_filename = "F:\\develop\\upload\\linshiyaopinxinxi_20140423193847.xlsx";//上传文件 @Test public void testUpload() { for(int i=0;i<100;i++){ try { ClientGlobal.init(conf_filename); TrackerClient tracker = new TrackerClient(); TrackerServer trackerServer = tracker.getConnection(); StorageServer storageServer = null; StorageClient storageClient = new StorageClient(trackerServer, storageServer); NameValuePair nvp [] = new NameValuePair[]{ new NameValuePair("item_id", "100010"), new NameValuePair("width", "80"), new NameValuePair("height", "90") }; String fileIds[] = storageClient.upload_file(local_filename, null, nvp); System.out.println(fileIds.length); System.out.println("组名:" + fileIds[0]); System.out.println("路径: " + fileIds[1]); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }}
FastDFS 和nginx整合:
在Tracker上安装nginx: 以nginx-1.8.0.tar.gz为例
一个Tracker可对应多个 Storage,通过nginx对Storage负载均衡。在每个Tracker上安装nginx,可安装两个 nginx, 并设为主备高可用。默认安装路径: /usr/local/nginx:
# cd /usr/local/src# tar xf nginx-1.8.0.tar.gz# cd nginx-1.8.0# ./configure \--prefix=/usr/local/nginx \--with-http_realip_module \--with-http_sub_module \--with-http_gzip_static_module \--with-http_stub_status_module \--with-pcre# make; make install
Tracker_Nginx配置文件修改:
# > /usr/local/nginx/conf/nginx.conf //清空原来配置# vim /usr/local/nginx/conf/nginx.conf //编辑, 添加下面配置:user nobody nobody;worker_processes 2;error_log /usr/local/nginx/logs/nginx_error.log crit;pid /usr/local/nginx/logs/nginx.pid;worker_rlimit_nofile 51200;events{ use epoll; worker_connections 6000;}http{ include mime.types; default_type application/octet-stream; server_names_hash_bucket_size 3526; server_names_hash_max_size 4096; log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]' '$host "$request_uri" $status' '"$http_referer" "$http_user_agent"'; sendfile on; tcp_nopush on; keepalive_timeout 30; client_header_timeout 3m; client_body_timeout 3m; send_timeout 3m; connection_pool_size 256; client_header_buffer_size 1k; large_client_header_buffers 8 4k; request_pool_size 4k; output_buffers 4 32k; postpone_output 1460; client_max_body_size 10m; client_body_buffer_size 256k; client_body_temp_path /usr/local/nginx/client_body_temp; proxy_temp_path /usr/local/nginx/proxy_temp; fastcgi_temp_path /usr/local/nginx/fastcgi_temp; fastcgi_intercept_errors on; tcp_nodelay on; gzip on; gzip_min_length 1k; gzip_buffers 4 8k; gzip_comp_level 5; gzip_http_version 1.1; gzip_types text/plain application/x-javascript text/css text/htm application/xml; include vhosts/*.conf;}# 注意最后语句: include vhosts/*.conf;, Nginx将加载conf目录下vhosts目录里面所有.conf结尾的文件.
Tracker上创建Nginx的vhosts配置文件目录, 并创建nginx-fdfs.conf配置文件: 这里的IP是Storge的IP
# storage群group1组upstream storage_server_group1{ server 192.168.101.5:80 weight=10; server 192.168.101.6:80 weight=10; } # storage群group2组upstream storage_server_group2{ server 192.168.101.7:80 weight=10; server 192.168.101.8:80 weight=10; } server { listen 80; server_name ccc.test.com; location /group1{ proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://storage_server_group1; }location /group2{ proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://storage_server_group2; }}
以上是多个Tracker, 多个Storge的配置文件, 而我们实际上只用到了一个Tracker和一个Storge, 所以, 用下面的简化配置:
upstream storage_server_group1 { server 192.168.148.99:80;}server { listen 80; server_name ccc.test.com; location /group1{ proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://storage_server_group1; }}
在Storge上安装Nginx和FastDFS-nginx-module模块:
将FastDFS-nginx-module_v1.16.tar.gz传至/usr/local/下:
# cd /usr/local# tar xf FastDFS-nginx-module_v1.16.tar.gz# cd FastDFS-nginx-module/src
修改config文件将/usr/local/路径改为/usr/
# vim ./src/config ngx_addon_name=ngx_http_fastdfs_module HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module" NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c" CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/" CORE_LIBS="$CORE_LIBS -L/usr/lib -lfastcommon -lfdfsclient" CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"
将FastDFS-nginx-module/src下的mod_FastDFS.conf拷贝至/etc/fdfs/下:
# cp ./src/mod_FastDFS.conf /etc/fdfs/
修改mod_FastDFS.conf配置文件:
# vim /etc/fdfs/mod_FastDFS.conf base_path=/home/FastDFS tracker_server=192.168.148.88:22122 # tracker_server=192.168.101.4:22122 url_have_group_name=true # url中包含group名称 store_path0=/home/FastDFS/fdfs_storage # 指定文件存储路径, 试验中只有一个Storge, 如果有多个: # store_path1=/home/FastDFS/fdfs_storage1
将libfdfsclient.so拷贝至/usr/lib下:
# cp /usr/lib64/libfdfsclient.so /usr/lib/
创建nginx/client目录:
# mkdir -p /var/temp/nginx/client
Storge上Nginx的安装:
# cd /usr/local/src# tar xf nginx-1.8.0.tar.gz# cd nginx-1.8.0# ./configure \--prefix=/usr/local/nginx \--pid-path=/var/run/nginx/nginx.pid \--lock-path=/var/lock/nginx.lock \--error-log-path=/var/log/nginx/error.log \--http-log-path=/var/log/nginx/access.log \--with-http_gzip_static_module \--http-client-body-temp-path=/var/temp/nginx/client \--http-proxy-temp-path=/var/temp/nginx/proxy \--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \--http-scgi-temp-path=/var/temp/nginx/scgi \--add-module=/usr/local/fastdfs-nginx-module/src# make; make install
注意: 配置信息中的路径很容易报错, 所以, 前面的路径一定要配置准确.
Storege上Nginx配置文件修改:
和Tracker的主配置文件保持一致即可, 注意, 一定要有: include vhosts/*.conf; 即: 打开vhosts配置文件目录.
进入vhosts目录, 新建nginx-fdfs.conf配置文件, 写入如下配置:
server { listen 80; server_name 192.168.148.99; location /group1/M00/{ root /home/FastDFS/fdfs_storage/data; ngx_fastdfs_module; }}
注意: 路径的准确性, 大小写问题要注意. server_name指定本机ip, location /group1/M00/:group1为nginx 服务FastDFS的分组名称,M00是FastDFS自动生成编号,对应store_path0=/home/FastDFS/fdfs_storage,如果FastDFS定义store_path1,这里就是M01.
Java测试
以双Tracker, 双Storge为例, 通过java客户端上传文件,上传成功后, 使用浏览器访问:
Storge_IP: 192.168.101.5 && 192.168.101.6
Tracker_IP: 192.168.101.3 && 192.168.101.4
访问Storage:
http://192.168.101.5/group1/M00/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485_big.png
ip地址改为192.168.101.6也行,因为同一个分组的Storage文件互相同步。
访问Tracker:
http://192.168.101.3/group1/M00/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485_big.png
ip地址改为192.168.101.4也行。
使用域名访问Tracker (推荐):本地测试注意修改windows的hosts文件.
两个Tracker的nginx为主备,对外由vip提供服务,使用域名访问如下:
比如vip对应的域名为img.test.com:
http://img.test.com/group1/M00/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485_big.png
附录: tracker.conf详解
1. 基本配置disable# func:配置是否生效# valu:true、falsedisable=falsebind_addr# func:绑定IP# valu:IP地址bind_addr=192.168.6.102port# func:服务端口# valu:端口整数值port=22122connect_timeout# func:连接超时# valu:秒单位正整数值connect_timeout=30network_timeout# func:网络超时# valu:秒单位正整数值network_timeout=60base_path# func:Tracker数据/日志目录地址# valu:路径base_path=/home/michael/fdfs/base4trackermax_connections# func:最大连接数# valu:正整数值max_connections=256work_threads# func:线程数,通常设置CPU数# valu:正整数值work_threads=4store_lookup# func:上传文件的选组方式。# valu:0、1或2。# 0:表示轮询# 1:表示指定组# 2:表示存储负载均衡(选择剩余空间最大的组)store_lookup=2store_group# func:指定上传的组,如果在应用层指定了具体的组,那么这个参数将不会起效。另外如果store_lookup如果是0或2,则此参数无效。# valu:group1等store_group=group1store_server# func:上传服务器的选择方式。(一个文件被上传后,这个storage server就相当于这个文件的storage server源,会对同组的storage server推送这个文件达到同步效果)# valu:0、1或2# 0: 轮询方式(默认)# 1: 根据ip 地址进行排序选择第一个服务器(IP地址最小者)# 2: 根据优先级进行排序(上传优先级由storage server来设置,参数名为upload_priority),优先级值越小优先级越高。store_server=0store_path# func:上传路径的选择方式。storage server可以有多个存放文件的base path(可以理解为多个磁盘)。# valu:# 0: 轮流方式,多个目录依次存放文件# 2: 存储负载均衡。选择剩余空间最大的目录存放文件(注意:剩余磁盘空间是动态的,因此存储到的目录或磁盘可能也是变化的)store_path=0download_server# func:下载服务器的选择方式。# valu:# 0:轮询(默认)# 1:IP最小者# 2:优先级排序(值最小的,优先级最高。)download_server=0reserved_storage_space# func:保留空间值。如果某个组中的某个服务器的剩余自由空间小于设定值,则文件不会被上传到这个组。# valu:# G or g for gigabyte# M or m for megabyte# K or k for kilobytereserved_storage_space=1GBlog_level# func:日志级别# valu:# emerg for emergency# alert# crit for critical# error# warn for warning# notice# info for information# debug for debugginglog_level=inforun_by_group / run_by_user# func:指定运行该程序的用户组# valu:用户组名或空run_by_group=# func:# valu:run_by_user=allow_hosts# func:可以连接到tracker server的ip范围。可设定多个值。# valuallow_hosts=check_active_interval# func:检测 storage server 存活的时间隔,单位为秒。# storage server定期向tracker server 发心跳,# 如果tracker server在一个check_active_interval内还没有收到storage server的一次心跳,# 那边将认为该storage server已经下线。所以本参数值必须大于storage server配置的心跳时间间隔。# 通常配置为storage server心跳时间间隔的2倍或3倍。check_active_interval=120thread_stack_size# func:设定线程栈的大小。 线程栈越大,一个线程占用的系统资源就越多。# 如果要启动更多的线程(V1.x对应的参数为max_connections,V2.0为work_threads),可以适当降低本参数值。# valu:如64KB,默认值为64,tracker server线程栈不应小于64KBthread_stack_size=64KBstorage_ip_changed_auto_adjust# func:这个参数控制当storage server IP地址改变时,集群是否自动调整。注:只有在storage server进程重启时才完成自动调整。# valu:true或falsestorage_ip_changed_auto_adjust=true2. 同步storage_sync_file_max_delay# func:同组storage服务器之间同步的最大延迟时间。存储服务器之间同步文件的最大延迟时间,根据实际情况进行调整# valu:秒为单位,默认值为1天(24*3600)# sinc:v2.0storage_sync_file_max_delay=86400storage_sync_file_max_time# func:存储服务器同步一个文件需要消耗的最大时间,缺省为300s,即5分钟。# sinc:v2.0storage_sync_file_max_time=300sync_log_buff_interval# func:同步或刷新日志信息到硬盘的时间间隔。注意:tracker server 的日志不是时时写硬盘的,而是先写内存。# valu:以秒为单位sync_log_buff_interval=103. trunk 和 slot# func:是否使用trunk文件来存储几个小文件# valu:true或false# sinc:v3.0use_trunk_file=false# func:最小slot大小# valu:<= 4KB,默认为256字节# sinc:v3.0slot_min_size=256# func:最大slot大小# valu:>= slot_min_size,当小于这个值的时候就存储到trunk file中。默认为16MB。# sinc:v3.0slot_max_size=16MB# func:trunk file的size# valu:>= 4MB,默认为64MB# sinc:v3.0trunk_file_size=64MB4. HTTP 相关是否启用 HTTP# func:HTTP是否生效# valu:true或falsehttp.disabled=falseHTTP 服务器端口号# func:tracker server上的http port# valu:# note:只有http.disabled=false时才生效http.server_port=7271检查Storage存活状态的间隔时间(心跳检测)# func:检查storage http server存活的间隔时间# valu:单位为秒# note:只有http.disabled=false时才生效http.check_alive_interval=30# 心跳检测使用的协议方式# func:检查storage http server存活的方式# valu:# tcp:连接到storage server的http端口,不进行request和response。# http:storage check alive url must return http status 200.# note:只有http.disabled=false时才生效http.check_alive_type=tcp检查 Storage 状态的 URI# func:检查storage http server是否alive的uri/url# note:只有http.disabled=false时才生效http.check_alive_uri=/status.html
- CentOS_6.6上, FastDFS分布式文件系统搭建和Java测试
- FastDFS+Nginx搭建分布式文件系统
- FastDFS分布式文件系统在Linux上的部署和安装
- 【FastDFS分布式文件系统之一】:搭建、部署、配置
- FastDFS分布式文件系统搭建图片服务器
- fastdfs nginx 搭建分布式文件系统(单机模式)
- 四、分布式文件系统fastDFS-Java Api
- 开源分布式文件系统 MogileFS 和 FastDFS
- CentOS7搭建FastDFS V5.11分布式文件系统及Java整合详细过程(一)
- CentOS7搭建FastDFS V5.11分布式文件系统及Java整合详细过程(二)
- CentOS7搭建FastDFS V5.11分布式文件系统及Java整合详细过程(三)
- CentOS7搭建FastDFS V5.11分布式文件系统及Java整合详细过程(四)
- 分布式文件系统FastDFS
- 分布式文件系统 FastDFS
- 分布式文件系统FastDFS
- FastDFS分布式文件系统
- 分布式文件系统 FastDFS
- fastDFS分布式文件系统
- 单片机 IIC 总线协议 和 详细例程
- Java BeanValidation
- map的四种遍历方法
- [Q学习]13 Qt状态机框架——简单的状态机
- Android 如何让程序定时进行消息通知到通知栏
- CentOS_6.6上, FastDFS分布式文件系统搭建和Java测试
- oracle 修改字符集
- Android Studio 快捷操作将字符串快速整理到string.xml
- 5、RedHat6 集群多路径
- Tomcat布署问题备忘
- 详解如何用 SPSS + BigInsights 共同构架大数据分析平台
- Android Studio集成SVN报错:can't use subversion command line client : svn
- C 基础
- iOS7+ 获取网络类型