在移动互联网时代,智能终端,包括手机,平板电脑,物联网的发展,个人产生的图片,视频文件,文档文件,其他数据已经非常的多,那么对于如何处理这些海量的数据,是一个非常重要的环节,一方面要保证数据的安全和完整性,同时又要能够容易的横向扩容的存贮系统升级。那么就需要用到分布式文件储存系统。
于开始寻找一个真正的分布式文件系统,来解决我的存储难题,一下列举几个主要的:
mogileFS:Key-Value型元文件系统,不支持FUSE,应用程序访问它时需要API,主要用在web领域处理海量小图片,效率相比mooseFS高很多。
fastDFS:国人在mogileFS的基础上进行改进的key-value型文件系统,同样不支持FUSE,提供比mogileFS更好的性能。
mooseFS:支持FUSE,相对比较轻量级,对master服务器有单点依赖,用perl编写,性能相对较差,国内用的人比较多
glusterFS:支持FUSE,比mooseFS庞大
ceph:支持FUSE,客户端已经进入了linux-2.6.34内核,也就是说可以像ext3/rasierFS一样,选择ceph为文件系统。彻底的分布式,没有单点依赖,用C编写,性能较好。基于不成熟的btrfs,其本身也非常不成熟。
lustre:Oracle公司的企业级产品,非常庞大,对内核和ext3深度依赖
NFS:老牌网络文件系统,具体不了解,反正NFS最近几年没发展,肯定不能用。
当然,对于现在很多的网盘,比如百度网盘,百度云,阿里云,腾讯云,七牛云等云计算服务商也提供很好的分布式储存方案,具体用的技术肯定很多,据说其中UC的云盘就是用fasfdfs实现的。
http://blog.csdn.net/zhushuai1221/article/details/52440970
http://www.open-open.com/lib/view/open1435468300700.html
那今天就说一下关于fastdfs分布式文件的安装,配置。
fsatdfs在github上的地址:https://github.com/happyfish100/fastdfs,最新版本是v5.08
fastdfs的v4.0*版本是需要依赖libenent,但从v5.04版本开始,不在依赖libevent,而是依赖libfastcommon,也是fastdfs做着余庆开发的,地址:https://github.com/happyfish100/libfastcommon
首先下载fastdfs和libfastcommon,然后解压这两个文件夹
(1)安装libfastcommon
cd libfastcommon
./make.sh
./make.sh install
(2) 安装fastdfs
cd fastdfs-master
./make.sh
./make.sh install
(3) 安装完毕后,在/usr/bin 下面会生成fdfs的各种可执行文件,如下图:
那么我们可以直接在终端执行每一个可执行文件,如下图:
执行每一个,都会列出用法叫我们如何使用这些可执行文件。
(4) 在/etc/fdfs/下将会产生三个配置文件client.conf.simple,tracker.conf.simple,storage.conf.simple。
我们将这三个文件重命名为client.conf,tracker.conf,storage.conf
client.conf:这个配置文件是我们使用api操作的时候需要调用的。
tracker.conf:这个配置文件是我们配置tracker服务使用的,启动tracker服务时也需要用到该文件
storage.conf:这个配置文件是配置storage服务使用的,启动也需要用到该配置文件。
(5)配置tracker.conf
一般只需要配置base_path这项,这项是一个基本路径,storaged.log和trackerd.log文件将保存在这个路径下的base_path下的logs/.
eg:base_path=/var/fdfsdata
一般也设置rotate_error_log = true
是否定期轮转error log,目前仅支持一天轮转一次 (建议设置为true,否则会导致日志文件只有一个,时间长了就会很大,不方便查看)
那么在tracker和storage启动后,将会在/var/fdfsdata创建u一个logs文件夹。logs里面将会有storaged.log和trackerd.log文件,记录这两个服务的运行信息。
注意:http.server_port设置http端口号,这个配置在fastdfs5.05及以后版本中已经不用配置,不用管这个。
详细的配置在http://www.linuxidc.com/Linux/2014-10/107577.htm有中文说明
(6) 配置storage.conf
这里也说一下主要的几个配置,其他配置默认就可以。
group_name=group1
base_path=/var/fdfsdata (和tracker.conf配置相同)
storage_path_count=1 (默认1,多个store_path设置多个)
store_path0=/var/fdfsdata (可以与base_path相同,也可以设置不同)
tracker_server=192.168.1.67:22122
//多个tracker_server时,可以设置多个
tracker_server=192.168.1.68:22122
注意:http.server_port设置http端口号,这个配置在fastdfs5.05及以后版本中已经不用配置,不用管这个
(7) 配置完成后,分别启动这两个服务,首先启动tracker,再启动storage。
启动tracker:
fdfs_trackerd /etc/fdfs/tracker.conf
启动storage:
fdfs_storaged /etc/fdfs/storage.conf
查看是否启动,我们可以用以下命令:
netstat | grep 22122
netstat | grep 23000
(8) 配置client.conf
主要配置一下几项:
base_path=/var/fdfsdata (这个base_path主要是用来保存logs文件的,可以设置与tracker.conf一样,也可以不一样,建议设置一样,方便管理)
有多少个就设置多少个
tracker_server=192.168.1.67:22122
tracker_server=192.168.1.68:22122
http.tracker_server_port=8080
#include http.conf
(9) 测试上传文件
fdfs_test /etc/fdfs/client.conf upload /home/www/test.png
可以看到上传返回的信息,说明fastdfs整个安装部署成功。
(10) 安装php_client的扩展
php_client的扩展文件在fastdfs_master的php_client文件夹下
进入到该文件夹
phpize
./configure --with-php-config=/usr/local/php/bin/php-config
(--with-php-config根据实际安装路径配置)
./make
./make install
安装完成后,在复制php_client文件夹下的php_client.ini的内容到php.ini下面,同时修改如下主要几项:
fastdfs_client.base_path=/tmp
fastdfs_client.log_filename=/usr/local/fastdfs/logs/fastdfs_client.log
fastdfs_client.tracker_group_count = 1
fastdfs_client.tracker_group0 = /etc/fdfs/client.conf
然后重新启动apache或者php-fpm
然后再通过php -m 查看安装的扩展模块,如果看到fastdfs_client,说明模块安装成功!
(11) 测试php_client的操作API
在php_client的有一个fastdfs_test.php文件,可以直接执行:
php fastdfs_test.php
在终端将会打印出很多信息。
到这里,我们可以使用php的api来操作很上传,下载,删除等功能了,具体的API函数说明在README.MD文件中有说明。