经过大量的修改和实验,我找到了一个解决方案,尽管折衷相当大。
首先,我必须排除的选项:
由于成本原因,无法选择拥有镜像池的第二台异地ZFS服务器。如果是一种选择,那么到目前为止,这将是最好的方法,它利用ZFS发送/接收将快照传送到远程池。
有第二个现场ZFS镜像池,我可以从中删除磁盘以带回家。这比第一个选项更可行,但我需要第二个池始终在现场拥有两个磁盘(或在单个现场磁盘上使用两个数据副本)。目前,我有四个磁盘,而服务器中没有足够的空间可容纳第五个磁盘。这将是一个公平的方法,但仍不理想。
使用ZFS附加和分离可将备份磁盘旋转进出镜像池。这很好用,但是每次添加磁盘时都必须执行完全重新同步。这花费了无法接受的时间,所以我不能依靠它。
我的解决方案与使用attach
和类似detach
,但是它使用online
和offline
。与完全重新同步相比,这具有执行增量重新同步的优势,但是缺点是池始终报告DEGRADED
状态(该池始终具有两个磁盘;旋转的异地磁盘offline
在远程存储中重新标记并重新同步然后进入联机状态时会被标记当他们在现场时)。
因此,快速回顾一下我的设置:
我有一台ZFS服务器和四个相同的磁盘。ZFS设置为使用镜像池。四个磁盘中的两个是该池的永久成员。另外两个磁盘旋转;一个总是在异地存储中,另一个是池中的一部分,可以随时使用。
需要轮换备份时:
我等待zfs scrub
完成以合理地确保备份磁盘没有错误
我zfs offline
的磁盘将被带走。离线后,我hdparm -Y /dev/id
将其旋转。一分钟后,我部分卸下了磁盘底座(刚好足以确保其断电),然后再等待一分钟,然后完全拉动驱动器以确保其停止旋转。磁盘装入防静电袋,然后放入保护盒,然后移到异地。
我带来了另一个异地磁盘。它安装在热交换托盘中并旋转。我zfs online
用来将磁盘还原到池中并启动部分重新同步以使其并发。
该系统保证在任何给定的时间我都有两个ONLINE
镜像磁盘和一个OFFLINE
远程磁盘(已清理)。第四个磁盘处于重新同步状态或处于联机状态,这样做的好处是,如果正在运行的驱动器发生故障,则该池可能仍与两个联机磁盘保持一致。
在过去的几周中,它一直运行良好,但是我仍然认为这是一种骇人听闻的方法。如果遇到任何重大问题,我都会跟进。
更新:使用此工具运行了几个月后,我发现在实际使用中,重新同步需要花费相同的时间进行分离/附加和脱机/在线。在我的测试中,我不认为自己正在运行清理,我的直觉是,如果驱动器离线进行清理,则需要完全重新启动。