wangluowangwang
V2EX  ›  DevOps

对于接近百万数量的零碎小文件的多机备份和单/双向同步有啥好方案没

  •  
  •   wangluowangwang · Apr 6, 2015 · 9709 views
    This topic created in 4057 days ago, the information mentioned may be changed or developed.

    环境是Windows Server,要求如下:

    1 服务器多硬盘 主备 不同硬盘间双向实时同步备份
    2 与其他备份服务器定时或者实时数据同步
    3 不能占用大量IO资源

    目前遇到问题如下:
    1.大多数备份软件对于此数量级别的,要么吃满所有IO资源,要么根本无法对这些级别的文件进行备份(包括遗漏/同名文件修改后还是当成旧文件)。
    2.不支持多机备份。

    有什么好的方案没

    21 replies    2015-04-08 09:24:20 +08:00
    9999999999999999
        1
    9999999999999999  
       Apr 6, 2015 via Android
    Btrfs
    twd2
        2
    twd2  
       Apr 6, 2015
    存mongo数据库里配置主从 呵呵^_^
    Busy
        3
    Busy  
       Apr 6, 2015
    windows 下不清楚,linux 下我知道 cpio 就是为备份而生的

    至于大量小文件要求不吃 IO 的话...NTFS 下是不可能的
    st3488
        4
    st3488  
       Apr 6, 2015
    我们是几个用的server上 搭建一个分布式文件系统,前段做一个索引这种方式存储千万级小文件的。
    VirgilMing
        5
    VirgilMing  
       Apr 6, 2015
    随时都有百万级的流量?所有文件都会变化?应该不至于这么严苛吧。
    专门腾一块内存做虚拟盘用于缓冲。不大量 IO 简直是不可能的。
    ryd994
        6
    ryd994  
       Apr 6, 2015
    raid+nfs?
    clino
        7
    clino  
       Apr 6, 2015 via Android
    @st3488 用什么分布式系统?
    ericFork
        8
    ericFork  
       Apr 7, 2015
    Windows Server 下的方案可能只有商业方案才能达到你的需求了
    likuku
        9
    likuku  
       Apr 7, 2015
    @9999999999999999 Btrfs...2012年就测过,直到2014年这玩意依然一坨屎,某次机器重启之后,差点废掉我司一个svn库。还好后来小朋友发觉 read-only mount 后可以正常读取,速度数据备份出来改换 EXT4。

    目前类似功能/性能的,可用就是ZFS,能和ZFS匹敌的也只有ZFS。

    不怕死,想当烈士的,大胆尝试 btrfs,不用谢。
    likuku
        10
    likuku  
       Apr 7, 2015
    @clino hadoop 也是可以当分布式文件系统来用的。
    mhycy
        11
    mhycy  
       Apr 7, 2015
    某些防篡改拷贝软件/文件分发软件可以在驱动层截获修改信息然后同步到另一台服务器进行同样的修改

    本地硬盘热备请用raid1
    powergx
        12
    powergx  
       Apr 7, 2015 via iPhone
    机械硬盘 iops 166,单片硬盘同步100万文件需要1.67小时满io,如果放进ssd,3w的iops 就只要几分钟。建议两边都是zfs,硬盘raid10
    msg7086
        13
    msg7086  
       Apr 7, 2015
    楼上的某几位亲。卤煮要求用 Windows Server 啊。
    Linux的话,试试分布式文件系统呗,比如 GlusterFS 之类的?
    raptor
        14
    raptor  
       Apr 7, 2015
    ZFS+1
    raptor
        15
    raptor  
       Apr 7, 2015
    顺便,珍爱生命,远离windows
    Septembers
        16
    Septembers  
       Apr 7, 2015 via Android
    Admstor
        17
    Admstor  
       Apr 7, 2015
    1.硬盘直接RAID了,难道你还认为人工干预从一个硬盘复制到另外一个硬盘更安全吗?RAID1或者RAID10,看你数量和容量决定

    2.windows定时备份也可以直接打包传输,什么传输你就自己看着办了,FTP,SFTP,SSH都可以,甚至上win版的rsync

    3.不占用IO是不可能的,既然是备份那定然是全部都要读取一边,不然叫什么备份...增量式备份也是需要做对比的,除非有win下驱动级,拦截硬盘修改操作,然后生成差异文件

    ========
    你们这种情况我建议存储单独隔离出来
    上iSCSI这个win也支持,用起来和本地也没啥区别
    AntiGameZ
        18
    AntiGameZ  
       Apr 7, 2015
    如果 CWRSYNC 和 Bittorrent Sync 也解决不了你的问题,你就只能自己写一个了
    wangluowangwang
        19
    wangluowangwang  
    OP
       Apr 7, 2015 via Android
    @msg7086 嗯 Windows上实现确实挺麻烦的。


    @Admstor raid外的备份。RAID只是单机备份。要实现多机备份。

    打包时间不少。不是说不能占用io,而是占用到什么程度。
    msg7086
        20
    msg7086  
       Apr 7, 2015   ❤️ 1
    @Admstor
    1. 备份只用单机备份是笑话。RAID不是备份用的,是高可用性用的。
    2. 文件量大了是个问题
    3. 备份为什么一定要全部读取一遍?
    你不会不知道像rsync这种工具都是只对比文件大小和修改时间的吧?
    除非你强烈要求对比hash才会全部hash一遍的。
    =====
    iSCSI就更扯了。原本的文件系统做备份好歹是文件级的,现在你搞成块级,那备份才叫一个痛苦呢。
    Admstor
        21
    Admstor  
       Apr 8, 2015
    @msg7086
    第一条只是针对楼主要求而言,你对我说这些没有意义
    第二条楼主已经文件量大了,这种情况下零碎文件传输造成的损耗远大于打包损耗
    第三条如果要求不严格确实不用全部读取,只对比文件时间和大小,但是百万级别依旧是非常消耗io的,这个则取决于业务情况,例如是重要数据,不hansh就同步那是不可能接受的
    ==============
    块级优势在于业务无关性,备份同步异地等等全部丢给存储来解决,线上业务无需关注这些
    这对有钱,同样不擅长自己做方案的公司很适合
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4240 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 92ms · UTC 10:12 · PVG 18:12 · LAX 03:12 · JFK 06:12
    ♥ Do have faith in what you're doing.