我有一个 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
而且,由于这尚未经过测试,因此存在增量重新同步操作不准确的风险。“活动”池和/或脱机磁盘可能会遇到问题。如果这种情况发生在我身上,我会更新,但现在将尝试这种方法。
2015 年 10 月 15 日更新:今天我发现了这个zpool split
命令,它从现有池中分离出一个新池(具有新名称)。 比和split
干净得多,因为两个池都可以存在于同一系统上(并分别进行清理)。新池在从系统中拔出之前也可以干净地(正确地)清理。offline
detach
export[ed]
(我的原始帖子如下。)
警告! 此页面上的各种评论暗示它可以(或可能)连接到zpool detach
驱动器,然后以某种方式重新连接驱动器并访问其包含的数据。
但是,根据此线程(以及我自己的实验),
zpool detach
从分离的驱动器中删除“池信息”。换句话说, adetach
就像对驱动器进行快速重新格式化。之后,detach
驱动器上可能仍存在大量数据,但实际上不可能重新安装驱动器并将数据视为可用的文件系统。
因此,在我看来,这detach
比 更具破坏性destroy
,因为我相信zpool import
可以恢复被破坏的水池!
Adetach
不是a ,也不是a,也不是a 。umount
zpool export
zpool offline
在我的实验中,如果我首先使用zpool offline
一个设备,然后使用zpool detach
同一设备,则池中的其余部分会忘记该设备曾经存在过。但是,由于设备本身早在offline[d]
之前detach[ed]
,因此设备本身永远不会收到 的通知detach
。因此,设备本身仍然具有其池信息,并且可以移动到另一个系统,然后import[ed]
(处于降级状态)。
为了提供额外的保护,您甚至可以在命令之后、发出命令之前detach
物理拔掉设备。offline
detach
我希望使用这个offline
,然后detach
,然后import
处理来备份我的池。与原始海报一样,我计划使用四个驱动器,其中两个位于恒定镜像中,两个用于每月、轮换、异地(和离线)备份。在将其传输到异地之前,我将通过在单独的系统上导入和清理每个备份来验证它。与原始海报不同,我不介意每个月重写整个备份驱动器。事实上,我更喜欢完全重写,这样才能有新鲜的东西。
归档时间: |
|
查看次数: |
18984 次 |
最近记录: |