是否可以在不需要完全重新同步的情况下分离和重新附加 ZFS 磁盘?

STW*_*STW 10 backup zfs zpool

我有一个 ZFS 镜像池,总共有四个驱动器。其中两个驱动器旨在用于轮换异地备份。我的期望是,在初始重新同步之后,我可以detach和以后attach的磁盘只执行增量重新同步——但是在测试中,它似乎执行完全重新同步,无论附加的磁盘是否已经包含几乎所有池内容。

使用offline/online方法会给我带来仅更新磁盘而不是完全重建磁盘的理想结果吗?或者,要按预期完成这项工作,我是否需要做一些完全不同的事情——例如将每个备份磁盘用作 1 个磁盘池,并send在需要更新时为其添加最新快照?

eww*_*ite 14

不要走破坏 ZFS 阵列以在异地“旋转”磁盘的道路。如您所见,重建时间很长,重新同步过程将读取/验证数据集的使用大小。

如果您有能力,快照和将数据发送到远程系统是一种干净、非侵入性的方法。我想您可以完成拥有专用单磁盘池、复制到它以及 zpool 导出/导入的过程……但这不是很优雅。


STW*_*STW 12

经过进一步的实验,我找到了一个公平的解决方案,但是它有一个重要的权衡。已被offline删除但未分离的磁盘稍后可以仅通过增量重新同步操作重新联机(“当设备联机时,已写入池的任何数据都将与新可用的设备重新同步。 ”)。在我的测试中,这使 3 磁盘镜像的重新同步时间从 28 小时缩短到 30 多分钟,其中大约有 40GB 的数据增量。

权衡是任何具有脱机磁盘的池都将被标记为降级。如果仍然有至少两个联机磁盘(在镜像池中),这实际上是一个警告——完整性和冗余保持不变。

正如其他人提到的,这种整体方法远非理想 - 将快照发送到远程池会更合适,但在我的情况下是不可行的。

总而言之,如果您需要从池中删除磁盘,然后在不需要完全重新同步的情况下将其添加回来,那么我建议的方法是:

  • 使池中的磁盘脱机: zpool offline pool disk
  • 降低驱动器的转速(如果要物理拉动): hdparm -Y /dev/thedisk
  • 在驱动器脱机的情况下使池处于降级状态
  • 将磁盘添加回池: zpool online pool disk

而且,由于这尚未经过测试,因此存在增量重新同步操作不准确的风险。“活动”池和/或脱机磁盘可能会遇到问题。如果这种情况发生在我身上,我会更新,但现在将尝试这种方法。

  • 只是一个快速更新:在过去的一年中,这种方法运作良好。异地备份的每月恢复测试成功且一致。旋转阵列(而不是单个磁盘)会更好地在异地复制中提供一定程度的冗余,如果可能的话,我建议这样做。总体而言,这仍然是一种骇人听闻的方法,确实会带来一些风险,但为我们的数据提供了相当安全且廉价的异地备份。 (3认同)

mpb*_*mpb 6

2015 年 10 月 15 日更新:今天我发现了这个zpool split命令,它从现有池中分离出一个新池(具有新名称)。 比和split干净得多,因为两个池都可以存在于同一系统上(并分别进行清理)。新池在从系统中拔出之前也可以干净地(正确地)清理。offlinedetachexport[ed]

(我的原始帖子如下。)

警告! 此页面上的各种评论暗示它可以(或可能)连接到zpool detach驱动器,然后以某种方式重新连接驱动器并访问其包含的数据。

但是,根据此线程(以及我自己的实验), zpool detach从分离的驱动器中删除“池信息”。换句话说, adetach就像对驱动器进行快速重新格式化。之后,detach驱动器上可能仍存在大量数据,但实际上不可能重新安装驱动器并将数据视为可用的文件系统。

因此,在我看来,这detach比 更具破坏性destroy,因为我相信zpool import可以恢复被破坏的水池!

Adetach不是a ,也不是a,也不a 。umountzpool exportzpool offline

在我的实验中,如果我首先使用zpool offline一个设备,然后使用zpool detach同一设备,则池中的其余部分会忘记该设备曾经存在过。但是,由于设备本身早在offline[d]之前detach[ed],因此设备本身永远不会收到 的通知detach。因此,设备本身仍然具有其池信息,并且可以移动到另一个系统,然后import[ed](处于降级状态)。

为了提供额外的保护,您甚至可以在命令之后、发出命令之前detach物理拔掉设备。offlinedetach

我希望使用这个offline,然后detach,然后import处理来备份我的池。与原始海报一样,我计划使用四个驱动器,其中两个位于恒定镜像中,两个用于每月、轮换、异地(和离线)备份。在将其传输到异地之前,我将通过在单独的系统上导入和清理每个备份来验证它。与原始海报不同,我不介意每个月重写整个备份驱动器。事实上,我更喜欢完全重写,这样才能有新鲜的东西。