求推荐分布式文件系统 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
catamaran
V2EX    程序员

求推荐分布式文件系统

  •  
  •   catamaran 2024-09-25 11:40:05 +08:00 4210 次点击
    这是一个创建于 429 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    我的方案:

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

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

    25 条回复    2024-09-26 22:23:44 +08:00
    Ayanokouji
        1
    Ayanokouji  
       2024-09-25 12:28:22 +08:00   1
    必须是文件系统吗,对象存储考虑吗,比如 minio
    hetal
        2
    hetal  
       2024-09-25 12:35:10 +08:00
    seaweedfs
    lxy42
        3
    lxy42  
       2024-09-25 13:06:59 +08:00 via Android
    juicefs
    swLoXtOtd89pGg8t
        4
    swLoXtOtd89pGg8t  
       2024-09-25 13:17:27 +08:00
    glusterfs 和 ceph ,机器装好对应的 rpm ,mount 就完了,代码应该是不需要改的
    defunct9
        5
    defunct9  
       2024-09-25 13:19:52 +08:00
    glusterFS
    catamaran
        6
    catamaran  
    OP
       2024-09-25 14:35:36 +08:00
    @NevadaLi 如果不用修改代码就真是太好了,我去看一下
    catamaran
        7
    catamaran  
    OP
       2024-09-25 14:37:10 +08:00
    @Ayanokouji 我以为 minio 就是文件系统,对象存储应该也可以吧,其实我不太清楚他们的差异。主要需求两点:简单成本低,能实现高可用。
    swLoXtOtd89pGg8t
        8
    swLoXtOtd89pGg8t  
       2024-09-25 15:29:04 +08:00   1
    @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
        9
    catamaran  
    OP
       2024-09-25 16:06:34 +08:00
    @NevadaLi #8 不让共享的意思就是不让使用 nfs 协议,好像说是不安全吧。大企业病,才不管你的具体场景,都是一刀切。上面说了好多,我消化一下。多谢!
    HUNTERXHUNTER
        10
    HUNTERXHUNTER  
       2024-09-25 16:08:13 +08:00
    minio
    swLoXtOtd89pGg8t
        11
    swLoXtOtd89pGg8t  
       2024-09-25 16:13:45 +08:00   1
    @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 ,保护数据。
    Hyponet
        12
    Hyponet  
       2024-09-25 16:29:36 +08:00
    不建议分布式文件系统,如果网站产生的文件不复杂(比如同时读写同一份文件),不如写本地 + rsync + 定时备份
    原因是很多分布式存储的复杂性,可能比你的业务都高,出故障不一定能救回来

    如果真的需要一个存储服务,minio 有一定的高可用能力,api 丰富对于 web 场景够用了,如果真的需要一个文件系统,minio + redis/tikv + juicefs 是个不错的选择
    guo4224
        14
    guo4224  
       2024-09-25 19:09:50 +08:00
    对象存储,fuse mount
    standin000
        15
    standin000  
       2024-09-25 21:56:45 +08:00
    @laminux29 请教如果 windows 要双机同步有什么好点方案
    huigeer
        16
    huigeer  
       2024-09-25 23:13:54 +08:00 via iPhone
    之前用的 rsync 多写,凑合用,
    tolbkni
        17
    tolbkni  
       2024-09-25 23:24:17 +08:00
    @catamaran #6 使用块存储作为文件存储方案,就不需要改代码了,但是你的应用是不是分布式的呢
    wogogoing
        18
    wogogoing  
    PRO
       2024-09-26 00:24:34 +08:00 via iPhone
    minio 吧 挺好用的
    Reficul
        19
    Reficul  
       2024-09-26 00:32:12 +08:00
    分布式文件系统可以养活一个团队,不说文件系统本身单单一个 fuse 的坑就够深了。计算、网络都可以从踩坑开始上线,存储可是会丢数据的,没有专门的人搞的情况下,慎重。
    Ayanokouji
        20
    Ayanokouji  
       2024-09-26 09:20:13 +08:00
    op 这情况,还是用 minio + 定时备份吧。分布式文件系统,一般团队驾驭不了。
    只不过需要改改业务代码,不过 minio 之类的对象存储 api 都挺简单的。
    Desdemor
        21
    Desdemor  
       2024-09-26 10:36:40 +08:00
    我之前用过一个 seaweedFs, https://github.com/seaweedfs/seaweedfs
    catamaran
        22
    catamaran  
    OP
       2024-09-26 10:48:13 +08:00
    @standin000 freefilesync ,有命令行模式
    laminux29
        23
    laminux29  
       2024-09-26 10:53:25 +08:00
    @standin000 Windows 那边各种稀奇古怪的同步工具,更多了,比如 Sync Back Pro ,这软件是企业级的,功能比 EMC 还强,百度有开心版。
    catamaran
        24
    catamaran  
    OP
       2024-09-26 11:09:35 +08:00
    @HypoChen 感谢回复,文件不多,而且也不是很重要,主要是客户要求高可用。
    cc666
        25
    cc666  
       2024-09-26 22:23:44 +08:00
    可以把 S3 或者 minio 等对象存储挂载为本地文件系统 https://github.com/awslabs/mountpoint-s3 ,缺点是可能不支持编辑,只支持读取和上传。

    还是觉得自己维护一个分布式文件系统坑太多了,即使不 mount 对象存储为本地文件系统,将原有的文件代码改为对象存储的 API 应该也不难,要是到处都要改基本就是原有的设计有问题
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1106 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 23:56 PVG 07:56 LAX 15:56 JFK 18:56
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86