fastDFS分布式文件系统的搭建

Posted 德古拉的杂货铺

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了fastDFS分布式文件系统的搭建相关的知识,希望对你有一定的参考价值。

fastDFS是一个开源的轻量级分布式文件系统框架,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

分布式文件系统

一般地,我们的电脑上装的Windows或者linux操作系统,都会自带一个文件系统(比如fat32,ntfs,ext3,ext4等格式),用来管理和存储电脑上的文件。当然,如果你电脑上装了双系统,那每个操作系统都各自有一个文件系统。

如果一台电脑的磁盘空间不够了,可以继续加硬盘,但这种本地扩容的手段很难满足大规模数据的存储。而分布式文件系统突破了这个限制,通过将存储节点放在不同的主机上,不同的主机组成网络,用户不用关心数据到底存放在哪台主机上,只要像使用本地文件系统一样使用它就好了。


fastDFS概述

fastDFS是淘宝架构师余庆用C语言编写的一款开源的分布式文件系统,它为互联网应用量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标。借助fastDFS可以很容易地搭建一套高性能的文件服务器集群,提供文件上传、下载等服务。

fastDFS属于应用层级的文件系统,不能进行挂载、卸载的mount操作(U盘的插拔就属于这种操作)。


fastDFS架构

在fastDFS文件系统中对应了三个角色:客户端(client)、追踪器(tracker)、存储节点(storage)。

这三个角色的关系可以这样描述:

  1. client和storage主动连接tracker

  2. storage主动向tracker报告自身状态信息

    • 磁盘剩余情况

    • 文件同步状况

    • 文件上传、下载次数

    • storage会启动一个单独的线程来完成对一台tracker的连接和定时报告

  3. client需要上传文件时

    • 先向tracker发送上传连接请求,tracker返回某个存储空间足够的目标storage的ip和端口,client与tracker断开连接

    • 向目标storage上传文件(包括文件名和文件数据),storage存储文件后,向client返回重新编码后的file_id(包含存储路径信息和文件名),storage与client断开连接

  4. client需要下载文件时

    • 先向tracker发送下载连接请求,tracker查询后返回目标storage的ip和端口,client与tracker断开连接

    • 向目标storage发送需要下载的文件的file_id,storage向client发送文件,storage与client断开连接

  5. storage和client之间基于TCP协议进行文件传输



fastDFS集群

集群(cluster)技术可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益。一个客户端与集群相互作用时,集群表现得像是一个独立的服务器。

fastDFS分布式文件系统的搭建

fastDFS通过集群配置提高文件系统的可用性和可缩放性。

  1. tracker集群

    • 多个tracker server之间是相互平等关系同时提供服务,tracker server之间进行数据同步

    • 通过集群,tracker server不存在单点故障。

    • client请求Tracker server时采用轮询方式,如果请求的tracker无法提供服务则换另一个tracker。


  2. storage集群

    • storage集群采用了分组存储方式,由一个或多个组(group)构成

    • 集群存储总容量为集群中所有组的存储容量之和

    • 一个组由一台或多台storage存储服务器组成,组内的storage server之间是平等关系,组内的storage进行数据同步,冗余备份;不同组的Storage server之间不会相互通信

    • 一个组的存储容量为该组内storage存储服务器容量最小的那个

    • 通过添加group组进行文件系统的容量扩充——横向扩容

    • 组内添加storege节点进行数据备份——纵向扩容




Linux环境下fastDFS的安装与配置


fastDFS安装

  1. 新建安装包的存放路径,下载安装包并解压

    wget https://github.com/happyfish100/libfastcommon/archive/V1.0.39.tar.gz -SO libfastcommon.tar.gz
    wget https
    ://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz -SO fastdfs.tar.gz
    #解压命令 tar -xf xxx.tar.gz

    小提示:提示权限不够时,一般都可以在命令前加上sudo 解决。

  2. 编译安装基础库包 libfastcommon

    cd libfastcommon-1.0.39
    ./make.sh
    ./make.sh install
    #可能需要创建动态库软连接
    #sudo ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
  3. 编译安装fastDFS

    cd fastdfs-5.11
    ./make.sh
    ./make.sh install

安装结束后的二进制命令默认放在/usr/bin目录下,而配置文件是在/etc/fdfs目录下,可以通过fdfs_test命令测试是否安装成功。

fastDFS分布式文件系统的搭建


fastDFS配置

需要对fastDFS的配置文件进行修改,才能正常使用。一般不直接对提供的示例配置文件进行修改,所以会先复制一份。

  1. 复制client、tracker、storage的配置文件

    cd /etc/fdfs
    sudo cp tracker
    .conf.sample tracker.conf
    sudo cp storage
    .conf.sample storage.conf
    sudo cp client
    .conf.sample client.conf
  2. 修改tracker的配置文件tracker.conf

    • bind_addr=192.168.82.253

      • 绑定当前主机IP

    • port=22122

      • 绑定的端口,一般先检查端口空闲

    • base_path=/home/robin/fastDFS/tracker

      • 日志文件log存放的目录,需为可用的路径

    • 修改完成之后,就可以启动tracker服务了

    #启动tracker:fdfs_trackerd /etc/fdfs/tracker.conf#重启fdfs_trackerd /etc/fdfs/tracker.conf restart#关闭fdfs_trackerd /etc/fdfs/tracker.conf stop
  3. 修改storage的配置文件


    • group_name=group1

      • 该存储节点所属的组名

    • bind_addr=192.168.82.253

      • 绑定当前的IP

    • port=23000

      • 绑定的端口

    • base_path=/home/robin/fastDFS/storage

      • 日志文件log存放的目录,需为可用的路径

    • store_path_count=1

      • 存储目录的个数

    • store_path0=/home/robin/fastDFS/storage

      • 具体的存储目录,需可用,且与存储目录个数对应

    • tracker_server=192.168.82.253:22122

      • 连接的tracker的IP和端口

    • 修改完成之后,就可以启动storage服务了

    fdfs_storaged /etc/fdfs/storage.conffdfs_storaged /etc/fdfs/storage.conf restartfdfs_storaged /etc/fdfs/storage.conf stop
  4. 修改client的配置文件

    • base_path=/home/robin/fastDFS/client

      • 日志文件log存放的目录,需为可用的路径

    • tracker_server=192.168.82.253:22122

      • 连接tracker时候需要的iP和端口信息


  5. 检测当前fdfs环境是否搭建成功

    fdfs_monitor/etc/fdfs/client.conf

fastDFS分布式文件系统的搭建

fastDFS分布式文件系统的搭建



配置完成之后,就可以测试分布式文件系统的文件上传、下载了。

客户端文件上传:

fastDFS分布式文件系统的搭建

fastDFS分布式文件系统的搭建

下载上传的文件:

fastDFS分布式文件系统的搭建

删除上传的文件:

fastDFS分布式文件系统的搭建


结束语


至此,基于fastDFS的分布式文件存储系统就搭建完成了。分布式存储系统通常作为后台服务器的一部分而出现。


一般地,我们需要在程序代码中实现文件的上传、下载等操作,实现方法有两个:

  1. 通过阅读fastDFS的源代码,利用fastDFS提供的api实现;

  2. 创建子进程,在子进程中执行fdfs_upload_file等命令。








第一时间获取杂货铺的

想法灵感和好文章推荐



    
    喜欢请戳一戳右下角   

  


以上是关于fastDFS分布式文件系统的搭建的主要内容,如果未能解决你的问题,请参考以下文章

FastDFS 分布式文件系统 搭建部署

FastDFS 分布式文件系统集群与应用教程

简单搭建FastDFS分布式文件系统(简单易懂)

架构之路搭建FastDFS分布式文件系统

fastDFS分布式文件系统的搭建

基于docker容器搭建fastdfs分布式文件系统