分布式存储fastDFS

来源:互联网 发布:js点击链接下载图片 编辑:程序博客网 时间:2024/05/20 16:10

1.分布式存储fastDFS


fastDFS是开源的轻量级分布式文件系统,由纯C语言实现,支持Linux等类Unix系统,追求高性能和高可扩展性,可以看做是基于文件的键值(key–value)存储系统,由淘宝开发平台架构师余庆开发。

FastDFS百度百科:http://baike.baidu.com/view/2466025.htmFastDFS官方论坛:http://bbs.chinaunix.net/forum-240-1.htmlFastDFS下载: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$ lsclient  conf             fastdfs.spec  hhh.txt  INSTALL  php_client  restart.sh  storage  trackercommon  COPYING-3_0.txt  HISTORY       init.d  make.sh  README.md   stop.sh     testyun@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.txt

fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKgCaVeVnY2AcveAAAAAFDGtH6s805_big.txt

综上所述完成上传和删除文件功能。

0 0
原创粉丝点击