当我同时使用快照和 RAID 以及 btrfs 时,我能想到的备份的两个主要原因似乎得到了照顾。(这里的 RAID 是指 RAID1 或 10)
- 意外删除数据:快照涵盖了这种情况
- 驱动器故障和位腐烂
- 完全失败:RAID 涵盖了这种情况
- 驱动器返回坏数据:RAID + btrfs 的纠错功能涵盖了这种情况
所以作为现场备份解决方案,这似乎工作得很好,甚至不需要单独的数据存储设备!
但是,我听说 RAID 和快照都不是正确的备份,所以我想知道我是否遗漏了什么。
除了 btrfs 还不是一项成熟的技术之外,你能想到我错过的任何东西吗?或者我的想法是否正确,这是一个有效的现场备份解决方案?
不,这不对。
当您的文件系统或 RAID 卷损坏时会发生什么?还是您的服务器着火了?或者有人不小心格式化了错误的数组?
您丢失了所有数据和您认为拥有的非真实备份。这就是为什么真正的备份与您正在备份的数据位于完全不同的系统上的原因 - 因为备份可以防止相关系统发生可能导致数据丢失的事情。将备份保存在与备份相同的系统上,该系统上的数据丢失也会影响您的“备份”。
对于现场备份,快照可能足够好,前提是您定期将快照“导出”到其他地方,它作为被动数据存在。
并且,定期测试您的“发送的快照”是否可以恢复。
这就是我实现一些服务器的快速备份的方式:将数据存储在 ZFS 上,拍摄 ZFS 快照,将增量发送到另一台服务器,在那里重新创建整个文件系统(减去实际运行的服务)。
当然,最好的备份总是在异地。因此,在将快照“运送”到单独的系统之后,定期对快照进行“磁带输出”。
因此,在我的系统中,接收快照增量的服务器会定期将其所有 ZFS 池(包括早期快照)转储到磁带。
当然,测试您的流片以确保它可以恢复。
注意:您将希望在静默磁盘活动期间生成快照,并且最好与数据库(如果有)协调以确保一致性;否则,治疗可能比疾病更糟。这就是为什么 NetApp 和 EMC 的“实时快照”功能非常有用:他们会推迟 LUN 的快照,直到使用 LUN 的数据库表明可以安全地执行快照。
HopelessN00b 所说的。不。
正确的备份位于与正在备份的设备不同的设备上。当您丢失两个或更多驱动器时会发生什么?当您的服务器机房烧毁时会发生什么?当有人不小心破坏了您的阵列时会发生什么?
(轶事警报:我曾经听说有人将 PXE 设置为自动安装最新的 Fedora。他的 UPS 出现故障。停电后,他的服务器重新启动并设置为 PXE 启动,然后……在他的数据上安装了 Fedora。我的点?奇怪的事情发生了。幸运的是,他有适当的备份。)
最好至少拥有三份数据副本,一份完全存储在异地,以防数据中心烧毁。
您的存储必须支持正确实施的快照,因为体面的备份确实将它们用作创建备份作业的第一阶段。然而,将快照用于主备份是个坏主意。原因:
1) 快照和后端存储可能失败。因此,真正的备份必须使用单独的主轴集,否则很有可能同时丢失主要工作集和备份数据。
2)快照“咀嚼”可用空间。使用昂贵且快速的存储来存储当前的热数据并将快照和备份作为冰冷的数据转移到一些更便宜且速度较慢的存储中是有意义的。它适用于 1) BTW。
3) 快照通常会减慢整个过程。大多数系统使用 Copy-on-Write,这种方法会产生碎片。Redirect-on-Write 更快,但会占用大量空间。很少有供应商正确实施了快照。带有 WAFL 的 NetApp 和带有 CASL 的 Nimble Storage(我不隶属于其中任何一个)。几乎每个人都有问题。例如,Dell Equallogic 在每个字节更改时触发 15 MB 页面更新(和浪费)。这太贵了。
是的。这是存储备份的完美方式。哎呀,不需要其他任何东西,即使进行完整性检查也只是浪费时间。
只是为了确认-在我提供更多建议之前...您为我的竞争对手工作,对吗?你真的会,确定吗?不?哦。
对不起,坚果。一点都不。对不起,伙计。
问题是您对(a)系统和(b)操作系统级别发生的任何错误完全开放。您基本上只能防止有人删除某些数据。好的。这是一个经常发生的错误。
你没有保护的是:
还有一长串其他事情。
这是 - 自然,除非你为我的竞争对手工作 - 你总是请做备份:
这就是磁带摇摆不定的原因——它们没有连接,任何短暂的火灾或洪水都不会伤害它们。电源尖峰 - 磁带阅读器可能还有机器人,但不在阅读器中的磁带不会受到影响。
最好是异地备份(我是否已经提到过火灾和洪水之类的事情?)(再次,当您为竞争对手工作时 - 没有建筑物火灾之类的东西,完全不需要,火灾保险也是如此,拜托,省下这笔钱)。
现在,您可能会想“哦,洪水永远不会发生”。确保你确定。看,这是 09 年 9 月 9 日沃达电话数据中心泛滥的视频。我相信您会明白问题出在现场/计算机备份中:
http://www.youtube.com/watch?v=ttcQy3bCiiU
从两个 RAID-1 驱动器在半小时内发生故障的经验教训:RAID不是一种备份机制,无论以任何方式、形式或形式都不是。
RAID 是一种可用性机制,可在硬件故障的情况下减少停机时间,但在病毒、数据删除/修改或简单的灾难性硬件故障的情况下,它根本无法帮助您。
就其本身而言,它根本不是一个备份解决方案。它会减少或消除某些故障情况下的停机时间,但根本无法保护您免受许多其他情况的影响
它当然可以成为更全面的可用性+备份解决方案中非常有价值的部分:
另外:确保定期测试备份。发现备份无法正常工作的最糟糕时间是当您需要从中检索某些内容时......
许多经验丰富的管理员遵循所谓的 3-2-1 备份规则:
您应该拥有至少三个数据副本,包括主要来源。即单个备份是不够的,同一物理系统内的副本不计算在内。
您应该使用至少两种不同的备份方法。
您应该至少拥有一份数据的异地副本。
快照违反了所有三个部分:
您只使用一台物理机。任何影响整台机器的事情,例如 PSU 故障,都可能带走您的所有数据。
您只使用一种方法进行备份。如果它有任何问题,只有在危机情况下恢复备份时才会发现。
您没有异地备份。洪水和火灾只发生在别人身上,直到它们发生在你身上……
所以:
您需要在 LAN上的另一台机器上至少有一个备份。
您需要至少有一个不是使用快照生成的备份。也许一个好的旧增量
tar
存档可能是有序的?还是rsync
基于副本?您需要至少有一个远程备份,尽可能远离您当前的位置,并且绝对不在同一栋楼内。
还应该指出,块级快照具有与拔下计算机上的插头然后复制磁盘大致相同的一致性保证。通常,您需要
fsck
在恢复后运行或希望日志足够。文件系统级别的快照应该更好,但它们仍然不能保证文件的一致性。对于许多应用程序(想到数据库服务器)来说,复制实时实例的文件可能完全没用,因为它们可能处于不一致的状态。您需要使用他们自己的应用程序级备份机制来确保存在一个干净的副本——3-2-1 规则也适用于此。
最后,请记住,现在我们只讨论您当前数据的副本。为了防止在一段时间内未检测到的故障(或安全漏洞),您还需要在相当长的一段时间内拥有多个过去的数据副本。