分布式存储-fastdfs+glusterfs- 学习笔记

分布式文件系统FastDFS 概述 FastDFS是一个开源的轻量级分布式文件系统,是我国一款开源的分布式文件系统 由阿里巴巴开发,其真题架构由跟踪服务器(tracker server)、存储服务器(storage server)和客户端(client)三个部分组成,主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。 特点: 1>Fast...... 阅读详情

一. 存储概念


1.块存储的多种实现:

块存储: 就好比硬盘一样, 直接挂在到主机,一般用于主机的直接存储空间和数据库应用的存储

1.磁盘+LVS: 单机硬盘纯存储
2.DAS(DELL MD系列): 直连式存储
3.SAN 存储: 通过FC连接

2.文件存储的多种实现:

文件存储:与较底层的块存储不同, 上升到了应用层, 一般指的就是 NAS ,一套网络储存设备,。

1.NAS(nfs): 通过TCP/IP连接,延长较大,性能有限,单点故障

3.对象存储的解释:

对象存储:具备块存储的高速以及文件存储的共享等特性, 较为智能, 有自己的CPU, 内存, 网络和磁盘, 比块存储和文件存储更上层, 云服务商一般提供用户文件上传下载读取的Rest API, 方便应用集成此类服务。

二. Glusterfs相关


参考资料:http://gluster.readthedocs.io/en/latest/Quick-Start-Guide/Quickstart/

1.glusterfs优点:

适合存储比较大的文件,比如openstack的镜像或者视频,存储小文件性能堪忧。

2.安装glusterfs:

安装环境: 172.16.1.211 , 172.16.1.213

在两台机器分别安装,注意命令顺。

# yum install centos-release-gluster
# yum install glusterfs-server
# /etc/init.d/glusterd start

3.建立信任关系:

只要在一台上面建立

[root@SH_T_ansiblecli_01 ~]# gluster peer probe 172.16.1.213   #后面更另外一台的IP
[root@SH_T_ansiblecli_01 ~]# gluster peer status

4.创建名称为“test-volume ”的分布式卷:

这里写图片描述

172.16.1.211上创建目录

# mkdir /data/exp1 -p

172.16.1.213上创建目录

# mkdir /data/exp2 -p

随意机器输入:

# gluster volume create test-volume 172.16.1.211:/data/exp1 172.16.1.213:/data/exp2
ps:一般会提示目录不是在独立硬盘上,无法创建,后面加上force就可以了
# gluster volume create test-volume 172.16.1.211:/data/exp1 172.16.1.213:/data/exp2 force

# gluster volume info   查看逻辑卷信息
# gluster volume start test-volume  #启动逻辑卷

5.创建名称为“rd1-volume ”的复制卷:

这里写图片描述
172.16.1.211上创建目录

# mkdir /data/rd1-exp3 -p

172.16.1.213上创建目录

# mkdir /data/rd1-exp4 -p

随意机器输入:

# gluster volume create rd1-volume replica 2 transport tcp 172.16.1.211:/data/rd1-exp3 172.16.1.213:/data/rd1-exp4 force
 cp-volume: 卷名称
 replica 2: 复制卷,复制2份,不加参数默认是分布式卷。
 transport tcp: 通过tcp传输

# gluster volume info cp-volume  #查看逻辑卷信息
# gluster volume start cp-volume  #启动逻辑卷

6.创建名称为“rd0-volume ”的条带卷:

这里写图片描述
172.16.1.211上创建目录

# mkdir /data/rd0-exp1 -p

172.16.1.213上创建目录

# mkdir /data/rd0-exp2 -p

随意机器输入:

# gluster volume create rd0-volume stripe 2 transport tcp 172.16.1.211:/data/rd0-exp1 172.16.1.213:/data/rd0-exp2 force
 rd0-volume: 卷名称
 stripe 2: 条带卷,服务器2台,不加参数默认是分布式卷。
 transport tcp: 通过tcp传输

# gluster volume info rd0-volume  #查看逻辑卷信息
# gluster volume start rd0-volume  #启动逻辑卷

7.生产推荐使用,分布式复制卷:

这里写图片描述
需要4台服务器:server1,server2,server3,server4

# gluster volume create test1-volume replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
ps: 与创建复制卷命令相同,但复制2份后面跟4台服务器

8.挂载glusterfs的逻辑卷:

# yum install glusterfs-client     #安装gluster客户端
# mkdir /mnt/g1 /mnt/g2 /mnt/g3     #创建3个挂载点
# mount.glusterfs 172.16.1.211:/test-volume /mnt/g1   #挂载分布式卷到g1目录
# mount.glusterfs 172.16.1.211:/rd1-volume /mnt/g2
# mount.glusterfs 172.16.1.211:/rd0-volume /mnt/g3

9.设置磁盘配额:

# gluster volume quota test-volume enable    #为test-volume卷启动配额
# gluster volume quota test-volume limit-usage /data 10GB  #设置data目录为10g的配额
# gluster volume quota test-volume list     #查看test-volume卷配额情况

10.对逻辑卷进行扩展:

# mkdir /data/exp9   #模拟创建一个新磁盘
# gluster volume add-brick test-volume 172.16.1.211:/data/exp9 force    
   #将新创建的"/data/exp9"磁盘加入"test-volume"的逻辑卷中
# gluster volume rebalance test-volume start    #重新均衡逻辑卷内容,不运行此命令新加入的磁盘就不会写入内容

# gluster volume info test-volume  #查看是否加入
# gluster volume status test-volume  #查看磁盘状态

11.对逻辑卷进行收缩:

这个操作要小心,可能会丢失数据

# gluster volume remove-brick test-volume 172.16.1.211:/data/exp9 force 
   #将“/data/exp9”磁盘从“test-volume”逻辑卷中删除

三. FastDFS相关


1.fastdfs的特性:

1.纯C实现
2.只能通过专有的API访问
3.高性能,高扩展
4.一般用在大于4K小于500M的文件存储

2、FastDFS的上传过程

FastDFS向使用者提供基本文件访问接口,比如upload、download、append、delete等,以客户端库的方式提供给用户使用。

这里写图片描述
根据前边的讲解,我们知道Storage Server会定期的向Tracker Server发送自己的存储信息。当Tracker Server Cluster中的Tracker Server不止一个时,各个Tracker之间的关系是对等的,所以客户端上传时可以选择任意一个Tracker。

当Tracker收到客户端上传文件的请求时,会为该文件分配一个可以存储文件的group,当选定了group后就要决定给客户端分配group中的哪一个storage server。当分配好storage server后,客户端向storage发送写文件请求,storage将会为文件分配一个数据存储目录。然后为文件分配一个fileid,最后根据以上的信息生成文件名存储文件。文件名的格式如下:
这里写图片描述

3.FastDFS的安装部署:

官网:https://github.com/happyfish100
部署2台服务器: 172.16.1.211 172.16.1.213

1.先安装lib包
# git clone https://github.com/happyfish100/libfastcommon.git #下载lib包
# cd libfastcommon/
# ./make.sh
# ./make.sh install    #要先安装gcc,make等

2.安装fastdfs:
# git clone https://github.com/happyfish100/fastdfs.git
# cd fastdfs
# ./make.sh
# ./make.sh install

3.创建文件存放目录:
# mkdir -p /data/fdfs_storaged
# mkdir -p /data/fdfs_trackerd

4.修改配置文件:

两台服务器都要做下面的操作

# cd /etc/fdfs/
# cp storage.conf.sample storage.conf
# cp tracker.conf.sample tracker.conf
# vim tracker.conf #追踪服务器配置

base_path=/data/fdfs_trackerd    

# vim storage.conf

base_path=/data/fdfs_storaged/base
store_path0=/data/fdfs_storaged/store

tracker_server=172.16.1.211:22122    #指定追踪服务器IP,我们有两台就配置两个
tracker_server=172.16.1.213:22122

# mkdir /data/fdfs_storaged/base
# mkdir /data/fdfs_storaged/store

5.启动fastdfs服务:

# /etc/init.d/fdfs_trackerd start
# /etc/init.d/fdfs_storaged start

6.配置fastdfs客户端:

# cd /etc/fdfs/
# cp client.conf.sample client.conf
# mkdir /data/fdfs_storaged/tmp
# vim client.conf

base_path=/data/fdfs_storaged/tmp    #存放日志目录

tracker_server=172.16.1.211:22122
tracker_server=172.16.1.213:22122

7.通过客户端连接并上传文件:

上传"/etc/passwd"文件到fastdfs服务器:
# fdfs_upload_file /etc/fdfs/client.conf /etc/passwd   

下载刚才上传的文件:
# fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/rBAB01mCyc-AJ9pnAAAFfnXniCQ5694871

查看文件属性:
# fdfs_file_info /etc/fdfs/client.conf group1/M00/00/00/rBAB01mCyc-AJ9pnAAAFfnXniCQ5694871

删除上传的文件:
# fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/rBAB1VmCz8qABQC4AAAABncc3SA670.txt

监控fastdfs的状态:
# fdfs_monitor /etc/fdfs/client.conf

8.通过nginx访问fastdfs:

# tar -zxvf nginx-1.10.2.tar.gz
# cd nginx-1.10.2

下载fastdfs的nginx模块,编译安装的时候加进去
# git clone https://github.com/happyfish100/fastdfs-nginx-module.git
# ./configure --prefix=/usr/local/nginx-fastdfs --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --add-module=./fastdfs-nginx-module/src/
# make && make install

拷贝配置文件到fasstdfs配置里面
# cp fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
# cd /root/fastdfs/conf/     #进入fastdfs安装包文件夹
# cp anti-steal.jpg http.conf mime.types /etc/fdfs/

# cd /usr/local/nginx-fastdfs/
# vim conf/nginx.conf 配置文件server中添加

         location /group1/M00 {
            root /data/fdfs_storaged/store;
            ngx_fastdfs_module;
        }

# vim /etc/fdfs/mod_fastdfs.conf #修改客户端配置文件

tracker_server=172.16.1.211:22122
tracker_server=172.16.1.213:22122


url_have_group_name = true      #url是否包含group信息
store_path0=/data/fdfs_storaged/store

启动nginx后就可以通过url访问了:
# curl 172.16.1.211/group1/M00/00/00/rBAB01mC7OqAKx6RAAAFfnXniCQ1855579

ps:生产环境可以用nginx反向代理访问,在group的每个节点上都装个nginx-fastdfs

MinIO Ceph GlusterFS FastDFS横向对比:存储选型避坑指南 数据存储是现代IT架构的基石,从传统的块存储、文件存储到云原生的对象存储,每种类型都有其特定的适用场景与性能取舍。分布式存储系统通过数据分片、副本与纠删码等机制保障高可用与扩展性,但在实际选型时,团队往往面临MinIO、Ceph、GlusterFS、FastDFS等众多开源方案的抉择。理解不同存储系统的底层原理、一致性模型与运维成本,能够帮助架构师根据数据特征和业务访问模式做出合理决策。从存储基础概念出发,深入对比主流分布式存储系统的架构设计,结合真实压测经验与故障排查案例,为技术选型提供一份实践参考。 阅读详情

相关推荐

五大分布式文件系统对比:HDFS、Ceph、GlusterFS、FastDFS、MinIO选型指南

单机存储容量和带宽有限,难以支撑PB级数据。分布式文件系统将多台服务器磁盘聚合为统一存储池,通过元数据管理实现容量与吞吐的线性扩展。在实际工程中,选型需综合考量一致性模型、扩展模式、高可用设计、接口方式等维度。HDFS以集中式元数据和强一致著称,是大数据离线分析的默认底座;MinIO以S3兼容和云原生轻量部署成为容器原生场景的热门选择;Ceph、GlusterFS、FastDFS则分别在块存储、文件共享、海量小文件领域各有所长。正确理解这些系统的原理与适用场景,能有效避免小文件放大、元数据瓶颈、性能抖动等典

weixin_29038303的博客 300

【云存储】主流分布式文件系统介绍

本文概要性介绍几大主流分布式文件系统,给大家提供一定的参考。

dvlinker的技术专栏 2万+

【linux】分布式存储glusterfs,fastdfs,mfs,ceph介绍及知识、场景说明,分布式存储项目搭建

它具有高可用性、高性能和低成本。它通过将文件分散存储在多个存储节点上,并提供高可用性、高性能和负载均衡的特性,适用于大规模文件存储和分发的场景。分布式存储是一种将数据存储在多个节点上的存储系统,通过在节点之间分散数据和负载,提高数据的可靠性、性能和可扩展性。大规模数据存储:当需要存储大量数据时,分布式存储系统可以提供可扩展性和高容量存储,让数据分布在多个节点上,避免单点故障和容量限制。高性能访问:分布式存储系统可以通过在多个节点上分散数据和负载,提供并行访问和更快的数据传输速度,从而实现高性能的数据访问。

走向CTO的路上... 641

fastdfs 一种开源分布式共享存储的生产使用实战

背景文件存储是信息系统的基本资源,随着分布式应用的增多,共享存储的需求也日益加大,但是动则上NAS盘感觉成本有点偏高(NAS的使用参考前文),所以一方面降低现有存储的使用成本,另一方面为小...

jiangzhuwanshi2008的博客 804

文件系统:NFS,FastDFS,GlusterFS文件系统简介及比较

普通存储方案:Rsync、DAS(IDE/SATA/SAS/SCSI等块)、NAS(NFS、CIFS、SAMBA等文件系统)、SAN(FibreChannel, iSCSI, FoE存储网络块),Openfiler、FreeNas(ZFS快照复制)由于生产环境中往往由于对存储数据量很大,而SAN存储价格又比较昂贵,因此大多会选择分布式海量数据存储问题数据高可用问题(冗余备份)问题较高的读写性能和负载均衡问题支持多平台多语言问题高并发问题。

GIS摆渡人 1396

分布式存储选型:先分文件块对象,再看元数据与扩容

文件、块与对象存储的本质差异,不在接口,而在数据由谁消费、按什么访问模式读写;元数据如何组织,则决定集群扩展上限与运维复杂度。块存储按字节寻址,适合数据库与虚拟机磁盘;文件存储提供目录树和POSIX共享,适合团队文档与代码仓库;对象存储以key整体读写,适合图片、视频、日志和容器镜像。分布式存储选型若只看IOPS,容易忽略小文件元数据内存、扩容再均衡、一致性边界和副本高可用等工程约束。围绕GFS、HDFS、MinIO、Ceph、MooseFS、FastDFS、Ozone、JuiceFS等系统,按形态匹配、元

weixin_34236869的博客 414

FastDFS 分布式文件系统安装与集成最后并与SpringBoot 集成文件上传与下载

FastDFS 分布式文件系统安装与集成 什么是分布式文件系统 分布式文件系统(Distributed File System) 是指文件系统管理的物理储存资源不一定直接连接本地节点上,而是通过计算机网络与节点相连。 分布式文件系统的出现缘由 计算机用文件系统来进行储存和管理数据,而在如今信息爆炸的时代,数据以指数倍的增长,只靠单纯的增加硬盘数量来扩展计算机的文件系统的储存容量无论是在容量大小,容...

weixin_46001623的博客 1506

分布式存储选型指南:十余款系统架构与避坑全解析

分布式文件系统是现代数据基础设施的基石,从早期 GFS 的中心化 Master 设计,到 HDFS 的开源继承与改进,再到 Swift、MinIO 等对象存储的崛起,架构演进始终围绕元数据管理、扩展性与容错能力展开。元数据是理解存储系统的关键:中心化架构元数据集中,便于管理却易成瓶颈;无中心化架构如 GlusterFS 依赖一致性哈希,简洁但受限;对象存储则以 S3 协议统一接口,适合海量非结构化数据。在实际选型中,需结合文件大小、访问模式和运维能力,权衡 HDFS 的批处理优势、MinIO 的纠删码效率、

weixin_32430941的博客 204

分布式存储对比

Ceph ——分布式存储 常见开源分布式存储系统 系统整体对比 开源协议说明 GPL:不允许修改后和衍生的代码做为闭源的商业软件发布和销售,修改后该软件产品必须也采用GPL协议; GPLV2:修改文本的整体就必须按照GPL流通,不仅该修改文本的源码必须向社 会公开,而且对于这种修改文本的流通不准许附加修改者自己作出的限制; GPLV3:要求用户公布修改的源代码,还要求公布相关硬件;LGPL:更宽...

毛利侦探事务所 599

GlusterFS-Lustre-MooseFS实践总结

这篇文章主要是自己在GlusterFS-Lustre-MooseFS系统实践过程中发现的一些问题以及操作的汇总。总结出对这个分布式系统的个人理解。 希望大家支持

三部对接 sora-2:OpenAI 最新视频模型快速接入指南

本文介绍OpenAI最新视频生成模型Sora-2的接入方案,重点解析其Chat格式调用功能。开发者可通过在提示词中嵌入"横屏/竖屏""时长""清晰度"等要求快速生成视频。文章分三部分:1)基础准备(环境配置与API密钥获取);2)核心调用(提供Python/Java示例代码);3)结果查询与优化建议。Sora-2支持多语言调用,简化了视频生成流程,适用于短视频、广告创意等场景。

2501_93565190的博客 3426

fastdfs删除图片_FastDFS 详解-1

分布式存储选型 这里主要说下按需求选取和使用在这之前使用过glusterfs 分布式存储,使用过程中部署比较简单,也容易上手.但是存在如下几个问题:使用glusterfs 主要走的是网络带宽,内网使用率问题.客户端挂载存在单点问题.我曾经尝试过使用内网搭建一套DNS服务器,做负载均衡使用.解决单点问题.但是由于使用的服务器厂商, 无法自己单间一套DNS轮训的机制.如果想要深入了解,请移...

weixin_33978451的博客 2245

VIVADO网表文件DCP和EDF

为了便于模块化设计,同时保护自己的知识产权,Xilinx VIVADO 提供两种代码封装方法:DCP文件和edf文件。

u014035968的博客 1万+

分布式存储比较

目前比较热门的分布式文件系统有如下几种: Ceph,GlusterFS,Sheepdog,Lustre,Swift,Cinder,TFS,HDFS,MooseFS,FastDFS,MogileFS等

weixin_44631767的博客 618

深入解析MSPM0系列Keil开发中‘ti_msp_dl_config.h‘缺失问题的根源与修复

本文深入解析TI MSPM0系列Keil开发中'ti_msp_dl_config.h'文件缺失问题的根源与修复方法。该错误常见于编译时提示file not found,主要因SysConfig工具未正确生成或工程路径配置错误导致。文章提供了从环境检查、手动生成文件到工程配置调整的系统化解决方案,帮助开发者快速解决这一常见KEIL开发难题。

gold的博客 970

3D医学影像分割实战:从数据预处理到模型训练全流程解析

本文详细解析了3D医学影像分割的全流程,从数据预处理到模型训练,重点介绍了nnUNet框架的应用技巧。通过实战案例,帮助开发者掌握如何处理复杂的.nii.gz文件格式、优化数据预处理流程以及高效训练3D分割模型,特别适合医学影像分析领域的从业者参考。

weixin_29098367的博客 222

常见开源分布式存储系统

系统整体对比 对比说明 /文件系统 TFS FastDFS MogileFS MooseFS GlusterFS Ceph 开发语言 C++ C Perl C C C++ 开源协议

一休求索 2410

android 14.0 去掉usb授权提示框 默认给予权限

在14.0的系统rom产品开发中,在进行iot关于插入usb设备的开发过程中,在插入usb设备时会弹出usb授权提示框,也带来一些不便, 这个需要默认授予USB权限,插拔usb都不弹出usb弹窗所以这要从usb授权相关管理页默认给与usb权限,接下来分析下 相关的实现功能流程

安卓兼职framework和app工程师的博客 2263

分布式存储文件系统

分布式文件系统设计主要关注几个方面: 设计特点、分布式能力、性能、容灾、维护和扩展、成本 分布式文件系统主要关键技术: 全局名字空间、缓存一致性、安全性、可用性、可扩展性 其他关键技术: 文件系统的快照和备份技术、热点文件处理技术、元数据集群的负载平衡技术、分布式文件系统的日志技术 分布式文件系统: Ceph,GlusterFS,Sheepdog,Lustre,Swift,Cinder,TF...

weixin_44949973的博客 824

ue 打包linux程序 在windows系统 2026

ue 打包linux程序 在windows系统 2026

jacke121的专栏 372

FastAPI 高级特性:同异步路由函数、依赖注入与后台任务

在现代 Web 开发中,高效的性能和简洁的代码结构是至关重要的。FastAPI 作为一个现代、快速(高性能)的 Web 框架,凭借其对异步编程的原生支持和直观的依赖注入系统,迅速成为开发者的热门选择。在本文中,将深入探讨 `FastAPI` 中的几个核心概念:同异步函数的区别、`Depends` 依赖以及后台任务。

qq_43629857的博客 203

常见的开源分布式存储系统

系统整体对比 开源协议说明 GPL:不允许修改后和衍生的代码做为闭源的商业软件发布和销售,修改后该软件产品必须也采用GPL协议; GPLV2:修改文本的整体就必须按照GPL流通,不仅该修改文本的源码必须向社 会公开,而且对于这种修改文本的流通不准许附加修改者自己作出的限制; GPLV3:要求用户公布修改的源代码,还要求公布相关硬件;LGPL:更宽松的GPL TFS TFS(Taobao File...

weixin_43187141的博客 2055

等保测评-瀚高数据库

一般适用于等保测评

m0_54146694的博客 1634

分布式文件存储系统技术文章集合

1、GlusterFS相关文章 GlusterFS官网 GlusterFS 技术专家 | 刘爱贵 GlusterFS小文件应用调优 GlusterFS对象存储服务   2、FastDFS相关文章 源码地址 分布式文件系统FastDFS设计原理  分布式文件系统FastDFS详解   3、Ceph相关文章 Ceph官网 Ceph Monitor实现 分布式存储中的数据分布...

jiangxianzeng的专栏 721

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: 分布式缓存Redis+codis集群 - 学习笔记
下一篇: 数据存储- tmpfs+LevelDB+SSDB - 学习笔记
无影V随风
博客等级 码龄16年 81粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值