FastDFS安装配置与使用
更新时间:2023-10-07 11:27:01 阅读量: 综合文库 文档下载
- fastdfs安装配置推荐度:
- 相关推荐
FastDFS安装配置与使用
目录
一、 简介 ................................................................................................................................... 3 二、前置准备 ................................................................................................................................... 4 三、安装........................................................................................................................................... 5
1、Tracker的安装与配置 ...................................................................................................... 5 2、Storage的安装与配置 ...................................................................................................... 7 3、在Storage上安装与配置nginx .................................................................................... 12 4、安装nginx反向代理及缓存服务器 ............................................................................... 15 5、测试上传文件 ................................................................................................................... 17 6、优化部分 ........................................................................................................................... 21 四、FastDFS使用 .......................................................................................................................... 23
1.上传文件 ............................................................................................................................. 23 2.下载文件 ............................................................................................................................. 24 3.监视服务器资源 ................................................................................................................. 25 4.Java客户端调用 ................................................................................................................ 26 五、常见问题 ................................................................................................................................. 28
一、 简介
1.系统概述
FastDFS是一个开源的分布式文件系统,对文件进行管理,它的主要功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。 2.功能特性
? 分组存储,灵活简洁 ? 对等结构,不存在单点
? 文件ID由FastDFS生成,作为文件访问凭证。FastDFS不需要传统的name server ? 和流行的web server无缝衔接,FastDFS已提供apache和nginx扩展模块 ? 大、中、小文件均可以很好支持,支持海量小文件存储 ? 支持多块磁盘,支持单盘数据恢复
? 支持相同文件内容只保存一份,节省存储空间 ? 存储服务器上可以保存文件附加属性 ? 下载文件支持多线程方式,支持断点续传
提供功能
upload:上传普通文件,包括主文件
upload_appender:上传appender文件,后续可以对其进行append操作 upload_slave:上传从文件 download:下载文件 delete:删除文件
append:在已有文件后追加内容 set_metadata:设置文件附加属性 get_metadata:获取文件附加属性
3.架构示意图
FastDFS客户端,其作用是完成客户与服务端之间的交互。
FastDFS服务端,有两个角色: a.跟踪器(tracker),其作用是完成调度工作,在访问上起负载均衡的作用。 b.存储节点(storage),其作用是完成文件的存储,完成文件管理的所有功能:存储、同步和提供存取接口;
FastDFS同时对文件的meta data进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key value pair)方式表示,如:width=1024,其中的key为width,value为1024。文件metadata是文件属性列表,可以包含多个键值对。
二、前置准备
FastDFS相关软件
? ? ?
FastDFS_v5.05.tar.gz
fastdfs-nginx-module_v1.16.tar.gz libfastcommon-master.zip
Nginx相关软件
? ? ? ? ?
nginx-1.4.2.tar.gz pcre-8.36.tar.gz zlib-1.2.8.tar.gz
libevent-2.0.22-stable.tar.gz ngx_cache_purge-2.1.tar.gz
拓扑图
三、安装
1、Tracker的安装与配置
以下在Tracker机器上进行:
1. 安装 libfastcommon # unzip libfastcommon-master.zip # cd libfastcommon-master # ls HISTORY INSTALL libfastcommon.spec make.sh README src # ./make.sh # ./make.sh install 2. 安装 FastDFS # tar zxvf FastDFS_v5.05.tar.gz # cd FastDFS # ll drwxr-xr-x 3 8980 users 4096 3月 31 18:01 client drwxr-xr-x 2 8980 users 4096 3月 31 17:14 common
drwxr-xr-x 2 8980 users 4096 12月 2 11:26 conf -rw-r--r-- 1 8980 users 35067 12月 2 11:26 COPYING-3_0.txt -rw-r--r-- 1 8980 users 2802 12月 2 11:26 fastdfs.spec -rw-r--r-- 1 8980 users 31386 12月 2 11:27 HISTORY drwxr-xr-x 2 8980 users 4096 12月 2 11:26 init.d -rw-r--r-- 1 8980 users 7755 12月 2 11:26 INSTALL -rwxr-xr-x 1 8980 users 5813 12月 2 11:27 make.sh drwxr-xr-x 2 8980 users 4096 12月 2 11:26 php_client -rw-r--r-- 1 8980 users 2380 12月 2 11:26 README.md -rwxr-xr-x 1 8980 users 1768 12月 2 11:26 restart.sh -rwxr-xr-x 1 8980 users 1680 12月 2 11:26 stop.sh drwxr-xr-x 4 8980 users 4096 3月 31 18:01 storage drwxr-xr-x 2 8980 users 4096 12月 2 11:26 test drwxr-xr-x 2 8980 users 4096 3月 31 18:01 tracker # ./make.sh
至此FastDFS在 tracker上安装完成,所有的可执行文件位于 /usr/bin 目录下,以fdfs开头的文件 # ll /usr/bin/fd* -rwxr-xr-x 1 root root 292082 3月 31 18:01 /usr/bin/fdfs_appender_test -rwxr-xr-x 1 root root 292043 3月 31 18:01 /usr/bin/fdfs_appender_test1 -rwxr-xr-x 1 root root 278763 3月 31 18:01 /usr/bin/fdfs_append_file -rwxr-xr-x 1 root root 277887 3月 31 18:01 /usr/bin/fdfs_crc32 -rwxr-xr-x 1 root root 278750 3月 31 18:01 /usr/bin/fdfs_delete_file -rwxr-xr-x 1 root root 279213 3月 31 18:01 /usr/bin/fdfs_download_file -rwxr-xr-x 1 root root 279027 3月 31 18:01 /usr/bin/fdfs_file_info -rwxr-xr-x 1 root root 294067 3月 31 18:01 /usr/bin/fdfs_monitor -rwxr-xr-x 1 root root 966198 3月 31 18:01 /usr/bin/fdfs_storaged -rwxr-xr-x 1 root root 295074 3月 31 18:01 /usr/bin/fdfs_test -rwxr-xr-x 1 root root 294859 3月 31 18:01 /usr/bin/fdfs_test1 -rwxr-xr-x 1 root root 414275 3月 31 18:01 /usr/bin/fdfs_trackerd -rwxr-xr-x 1 root root 283237 3月 31 18:01 /usr/bin/fdfs_upload_appender -rwxr-xr-x 1 root root 284087 3月 31 18:01 /usr/bin/fdfs_upload_file 至此,Tracker的安装完成,所有的配置文件在 /etc/fdfs/ 目录下 # ll /etc/fdfs/ 总用量 20 -rw-r--r--. 1 root root 1461 10月 28 11:29 client.conf.sample -rw-r--r--. 1 root root 7647 10月 28 11:29 storage.conf.sample -rw-r--r--. 1 root root 7102 10月 28 11:29 tracker.conf.sample 3. 配置FastDFS
进入到 /etc/fdfs 目录下,复制模版文件到 tracker.conf
# cp tracker.conf.sample tracker.conf 创建数据文件和日志文件目录 # mkdir -pv /data/fastdfs/tracker mkdir: 已创建目录 \mkdir: 已创建目录 \mkdir: 已创建目录 \
编辑 tracker.conf 文件,测试的时候只需要修改以下参数即可 disabled=false #启用配置文件 port=22122 #设置 tracker 的端口号 base_path=/data/fastdfs/tracker #设置 tracker 的数据文件和日志目录(需预先创建) http.server_port=8080 #设置 http 端口号 这个http.server_port=8080 指的是在tracker服务器上启动http服务进程,如:apache或者nginx 启动时所监听的端口,这个似乎是可以不用管的,因为tracker本身就没有安装http服务 4. 运行Tracker 直接使用 fdfs_trackerd 来启动tracker进程,然后使用netstat 查看端口是否起来。 # fdfs_trackerd /etc/fdfs/tracker.conf restart # netstat -antp | grep trackerd tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 23245/fdfs_trackerd tcp 0 0 192.168.0.105:22122 192.168.0.105:35357 ESTABLISHED 23245/fdfs_trackerd
查看日志看服务是否正常运行 # cat /data/fastdfs/tracker/logs/trackerd.log
5. 设置开机自动启动 # echo \# cat /etc/rc.local /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart 至此tracker上的安装与配置结束。
2、Storage的安装与配置
以下在Storage1机器上进行:
1. 安装 libfastcommon [同Tracker的安装与配置]
2. 安装 FastDFS
[同Tracker的安装与配置]
至此FastDFS在 Storage上安装完成,所有的可执行文件位于 /usr/bin 目录下,以fdfs开头的文件 # ll /usr/bin/fd* -rwxr-xr-x 1 root root 292082 3月 31 18:01 /usr/bin/fdfs_appender_test -rwxr-xr-x 1 root root 292043 3月 31 18:01 /usr/bin/fdfs_appender_test1 -rwxr-xr-x 1 root root 278763 3月 31 18:01 /usr/bin/fdfs_append_file -rwxr-xr-x 1 root root 277887 3月 31 18:01 /usr/bin/fdfs_crc32 -rwxr-xr-x 1 root root 278750 3月 31 18:01 /usr/bin/fdfs_delete_file -rwxr-xr-x 1 root root 279213 3月 31 18:01 /usr/bin/fdfs_download_file -rwxr-xr-x 1 root root 279027 3月 31 18:01 /usr/bin/fdfs_file_info -rwxr-xr-x 1 root root 294067 3月 31 18:01 /usr/bin/fdfs_monitor -rwxr-xr-x 1 root root 966198 3月 31 18:01 /usr/bin/fdfs_storaged -rwxr-xr-x 1 root root 295074 3月 31 18:01 /usr/bin/fdfs_test -rwxr-xr-x 1 root root 294859 3月 31 18:01 /usr/bin/fdfs_test1 -rwxr-xr-x 1 root root 414275 3月 31 18:01 /usr/bin/fdfs_trackerd -rwxr-xr-x 1 root root 283237 3月 31 18:01 /usr/bin/fdfs_upload_appender -rwxr-xr-x 1 root root 284087 3月 31 18:01 /usr/bin/fdfs_upload_file
所有的配置文件在 /etc/fdfs/ 目录下 # ll /etc/fdfs/ 总用量 20 -rw-r--r--. 1 root root 1461 10月 28 11:29 client.conf.sample -rw-r--r--. 1 root root 7647 10月 28 11:29 storage.conf.sample -rw-r--r--. 1 root root 7102 10月 28 11:29 tracker.conf.sample
至此 FastDFS在Storage上安装完成,以下进行配置
3. 配置FastDFS 进入到 /etc/fdfs 目录下,复制/usr/local/src/FastDFS/conf/* 下面的所有文件到当前目录下(/etc/fdfs) # cd /etc/fdfs/ cp /usr/local/src/FastDFS/conf/* . ※如果Storage与Tracker安装在同一台机器时,注意不要覆盖Tracker安装时已配置好的文件。
编辑配置文件 storage.conf 测试的时候,只需修改以下内容即可。 # vim storage.conf disabled=false #启用配置文件 group_name=group1 #组名,根据实际情况修改 port=23000 #设置 storage 的端口号 base_path=/data/fastdfs/storage #设置 storage 的日志目录(需预先创建) store_path_count=1 #存储路径个数,需要和 store_path0=/data/fastdfs/storage #存储路径 tracker_server=10.10.10.124:22122 #tracker 服务器的 IP 地址和端口号 http.server_port=8080 #设置storage上启动的http服务的端口号,如安装的nginx的端口号 store_path 个数匹配
4. 运行Storage # fdfs_storaged /etc/fdfs/storage.conf restart
查看端口是否起来 # netstat -antp | grep storage tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 21163/fdfs_storaged tcp 0 0 192.168.0.105:35357 192.168.0.105:22122 ESTABLISHED 21163/fdfs_storaged
查看日志 cat /data/fastdfs/storage/logs/storaged.log 看运行情况 mkdir data path: FC ... mkdir data path: FD ... mkdir data path: FE ... mkdir data path: FF ... data path: /data/fastdfs/storage/data, mkdir sub dir done. [2015-04-01 16:58:58] INFO - file: tracker_client_thread.c, line: 310, successfully connect to tracker server 192.168.0.105:22122, as a tracker client, my ip is 192.168.0.105 [2015-04-01 16:59:28] INFO - file: tracker_client_thread.c, line: 1235, tracker server 192.168.0.105:22122, set tracker leader: 192.168.0.105:22122 看到先创建二级目录,然后已经成功连接到tracker
可以使用 fdfs_monitor 来查看一下storage的状态,看是否已经成功注册到了tracker # fdfs_monitor /etc/fdfs/storage.conf 也可以以下命令来监控服务器的状态 # fdfs_monitor /etc/fdfs/client.conf
结果如下: [2015-04-01 17:37:15] DEBUG - base_path=/data/fastdfs/storage, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, server_count=1, server_index=0 tracker server is 192.168.0.105:22122 use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0
group count: 1
Group 1:
group name = group1
disk total space = 20157 MB disk free space = 9466 MB trunk free space = 0 MB storage server count = 1 active server count = 1 storage server port = 23000 storage HTTP port = 8080 store path count = 1 subdir count per path = 256 current write server index = 0 current trunk file id = 0
Storage 1:
id = 192.168.0.105
ip_addr = 192.168.0.105 (rkhd-opensuse) ACTIVE http domain = version = 5.05
join time = 2015-03-31 18:21:56 up time = 2015-04-01 10:57:27 total storage = 20157 MB free storage = 9466 MB upload priority = 10 store_path_count = 1 subdir_count_per_path = 256 storage_port = 23000 storage_http_port = 8080 current_write_path = 0 source storage id = if_trunk_server = 0
connection.alloc_count = 256 connection.current_count = 0 connection.max_count = 1 total_upload_count = 4 success_upload_count = 4 total_append_count = 0 success_append_count = 0 total_modify_count = 0 success_modify_count = 0 total_truncate_count = 0
已经显示HIT,代表已经命中缓存 至此 FastDFS + nginx 反向代理缓存搭建完毕。 6、优化部分 1.Tracker优化 1) max_connections=10000或更大响应参数增大内存消耗增加该参数需修改单一进程同时可打开文件数量(* soft nofile 65536 * hard nofile 65536)的限制后生效。 2) work_threads=12 cpu数量此处设置cpu核心数量 3) thread_stack_size=256 测试配置如下 work_threads=12 thread_stack_size=256 max_connections=65535 2、Storage优化
work_threads= work_threads + 1 + (disk_reader_threads + disk_writer_threads) * store_path_count= 15
disk_rw_separated:磁盘读写是否分离 disk_reader_threads:单个磁盘读线程数 disk_writer_threads:单个磁盘写线程数
如果磁盘读写混合,单个磁盘读写线程数为读线程数和写线程数之后 对于单盘挂载方式,磁盘读写线程分别设置为1即可
如果磁盘做了RAID,那么需要酌情加大读写线程数,这样才能最大程度地发挥磁盘性能 buff_size=512增大提升磁盘IO的另外一个技巧,一次尽可能多写入或多读取。也就是说,将程序的读写buffer设置得尽可能大一些。例如日志或者redo log的写入,不是每次调用都直接写磁盘,而是先缓存到内存中,等buffer满了再写入磁盘,也可以定时写入磁盘。 测试配置如下
thread_stack_size=512KB disk_reader_threads = 4 disk_writer_threads = 4 buff_size=512 max_connections=65535 accept_threads=10 work_threads=16a
以上配置压力测试上传并发2w 事务平均响应时间0.46秒,4w事务平均响应时间2.2秒。
四、FastDFS使用
1.上传文件
1. client询问tracker上传到的storage; 2. tracker返回一台可用的storage;
3. client直接和storage通信完成文件上传,storage返回文件ID。
上传文件时,文件ID由storage server生成并返回给client
文件ID包含了组名和文件名,storage server可以直接根据该文件名定位到文件
FastDFS 提供了多种方式上传文件: 使用 fdfs_upload_file 上传 使用 C 语言客户端接口上传 使用 PHP 客户端接口上传 使用 Java 客户端接口上传 使用 Python 客户端接口上传 使用.NET 客户端接口上传
根据具体情况选择使用,上传均支持断点续传。
如果Java的客户端,在API的配置文件中配置 tracker服务器,如果有多个tracker服务器,就配置多台.
WEB-INF/classes/fdfs_client.conf
connect_timeout = 2 network_timeout = 30 charset = UTF-8 http.tracker_http_port = 8080 http.anti_steal_token = no http.secret_key = FastDFS1234567890 tracker_server =192.168.10.27:22122 tracker_server = 192.168.10.28:22122 2.下载文件
1. client询问tracker可下载指定文件的storage,参数为文件ID(组名和文件名); 2. tracker返回一台可用的storage; 3. client直接和storage通信完成文件下载。 使用 fdfs_download_file 通过 tracker 服务器下载 使用 nginx 通过 http 方式直接从 storage 下载(支持断点续传,作者推荐) 3.监视服务器资源
使用 fdfs_monitor 查看 tracker 和所有 group 的运行情况
fdfs_monitor /etc/fdfs/client.conf
[2015-04-02 09:48:26] DEBUG - base_path=/data/fastdfs/client, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0,
server_count=1, server_index=0
tracker server is 192.168.0.105:22122
group count: 1
Group 1:
group name = group1
disk total space = 20157 MB disk free space = 9466 MB trunk free space = 0 MB storage server count = 1 active server count = 1 storage server port = 23000 storage HTTP port = 8080 store path count = 1 subdir count per path = 256 current write server index = 0 current trunk file id = 0
Storage 1:
id = 192.168.0.105
ip_addr = 192.168.0.105 (rkhd-opensuse) ACTIVE http domain = version = 5.05
join time = 2015-03-31 18:21:56 up time = 2015-04-01 10:57:27 total storage = 20157 MB free storage = 9466 MB upload priority = 10 store_path_count = 1 subdir_count_per_path = 256 storage_port = 23000 storage_http_port = 8080 current_write_path = 0
use_connection_pool=0,
g_connection_pool_max_idle_time=3600s,
use_storage_id=0, storage server id count: 0
正在阅读:
FastDFS安装配置与使用10-07
学校教材订购系统—罗学东04-22
国企人才流失论文参考资料网摘02-27
土木工程词典03-08
2012年自考中国文化概论简答题六05-13
旅游资源调查表模板08-21
六年级英语竞赛培训教材03-17
单片机温度测试系统设计03-08
- 计算机试题
- 【2012天津卷高考满分作文】鱼心人不知
- 教育心理学历年真题及答案--浙江教师资格考试
- 20180327-第六届“中金所杯”全国大学生金融知识大赛参考题库
- 洪林兴达煤矿2018年度水情水害预测预报
- 基本要道讲义
- 机电设备安装试运行异常现象分析与对策
- 《有机化学》复习资料-李月明
- 非常可乐非常MC2--非常可乐广告策划提案 - 图文
- 2011中考数学真题解析4 - 科学记数法(含答案)
- 企业人力资源管理师三级07- 09年真题及答案
- 基于单片机的光控自动窗帘控制系统设计说明书1 - 图文
- 20160802神华九江输煤皮带机安装方案001
- (共53套)新人教版一生物必修2(全册)教案汇总 word打印版
- 2014行政管理学总复习
- 中国银监会关于加强地方政府融资平台贷款风险监管的指导意见
- 民宿酒店核心竞争与研究
- 游园活动谜语大全2012
- 河南省天一大联考2016届高三英语5月阶段性测试试题(六)(A卷)
- 小型超市管理系统毕业论文详细设计4
- 配置
- FastDFS
- 安装
- 使用
- 江苏省扬州市高考地理一轮复习从宇宙中看地球(第5课时)教案
- dk-1电空制动机题库
- 备战2014中考数学总复习 分层提分训练 等腰三角形与直角三角形(以2010-2012年真题为例)
- 第六讲 泄密责任
- 比较法功能比较与规范比较各自的特点和局限
- 赣州市文化产业重点招商
- 痰热清注射液治疗小儿急性肺炎253例疗效观察
- 南方医科大学生化习题
- 9 针对具体材料孔加工钻头及切削用量选择(中文核心,工具技术)
- 中国石油大学(华东)电工电子学试题
- 2012机械设计思考题答案
- 西安科技大学本科生第二课堂教育学分申请汇总表
- 湖北省建筑工程施工统一用表(2016年版)A
- 西南大学17秋《powerpoint多媒体课件制作》作业答案详解
- 精细化设计
- 《简·爱》练习题
- “十三五”重点项目-蚂蚁提取物项目节能评估报告(节能专篇)
- 山东大学硕士研究生入学生物化学考试题2
- 互联网 大学生创新创业大赛项目计划书-程政协
- 常设机构的构成及其个人所得税征管的分析