LVM快照与文件系统快照

据我所知,LVM可以拍摄一个卷的快照。 还有一些支持快照的文件系统(ZFS,Btrfs,reiserfs,…)。

但是,我从来没有理解LVM快照和文件系统快照之间的区别。 如果可以用LVM拍摄快照,为什么有人花时间在文件系统中实现它?

编辑:他们中的任何一个在某些情况下是首选? 为什么?

    大多数这些快照是写入时复制快照,在很less更新的系统上,快照和真正便宜(存储方式)。 LVM快照是COW快照,ZFS / BTRFS都有快照的COW模式,reiserfs没有本地快照,Novell的NSS文件系统也是COW,因为Windows NTFS卷的卷影副本卷也是。

    写入时复制快照将目标卷的元数据副本带入快照池。 然后,根据他们正在使用的COW模式,在写入新数据之前,它们会将新写入覆盖的数据复制到快照池。

    ZFS和(最终如果还没有的话)BTRFS具有完全快照function,这对捕捉单独媒体非常有用,而这对于使用可移动媒体的sneakernet备份系统来说非常方便。 ZFS不会将其称为“快照”,而是利用ZFS使用zfs sendzfs recv将卷和快照通过networking复制到远程主机(或本地arrays)的function。

    我比LVM更喜欢文件系统级别的快照function,因为我更好地相信文件系统本身能够干净地处理这个过程。 但是,在缺乏直接的文件系统支持的情况下,大多数情况下LVM应该工作得很好。

    如果您需要快速进行时间点备份以实现短期恢复需求,则COW快照是很好的select。 比如每天做一次,或每天4次,快速保存一周。 如果您需要恢复用户意外删除的文件,或者需要将整个系统回滚到更新前的configuration,这是非常方便的。 它们也可以被某些备份系统用作完全静止的文件系统,因此快照卷取得的备份不必担心打开的文件阻塞。 关键要记住的是,快照卷将与主卷位于同一个存储上,所以在arrays失败的情况下不要给你任何东西。

    完整的快照是好的,如果他们被带到可移动或远程媒体的某种。 如果您拥有networking存储,则目标可能与主存储所在的iSCSI或光纤通道arrays不同。这为您提供了一些针对某些故障的非arrays保护。 如果使用可移动介质(如3TB ESATA驱动器),则甚至可以将其用作简单的“备份至磁盘”系统。 这些快照可以在不同于其COW兄弟的硬件上,因此对于灾难恢复有用。


    完整与COW快照。

    多年来,“快照”这个术语已经有所变化了。 今年,我很确定这意味着“使用块重定位的原始数据的复制写入副本”。 通过这个定义,上面提到的“Full”快照实际上并不是快照,而是复制。 过去,一些存储供应商使用了不同的“快照”定义来描述它们执行的各种块级操作。 令人困惑的是使用快照作为复制过程的一部分的系统。

    LVM需要预先计划。 我倾向于不使用它,因为它也是另一个抽象层,在我需要时很less可用。 不过,在没有LVM的情况下,还有其他select可以在文件系统级别(在Linux中)进行克隆。 您可以利用R1Soft的Hot Copy来做到这一点。 这是一个内核模块,但可以让您即时添加此function。

    非常明确的问题:LVM的快照不能保证一致的FS jue,因为LVM“不知道”FS正在被加载

    编辑 (请参阅注释): – 除非FS支持.freeze_fs ,否则应该由FS正常处理。

    作为其他答案的补充。 在FS快照中,您可以受益于所有快照中的压缩和重复数据删除等FSfunction。