1.分布式存储fastDFS
fastDFS是开源的轻量级分布式文件系统,由纯C语言实现,支持Linux等类Unix系统,追求高性能和高可扩展性,可以看做是基于文件的键值(key–value)存储系统,由淘宝开发平台架构师余庆开发。
FastDFS百度百科:http://baike.baidu.com/view/2466025.htm
FastDFS官方论坛:http://bbs.chinaunix.net/forum-240-1.html
FastDFS下载:http://sourceforge.net/projects/fastdfs/files/
其提供的功能有:
- upload 上传文件
- download 下载文件
- delete 删除文件
2.实现的模块
在fastDFS中,只有两种角色,分别是storage和tracker,但是实际是有三个模块:
- tracker 中间介质(追踪器)
- storage 存储介质
- fastFDS client 客户
3.文件上传过程
我们可以通过 FastDFS 对文件的上传过程,来初步了解 FastDFS 的基本架构。首先客户端client 发起对 FastDFS 的文件传输动作,是通过连接到某一台 Tracker Server 的指定端口来实现的,Tracker Server 根据目前已掌握的信息,来决定选择哪一台 Storage Server ,然后将这个Storage Server 的地址等信息返回给 client,然后 client 再通过这些信息连接到这台Storage Server,将要上传的文件传送到给 Storage Server上。
4.架构剖析
首先,FastDFS 是包括一组 Tracker Server 和 Storage Server 的。
Tracker Server 与 Storage Server 之间不直接通信,其基本的信息由配置文件在系统启动加载时获知。多台 Tracker Server 之间保证了 Tracker 的分布式,Tracker Server 之间是对等的,防止了单点故障。
Storage Server 是分成多个 Group,每个 Group 中的Storage 都是互相备份的,也就是说,如果 Group1 有 Storage1、Storage2、Storage3,其容量分别是100GB、100GB、100GB,那么 Group1 的存储能力是 100GB,而不是 300GB,这就是互相备份的意思。
进一步说,整个 Group 的存储能力由该组中该储能力最小的 Storage 决定。多个 Group 之间的存储方式,可以采用 round robin(轮训)、load balanced(负载均衡)或指定 Group 的方式。另一点相对于MS(Master-Slave)模式的优势,就是 Tracker Server 与 Master 是决然不同的,不仅 master 有上面可能提到的单点故障问题,而且 client 与 master 之间可能会出现瓶颈。但 FastDFS 架构中,Tracker Server 不会称为系统瓶颈,数据最终是与一个available 的 Storage Server 进行传输的。
5.安装fastDFS
tar zxvf fastdfs-5.05.tar.gz
yun@Kyrie:~/09$ cd fastdfs-5.05/
yun@Kyrie:~/09/fastdfs-5.05$ ls
client conf fastdfs.spec hhh.txt INSTALL php_client restart.sh storage tracker
common COPYING-3_0.txt HISTORY init.d make.sh README.md stop.sh test
yun@Kyrie:~/0902/fastdfs-5.05$
执行以下2条命令
./make.sh
sudo ./make.sh install
6.修改配置文件
先修改一下三个文件
sudo mv client.conf.sample client.conf
sudo mv storage.conf.sample storage.conf
sudo mv tracker.conf.sample tracker.conf
tracker.conf 中修改
base_path=/usr/fastdfs #用于存放日志。
注意 确保/usr/fastdfs 目录存在
storage.conf 中修改
base_path=/usr/fastdfs/storage #用于存放日志。
store_path0=/usr/fastdfs/fastdfs0 #存放数据,若不设置默认为前面那个。
tracker_server=192.168.2.105:22122 #指定tracker服务器地址,不能是127.0.0.1
注意 确保/usr/fastdfs/storage、 /usr/fastdfs/fastdfs0目录存在
client.conf 中同样要修改
base_path=/usr/fastdfs #用于存放日志。
tracker_server=192.168.2.105:22122 #指定tracker服务器地址
启动tracker和storage
sudo /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
sudo /usr/bin/fdfs_storaged /etc/fdfs/storage.conf检查进程
ps -ef |grep fdfs
若tracker和storage都启动了,表示成功上传文件和删除文件
fdfs_test /etc/fdfs/client.conf upload hello.txtfdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKgCaVeVnY2AcveAAAAAFDGtH6s805_big.txt
综上所述完成上传和删除文件功能。