FastDFS安装(mac)|文件存储方案

FastDFS安装(mac)|文件存储方案

在我们进行相关项目开发时,肯定会遇到需要进行文件保存的需求。那么这些文件(如图片)保存到哪里呢?

  • 第一种方案是直接保存到本地磁盘中,即通过浏览器发一个post的请求,相关程序将文件保存到本地,这样完全可以实现。但缺点是文件和项目代码都会保存到同一台电脑上,即这台电脑(服务器)既要向客户端响应项目代码又要响应文件。
  • 如果像分开就可以使用文件服务器,在这里就是FastDFS,即项目代码在一台电脑,文件在另一台电脑(也就是服务器)。从而实现分开

1 FastDFS介绍

1.1 FastDFS架构

包括ClientTracker serverStorage server

  • 整体过程:Client也就是我们说的客户端,其请求Tracker进行文件上传、下载,Tracker再调度Storage完成文件上传和下载。
  • Client: 客户端,业务请求的发起方,通过专有接口,使用TCP/IP协议与Tracker或Storage进行数据交互。FastDFS提供了upload、download、delete等接口供客户端使用。
  • Tracker server:跟踪服务器,主要做调度工作,起负载均衡的作用。在内存中记录集群中所有存储组和存储服务器的状态信息,是客户端和数据服务器交互的枢纽。
  • Storage server:存储服务器(存储节点或数据服务器),文件和文件属性都保存到存储服务器上。Storage server会定时的向Tracker server发消息,如果一段时间没发,Tracker server就会将其去除。直接利用OS的文件系统调用管理文件。
    • Storage群中的横向可以扩容,纵向可以备份。

1.2 工作原理实例介绍

以上传文件为例:

  • Client拿到需要上传的文件,这时Client会向Tracker server发一则消息即“当下需要保存文件”;
  • Tracker server在接到消息后,就会从其列表中寻找可用的Storage server,并将可用的Storage server IP返回给Client
  • Client在就到相关IP后,就向这个指定IP的那台服务器发生要上传的文件;
  • Storage server 收到文件会将文件保存,并为其起名,后将该名称返回给Client
  • Client收到这个名字后只需将该名称保存下来,供以后依据该名称到Storage server找寻该文件。

1.3 FastDFS上传和下载流程

在这里插入图片描述
在这里插入图片描述

1.4 FastDFS文件索引

在这里插入图片描述

  • FastDFS上传和下载流程 都涉及到文件索引(file_id)

    • 文件索引(file_id)是客户端上传文件后存储服务器返回给客户端,是以后访问该文件的索引信息。
  • 文件索引(file_id)信息包括:组名虚拟磁盘路径数据两级目录文件名等信息。

    • 组名:文件上传后所在的 Storage 组名称。
    • 虚拟磁盘路径:Storage 配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推。
    • 数据两级目录:Storage 服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。
    • 文件名:由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。

在这里插入图片描述

2 FastDFS安装(mac)

笔者先尝试了使用docker安装FastDFS,但在创建storage容器时无法映射出data中的多个目录,为此也是尝试了很多方法且网上多数是在ubuntu系统进行的安装,前后花费了五六个小时,如果您有相关有效的解决的方法欢迎私信。这个方法我得出的结论是:

--network=host 参数只有在linux下生效, mac windows 都不能成功,所以导致安装fastdfs是失败的

因此笔者使用了如下的安装方法,亲测有效:

2.1 安装包(如果要与Nginx连接,需要用下面百度云的四件套)

链接:https://pan.baidu.com/s/1mQNAb7djkAtX3NyqqURT6g
密码:lpoh

延伸阅读:

注意:上两个链接都是github上成熟的项目,进入页面后点击“Clone or download” ---> “Download ZIP”

2.2 安装libfastcommon

cd libfastcommon压缩包解压后的文件地址,一定要自行修改如(/Users/..../Desktop/libfastcommon-master)
./make.sh
sudo ./make.sh install

2.3 安装FastDFS

cd FastDFS压缩包解压后的文件地址,一定要自行修改如(/Users/..../Desktop/fastdfs-master)
./make.sh
sudo ./make.sh install

2.4 相关文件配置

(1)配置跟踪服务器tracker

  • 拷贝tracker配置文件
sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
  • 先手动创建您想要存放目录,即收到创建文件夹(名称自由,但尽量不变方便后期查找): /您方便的目录/fdfs/tracker。笔者是在创建了如下目录路径是:

    /var/fdfs/tracker
    
  • 编辑/etc/fdfs/tracker.conf配置文件

    sudo vim /etc/fdfs/tracker.conf
    
    • 修改其中base_path的部分如下:
    base_path=/您方便的目录/fdfs/tracker
    

(2)配置存储服务器storage

  • 拷贝storage配置文件
sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
  • 先手动创建您想要存放目录,即收到创建文件夹(名称自由,与上tracker保持在一个上级目录下): /您方便的目录/fdfs/storage。笔者是在创建了如下目录:
/var/fdfs/storage
  • 编辑/etc/fdfs/storage.conf 配置文件
sudo vim /etc/fdfs/storage.conf
  • 修改其中的base_path, store_path0, tracker_server
base_path=/您方便的目录/fdfs/storage
store_path0=/您方便的目录/fdfs/storage
tracker_server=Mac的IP地址:22122

(3)启动tracker和storage

sudo fdfs_trackerd /etc/fdfs/tracker.conf start
sudo fdfs_storaged /etc/fdfs/storage.conf start

(4)查看是否启动成功

ps aux|grep fdfs

如出现下面情况,则表明成功:

root             13211  98.0  0.0  4298076    800   ??  R     2:58下午   0:02.19 fdfs_storaged /etc/fdfs/storage.conf start
你的mac名        13256   0.0  0.0  4268192    464 s000  R+    2:58下午   0:00.00 grep fdfs
root             13140   0.0  0.0  4297384    796   ??  S     2:58下午   0:00.00 fdfs_trackerd /etc/fdfs/tracker.conf start

2.5 client.conf配置文件修改

  • 拷贝client配置文件
sudo cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
  • 修改client配置文件
sudo vim /etc/fdfs/client.conf
  • 修改其中的内容:
base_path=/您方便的目录/fdfs/tracker
tracker_server=您Mac的IP地址:22122
原文地址:https://www.cnblogs.com/Bert-Sun/p/12889919.html