【FastDFS+FastDHT】FastDFS集成FastDHT实现文件去重

本文详述了FastDHT分布式哈希表与FastDFS文件系统的集成过程,包括BerkeleyDB安装、FastDHT环境搭建及配置,实现文件排重,节省存储空间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

FastDHT是基于键值对的高性能分布式哈希表(DHT)。它可以存储大量键值对,例如文件名映射,会话数据和与用户相关数据。
FastDFS本身支持文件的排重处理机制,但需要FastDHT作为文件hash的索引存储。
其排重原理为:FastDFS的storage server每次上传均需要计算文件的hash值,然后从FastDHT服务器上进行查找比对,如果没有返回,则写入hash,并将文件保存;如果有返回,则建立一个新的文件链接(快捷方式的软连接),不保存文件,从而大大节省空间。
FastDFS详细单机版安装教程可以参考https://blog.youkuaiyun.com/weixin_39106990/article/details/103119117
本文经过详细测试,完全可用,按步骤操作即可。

FastDHT环境搭建

一、安装 Berkeley DB

FastDHT使用Berkeley DB作为数据存储来支持海量数据和libevent
作为网络IO支持巨大的连接。
1、下载安装包

wget http://download.oracle.com/berkeley-db/db-6.2.32.tar.gz

在这里插入图片描述
2、解压缩tar包
在这里插入图片描述
3、编译并安装

[root@localhost ~]# cd /usr/local/
[root@localhost local]# cd db-6.2.32/build_unix/
[root@localhost build_unix]# ../dist/configure --prefix=/usr/local/db-6.2.32
[root@localhost build_unix]# make && make install
二、安装FastDHT

1、可以去github下载最新版。官网:https://github.com/happyfish100。
在这里插入图片描述
2、解压缩zip包
如果未安装zip,可以使用安装命令yum install -y unzip zip,进行安装。

[root@localhost ~]# unzip -o fastdht-master.zip -d /usr/local/

3、编译之前需要先修改make.sh文件

[root@localhost ~]# cd /usr/local/fastdht-master/
[root@localhost fastdht-master]# vim make.sh

将CFLAGS修改为以下内容
修改CFLASS,单引号内的内容

CFLAGS='-Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -I/usr/local/db-6.2.32/include/ -L/usr/local/db-6.2.32/lib/'

4、编译并安装

[root@localhost fastdht-master]# ./make.sh && ./make.sh install

最后会在/usr/local/bin生成安装后的文件,在/etc/fdht下生成配置文件。如图所示。
在这里插入图片描述

三、环境配置

1、修改fdhtd.conf

[root@localhost fdht]# vim /etc/fdht/fdhtd.conf
修改以下内容:
port=11411 	
base_path=/data/fastfht(该目录必须是已经存在的) 
#include /etc/fdht/fdht_servers.conf(本行前有#表示打开,如果想关闭此选项,则应该为##开头)

2、创建目录

[root@localhost fdht]# mkdir -p /data/fastdht

3、修改fdht_servers.conf (用来配置fastdht集群的,dht server也是通过组进行管理的,同组备份)

[root@localhost fdht]# vim fdht_servers.conf
修改以下内容:
group_count = 1(数字可自定义)
group0 = 192.168.159.147:11411(自己的ip)

4、修改/etc/fdfs/storage.conf配置文件

[root@localhost fdht]# vim /etc/fdfs/storage.conf
修改以下内容:
line 195:  check_file_duplicate=1
(本配置项解释: 是否检测上传文件已经存在。如果已经存在,则不存在文件内容,建立一个索引链接以节省磁盘空间)
line 206:  key_namespace=FastDFS
(本配置项解释: 当上个参数设定为1时 , 在FastDHT中的命名空间)
line 210  keep_alive=1 
(本配置项解释: 长连接配置选项,如果为0则为短连接 1为长连接)
line 217:  #include /etc/fdht/fdht_servers.conf
(本配置项解释: 可以通过 #include filename 方式来加载 FastDHT servers  的配置)
(注意: #和include之间没有空格)

5、启动服务

[root@localhost fdht]# /usr/local/bin/fdhtd /etc/fdht/fdhtd.conf start
[root@localhost fdht]# /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
[root@localhost fdht]# /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

6、错误排查
如果出现以下错误
在这里插入图片描述
第一步:cp /usr/local/db-6.0.30/lib/libdb-6.0.so /usr/lib/

第二步:查看动态链接库是否全链接完毕
ldd /usr/local/bin/fdhtd
在这里插入图片描述
由图中可知缺少libdb-6.0.so
第三步:执行ldconfig命令
ldconfig
(ldconfig命令的用途, 主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下, 搜索出可共享的动态链接库(格式如lib*.so*), 进而创建出动态装入程序(ld.so)所需的连接和缓存文件. 缓存文件默认为/etc/ld.so.cache, 此文件保存已排好序的动态链接库名字列表)
第四步:再次执行ldd /usr/local/bin/fdhtd
在这里插入图片描述
由图中可知已经不缺少libdb-6.0so啦。
第五步:再次执行步骤5启动服务即可(先执行启动fdhtd命令再重启storaged和trackerd)。
7、设置开机启动

[root@localhost fdht]# vim /etc/rc.local 
加入以下配置:
fdhtd /etc/fdht/fdhtd.conf
如果开启自启不生效,可能是centOS找不到fdhtd文件。建议把全路径写上:/usr/local/bin/fdhtd /etc/fdht/fdhtd.conf。
执行命令,使之生效:
chmod +x /etc/rc.local

8、测试上传图片
在这里插入图片描述
效果如图,通过生成软连接(快捷方式)的形式,实现了文件去重。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值