• 请不要在回答技术问题时复制粘贴 AI 生成的内容
kisshere
V2EX  ›  程序员

机械硬盘架设静态服务器,支持千万级小文件存储&高并发,有没有开源的解决方案?

  •  
  •   kisshere · Mar 11, 2020 · 10520 views
    This topic created in 2256 days ago, the information mentioned may be changed or developed.

    关键字:机械盘、千万级、高并发

    同时满足这三个条件可能很苛刻,机械盘对于大量小文件(1Mb 左右)高并发简直是噩梦,但 ssd 做静态服务器有点奢侈,这方面有没有开源的存储解决方案?

    64 replies    2020-03-13 09:23:19 +08:00
    siyiye
        1
    siyiye  
       Mar 11, 2020   ❤️ 5
    支持千万级小文件存储&高并发——但 ssd 做静态服务器有点奢侈。

    所以我觉得你也不用折腾了
    kisshere
        2
    kisshere  
    OP
       Mar 11, 2020
    @siyiye 所以开贴求 V 站大神看有没有机械盘解决方案,实在不行只能上 ssd
    lcy630409
        3
    lcy630409  
       Mar 11, 2020   ❤️ 1
    你这个需求不就是 CDN 正好解决的么....
    janxin
        4
    janxin  
       Mar 11, 2020   ❤️ 3
    全部读入内存,不加硬盘就加内存呗
    sadfQED2
        5
    sadfQED2  
       Mar 11, 2020 via Android   ❤️ 1
    都到千万级了,ssd 的钱都给不起吗
    FaceBug
        6
    FaceBug  
       Mar 11, 2020   ❤️ 1
    看你并发量咯,如果持续很大,每个文件都是热文件,那就只能 SSD 了,都这个规模了还等啥

    如果每天都只是部分数据存取量很大,可以加个 SSD 的缓存盘
    Xusually
        7
    Xusually  
       Mar 11, 2020
    必须机械盘的话,淘宝买点便宜的准系统,内存大些,cpu 无所谓,台数多一些,搭分布式的,比如 fastdfs 之类的,分散压力。
    miclinux
        8
    miclinux  
       Mar 11, 2020 via Android
    硬盘不够内存来凑。。。
    lvzhiqiang
        9
    lvzhiqiang  
       Mar 11, 2020
    拖拉机怎么优化也不可能快过法拉利吧。。
    cydian
        10
    cydian  
       Mar 11, 2020
    SSD 解君愁吧。
    只读取大量小文件,机械硬盘不仅慢还寿命短。
    两者算下来差不了多少。
    alphatoad
        11
    alphatoad  
       Mar 11, 2020 via iPhone
    …page replacement algorithm?
    opengps
        12
    opengps  
       Mar 11, 2020
    千万级小文件性能问题,这是对象存储能解决的问题。楼主可以搜下这个方向的关键词
    Chichele
        13
    Chichele  
       Mar 11, 2020 via Android
    SSD 现在还算奢侈品吗
    rockyou12
        14
    rockyou12  
       Mar 11, 2020
    软件反正是 minio 或者 ceph 这些?但机械硬盘小文件读写不管怎么样都很差,真压力大还是老实上 ssd 算了
    90928yao
        15
    90928yao  
       Mar 11, 2020
    有个中国人写的基于 haystack 实现的对象存储 忘了叫啥了
    z8zS4FW0JO2hWtFX
        16
    z8zS4FW0JO2hWtFX  
       Mar 11, 2020
    存 Mongodb 中试试,上家公司存图片就是这么玩的。
    realpg
        17
    realpg  
    PRO
       Mar 11, 2020
    SSD 还奢侈?
    我这种垃圾佬的服务器集群都全是 SSD 了……
    单台服务器成本几百元的巨量规模集群
    realpg
        19
    realpg  
    PRO
       Mar 11, 2020   ❤️ 3
    随便分层的解决问题

    几十台垃圾的 768GB 内存的廉价服务器
    然后二级热读缓存用光威 1.5TB/960GB/2TB 的分布式集群
    密写一台服务器一块 PCI-E 密写分布
    冷数据可靠存储用 8TB 乐视盘

    这就是极端廉价(市价 1/10 )的超级存储集群
    我这有 PB 级的集群
    hutng
        20
    hutng  
       Mar 11, 2020
    非企业级高性能 SSD 比机械也贵不了太多吧
    carmark
        21
    carmark  
       Mar 11, 2020
    @rockyou12 这个 ceph 维护难度太大,minio 就是一个玩具

    @kisshere 海量小文件,上硬件当然可以解决一部分问题,但是从理论上需要分析具体场景,如果你这个小文件是类似图片场景的,那么有不少方案,比如 Haystack 架构,有不少实现比如 fastdfs 以及 seaweedfs,就是为这种场景设计的。

    不过这个是对象接口,不是文件接口,POSIX 文件系统对这种海量小文件就是噩梦。
    rockyou12
        22
    rockyou12  
       Mar 11, 2020
    @carmark minio 可不是什么玩具,虽然是可以当玩具用,但是很完善的分布式存储方案
    qingpingbao
        23
    qingpingbao  
       Mar 11, 2020
    @90928yao go 写的 seaweedfs ??
    carmark
        24
    carmark  
       Mar 11, 2020
    @rockyou12 嗯,我说的不太严谨 。很早之前看过的,不知道现在的情况,想了解下:

    1. 目前哪家公司不改代码,直接上生产?
    2. 怎么做迁移?集群扩容?机器故障处理,磁盘故障处理?
    zzzmh
        25
    zzzmh  
       Mar 11, 2020
    要我说就别折腾了,找个便宜点的 oss 一步到位,服务器就安安心心放 html,估计访问量不大的时候一个月几十块一百块到顶了,访问量大的时候么你收入也起来了,例如申请个 adsense,绝对能抵消 oss 支出。目前性价比最高的应该是又拍云,加入又拍联盟能奖励一点流量费
    Osk
        26
    Osk  
       Mar 11, 2020 via Android
    不用 ssd 的原因?

    如果是怕丢数据,且读操作占比多,可以用 ssd 缓存读,不缓存写,有很多现成方案,比如 lvm cache
    neurocomputing
        27
    neurocomputing  
       Mar 11, 2020
    高并发,高到多少? 每秒 1000 个文件(每个 1MB )的话( 1GB 10Gb ),机械硬盘(按 12Gb 算)的带宽都是问题了,组 raid 话,就算 raid 1,也顶多让并发能力增加不到 1 倍
    zelin44913
        28
    zelin44913  
       Mar 11, 2020
    考虑下 bcache + 软阵列
    Reficul
        29
    Reficul  
       Mar 11, 2020
    BFS ? @realityone
    rockyou12
        30
    rockyou12  
       Mar 11, 2020   ❤️ 2
    @carmark 直接看文档吧 https://docs.min.io/cn/distributed-minio-quickstart-guide.html
    您说这些东西明显就是抬杠,对 minio 不了解。minio 本身就是兼容 aws 的 s3 对象存储接口,不存在什么改代码的,所有对象存储基本都是这套协议。至于其它的,所有系统都有这些问题,但看 minio 的用户量我觉得不会有实际的问题。
    wmhx
        31
    wmhx  
       Mar 11, 2020
    hadoop 十分完美了.
    ericgui
        32
    ericgui  
       Mar 11, 2020
    @realpg 老铁,你自己在家建服务器么
    realpg
        33
    realpg  
    PRO
       Mar 11, 2020
    @ericgui #32
    闹呢
    我有九个数据中心 不是九个房间,是九个建筑,分布在省内
    DonaidTrump
        34
    DonaidTrump  
       Mar 11, 2020
    千万级的项目,ssd 费用都不给,这有点儿过分了
    90928yao
        35
    90928yao  
       Mar 11, 2020
    @rockyou12 minio 集群扩容 确实有问题。。。只能通过增加集群的方式的,然后后端自己去路由到特地集群
    BlackBerry999
        36
    BlackBerry999  
       Mar 11, 2020
    你这问题不在硬盘上,你需要多级的分布式缓存系统。
    nrtEBH
        37
    nrtEBH  
       Mar 11, 2020
    单机的话 没戏 物理限制靠代码解决不了
    多机分布式集群加 SSD 缓存是可以解决 很多方案
    catcalse
        38
    catcalse  
       Mar 11, 2020
    试试阿里专门做的 小文件系统?
    encro
        39
    encro  
       Mar 11, 2020
    千万级 RMB/并发 /文件个数 /文件大小 /PV 还是其他?
    qiyuey
        40
    qiyuey  
       Mar 11, 2020
    上云
    rockyou12
        41
    rockyou12  
       Mar 11, 2020
    @90928yao minio 的集群我确实也没深入研究,基本中用做 s3 网关,后端实际存储还是 nfs 或者 ceph 这些。但有状态服务的扩容基本上都挺麻烦的,生产要用基本是没有加个节点就完事的...

    但总的来说 minio 已经是最快能搭建的存储服务了,ceph hdfs 这些光看架构设计都要昏了,实际部署更是要吐血
    encro
        42
    encro  
       Mar 11, 2020
    Leveldb/Rocksdb/Accumulo

    任何一个都支持 10 亿级别,支持压缩,快速读写。

    几块企业机械盘,几千块都舍不得花?

    Leveldb/Rocksdb/Accumulo 简单比较
    https://www.jianshu.com/p/4c57cd82ccde
    NeoChen
        43
    NeoChen  
       Mar 11, 2020
    从楼主的标题里,看出了,业务很大,但是没钱,不但要机械硬盘,还要开源的免费解决方案。。。如果上 SSD 就要亏钱的节奏,那咱是不是考虑该放弃这个业务了。。。开个玩笑~

    看看业务上是不是还能再优化优化,如果小文件读写很多,机械盘物理条件不适配啊,否则只能想办法减少单盘的读写量了,能否区分高频低频,高频的用内存,中频用 SSD,低频用机械,分个轻重缓急。我觉得,就算有现成的开源解决方案也不一定适配你的业务需求,还是要从业务入手,分解需求,从而在降低费用的情况下,还保持较高的性能。
    allenforrest
        44
    allenforrest  
       Mar 11, 2020
    SeaweedFS
    Mithrandir
        45
    Mithrandir  
       Mar 11, 2020
    ceph 把块大小设置成 1m,然后使用 ssd 做个缓存即可
    rrfeng
        46
    rrfeng  
       Mar 11, 2020
    tfs 之流就是解决这个问题的。
    pC0oc4EbCSsJUy4W
        47
    pC0oc4EbCSsJUy4W  
       Mar 11, 2020
    ceph,内存使劲加
    fancy111
        48
    fancy111  
       Mar 11, 2020
    逗,千万级了都,你还用这机械盘?就算机械盘能支撑起来,带宽你也负担不起啊
    kennylam777
        49
    kennylam777  
       Mar 11, 2020
    試過了 Ceph 後,我也說一句: SeaweedFS 及 Minio 都是玩具。

    維護難度用 ceph-ansible 減輕一下
    q149072205
        50
    q149072205  
       Mar 11, 2020
    可以 RAID 啊。做 RAID 10,再做分布式啊。完全无压力。
    mumonitor
        51
    mumonitor  
       Mar 11, 2020
    海量小文件只推荐用分布式文件系统,ceph/mogilefs 都可以,前面辅助于 nginx 就是比较通用的解法了。
    Huozy
        52
    Huozy  
       Mar 11, 2020
    对象存储。机械硬盘存,ssd 是做类似缓存功能的
    baixiangcpp
        53
    baixiangcpp  
       Mar 11, 2020
    机械盘还想要高并发,搬搬手指头算一下也不可能
    xyjincan
        54
    xyjincan  
       Mar 11, 2020
    请求是随机的吗,hbase ?
    qibinghua
        55
    qibinghua  
       Mar 11, 2020
    TFS 文件系统了解一下
    dorothyREN
        56
    dorothyREN  
       Mar 11, 2020
    文件直接扔进内存里面,比 ssd 都快
    1daydayde
        57
    1daydayde  
       Mar 11, 2020 via iPhone
    都 50 多楼了还没有说 FastDFS 的,emmm 是现在用的人少了吗?
    xcstream
        59
    xcstream  
       Mar 12, 2020
    都千万级了,服务器硬件费用应该不算大头了
    dongqihong
        60
    dongqihong  
       Mar 12, 2020
    各大云厂商的对象存储才是你真正的靠谱选择
    kejxp1993
        61
    kejxp1993  
       Mar 12, 2020 via Android
    按照 lz 单个文件 1m,千万个文件才 10t,所以最直接的办法,买几个廉价 ssd,最简单效果也最好,成本也比捣鼓服务器集群便宜。。
    kejxp1993
        62
    kejxp1993  
       Mar 12, 2020 via Android
    如果文件读取有明显的热点的话,可以考虑大量机械硬盘加部分 ssd 缓存的方案。
    gongxun0928
        63
    gongxun0928  
       Mar 13, 2020
    @kennylam777 seaweed 是玩具? 前两年在前司,seaweed 大概存储了几百亿的小文件,总的存储也有十多 p。 总体来说,比较稳定,0.76 版本。
    gongxun0928
        64
    gongxun0928  
       Mar 13, 2020
    如果你对存储不是很熟悉,且不是强 posix 接口(open/read/wrtie)访问需求,譬如机器学习场景,需要 readdir 遍历的场景; seaweed 完美满足你的需求,且相对稳定。 ceph 这个东西庞大且不好维护,大部分人解决 ceph 出现问题的能力堪忧,举个例子,对新手来说,ceph 的 CRUSH 算法,在扩容的时候的不确定性,新手估计会踩坑(不平衡或者 io 被打满)。 当然如果你们有超过 3 个运维人员专职负责 ceph,你可以选择 ceph,毕竟大而全,ceph fs, ceph block,
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2501 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 231ms · UTC 16:09 · PVG 00:09 · LAX 09:09 · JFK 12:09
    ♥ Do have faith in what you're doing.