哪些文件系统为用户提供快照function来恢复数据?

我正在开发一个将Linux教给青less年的项目。 知道他们将有一个倾向,删除或损坏他们的主目录中的项目,我们正在寻找一个很好的快照选项。 我们将无法使用主要存储供应商提供的奇特工具,并希望在文件系统级别find解决scheme。

我已经阅读了很多关于btrfs的内容,但几乎没有什么经验。 我有一些LVM的经验,但我不熟悉它的快照function。 文件系统或其他文件系统是否可以根据需要或计划创build快照? 然后让这些快照总是可用的,没有根,就像每个家庭文件夹中的.snapshot文件夹一样?

理想情况下,这种解决scheme允许用户在24到48小时的时间范围内按需自行恢复备份。 我们将有一个系统的备份过程和更多的全球备份。 但是我们不希望这个过程被那些只是犯错误的学生使用。

在Linux上,btrfs是你在文件系统中快照的主要选项,但是还不稳定,尽pipe它有一些fsck和修复工具 。

ZFS是Solaris的另一个选项。 虽然你理论上可以在Linux下使用它,但它大部分只在userland中实现(尽pipe在基于内核的实现上有一些工作),而不是在标准的Linux发行版中。

这个LVM答案有一些使用LVM快照的pro和con的细节,以及一些btrfs / ZFS链接。 对于一些文件系统(ext3和XFS),LVM会在拍摄快照之前关注FS,但是LVM快照可能会有性能问题,并且还会有一些错误。

我并不认为LVM是您的“用户数据快照”应用程序的一个很好的解决scheme,而且btrfs / ZFS还不适合[截至2011年]。

相反,您可能需要查看rsnapshot ,这是一个用户空间工具,可以使用任何文件系统有效地创build快照,而无需使用LVM。 因为它使用rsync并将快照存储在连续的目录下,如果文件没有更改,则使用不同快照之间的硬链接 ,即使在相当大的文件集上,它也可以快速运行。 它用于备份很多,但也可以用于这种用户数据快照的要求,只需稍作设置,任何人都可以通过使用只读的NFS或Samba来恢复其快照文件 – 请参阅此HOWTO部分恢复文件 。 rsnapshot将源目录映射到每个快照目录中,因此可以使用标准Linux工具恢复文件。

使用标准function,rsnapshot非常灵活,而且由于它是用Perl编写的,所以很容易定制它,例如,如果您想提供按需快照。 与文件系统快照相比,主要缺点是速度和磁盘空间 – 每个更改的文件导致快照中的新副本,而文件系统快照仅复制文件中的新块。

刚刚发现维基百科上的这个页面,有一个快照function栏 – 只是希望人们在未来知道这一点。

您不应将LVM快照用于此目的,因为这会影响性能(特别是在同时激活多个“滚动”快照的情况下)。 不幸的是,Linux根本没有任何支持快照的成熟的文件系统。

所以我build议在文件服务器上使用FreeBSD。 默认的UFS2文件系统格式支持快照。 FreeBSD还包含适当的ZFS实现(不同于在Linux中发现的丑陋的kludge),具有快照和许多其他非常先进的function。 再加上像这样的简单工具,它与NetApp等高端存储厂商非常相似。

如果你有一台专门用作文件服务器的服务器,你可能需要看看把FreeBSD和ZFS很好地封装到类似设备的系统上的FreeNAS 。