FastDFS是淘宝的余庆主导开发的一个分布式文件系统,采用C语言开发,性能较优。在淘宝网、京东商城、支付宝和某些网盘等系统均有使用,使用场景十分广泛。
下图来源:https://blog.csdn.net/kyriehe/article/details/52431495
目前这个系统的源码已在github上开源。 编译FastDFS需要下载以下源码: FastDFS,下载地址:https://github.com/happyfish100/fastdfs libfastcommon,下载地址:https://github.com/happyfish100/libfastcommon 本笔记(教程)采用如下环境进行编译学习,为了保证代码的一致性,建议在同等环境下进行编译学习。系统没有太大的更新,本教程均具有参考价值。 FastDFS版本:fastdfs-5.11.tar.gz libfastcommon版本:libfastcommon-1.0.39.tar.gz libfastcommon库编译安装: 1.解压libfastcommon,进入目录,执行./make.sh进行编译libfastcommon 2.执行./make.sh install 进行安装libfastcommon 安装时将头文件拷贝到/usr/include/fastcommon目录下,动态库libfastcommon.so拷贝到/usr/lib目录下。创建/usr/lib64/libfastcommon.so的软连接 启示:我们自己也可以编写动态库,把接口预留出来(即include中的头文件)供其他开发人员使用。本项目的libfastcommon库在原作者(余庆)的fastdht系统中也有使用。本lib库是将项目中的基础模块提取出来形成的一个基础库,供系统调用使用,这个库在其他系统中也能发挥很大的作用 fastdfs编译安装 1.解压fastdfs,进入目录,执行./make.sh进行编译fastdfs 2.执行./make.sh install 安装fastdfs 安装时将配置文件:client.conf.sample、tracker.conf.sample、storage_ids.conf.sample、storage.conf.sample拷贝到/etc/fdfs/目录下。 将可执行程序文件:fdfs_trackerd、fdfs_storaged、fdfs_monitor、fdfs_test、fdfs_test1、fdfs_crc32、fdfs_upload_file、fdfs_download_file、fdfs_delete_file、fdfs_file_info、fdfs_appender_test、fdfs_appender_test1、fdfs_append_file、fdfs_upload_appender拷贝到/usr/bin目录下 重要文件解释:实际使用时将.sample去掉。 client.conf.sample 客户端配置文件,主要配置client日志目录,tracker服务器地址 tracker.conf.sample 配置tracker日志。 storage.conf.sample 存储服务器配置文件,主要配置日志目录,数据存储目录,tracker服务器地址 整个系统中的重点是tracker服务器,storage需要tracker去发现。client去请求,都是要经过tracker服务器。 该系统有以下优秀策略,将尝试在后续的代码分析中体现出来 1.一个group内文件互为备份,即镜像服务器,上传/下载文件轮询策略,指定特定storage服务器上传/下载策略。上传后,同group的服务器互相备份数据。 2.多个group存储策略可配置,有轮询策略,剩余空间大优先等策略。 3.小文件合并存储功能(将多个小文件合并成一个大文件存储,主要应对小文件inode限制导致inode资源不够) 4.后续使用中发现的其他功能。 由于本教程仅作个人学习分析,没有实际生产环境的支持,未免有失偏颇。还望同行不吝赐教。 参考资料: http://bbs.chinaunix.net/thread-1920470-1-1.html FastDFS FAQ https://blog.csdn.net/kyriehe/article/details/52431495 分布式存储fastDFS