V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hustlzp
V2EX  ›  程序员

推荐一个适合存放海量小文件的文件系统?

  •  
  •   hustlzp ·
    hustlzp · 2014-08-13 11:47:25 +08:00 · 14710 次点击
    这是一个创建于 3740 天前的主题,其中的信息可能已经有所发展或是发生改变。
    帮一个朋友写爬虫爬东西。

    数据库和文件系统中都要存。

    单个文件都很小,但数量有接近70-80万,总大小有20多G。

    放在服务器爬了5天,爬完了,发现很多数据库中有的条目,在文件系统中并不存在。

    找原因才发现是inode用完了,TAT。Google后发现,ext3好像默认16K分配一个inode,挂载的磁盘是40G(ext3),所以最大可用的inode大概是2600000左右个。但关键在于文件一般都小于16K,所以把inode耗完了...

    目前有一种解决方法是格式化EXT3,格式化的同时指定每4K分配一个inode,这样就把最大可用的inode数量扩大到4倍。

    但往长远看,感觉EXT3还是不太适合这种场景,所以求推荐一种适合海量存储小文件的文件系统。

    谢谢。
    第 1 条附言  ·  2014-08-13 23:41:05 +08:00
    @reusFork
    @clino
    @HavoStrean
    @sanddudu
    @tmqhliu
    @hellojinjie
    @wangdaimishu
    @likuku
    @likexian
    @jsq2627
    @notnumb
    @chilaoqi
    @vainly
    @wy315700
    @love
    @bigtan
    @ryd994
    @soulteary 感谢大家的推荐!

    已经用XFS重新格式化了(使用默认选项),同样40G,inode的数量变成了41942016(大概是原来的20倍),这下绝对够用啦!现在scrapyd已经重新跑起来,过几天再看效果。再次感谢万能的V2EXer :)
    22 条回复    2017-05-01 22:38:42 +08:00
    reusFork
        1
    reusFork  
       2014-08-13 11:56:29 +08:00   ❤️ 1
    reiserfs
    clino
        2
    clino  
       2014-08-13 12:15:58 +08:00 via Android   ❤️ 1
    ext4?
    楼上这个都说小文件性能好,不过作者估计要把牢底坐穿。。。
    HavoStrean
        3
    HavoStrean  
       2014-08-13 12:16:03 +08:00   ❤️ 1
    fastdfs
    sanddudu
        4
    sanddudu  
       2014-08-13 12:19:38 +08:00   ❤️ 1
    @clino 只是 15 年而已,没有弄成 100 多年算不错了
    tmqhliu
        5
    tmqhliu  
       2014-08-13 12:26:17 +08:00   ❤️ 1
    hustlzp
        6
    hustlzp  
    OP
       2014-08-13 12:33:43 +08:00
    @clino
    @sanddudu 原来他谋杀了他妻子...我去...15年很轻了。
    hellojinjie
        7
    hellojinjie  
       2014-08-13 12:38:04 +08:00   ❤️ 1
    douban 不是有个 douban fs 的嘛,用来存放小文件图片的,不知道现在的进展怎么样了
    wangdaimishu
        8
    wangdaimishu  
       2014-08-13 12:40:50 +08:00   ❤️ 1
    你不会是把那些文件都放在同一个目录吧?我以前用 txt 存小说章节,300多万个,分三层目录,坨坨的。
    likuku
        9
    likuku  
       2014-08-13 13:17:17 +08:00   ❤️ 1
    至少 ext4 , zfs也是个好选择...假若存储部分可以独立出去用 freebsd 的话。
    likexian
        10
    likexian  
       2014-08-13 13:20:09 +08:00   ❤️ 1
    扔mongodb吧
    jsq2627
        11
    jsq2627  
       2014-08-13 13:32:56 +08:00   ❤️ 1
    小文件完全可以存数据库的嘛
    notnumb
        12
    notnumb  
       2014-08-13 13:37:31 +08:00   ❤️ 1
    如果只是inode问题的话
    xfs,zfs,jfs都可以。
    chilaoqi
        13
    chilaoqi  
       2014-08-13 14:26:02 +08:00   ❤️ 1
    我们以前也遇到过inodes耗尽的情况。用XFS
    vainly
        14
    vainly  
       2014-08-13 15:56:32 +08:00   ❤️ 1
    请无视我,MongoDB
    wy315700
        15
    wy315700  
       2014-08-13 16:01:31 +08:00   ❤️ 1
    试试MongoDB或者HDFS
    love
        16
    love  
       2014-08-13 16:04:22 +08:00   ❤️ 1
    reiserfs啊,没有inode限制,想放多少放多少
    bigtan
        17
    bigtan  
       2014-08-13 16:05:45 +08:00   ❤️ 1
    https://code.google.com/p/weed-fs/ 你可以看看这个项目
    ryd994
        18
    ryd994  
       2014-08-13 16:23:32 +08:00   ❤️ 1
    这样的数据还是进数据库比较好,或者按网站打包,每次抓完更新
    soulteary
        19
    soulteary  
       2014-08-13 19:04:56 +08:00   ❤️ 1
    openstack swift
    soulteary
        20
    soulteary  
       2014-08-13 19:05:47 +08:00
    ps,如果是小图标一类的,或许找家带open api的图床更靠谱?
    haoba
        21
    haoba  
       2014-08-14 17:33:33 +08:00   ❤️ 1
    fastDFS可以啊。
    faywong8888
        22
    faywong8888  
       2017-05-01 22:38:42 +08:00
    @bigtan seaweedfs 挺好的,我 Like it
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2712 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 12:29 · PVG 20:29 · LAX 04:29 · JFK 07:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.