模仿Google的永久磁盘 – 这是一个合乎逻辑的FreeBSD灾难恢复策略吗?

我正在研究FreeBSD,为数据库服务器提供更全面的备份和灾难恢复策略。 理想情况下,我想模仿谷歌正在做什么与“持久磁盘” https://developers.google.com/compute/docs/disks#snapshots

我希望对FreeBSD有更多了解的人可以validation这些想法/问题:

  1. 我已经读过FreeBSD可以使用即时磁盘快照,因此,如果我们的数据库触发一致的状态(阻止所有写入,并将缓冲区刷新到磁盘),我会假设我可以每隔一小时拍摄一次快照,而不会中断服务超过几秒钟。 这是真的?
  2. 有没有办法快照并将其备份到异地? 这是否可以逐步完成,以节省多less磁盘空间实际使用?

  3. 如果需要回滚,通常需要多长时间? 回滚也是瞬间的吗?

谢谢!

我build议你使用FreeBSD和ZFS。 请参阅FreeBSD手册关于ZFS的部分, url为https://www.freebsd.org/doc/handbook/filesystems-zfs.html 。 和FreeBSD 10相比,早期版本有一些重大的改进。

  • ZFS可以立即进行磁盘快照,而不会造成明显的服务中断。 许多商店用MySQL和Postgres数据库来完成这个工作。 Oracle数据库pipe理员使用Oracle Solaris和ZFS执行此操作。

  • ZFS快照可以回滚。

您可以使用常规备份软件来备份.zfs / snapshot目录。 我听说有人使用zfs sendzfs receive来达到这个目的,但是我们无法使它工作。 从理论上讲,你可以做一些像zfs send snapshot.today | mybackupsoftware --hostname backup.offsite.example.org zfs send snapshot.today | mybackupsoftware --hostname backup.offsite.example.org并将映像存储在异地。

  zfs send [-vR] [-[iI] snapshot] snapshot Creates a stream representation of the second snapshot, which is written to standard output. The output can be redirected to a file or to a different system (for example, using ssh(1). zfs receive [-vnF] filesystem|volume|snapshot Creates a snapshot whose contents are as specified in the stream provided on standard input 

FreeBSD可以做UFS快照(这个过程在手册中有描述)。 许多操作(包括我的)通过停顿数据库(我们在我们的从DB上完全closures),创build一个快照,然后重新激活数据库来利用这个优势。
然后可以使用您的常规备份工具(在我们的例子中为Bacula)装载和备份快照。

(更多关于UFS如何真棒的鼓点, 请看这里 )。

我所看到的一个很大的缺点是UFS快照不能被轻易地回滚 – 我所知道的最有效的技术是将数据从快照上进行rsync同步(由于UFS快照的性质,这不是非常高效的) ,但为了做备份他们通常很好。


正如斯特凡指出, ZFS可能是一个更好的select。
与类似数据库的UFS相比,ZFS具有许多优点(如能够快速轻松地向分区添加更多磁盘空间(如果超过该分区的话),以及用于移动快照的ZFS发送/接收function)。

ZFS的另一个优点是快照是有效的“免费”(ZFS是一个不覆盖的文件系统,所以它不会重用快照中的任何扇区 – UFS需要做一些额外的logging,而快照存在),你可以如果必须的话,他们是可写的。

我能想到的ZFS唯一的缺点就是内存不足,特别是与UFS相比。 在产品推出之前,您将需要考虑这个问题( 以及关于调整ZFS )。