一亿个图片和 pdf 文件,单机,只新增不删除,怎么管理? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rykinia
V2EX    问与答

一亿个图片和 pdf 文件,单机,只新增不删除,怎么管理?

  •  
  •   rykinia 2021-11-04 08:44:25 +08:00 2889 次点击
    这是一个创建于 1450 天前的主题,其中的信息可能已经有所发展或是发生改变。
    领导说 OSS 太贵了,自己搞了个服务器,拿几个机械硬盘组了个 RAID5 ,15T 容量。

    我目前是格式化成了 XFS ,挂载参数调了下,然后根据前缀保存到不同的 zip 文件中,比如 000xxx.jpg 就保存到 000.zip ,zip 用 store 方式不压缩。

    但越往后写入越慢,猜测还是有碎片,或者写入方式有问题(看了下 zip4j 是复制一个新的包加进去然后删掉原来的,如果能直接写而不创建新的也许好很多)。

    不知道有没有更好点的方法,seaweed 似乎单节点最大 8T 不方便,hbase 的 mob 可行吗?
    16 条回复    2021-11-13 10:59:16 +08:00
    kokutou
        1
    kokutou  
       2021-11-04 08:49:35 +08:00
    机械盘不会是叠瓦吧。。。
    垂直机械盘越往后并不会越慢啊。
    kokutou
        2
    kokutou  
       2021-11-04 08:51:25 +08:00
    想起来那个确实会越慢,但是是内外圈的区别。
    最后剩余的几个 t 就不要用了。

    比如这种 4t 的,最后 3200-4000gib 的我就分个区存视频了。

    kokutou
        3
    kokutou  
       2021-11-04 08:53:11 +08:00
    可以试试加个临时盘,zip 写完了后,再复制进去,就是完整的大文件,不是碎片了。
    wangxkww
        4
    wangxkww  
       2021-11-04 08:54:40 +08:00
    为啥要把数据打包成 zip ?方便批量下载么?
    murmur
        5
    murmur  
       2021-11-04 09:05:53 +08:00
    叠瓦盘的问题是读写一起并发会雪崩甚至卡住,复制一个新包删掉原来的大概率就是读写问题
    ziseyinzi
        6
    ziseyinzi  
       2021-11-04 09:07:42 +08:00
    为啥 zip+1,直接用文件夹呢?
    Tianao
        7
    Tianao  
       2021-11-04 09:16:18 +08:00
    @kokutou #1 任何机械盘都存在磁盘碎片问题啊。
    rykinia
        8
    rykinia  
    OP
       2021-11-04 09:17:04 +08:00
    @kokutou 倒不是,是企业盘
    cheng6563
        9
    cheng6563  
       2021-11-04 09:19:34 +08:00
    zip 附加文件基本都是文件碎片,建议直接建目录放文件。
    除非你真的要分布式存储不然不要用 seaweed hbase 什么的,性能最好的就是文件系统直接放文件。
    机械盘不是叠瓦的吧,叠瓦盘写入就是会爆炸的。
    rykinia
        10
    rykinia  
    OP
       2021-11-04 09:21:52 +08:00
    @wangxkww 文件多了以后,ls 之类的命令就没法用了,会卡死。然后,根据这个 http://genomewiki.ucsc.edu/index.php/File_system_performance#ext4_filesystem
    理论上文件数量多了以后性能还是会下降,所以我想的是加一个类似索引的步骤
    reallittoma
        11
    reallittoma  
       2021-11-04 09:33:10 +08:00
    你这里 zip 相当于又一个文件系统了,文件系统套文件系统,能不慢吗
    heguangyu5
        12
    heguangyu5  
       2021-11-04 09:41:52 +08:00
    有个 lib 叫 LMDB, http://www.lmdb.tech/doc/
    基于 LMDB 有个项目叫 memcachedb, https://github.com/LMDB/memcachedb
    可以对 memcachedb 做下改造,新增加一个 mmap 的巨大文件(当然要控制一下这个文件占用的 file cache 大小),然后把图片和 pdf 文件保存到这个大文件里,然后将 offset 保存到 memcachedb 的 LMDB 文件里,再让 LMDB 文件始终都在内存里.
    这样文件的查找和新增都是在操作内存中的 LMDB,文件的写入和读取都是基于 mmap,只要内存稍大一点,应该就不是问题了.
    kokutou
        13
    kokutou  
       2021-11-04 09:42:52 +08:00
    @Tianao #7
    另外分个区里写 zip ,zip 写满了后,再复制过去就可以避免碎片了
    但是要是随机的往每个 zip 里写,不存在写完一个 zip ,这方法就不行。
    cpstar
        14
    cpstar  
       2021-11-04 09:50:06 +08:00
    公有 OSS 太贵。自己搞服务器,上 minio 啊,弹性扩展,也还是对象存储
    wangxkww
        15
    wangxkww  
       2021-11-04 09:57:55 +08:00
    @rykinia 那用多级文件夹感觉就可以吧,这样还好配合 minio 直接提供访问服务
    rykinia
        16
    rykinia  
    OP
       2021-11-13 10:59:16 +08:00
    @wangxkww minio 单机也相当于直接操作硬盘里的文件,这个还是要多台服务器才能发挥出来实力。

    我最后搭了个 hbase 解决了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1101 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 17:55 PVG 01:55 LAX 10:55 JFK 13:55
    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