FastDFS的安装配置及其使用

2023-05-16

一、fastDFS是什么
       fastDFS是c语言编写的一款开源分布式文件系统,使用fastDFS可以很方便搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
二、fastDFS工作原理
       fastDFS包括Tracker server和Storage server,客户端请求Tracker server进行文件上传和下载,Tracker server通过调度Storage server完成上传和下载。如下图所示:
在这里插入图片描述
详细解释:
(1)Tracker Server
       其作用是负载均衡和调度,通过Tracker可以在文件上传时根据一些策略找到Storage提供文件上传服务,Tracker也就是追踪/调度服务器。
(2)Storage
       其作用是文件存储,客户端上传的文件实质上都是保存在Storage服务器上,Storage也就是存储服务器。Storage会连接集群中的所有Tracker,定时向他们报告自己的磁盘剩余空间、文件同步状态、文件上传下载次数等统计信息,Tracker可以根据每组Storage的状态来进行调度。
       Storage集群采用分组存储方式,Storage集群由一个或者多个组构成,其存储总量为集群中所有组的存储容量之和。一个组由一台或多台存储器构成,同组内的Storage之间会相互连接进行文件同步,从而保证同组内的每个storage文件完全一样,不同组的storage之间不会相互通信的。一个组的存储容量为该组内存容量最小的那个。

上传文件流程
在这里插入图片描述
说明:
       客户端上传文件之后,服务器会返回文件id,该id用于之后访问该文件。内容包括:组名、虚拟磁盘路径、数据两级目录、文件名。如下所示:
在这里插入图片描述
组名:文件上传之后文件所在的storage组名称,需要客户端自行保存。

虚拟磁盘路径:与配置的store_path*对应。例如配置store_path0则对应M00,配置store_path1则对应M01…

数据两级目录:storage在每个虚拟磁盘路径下创建两级目录,用于存储数据文件。

文件名:不是上传时的文件名,而是存储服务器根据特定信息生成的,文件名包含:原存储服务器ip、文件创建时间戳、文件大小、随机数和文件拓展名等。

下载文件流程:
在这里插入图片描述
说明:
       tracker根据客户端提供的文件id来快速定义文件,通过组名定位到客户端需要访问的存储器服务器是哪个组,并选择合适的存储服务器提供给客户端访问;虚拟路径可以找到对应文件的存储路径,再根据文件的两级目录和文件名,就可以很快的找到需要下载的文件。

三、fastDFS安装与配置
1、下载地址:https://github.com/happyfish100/fastdfs/releases
选择自己所需要的版本下载,如下所示:
在这里插入图片描述2、安装libfastcommon依赖
由于要从gitbub上clone依赖libfastcommon,所以先安装git

apt install git

克隆

git clone https://github.com/happyfish100/libfastcommon.git

完成之后libfastcommon中包含如下文件:
在这里插入图片描述
进入libfastcommon文件夹执行如下命令:

./make.sh
./make.sh install

注:在32位ubuntu中,libfastcommon会安装在/usr/lib 中,64位系统则安装在 /usr/lib64 中,如下图:
在这里插入图片描述
根据系统执行如下命令:

export LD_LIBRARY_PATH=/usr/lib64/
或
export LD_LIBRARY_PATH=/usr/lib/
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
或
ln -s /usr/lib/libfastcommon.so /usr/local/lib/libfastcommon.so

3、解压并安装fastDFS

tar -zxvf fastdfs-5.11.tar.gz

进入解压目录:

cd fastdfs-5.11

执行以下:

./make.sh
./make.sh install

执行完成之后,进入"/etc/fdfs"目录下,可以看到如下配置示例文件:

在这里插入图片描述
       接下来,我们将使用storage.conf.sample,tracker.conf.sample两个进行配置。首先将文件的".sample"去掉,也就是重命名一下。

(1)修改tracker.conf 文件
注:以下凡是出现配置目录的地方,必须是存在的目录。
tracker的数据log文件目录(路径必须存在),如下:
在这里插入图片描述
服务端口设置:
在这里插入图片描述
(2)修改storage.conf文件
组名设置:
在这里插入图片描述
虚拟路径映射的路径(路径必须存在):
在这里插入图片描述
stroage的数据log文件目录(路径必须存在),如下:
在这里插入图片描述
tracker服务器ip和端口:
在这里插入图片描述
storage的服务端口:
在这里插入图片描述
4、启动tracker和storage

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf

在这里插入图片描述

5、使用java测试
FastDFS java client SDK:
https://github.com/happyfish100/fastdfs-client-java

放置在java工程resource目录下:
conf/fastdfs-client.properties

## fastdfs-client.properties

fastdfs.connect_timeout_in_seconds = 5
fastdfs.network_timeout_in_seconds = 30

fastdfs.charset = UTF-8

fastdfs.http_anti_steal_token = false
fastdfs.http_secret_key = FastDFS1234567890
fastdfs.http_tracker_http_port = 80

fastdfs.tracker_servers = ip:22122

上传:

 //要上传的文件地址
    public static String local_filename = "E:\\test.txt";
    public static void testUpload() {
        try { 
        	//加载fastDFS客户端的配置文件
            ClientGlobal.initByProperties("conf/fastdfs-client.properties");
            
            //创建tracker的客户端
            TrackerClient tracker = new TrackerClient(); 
            TrackerServer trackerServer = tracker.getConnection(); 
            StorageServer storageServer = null;
            //定义storage客户端
            StorageClient storageClient = new StorageClient(trackerServer, storageServer); 
            NameValuePair nvp [] = new NameValuePair[]{ 
                    new NameValuePair("fileName", "test.txt"), 
            }; 
            //执行上传
            String fileIds[] = storageClient.upload_file(local_filename, "txt", nvp);

            System.out.println("上传组名:" + fileIds[0]); 
            System.out.println("上传路径: " + fileIds[1]);
            trackerServer.close();
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
    }

下载:

public static void testDownload() {
        try {
        	ClientGlobal.initByProperties("conf/fastdfs-client.properties");

            TrackerClient tracker = new TrackerClient(); 
            TrackerServer trackerServer = tracker.getConnection(); 
            StorageServer storageServer = null;

            StorageClient storageClient = new StorageClient(trackerServer, storageServer); 
            byte[] b = storageClient.download_file("group1", "M00/00/00/wKgAA1zWw0eAbML5AAAAFtpUszA462.txt"); 
            String downFile = new String(b, "UTF-8");
            System.out.println(downFile);
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
    }

删除:

public static void testDelete() {
		try {
			ClientGlobal.initByProperties("conf/fastdfs-client.properties");

			TrackerClient tracker = new TrackerClient();
			TrackerServer trackerServer = tracker.getConnection();
			StorageServer storageServer = null;

			StorageClient storageClient = new StorageClient(trackerServer, storageServer);
			int i = storageClient.delete_file("group1", "M00/00/00/wKgAA1zWw0eAbML5AAAAFtpUszA462.txt");
			System.out.println(i == 0 ? "文件删除成功" : "文件删除失败:" + i);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FastDFS的安装配置及其使用 的相关文章

  • 电机,电调,电池搭配的一些关系

    电机 2212 920KV 含义 宽22mm xff0c 高12mm 在1V电压下每分钟920转 kv 值越大 转速越快 配的桨叶越小 扭力越小 kv值越小 转速越慢 配的桨叶越大 扭力越大 电流关系 电机满载电流 lt 电调输出电流 lt
  • 使用Docker安装RabbitMq

    1 搜索镜像 docker search rabbitmq management 2 拉取镜像 docker pull macintoshplus rabbitmq management 3 启动rabbitmq docker run d
  • git如何回滚到历史某个版本

    场景 xff1a 比如某员工误操作提交到了公司比较重要的develop分支 xff0c 如何恢复到之前的某一个版本呢 xff0c git如何回滚到历史某个版本 方法一 xff1a idea里面git操作版本 1 2 选中某一个版本 xff0
  • 使用Idea中Docker插件部署Springboot应用并远程Debug

    目前在java开发中 xff0c 由于一套完整的项目所涉及到的微服务模块很多 xff0c 要是按照传统的方式一个一个部署比较麻烦 xff0c 所以很多情况下我们都会使用docker镜像的方式进行部署 当我们的应用部署好之后 xff0c 若运
  • ClickHouse安装(单机版)

    官方说明文档 yum span class token function install span span class token parameter variable y span yum utils yum config manage
  • docker推送镜像至阿里私有镜像仓库

    docker推送镜像至阿里私有镜像仓库 一 注册阿里私有镜像仓库二 将公共镜像推送至私有镜像仓库1 首先拉取到mysql镜像2 登录阿里云Docker Registry xff08 这里的信息要更换成自己的 xff09 3 将mysql镜像
  • Docker安装Jenkins

    查找jenkins镜像 span class token function docker span search jenkins 拉取jenkins镜像 span class token function docker span pull
  • HDFS通过WEB UI操作文件

    HDFS通过WEB UI操作文件 1 创建目录2 向指定目录上传文件3 返回上层目录4 移动文件5 删除文件6 修改文件权限 所有者 xff0c 组等信息7 搜索文件8 查看文件 进入Browse the file system 1 创建目
  • Jenkins创建多分支流水线

    Jenkins创建多分支流水线 一 准备工作二 安装插件1 安装Docker和Docker Pipeline2 安装Blue Ocean3 安装Publish Over SSH 三 创建多分支流水线四 配置以及脚本四 构建项目 在我们的实际
  • Jenkins利用docker部署vue项目

    Jenkins利用docker部署vue项目 一 环境准备1 安装docker2 安装nodejs3 安装cnpm与配置淘宝镜像4 jenkins安装nodejs插件 二 jenkins以vue项目1 全局参数配置2 源码配置3 构建环境4
  • Jenkins利用阿里镜像仓库部署springboot应用

    Jenkins利用阿里镜像仓库部署springboot应用 一 本次目标二 环境准备三 jenkins创建项目1 添加全局配置参数 xff0c 这里我配置了版本号信息2 源码配置3 maven打包 amp docker镜像包生成4 远程机器
  • 网页设计与制作(HTML+CSS)(一)

    初识html 名词解释 xff1a Internet xff1a 即因特网 www World Wide Web xff1a 即万维网 URL Uniform Reource Locator xff1a 统一资源定位符 DNS Domain
  • 局域网中连接mysql数据库

    解决局域网中无法连接mysql数据库问题 在局域网中如果多人协作开发 xff0c 肯定会连接同一数据库 mysql 服务 xff0c 可是在连接时总是遇到问题 现提供解决方案如下 xff1a 只需要修改mysql配置文件 xff1a 在li
  • GPS在ROS中的测试和使用

    原链接 通过GPS机器人可以获取定位信息 ROS中也提供了GPS的相关驱动包 xff0c 可以方便的使用GPS的定位信息 下面以蓝鲸GPS模块为例演示如何在ROS中使用GPS传感器 其他的可以通过串口指令发布nmea语句的GPS模块都是通用
  • spring security oauth2 sso退出

    一 客户端退出调用认证中心 logout服务 这种方式是客户端先退出 xff0c 然后再退出认证中心 方法1 xff1a 集成WebSecurityConfigurerAdapter xff0c 重写方法如下 xff08 推荐这种方式 xf
  • 【智能家居】Home Assistant入门安装并内网穿透实现远程安全控制

    文章目录 前言1 安装Home Assistant2 配置Home Assistant3 安装cpolar内网穿透3 1 windows系统3 2 Linux系统3 3 macOS系统 4 映射Home Assistant端口5 公网访问H
  • Windows搭建Maven环境并在Eclipse中进行配置

    Maven环境 下载maven并配置 http maven apache org download cgi 下载完成如下 xff1a 接下来开始配置maven环境 xff1a 计算机 gt 右键 属性 gt 高级系统设置 gt 环境变量 g
  • 初见Ubuntu

    Ubuntu入门与常用娱乐软件安装 设置语言环境设置服务器镜像源安装搜狗输入法安装网易云音乐 一 设置语言环境 在系统右上角找到小齿轮图标 xff0c 点击选择 System Settings 选项 在打开的设置界面点击 Language
  • Ubuntu终端命令详述

    一 基本终端命令 1 调整终端窗口的字体大小 34 ctrl 43 shift 43 61 34 放大终端窗口的字体 34 ctrl 43 34 缩小终端窗口的字体 2 Linux命令的基本使用 序号命令对应英文作用01lslist查看当前
  • Ubuntu安装并连接Mysql

    安装配置MySql sudo apt install mysql server XX 提示 xff1a 当输入mysql时便可连续按 tab 键两次便可得到提示信息 xff0c 根据信息选择安装 安装过程中会提示输入mysql服务密码 xf

随机推荐

  • vi的使用与基本命令

    vi的使用 一 初识vi 1 什么是vi vi xff0c 即终端中一款编辑器 2 vi的应用场景 当我们要通过远程连接到服务器时 xff0c 此时没有图形界面 xff0c 当我们要对服务器上的文件进行编辑时 xff0c 便可以使用vi进行
  • Ubuntu下安装并配置Redmine

    Redmine安装与使用 Redmine是什么 xff1f Redmine是用Ruby开发的基于web的项目管理软件 xff0c 是用ROR框架开发的一套跨平台项目管理系统 xff0c 支持多种数据库 xff0c 多项独特功能 这种 Web
  • Ubuntu下安装ReviewBoard

    ReviewBoard安装与使用 ReviewBoard是什么 xff1f ReviewBoard是个开源的 可扩展的 友好的基于Web的代码评审工具 xff0c 是用Python框架Django开发的 ReviewBoard是通过Pyth
  • Ubuntu安装redis,Docker下安装redis以及redis基本配置说明

    一 什么是redis redis是一个key value存储系统 和Memcached类似 xff0c 它支持的数据类型相对更多 xff0c 包括string 字符串 list 链表 set 集合 zset sorted set 有序集合
  • Ubuntu安装memcache

    一 什么是memcache memcache是一个高性能的分布式的内存对象缓存系统 xff0c 通过在内存里维护一个统一的巨大的hash表 xff0c 它能够用来存储各种格式的数据 xff0c 包括图像 视频 文件以及数据库检索的结果等 简
  • Ubuntu安装Apache+Svn+Submin

    安装之前建议先更新 sudo apt update sudo apt upgrade 一 安装配置Apache 1 安装apache sudo apt install apache2 2 开启apache2模块 a2enmod rewrit
  • ROS坐标系统,常见的坐标系和其含义

    原链接 运行测试平台 小强ROS机器人 常见的坐标系 在使用ROS进行定位导航等操作时 xff0c 我们经常会遇到各种坐标系 每种坐标系都有明确的含义 理论上坐标系的名称可以是随意的 xff0c 但是为了方便不同的软件间共享坐标信息 xff
  • ReviewBoard+SVN配置强制code review

    本文需要在svn与reviewboard安装成功之后开始进行配置 xff0c 详情参考如下两篇文章根据实际情况操作 xff1a Ubuntu安装Apache 43 Svn 43 Submin https blog csdn net qq 2
  • Ubuntu安装配置Maven私服Nexus

    1 简介 Maven是什么 xff1f Maven是一个采用纯Java编写的开源项目管理工具 Maven采用了一种被称之为Project Object Model POM 的概念来管理项目 xff0c 所有的项目配置信息都被定义在一个叫做P
  • Ubuntu安装配置Docker

    一 Docker简介 Docker 是一个开源的应用容器引擎 xff0c 可以轻松的为任何应用创建一个轻量级的 可移植的 自给自足的容器 xff0c 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中 xff0c 然后发布到任何流行的
  • Ubuntu安装ftp实现文件上传

    ftp服务安装与配置 sudo apt install vsftpd 外链图片转存失败 源站可能有防盗链机制 建议将图片保存下来直接上传 img UlscHRVo 1598855886357 https img blog csdn net
  • Docker安装Tomcat镜像并部署web项目简述

    一 安装Tomcat 1 查找Docker Hub上的tomcat镜像 docker search tomcat 2 拉取官方的镜像 docker pull tomcat 等待下载完毕 xff0c 需要一些时间 3 查看docker所有的镜
  • Docker删除镜像和容器

    删除docker中的镜像 xff0c 我们可以使用如下命令 xff1a docker rmi 镜像id 删除docker中的容器可以使用如下命令 xff1a docker rm 容器id 使用如下命令可以查看当前正在运行的容器 docker
  • ubuntu安装SonarQube实现代码质量检测

    一 ubuntu中安装jdk 下载并安装jdk 详细过程可参考 xff1a https blog csdn net qq 26709459 article details 80466239 二 ubuntu中安装mysql 详细过程可参考
  • springboot整合quartz(集群环境)

    使用quartz实现定时任务 xff0c 若是部署多台机器 xff0c 那么到了时间点 xff0c 多台服务器便会同时均开始执行定时任务 xff0c 这不符合我们的功能实现 quartz集群分为水平集群和垂直集群 xff0c 水平集群即将定
  • tomcat集群环境下实现负载均衡、session共享

    一 高可用 高可用HA High Availability 是分布式系统稳定运行必须考虑的因素之一 xff0c 它指的是通过处理减少系统不能提供服务的时间 比如说系统能够一直正常提供服务 xff0c 我们就说这个系统可用性为100 我们知道
  • 搭建RocketMq

    安装所需要的所有安装包 自己可以搜索源码自己打包 xff0c 也可以自己百度下载 xff0c 下面的是我的相关软件包 xff0c 有需要可以自己下载 xff1a https download csdn net download qq 267
  • ros launch中的节点工作空间路径

    原链接 运行测试平台 小强ROS机器人 在launch文件中启动节点 xff0c 那么这个节点的工作目录是什么呢 xff1f 在node程序中如果创建一个文件 xff0c 这个文件的默认位置在哪里 xff1f 在launch中node节点有
  • 搭建Git服务器并安装管理工具Gitblit

    一 安装Git服务 1 移除旧版git yum remove git 2 下载git 在如下链接中可以看到git所有版本 xff0c 选择自己需要的版本进行下载 xff0c 这里我选择最新版本 https github com git gi
  • FastDFS的安装配置及其使用

    一 fastDFS是什么 fastDFS是c语言编写的一款开源分布式文件系统 xff0c 使用fastDFS可以很方便搭建一套高性能的文件服务器集群提供文件上传 下载等服务 二 fastDFS工作原理 fastDFS包括Tracker se