求推荐分布式文件系统

43 天前
 catamaran

先说一下需求,产品是个企业中实现处理业务的网站,很多客户要求实现高可用。数据库这块好弄,主要是文件处理比较麻烦。希望 v 友给些方案和建议。

我的方案:

  1. linux 文件共享。实现简单,缺点是有些客户不让用,死规矩。
  2. nas 系统,同上,客户不保证提供部署环境。
  3. 自己写服务,同步不同服务器的文件。缺点:比较麻烦,可能坑比较多(现成的轮子也可以)
  4. 分布式文件系统。缺点:现在系统中访问文件的地方都需要改写,会损失一些性能。

倾向方案 4 ,请 v 友推荐一下功能简单,改写代码成本低的文件系统。

3104 次点击
所在节点    程序员
25 条回复
Ayanokouji
43 天前
必须是文件系统吗,对象存储考虑吗,比如 minio
hetal
43 天前
seaweedfs
lxy42
43 天前
juicefs
NevadaLi
43 天前
glusterfs 和 ceph ,机器装好对应的 rpm ,mount 就完了,代码应该是不需要改的
defunct9
43 天前
glusterFS
catamaran
43 天前
@NevadaLi 如果不用修改代码就真是太好了,我去看一下
catamaran
43 天前
@Ayanokouji 我以为 minio 就是文件系统,对象存储应该也可以吧,其实我不太清楚他们的差异。主要需求两点:简单成本低,能实现高可用。
NevadaLi
43 天前
@catamaran #7 minio 是对象存储,这种东西上传文件靠 cli 或者 api ,你需要改代码的。当然,glusterfs 和 cephfs 不用修改代码的前提是,你现在的文件操作是对在系统层面进行的(比如直接保存文件到本地路径),而不是像用 minio/oss/cos 这种 api 实现的。

文件系统是直接作用在机器存储底层的,比如所熟知的 ntfs ,ext4 ,xfs ,但前面这些是单机系统,就是不具备网络共享的系统,如果要共享,需要依赖 nfs 、samba 协议/网络文件系统这种。

glusterfs 和 cephfs 也是作用于机器存储底层的,但不同的是本身就是分布式共享存储,可以依赖 nfs ,也可以使用自己的 glusterfs 和 cephfs ,驱动由对应的 fuse 提供。

===========

你的第一点说 linux 文件共享不让用,我的理解是不能本机 samba 和 nfs 这种直接共享磁盘吧?不然分布式文件系统的本质也是文件共享。
catamaran
43 天前
@NevadaLi #8 不让共享的意思就是不让使用 nfs 协议,好像说是不安全吧。大企业病,才不管你的具体场景,都是一刀切。上面说了好多,我消化一下。多谢!
HUNTERXHUNTER
43 天前
minio
NevadaLi
43 天前
@catamaran #9 猜到了,以我当前了解到的信息,建议你上 glusterfs 吧,操作简单,并且挂载的文件系统是 glusterfs ,满足对面的安全策略。

FYI:
https://docs.gluster.org/en/latest/Quick-Start-Guide/Quickstart/
https://docs.gluster.org/en/latest/Quick-Start-Guide/Architecture/#types-of-volumes
使用 Replicated Glusterfs Volume 模式吧,类似 raid1 ,保护数据。
HypoChen
43 天前
不建议分布式文件系统,如果网站产生的文件不复杂(比如同时读写同一份文件),不如写本地 + rsync + 定时备份
原因是很多分布式存储的复杂性,可能比你的业务都高,出故障不一定能救回来

如果真的需要一个存储服务,minio 有一定的高可用能力,api 丰富对于 web 场景够用了,如果真的需要一个文件系统,minio + redis/tikv + juicefs 是个不错的选择
laminux29
43 天前
高可用并不一定要用分布式。双机热备是成熟、稳定、有大量案例、出故障了能有很多高手帮忙救场的架构。

不推荐分布式,因为无论 CephFS 、JuiceFS 、HDFS 、Zookeeper 、etcd 等等,都有一大堆坑。你们没加入用户讨论,没自己部署过,不理解里面的水有多深,就像上面的朋友说,出故障了,可能很少有人能帮你救场。这还不如传统的双机 lvm + ext4 + rsync ,简单、稳定、成熟、谁都能救场。
guo4224
43 天前
对象存储,fuse mount
standin000
42 天前
@laminux29 请教如果 windows 要双机同步有什么好点方案
huigeer
42 天前
之前用的 rsync 多写,凑合用,
tolbkni
42 天前
@catamaran #6 使用块存储作为文件存储方案,就不需要改代码了,但是你的应用是不是分布式的呢
wogogoing
42 天前
minio 吧 挺好用的
Reficul
42 天前
分布式文件系统可以养活一个团队,不说文件系统本身单单一个 fuse 的坑就够深了。计算、网络都可以从踩坑开始上线,存储可是会丢数据的,没有专门的人搞的情况下,慎重。
Ayanokouji
42 天前
op 这情况,还是用 minio + 定时备份吧。分布式文件系统,一般团队驾驭不了。
只不过需要改改业务代码,不过 minio 之类的对象存储 api 都挺简单的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1075630

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX