一个目录下面数百万海量小文件如何快速备份和恢复?
当一个目录下有数百万小文件做备份时,备份之前备份软件的扫描和技术就要花去大量时间,恢复的时间也要花费比普通备份多的多的时间。我知道的一种解决方案是采用image全盘备份和恢复方式可以大大加快备份和恢复过程.是否还有别的更好的方法进行效率备份和恢复呢?
我们现在也面临这样的问题。数百万个小文件。备份的时候效率非常低,全盘备份应该是可以加快备份和恢复的过程。只是应该没办法做到细颗粒度的备份和恢复,
之前我发的帖子里有人回复关于这种文件的管理,你也可以参考一下。
以下所说的备份软件是指NBU(NetBackup),其他的软件大同小异,我们讨论的是解决方法。
一,备份数据。
1.使用LanFree当时进行备份测试,看看效果如何。
2.使用虚拟机整机备份。
以前使用物理机,一台主机小文件有20万左右,不算太多,备份的时候效率非常低,只有5MB/s,甚至更低。
后来上了虚拟化之后,使用虚拟机整机备份。慢则20MB/s,快则超过30MB/s。
3.因为虚拟化环境备份的时候是根据数据块来做备份的,所以对于备份小文件来说,效率会比较高。
二,恢复数据。
1.如果恢复数据的时候是全部恢复,那么可以采用虚拟机整机恢复的方式。由于是采用数据块来恢复,所以效率还比较高。恢复的过程中,记得对于即将恢复出来的虚拟机,命一个新的主机名。然后把网卡去掉,避免ip冲突。
2.如果需要进行细粒度、单文件恢复,那么当初创建备份策略的时候一定要勾选"Enable file recovery from VM backup"。
针对这种情况,可以采用snapshot Backup和BBB Backup,不过snapshot Backup和BBB Backup需要存储产品开放接口给备份软件,也就是备份软件支持不支持某产品的问题。
BBB Backup是近些年才推出的备份解决方案,BBB Backup对存储和备份介质以及备份软件都有要求限制,此种备份方式比snapshot Backup能取得更高效的备份性能,同时可以支持全量、增量备份,同时还可以嵌入重删功能。
对于不具备上述备份能力的场景,而是传统的NAS存储碎片文件的情况,可以参考我之前的解答
http://www.aixchina.net/Question/226091-1373539
对的,采用全盘备份,无论是Windows的 vss 快照备份全部还是Linux lvm快照来备份最终恢复的时都只能恢复整个盘。不能做到小的颗粒度。
合并文件还是要考应用层面的设计和改进。不知道有没有其他更好的方式在备份层面来优化呢。当然换VM备份整个VM也是一种方式。但是很多时候换不了呀。感觉很无解的样子。不知道Google ,百度那些互联网公司是怎么玩备份的。他们的文件数目应该非常非常多。
数百万的海量小文件备份,从文件系统层面解决是一个死胡同。
因为文件系统的遍历是基于二叉树遍历,以字母和数字进行排序。如果全部是几K的文件,磁盘的遍历时间远远大于实际的数据读取时间。所以备份的瓶颈并不在传输带宽,而是磁盘文件的遍历效率。
目前方案和产品的处理层面有几种方法:
1、存储快照。就如楼上@samsondows 的说法,将快照文件单独mount出来。在这个点上,问题是市场主流快照均采用COW技术,源文件损坏,会引起源文件+增量块的方案不可行。所以需要结合镜像技术去配合。市面备份软件也有支持对存储快照的备份保护,由于各个厂家存储快照开放程度不同,导致各个版本型号的存储快照开发量很大,支持程度更无话八门。Openstack大火以后,各家存储厂商宣布支持Cinder管理存储,理论上备份软件可以通过此一统江湖。但……
2、诸如@updater_aix ,迁移到容易备份的环境。有些工程师将海量小文件全部迁移到虚拟化上……。通过VADP来加速保护,或者调用VADP的软件,还能走SAN,重删,各种技术优化。
3、卷级备份,或者叫存储块级备份。多以分区为单位,扫描数据块进行整盘数据的检测,而不是二叉树遍历文件。磁盘能够一往无前的扫描数据进行备份保护,而不是磁头不断的寻址查找数据的存储位置。备份速率几十倍的提示。但是也带来问题,假如磁盘中存在大量已经删除未真正完全删除的数据,卷级备份会将这些数据也备份下来。假若此类数据占到分区的50%,相比几十倍。