自建设文件服务迁移到fastdfs

BUG胡汉三
博客专家认证
2020-10-14 03:01:44
需要将老系统的文件全量迁移到fastdfs中去。
目前遇到的问题是,fastdfs的文件目录不能自定义,全部由fastdfs自己生成。
另一个问题是,fastdfs文件名称包含了很多元数据信息,所以有要求30位以上。老系统的文件名称有很多没有这么长。
-------------------------------------
想咨询:
1、fastdfs目录可以自定义不?或者定义好了,可以通过什么配置让他生效。
2、fastdfs文件名称能不能自定义,不用满足30位字符串的长度要求。
3、大家从别的文件服务迁移到fastdfs都用的什么方案。


--------------------------------------
在线等......
...全文
5191 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
BUG胡汉三 2020-10-16
  • 打赏
  • 举报
回复
引用 7 楼 KeepSayingNo 的回复:
文件目录是可以指定的,你看看 https://blog.csdn.net/liujun19921020/article/details/100562203
多谢,这个方案跟我们决定使用的差不多!但是我们决定直接使用nginx,不用fastdfs了。
BUG胡汉三 2020-10-16
  • 打赏
  • 举报
回复
引用 8 楼 tianfang 的回复:
1 不能自定义,是二级n*n的目录,只能定义n 2 不能, 文件名是原文件信息+时间等信息产生的某种hash值,防止冲突并均匀的放入某个子目录 3 方案 1 运行在迁移工作站,将原文件服务器共享到工作站 2 遍历源共享文件目录,将文件使用命令行或java api的文件提交,写入数据库信息,包括源文件信息(含路径)及fastdfs返回信息
感谢,我们决定老数据的文件直接使用nginx转发当作静态资源访问,不放到fastdfs里面去了。 本来想使用API来一份份转的,但是数据实在太多了,十几个T,实在太痛苦了!
BUG胡汉三 2020-10-15
  • 打赏
  • 举报
回复
现在知道我朋友的fastdfs为什么可以了,他的nginx配置了直接指定到存储的data目录,并没有使用ngx_fastdfs_module。所以文件名称可以乱来
tianfang 2020-10-15
  • 打赏
  • 举报
回复
1 不能自定义,是二级n*n的目录,只能定义n 2 不能, 文件名是原文件信息+时间等信息产生的某种hash值,防止冲突并均匀的放入某个子目录 3 方案 1 运行在迁移工作站,将原文件服务器共享到工作站 2 遍历源共享文件目录,将文件使用命令行或java api的文件提交,写入数据库信息,包括源文件信息(含路径)及fastdfs返回信息
KeepSayingNo 2020-10-15
  • 打赏
  • 举报
回复
文件目录是可以指定的,你看看 https://blog.csdn.net/liujun19921020/article/details/100562203
BUG胡汉三 2020-10-14
  • 打赏
  • 举报
回复
引用 1 楼 RockeyCui 的回复:
fastDFS 作为分布式文件系统,文件应是是以“块”存储的,路径估计不能自定义。而文件名(文件id)你也说了包含一些“元数据”,要是支持自己命名文件那怎么支持他分布式负载的特性?你自己写一套逻辑? 所以我说说第三点,老系统代码就得改了,如果你前期系统抽象的好,改起来还是比较简单的。 如果老系统里有“文件表”,且其余的“业务表”是通过“id”关联“文件表”的话,就简单一点。“文件表”直接加一列“fastdfs_id”字段,自己在写段代码处理历史数据,将“文件表”所有文件上传到 fastdfs ,更新返回的文件名(文件id)作为“fastdfs_id”。然后获取文件那将逻辑变为从 fastdfs 根据“fastdfs_id”获取就好了。如果没有“文件表”,而是文件信息保存在各自的“业务表”,那就只能一个个表处理啦。
fastdfs应该没有用文件id的元数据来支持分布式特性,因为一迁移岂不是全部么有了,难道我迁移了,相同组的storage备份了,文件id元数据中的storage ip不做改变fastdfs就废了么...不能吧! 目前的问题是我们另一个朋友他们用的5.05的版本,可以自己在fastdfs生成好的目录中随意修改文件名称,也能够正常的访问。而我们用的FastDFS server v6.07版本,就不能这样干,不知道是不是有啥配置没有配
BUG胡汉三 2020-10-14
  • 打赏
  • 举报
回复
引用 2 楼 elian_1 的回复:
直接文件对拷到fastdfs的文件存储目录去就好了
比较奇怪的是我们用的FastDFS server v6.07,文件名称小于30位不行。但是另一个朋友用的5.05,文件名称(/group1/M00/01/11/abc.jpg)没有三十位也可以!
tianfang 2020-10-14
  • 打赏
  • 举报
回复
1 你的老文件系统是存储在什么系统上?用什么接口(ftp,http,samba……)访问? 2 你新建的文件服务面向什么服务、app?访问接口要求是什么 要根据你的使用需求设计fastdfs方案
elian_1 2020-10-14
  • 打赏
  • 举报
回复
直接文件对拷到fastdfs的文件存储目录去就好了
RockeyCui 2020-10-14
  • 打赏
  • 举报
回复
fastDFS 作为分布式文件系统,文件应是是以“块”存储的,路径估计不能自定义。而文件名(文件id)你也说了包含一些“元数据”,要是支持自己命名文件那怎么支持他分布式负载的特性?你自己写一套逻辑?
所以我说说第三点,老系统代码就得改了,如果你前期系统抽象的好,改起来还是比较简单的。
如果老系统里有“文件表”,且其余的“业务表”是通过“id”关联“文件表”的话,就简单一点。“文件表”直接加一列“fastdfs_id”字段,自己在写段代码处理历史数据,将“文件表”所有文件上传到 fastdfs ,更新返回的文件名(文件id)作为“fastdfs_id”。然后获取文件那将逻辑变为从 fastdfs 根据“fastdfs_id”获取就好了。如果没有“文件表”,而是文件信息保存在各自的“业务表”,那就只能一个个表处理啦。
Re:  FastDFS 分布式文件系统部署 ============================== FastDFS 分布式存储主要功能有:文件存储,文件同步,文件访问(文件上传/下载),特别适合以文件为载体的在线服务,如图片网站,视频网站等 它的存储特点是对文件体积小或超小,同时文件的数量特别多的存储情况支持较好,(如果是大文件的存储就推荐使用 Glusterfs 分布式网络文件存储),所谓的小文件就是指网站的图片,文档或者小视频等等,体积范围在4K~500MB之间。所谓的大文件指软件的镜像包、电影等等。 除了FastDFS存储文件特点之外,它同时具备自我负载均衡的能力,可以解决了运维自动化的关键问题。 # 块存储、文件存储、对象存储这三者的本质差别是什么? 1)块存储:磁盘阵列,硬盘(块存储主要是将裸磁盘空间整个映射给主机使用的) 2)文件存储:FTP、NFS服务器(解决文件无法共享的问题) 3)对象存储:内置大容量硬盘的分布式服务器(解决容量、性能、可靠性等问题) 多台服务器内置大容量硬盘,再装上对象存储软件, 然后再额外搞几台服务作为管理节点,安装上对象存储管理软件。 # gluterfs主要运行场景: 存储大文件,针对小文件或超小文件的支持比较差 KVM镜像 视频文件 # FastDFS主要运行场景: 存放文件size范围:4K~500MB # 对象存储 - GlusterFS、Ceph、FastDFS(非对象存储) 必备技能:DRBD/NFS/MooseFS/ GlusterFS/ FastDFS/TFS(http://tfs.taobao.org/)/ # 访问客户端:只能专用API访问实现 存放单元文件size范围:4K~500MB(阅读、声音、视频网站) # 典型用户:      ... ... 

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧