分布式文件系统

一、分布式文件系统

分布式文件系统是一个软件/软件服务器,这个软件可以用来管理文件。但是所管理的文件通常不是一个服务器节点,而是在多个服务器节点上,通过网络相连构成一个庞大的文件存储服务器集群,这些服务器用于存储文件资源,通过分布式文件系统来管理这些服务器上的文件。

二、FastDFS

一款纯C的轻量级开源分布式文件系统,支持Linux等UNIX系统,不是通用文件系统只能通过API访问,可以看成是基于文件的key value pair 存储系统。
它包含三个角色:tracker-server、storage-server、group

三、三个角色
1.跟踪服务器(tracker-server)

主要做调度工作,起负载均衡的作用。在内存中集群中所有存储组合存储服务器的状态信息,是客户端和数据服务器交互的枢纽。

2.存储服务器(storage-server)

文件和文件属性都保存到存储服务器上。Storage-server直接利用OS的文件熊调用管理文件。

3.组(group)

也可称为卷。同组内服务器的文件是完全相同的,同一组内的storage sever之间是对等的,文件上传、删除等操作可以在任意一台存储服务器上进行。

4.横向扩容和纵向扩容

横向扩容:是指同一组内的服务器增加,以增加数据备份和减小集群服务器的压力。
纵向扩容:通过新增组来减小集群服务器的压力。

5.ubuntu安装FastDFS

1.安装fastdfs依赖插件libfastcommon
下载:https://github.com/happyfish100/libfastcommon/archive/V1.0.39.tar.gz
2.编译
./make.sh
3.安装
./make.sh install
4.下载安装fastdfs
下载:https://github.com/happyfish100/fastdfs/releases/tag/V5.10
5.同上编译安装。
6.测试
在这里插入图片描述
7.配置tracker(/etc/fdfs/tracker.conf)的路径
在这里插入图片描述
在这里插入图片描述
8.配置storage
在这里插入图片描述
9.配置client
在这里插入图片描述
10.启动(守护进程的形式)

6.工作流程图

文件上传工作流程图
在这里插入图片描述
文件下载流程图
在这里插入图片描述

7.文件名生成规则

在这里插入图片描述

8.源码分析

注意:github上很多的开源项目都是没有api的,此时需要去查看它的实例代码,从而实现自己的功能
1.查看实例找出了解各函数的功能,以移植到自己的代码中
2.进程方式实现
在这里插入图片描述
tips:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.动态库找不到解决办法
使用命令ldd app可以查看当前的链接库情况

第一种方法:
export LD_LIBRARY_PATH=自定义动态库的路径
(只能起到临时作用,关闭终端后失效)
LD_LIBRARY_PATH : 指定查找共享库(动态链接库)时除了默认路径之外的其他路径,该路径在默认路径之前查找

第二种方法:
将上述命令写入home目录下的.bashrc文件中,保存后重启终端生效(永久)

第三种方法:
直接将动态库拷贝到user/lib的系统目录下(强烈不推荐!!)

第四种方法:
将libmytest.so所在绝对路径追加入到/etc/ld.so.conf文件,使用sudo ldconfig -v 更新
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐