首页 > 其他分享 >FastDFS系统支持文件迁移吗?

FastDFS系统支持文件迁移吗?

时间:2024-05-14 20:20:32浏览次数:17  
标签:文件 系统 FastDFS jpg 访问 迁移 fdfs

大家知道,FastDFS架构是下图这样子。

  

大家可否知道,将一个fdfs系统里存储的文件迁移到另一个fdfs系统里,这个文件在新的fdfs系统能通过client正常访问吗?

先说答案:fastdfs系统支持文件迁移。亲测为证!

这一个技术点很重要,对于我们即将要做的工作来说。

就是说,将一个fdfs存储服务器的文件迁移到另一个fdfs存储服务器里,那么,这个文件在新的fdfs系统上是可以正常访问的。

 

 

我们的系统当前存在一个问题:既有一个单节点的fdfs系统,又有一个fdfs集群系统。我们的应用呢,有些用单节点fdfs,有些用集群fdfs。

我们有必要统一所用应用服务使用一套fdfs———使用集群模式的fdfs。

经分析,单点fdfs系统里存储了2.2T的文件,集群fdfs系统存储了2.3T的文件。

 

如何落地呢?

我们几个开发人员一致以为fdfs系统不支持文件迁移。于是乎,就合计着编写批处理程序,实现文件的迁移。

困难在于,迁移T级别的文件,涉及到的文件很多,涉及到用户表、签约表、协议表等等,许多数据表里的图片。这是一个费力费时的工作。

为了寻找”救命稻草“,我们又找运维世伟哥确认,fdfs系统到底支不支持文件迁移。

 

世伟哥也深以为然,fdfs系统不支持文件迁移。并进行现场验证。世伟哥cd到 fdfs storage-server的一个叶子节点目录,将其中的一个jpg文件,mv后得到一个新的文件,命名为“test.jpg”。

然后,拼接文件名url,在web浏览器里, 先访问被copy的原jpg,可以正常显示图片;再访问 test.jpg,发现的确访问不了。—————至此,我们的结论是:不通过track server,直接在storage server里创建的文件,在client通过track server进行访问时无法正常访问。

 

尽管如此,我们几个程序员有些不死心。接下来,我们把这个事情作为研究目标——>研究fdfs框架及技术,看fdfs能否支持文件迁移。

 

通过快速浏览网页资料,重新复习了一遍fdfs结构及技术后,我百度搜索“fastdfs 直接在storage创建文件,为什么访问不到”,我判断可能原因是 文件访问权限不足 。经世伟哥查证,刚才新创建的 test.jpg 具有root用户权限。看来,不是文件权限的原因。我再看web浏览器里那个url的访问情况,定睛细看,发现了端倪——网页上的白纸黑字是400-Bad request。————直到看到这个400,我才恍悟。http的4XX是客户端错误所致,而这里是400却不是404,显然,我们不能下结论说“fdfs不支持文件迁移”。

然后,依据fdfs上传文件的原理,fdfs的storageServer需要生成特定规则的 file_Id(如https://test-file.mycompany.com/group1/M00/04/05/wKgoVGXusS-ABZ75AAAmn1EDAtA498.xls 中的 wKgoVGXusS-ABZ75AAAmn1EDAtA498),我和世伟哥把 test.jpg 重命名为 符合file规则的名字,例如“wKgoVGXusS-ABZ75AAAmn1EDAtA123.jpg , 果不其然,奇迹出现了, 浏览器里 可以正常访问这个图片了。

 

不放弃,就有惊喜!

验证的过程虽有些小坎坷,但的的确确刷新了我们的知识领域。

 

【附】fdfs文件上传原理 

 

【附】fdfs文件下载原理

 

 

【附】400 与 404 不同。httpstatus 400 是什么意思? 

 

 

【附】本文摘自公司内部WIKI。

标签:文件,系统,FastDFS,jpg,访问,迁移,fdfs
From: https://www.cnblogs.com/buguge/p/18192175

相关文章

  • Pytest配置文件pytest.ini
    pytest.ini配置pytest.ini是什么pytest.ini是pytest的配置文件可以修改pytest的默认行为不能使用任何中文符号,包括汉字、空格、引号、冒号等等pytest.ini修改用例的命名规则配置日志格式,比代码配置更方便添加标签,防止运行过程报警告错误指定执行目录排除搜索......
  • pandas读取CSV文件时出现警告:DtypeWarning: Columns (2) have mixed types. Specify d
    问题描述:用pandas清洗数据时发现爆出告警,且清洗出来的数据大小格式不对DtypeWarning:Columns(2)havemixedtypes.Specifydtypeoptiononimportorsetlow_memory=False意思是第二列出现类型混乱,原因如下pandas读取csv文件默认是按块读取的,即不一次性全部读取;另外pand......
  • 打包python为 exe 可执行文件
    这里使用 pyinstaller 进行打包有多种方式打包为exe, 如 pyinstaller  cx_Freeze  py2exe   py2app   Nuitka   Nuitka+pyinstaller一、首先安装pyinstaller下载地址:http://download.csdn.net/detail/zj910092147/7827835传统......
  • Angular 结合primeNG 批量上传文件
    1:angular使用primeNG批量上传文件的操作(分两步,先上传文件到minio文件服务器,在写入到业务数据)2:前端htmlcode<div><p-fileUploadmode="basic"name="files"url="{{flieUploadFiles}}"accept="image/*"(onUpload)="onfilesupl......
  • TypeScript 的声明文件 xxx.d.ts
    在TypeScript中,declare 关键字用于创建类型声明,它告诉编译器某些变量已经存在,但是在编译时不会进行实际的生成代码操作。它通常用于描述外部的、已存在的JavaScript代码的结构和类型,或者用于定义全局变量、函数、类等,以便在TypeScript项目中进行类型检查和代码提示,但不会在最......
  • NPOI读取模板文件生成Excel
    前不久实现了用NPOI组件替代Microsoft.Office.Interop.Excel原生组件实现导出数据到Excel的需求,其中踩了几个坑,这里记录一下。不能使用wps创建模板文件不能使用一个文件流,对已存在Excel文件进行修改NPOI中sheet、row、cell都是以0作为起始序号,Office原生组件是以1作为起始序......
  • openGauss 示例2-从MY向openGauss数据库进行数据迁移
    示例2:从MY迁移数据下面示例演示如何通过CopyManager从MY向openGauss进行数据迁移的过程。importjava.io.StringReader;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;i......
  • 打开symlink类型的文件报错:无法遵循符号链接,因为其类型已禁用
     参考:https://blog.csdn.net/KEVERSO/article/details/84780368在英文系统中对应的是“Thesymboliclinkcannotbefollowedbecauseitstypeisdisabled.”简单的解决方案是,运行以下命令:FSUtilBehaviorSetSymlinkEvaluationL2L:1R2R:1L2R:1R2L:1Windows把文件......
  • openGauss 示例1-通过本地文件导入导出数据
    示例1:通过本地文件导入导出数据在使用JAVA语言基于openGauss进行二次开发时,可以使用CopyManager接口,通过流方式,将数据库中的数据导出到本地文件或者将本地文件导入数据库中,文件格式支持CSV、TEXT等格式。样例程序如下,执行时需要加载openGauss的JDBC驱动。importjava.sql.Conne......
  • C#使用PuTTY加密上传文件
    需求:加密通过SFPT上传文件1.安装PuTTY2.生成文件,文件不用后缀名 3.上代码classProgram{privatestaticstringfile="C:\\Users\\3859\\Desktop\\RODHoldToRepairOrScrapListKSZRODHL2022-10-28\\T326\\ReceivingReport-20240510100.xlsx";s......