Filesystems 如何冻结/解冻ZFS文件系统以获取硬件快照

Filesystems 如何冻结/解冻ZFS文件系统以获取硬件快照,filesystems,storage,solaris,zfs,Filesystems,Storage,Solaris,Zfs,是否有任何方法可以冻结/解冻solaris上的zfs文件系统,因为任何其他传统文件系统都提供此功能。我需要它来拍摄硬件(EMC Symmetrix阵列)快照 我知道ZFS提供了快照/恢复功能,但我们的要求是获取硬件快照。卸载文件系统或导出ZFS池。这并不局限于ZFS。它适用于大多数文件系统和卷管理器 如果您希望能够在硬件设备级别对一个活动的、已装载的文件系统或软件管理的卷进行快照,并且结果是一个一致的文件系统映像,那么您的需求从根本上是不合理的。这属于需求范畴。@AndrewHenle的回答是正

是否有任何方法可以冻结/解冻solaris上的zfs文件系统,因为任何其他传统文件系统都提供此功能。我需要它来拍摄硬件(EMC Symmetrix阵列)快照


我知道ZFS提供了快照/恢复功能,但我们的要求是获取硬件快照。

卸载文件系统或导出ZFS池。这并不局限于ZFS。它适用于大多数文件系统和卷管理器


如果您希望能够在硬件设备级别对一个活动的、已装载的文件系统或软件管理的卷进行快照,并且结果是一个一致的文件系统映像,那么您的需求从根本上是不合理的。这属于需求范畴。

@AndrewHenle的回答是正确的——今天,您必须卸载/导出池才能成功暂停新的IOs。它得到了Linux中大多数其他广泛使用的文件系统的支持,所以我认为希望ZFS有一天也能支持类似的东西并不是不合理的。事实上,在Linux上的ZFS中有一个支持
fsfreeze
的特性请求,而且它看起来并不难实现(只是很难测试;-)

也就是说,大多数人在拍摄存储级快照之前可能不需要使用
fsfreeze
,因为崩溃一致性不需要它——如果运行在ZFS上的应用程序无法处理在不冻结文件系统的情况下拍摄的快照,它也无法处理机器意外硬重启的情况。在这方面,ZFS比其他文件系统要好一点,因为它不需要在硬重启后重放事务日志或运行
fsck
,以确保正确性。也许这一性能问题(必须重播日志)就是为什么这在其他文件系统上更重要的原因

---编辑----

我记得最近有一个功能可以用来实现类似的东西,叫做
zpool checkpoint
。一位前同事实现了这一点,并就此写了一篇简短的文章

对于您的用例,其想法是在拍摄硬件快照时:

  • 首先,您将运行
    zpool checkpoint
    ,它将所有正在运行的IOs同步到磁盘,并存储包含所有这些更改的池的uberblock(文件系统树中的最高级别块)的副本。这类似于ZFS快照单个文件系统的方式,但适用于整个池。这将创建一个序列化点,就像您将使用
    fsfreeze
    创建的序列化点一样,其中在检查点之前启动的所有IOs都必须完成,而在检查点之后启动的所有IOs都不会在检查点中捕获
  • 然后,您将拍摄存储快照
  • 完成存储快照后,您可以在实时系统上使用
    zpool checkpoint--discard
    放弃检查点,以便ZFS可以在磁盘被覆盖时继续释放磁盘空间(当检查点处于活动状态时,这是不可能的,因为该数据仍可能被检查点中的某个对象引用)
  • 如果以后从硬件快照恢复,请运行
    zpool import--revind to checkpoint
    ,而不是正常的
    zpool import
    ,将池的状态回滚到检查点,然后使用
    zpool checkpoint--discard
    放弃检查点,因为您不打算在池运行后将其回滚到该点(并且您希望能够释放检查点占用的空间)

  • 与fsfreeze相比,它还有一个额外的优点,即在执行检查点时不会暂停IOs。但是,它也有以下缺点:(a)它不在其他文件系统中使用,因此比较复杂;(b)您不能轻松地将它与其他应用程序级事件同步,因为它只是在CLI命令运行时“某个时候”发生的。

    许多文件系统都支持这一点,文件系统等待所有正在进行的操作完成并暂停新的操作-这是LVM在您拍摄快照时也从文件系统请求的。@不,很多文件系统都支持这一点,我将其描述为在一些操作系统上支持这一点的文件系统数量相对较少。一般来说,我认为能够冻结文件系统不是超出这些限制的预期功能。@不,例如,@AndrewHenle上没有将冻结功能列为功能。几乎所有流行的文件系统都支持冻结/解冻功能,而无需卸载文件系统,并且在此期间仅阻止写访问。e、 g.在Linux-Ext3/4、ReiserFS、JFS、XFS、Solaris-UFS、veritas文件系统VxFS、windows-NTFS、HP和aix-UTDM、GPFS、JFS上。大部分都提供了ioctlapi来冻结/解冻fs。在ZFS中也寻找类似的功能。@此外,您将UFS()和NTFS()快照与冻结混淆了。这些几乎相当于ZFS快照。我不会把Linux和一些HPUX和AIX文件系统上的ext3/4、JFS和XFS称为“几乎所有流行的文件系统”,尤其是当Windows被排除在外时。我修改了我的答案——我相信这是可能的,使用的功能与您要求的略有不同。谢谢@Dan的回答。冻结意味着它应该将所有正在进行的IOs刷新到磁盘,以使文件系统一致,阻止所有写IOs并允许读IOs,直到我解冻文件系统为止。通过zpool checkpoint功能,我们可以确保数据的一致性,因为在拍摄快照时,它不会阻止写入IOs。一旦我们完成了检查点,写操作将在下一刻启用。另外,zpool checkpoint和事实上所有其他方法zpool export、zpool unmount只在池级别工作。我需要的东西与文件系统的工作水平。另外,zpool export或unmount命令我们无法访问池,这与其他文件系统冻结方法(如fsfreeze)不同