![ZFS 快照 + S3 是否是适用于多个虚拟机和通用文件服务器存储的可行备份系统?](https://linux22.com/image/535825/ZFS%20%E5%BF%AB%E7%85%A7%20%2B%20S3%20%E6%98%AF%E5%90%A6%E6%98%AF%E9%80%82%E7%94%A8%E4%BA%8E%E5%A4%9A%E4%B8%AA%E8%99%9A%E6%8B%9F%E6%9C%BA%E5%92%8C%E9%80%9A%E7%94%A8%E6%96%87%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%AD%98%E5%82%A8%E7%9A%84%E5%8F%AF%E8%A1%8C%E5%A4%87%E4%BB%BD%E7%B3%BB%E7%BB%9F%EF%BC%9F.png)
我的任务是为我的小型办公室(大约 12 人)设置备份系统。我们的大多数生产资料都在 AWS 云上,所以我需要备份一些小型办公室/开发文件(目前不到 100G),以及我们的运营虚拟机和开发文件,总计不到 1T。
我只需要可靠、方便和直接的东西。我熟悉 Linux、FreeBSD 和某种程度上的 Solaris 10,所以我倾向于使用完整的服务器,而不是像 Openfiler 或 FreeNAS 这样的设备系统。
我正在考虑使用一个小型文件服务器来存储虚拟机的常规数据,并每晚进行备份,然后将其备份到 Amazon 的 S3 存储服务。这将是通常的每晚增量备份和每周完整备份。
我的问题是,使用 ZFS 快照(本地和通过“zfs send [-i]”转储到 S3)是否是一种可行的备份工具?还是我应该坚持使用 Duplicity 或完全使用其他方法?
内部文件服务器/备份机上的 ZFS 快照听起来像是提供快速便捷数据恢复的完美方式,因此我可能会选择这种方式来实现本地冗余。(如果你们发现依赖 ZFS 快照的情况比更传统的归档备份更糟糕,请随意说服我。)但是快照是否足够灵活,可以依靠它从备份服务器丢失中恢复?或者我最好使用更传统的方法?(请随意推荐您喜欢的免费或商业备份解决方案。)
答案1
请记住,除非您在快照其虚拟硬盘所在的 ZFS 文件系统之前使虚拟机处于静止状态,否则您实际上将备份崩溃的系统。此外,为了恢复驻留在 ZFS 快照上的单个文件,您需要将整个快照加载到某个地方,假设最坏的情况是必须提取已从远程存储中检索到的快照。
虽然 ZFS 和快照非常适合“哦,发生了一些非常糟糕的事情,我需要文件系统恢复到一小时前、一周前的状态”,但它们实际上并不是传统意义上的备份解决方案。我曾将 ZFS 和快照与其他备份软件(如 bacula (www.bacula.org))结合使用,效果很好。能够通过 zfs 将文件系统的快照发送到备份服务器,然后将其假脱机到磁带,而不会影响生产系统 I/O,这非常方便。
答案2
我认为这是可能的。
考虑一下 OpenFiler/FreeNas 和成熟的 Solaris 之间的中间点。免费或商业NexentaStor是一个很好的设备解决方案,或者你可以使用基本系统(免费)Nexenta 核心如果您更喜欢将服务器用于存储以外的用途。如果您选择设备路线,您将能够按照您想要的任何间隔(每 x 分钟、几小时、几天等)安排快照,并且复制相当干净。您可以利用 rsync(或 rsync + ssh)或 zfs send/receive + netcat 或 ssh 发送到本地存储或远程存储。如果您使用基于 rsync 的复制,您的目标不必是 ZFS 文件系统。因此,这使其成为您的应用程序的简单选择。
任何最新 ZFS 解决方案的另一个优势是,如果您的存储系统在 RAM 和 CPU 方面配置得足够好,则可以使用压缩和/或重复数据删除。这对于某些类型的虚拟机非常有效,并且对用户来说非常透明。
如果我正在规划您的备份解决方案,我会确保将本地快照按小时汇总到每日/每周/每月快照,并提供将每日快照发送到第二个本地系统或远程系统的规定。我仍然会在特定虚拟机中使用基于代理的备份来增强这一点(例如,BackupExec 转储到专用备份服务器 + 磁带驱动器或将最重要的数据 rsync 到另一个位置)。有了备份,您需要恢复的选项和灵活性。
另请参阅以下内容:
http://www.anandtech.com/show/3963/zfs-building-testing-and-benchmarking