一、何为分布式文件系统
“分布式文件系统,顾名思义,就是分布式+文件系统。它包含这两个方面的内涵,从文件系统的客户使用的角度来看,它就是一个标准的文件系统,提供了一系列API,由此进行文件或目录的创建、移动、删除,以及对文件的读写等操作。从内部实现来看,分布式的系统则不再和普通文件系统一样负责管理本地磁盘,它的文件内容和目录结构都不是存储在本地磁盘上,而是通过网络传输到远端系统上。并且,同一个文件存储不只是在一台机器上,而是在一簇机器上分布式存储,协同提供服务,正所谓分布式。”
——转自Venus神庙的blog
链接:http://www.cnblogs.com/duguguiyu/archive/2009/02/22/1396034.html
二、何为FastDFS
FastDFS是一个开源的轻量级分布式文件系统,她对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
(1)纯C语言实现,支持Linux、FreeBSD等类UNIX系统。
(2)类Google FS,不是通用的文件系统,只能通过专有API访问,目前提供了C、Java和PHP的API.
(3)为互联网应用量身定做,解决大容量文件存储问题,追求高性能和高扩展性。
(4)FastDFS可以看做是基于文件的key value pair存储系统,称作分布式文件存储服务更为合适。
FastDFS官方主页:http://code.google.com/p/fastdfs/
论坛网址:http://bbs.chinaunix.net/forum-240-1.html
三、FastDFS的工作流程
“我们可以通过 FastDFS对文件的上传过程,来初步了解 FastDFS的基本架构。”
“首先,客户端 client 发起对 FastDFS 的文件传输动作,是通过连接到某一台 Tracker Server的指定端口来实现的,Tracker Server根据目前已掌握的信息,来决定选择哪一台 Storage Server。”
“然后将这个Storage Server的地址等信息返回给 client,然后 client再通过这些信息连接到这台 Storage Server,将要上传的文件传送到给 Storage Server上。”
——转自诗商·柳惊鸿CSDN博客
链接:http://blog.csdn.net/poechant/article/details/6977407
四、FastDFS的安装
1. 安装环境准备
(1)示例系统环境为:Ubuntu 11.10 i386
内核版本:Linux 3.0.0-12-generic
(2)事先更新gcc版本。
#sudo apt-get install build-essential
(3)libevent-2.0.21-stable.tar.gz
FastDFS内部绑定了libevent作为http服务器。Ubuntu软件更新源上没有该库资源。所以需要手动下载,再自行解压安装。
libevent官网网址为:http://libevent.org/,建议选择最新的stable版本下载,千万不要使用libevent的非stable版本。
或者 wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz方式下载。
(4)pthread库
使用系统自带的pthread库即可。Ubuntu 11及后续版本,可能会出现找不到动态库pthread库,所以请事先搜索确定libpthread.so所在路径。由于FastDFS目录下make.sh中默认的libpthread查找路径与Ubuntu 11以后版本的系统实际不符,所以安装会出现错误。详见后续章节。
(5)FastDFS_v4.04.tar.gz
可以去FastDFS官方主页下载:http://code.google.com/p/fastdfs/downloads/list
2. 安装libevent
请务必将libevent安装在/usr下,原因是FastDFS编译过程中需要在此目录下查找依赖文件。
tar xzvf libevent-2.0.21-stable.tar.gz
# ./configure –help 看一下配置帮助信息
根据帮助信息
#./configure --prefix=/usr
#make clean
#make
#make install
3.安装FastDFS
这里选择解压至用户目录,也可以放在其他目录,这都无所谓。
#sudo tar vxzf FastDFS_v4.04.tar.gz /home/用户名/
解压后进入FastDFS目录:
(1) 因为要使用自带的http服务,编辑FastDFS目录下的make.sh文件:
找到#WITH_HTTPD=1
改为WITH_HTTPD=1
(2) 因为可能由于make.sh内默认的查找libpthread.so文件目录与Ubuntu 11及以后版本的系统libpthread路径不符,所以需要更改该处。
1)查找本系统下libpthread.so路径:
#sudo find / -name libpthread.so
本系统libpthread.so路径为:/usr/lib/i386-linux-gnu/libpthread.so
2)更改make.sh内容,使make.sh能按照正确的路径找到libpthread.so
(3) 在FastDFS目录下
#sudo ./make.sh
#sudo ./make.sh install
执行两个命令后,若看到类似信息,则安装成功
五、FastDFS的配置
FastDFS服务端有两个角色:跟踪器 tracker和存储节点 storage。
跟踪器主要做调度工作,在访问上起到负载均衡的作用。
存储节点存储文件,完成文件管理的所有功能:存储、同步和提供存取接口。
具体介绍请见ChinaUnix论坛该置顶贴:http://bbs.chinaunix.net/thread-2001101-1-1.html
FastDFS的配置文件位于FastDFS/conf目录下,包括
client.conf 客户端上传配置文件
storage.conf 文件存储节点服务器配置文件
tracker.conf 均衡调度服务器配置文件
http.conf http服务器配置文件
关于tracker.conf和storage.conf配置文件中文详解,请参考ChinaUnix论坛置顶贴:
http://bbs.chinaunix.net/thread-1941456-1-1.html
新建tracker和storage目录,本例为fastDFS_tracker和fastDFS_storage,建立在用户根目录下。
事先ifconfig获取本机IP地址,本例将tracker服务器和storage服务器设在同一主机下。
1. 配置tracker
修改FastDFS/conf/tracker.conf文件
(1) bash_path=/home/用户名/fastDFS_tracker该目录必须事先存在,用于存储日志等信息。
(2) 改端口,自己设。用于http下载文件的端口
http.server_port=5666
(3) ##include http.conf修改为#include http.conf 就是去掉一个#
(4) 其他配置可以参照《配置文件中文详解》自行修改,本例未作其他修改。
为了支持http,将http.conf文件拷贝到/etc/fdfs目录下,否则无法启动。
进入/usr/local/bin/目录,启动tracker服务器
#sudo fdfs_trackerd /home/用户名/FastDFS/conf/tracker.conf
进入/home/用户名/fastDFS_tracker/logs/trackerd.log查看tracker的启动日志,如果看到类似信息,则启动成功。
2. 配置storage
修改FastDFS/conf/storage.conf文件
(1) bash_path=/home/用户名/fastDFS_storage该目录必须事先存在,用于存储storage相关的log、group内信息。
(2) 文件存储位置,一台文件存储节点服务器上可以指定多个存储位置
store_path0=/home/用户名/fastDFS_storage
(3) 指定分组名 group_name=group1
(4) 修改其指定的跟踪器服务器tracker server的IP和端口信息
tracker_server=192.168.123.155:22122
注意:一定要使用正确的IP地址,即使storage和tracker都在同一主机,也不能使用127.0.0.1或者localhost来表示本地地址。否则storage启动必然出错!建议用ifconfig获取的准确ip来填写。
(5) ##include http.conf修改为#include http.conf 就是去掉一个#
进入/usr/local/bin/目录,启动storage服务器
# sudo fdfs_storaged /home/用户名/FastDFS/conf/storage.conf
执行后,会出现:
进入/home/用户名/fastDFS_storage/logs/storage.log查看storage服务器启动日志,如果看到类似信息
则storageServer启动成功。
注:笔者曾经因为配置问题而导致多次启动失败,所以上图的启动日志信息时间跨度较大。
六、 FastDFS的初步使用体验
1. 可以使用自带的客户端进行文件上传,使用之前需要配置client.conf
修改FastDFS/conf/client.conf文件
(1) 指定目录,该目录必须事先存在,用于存放文件上传的日志。本例将其放在fastDFS_tracker目录中
base_path=/home/用户名/fastDFS_tracker
(2) tracker_server=192.168.102.155:22122此处注意事项同storage.conf配置。
(3) http.tracker_server_port=5666修改为tracker.conf中我们设置的端口号。
(4) ##include http.conf修改为#include http.conf 就是去掉一个#
2. 上传文件
进入/usr/local/bin目录,我们可以事先建立一个hello.txt文件,用于上传实验。
执行命令:
# sudo fdfs_test /home/用户名/FastDFS/conf/client.conf upload hello.txt
假如执行后的命令信息类似于:
则上传成功!请记下图中标记的URL地址。
3. 下载文件
进入你的浏览器,Ubuntu应该默认自带的是FireFox。
在浏览器地址栏输入上图中记下的URL地址,tracker server会自动重定向到storage server,浏览器成功显示文件。
到目前为止,你的FastDFS已经安装配置成功,并成功试验了上传和下载。
本文在参考网络上众人的技术博客,并结合自己实际操作情况而成,谢谢广大童鞋们的共享精神。