存储和备份2亿个小文件

我的磁盘是RAID 10中的10x1TB SAS 7200 RPM,带有caching/ BBU的MegaRaid 9260硬件控制器。 这导致了一个4.6TB的RAID 10卷。 hdparm -t (当设备为空时)结果为500MB / s。

RAID块大小为64KB,文件系统块大小为2KB(我将把它改为最小块大小和4KB块大小)。

目录模式是/data/x/yz/zyxabc.gz

我正在使用EXT4并计划迁移到XFS。 操作系统是RHEL 6。


截至目前,它的工作很好。 工作量为99%,在正常情况下可以读取多达300个文件/秒。 问题是备份。 用scp备份需要6天的时间。 rsync甚至更慢。 DD的速度约为2MB / s。 如果我拍摄快照,将其备份,然后将其删除,LVM快照可能是一个选项。 数据一致性对我来说非常重要。

每个文件大约0.5-4KB。 如果将所有文件存储在数据库中,我会看到增加的备份性能吗? 还有什么替代方法可以解决在合理的窗口中备份这么多小文件的问题?

我计划搬到XFS

在这种情况下,你最好预购几吨百忧解。 🙂 XFS在这个模式上吸引了很多(很多小文件),唉。

如果你正在考虑FS的改变Reiser3是唯一值得尝试的情况下,国际海事组织。 通过这种方式,您可以减lessCPU开销,避免出现磁盘空间不足的情况。

64K的RAID块也超出了理智 – 为什么溢出磁盘I / O队列这样微小的模式? 增加它而不是减less! 有很多同时I / O它不会伤害。

现在谈到备份,可以提到COW FSes。 比如Btrfs,或者Nilfs。 LVM-2快照可能也可以,因此您可以尝试将其与迁移到Reiser3结合使用。 但是我猜COW FS有更多的机会给你需要的东西。

你有没有考虑像AMANDA或Bacula的解决scheme?

要么使用支持增量备份的备份解决scheme(例如已经提到的备份解决scheme),要么可以使用遍历树的脚本,只复制具有一定修改时间的文件?

我不确定你的意思是“我需要一致性”。 你的意思是所有文件需要在同一时间点(即快照)备份吗? 在这种情况下,我不确定任何types的焦油,复制,rsync或类似的工作 – 你将不得不使用的东西,可以创build文件系统快照,或暂停任何进程创build这些文件的第一位。

“DD约2MB / s”

我很困惑,不是做一个顺序(或尝试)读取设备? 是否与在线使用这些文件竞争? 如果是这种情况,我认为更多的磁盘/更快的磁盘是为了。 如果我没有弄错,1TB SAS仍然是7200转,你可以拿起600GB 15K SAS,这将大大降低您的search量。

你把它倾倒到RAMDisk? 所以你的目标位置不能成为DDtesting的瓶颈(而且你不会把它丢回到本地磁盘,再次造成高额的寻找)。

如果2MB / s是最好的,你将会摆脱最快的读取模式,你需要更快的磁盘。

但是,dd不会让你有一个一致的快照,没有把它与其他的东西结合起来。