高级描述
因此,我目前有一个复杂的 ZFS 设置,并希望对其进行重组,重用一些现有的硬件。
我知道做这样的事情的推荐方法是备份所有数据,销毁旧池,创建新池并恢复数据,问题是如何最好地做到这一点
设置和细节
我当前的设置由 3×1TB 和 3×4TB 驱动器组成,按以下方式设置其中两个 4TB 驱动器分别格式化为一个 1TB 和一个 3TB 分区。
media_pool
是一个由 5×1TB 磁盘/分区组成的 raidz1 池(-> 4TB 可用,已用 3.26TB)three_t_pool
是由 2 个 3TB 分区组成的镜像(-> 3TB 可用,1.93TB 已使用)non_redundant
是一个仅包含一个 4TB 驱动器的池(已使用 1.07TB)
这些池中的每一个都只有一个跨越整个池的加密数据集。
media_pool/media_encrypted
,three_t_pool/backups
, 和non_redundant/nr_encrypted
。
我未来的设置将淘汰 1TB 驱动器并添加 12TB 驱动器,如下所示:
media_and_backups
一个 raidz1 池,由 3 个 4TB 驱动器和 12TB 驱动器的 4TB 分区组成((4-1)×4TB = 12TB 可用)non_redundant_foo
大驱动器的剩余 8TB。
以及加密数据集
media_and_backups/media_encrypted
、media_and_backups/backups
、 和non_redundant_foo/nr_encrypted
。
(尽管将媒体和备份数据集分开并不是必须的,因为这会使事情变得复杂)
现在我的迁移过程可能如下所示(所有 7 个驱动器都连接到同一台计算机):
- 在所需的 4 TB 和 8 TB 分区中格式化 12 TB 驱动器
- 将现有池/数据集的数据备份到8TB分区
- 销毁旧的三个池,创建
media_and_backups
池和相应的数据集(media_and_backups/media_encrypted
,media_and_backups/backups
),从备份中恢复它们 - [甚至可以选择将
nr_encrypted
数据移动到media_and_backups
,销毁 8TB 分区上的文件系统,在那里创建一个新池并将nr_encrypted
数据集恢复到那里]
但就像我上面提到的,我不确定的部分是备份和恢复进度
- 我能想到的一种简单方法是仅使用 rsync,为每个数据集创建一个文件夹,同步所有数据,创建我想要的池和数据集,然后 rsync 回这些数据集。
- 一个明显的缺点是数据将在备份时被解密并在恢复时重新加密
- 只是感觉不对,例如我如何识别传输中的数据损坏
zfs send
似乎zfs receive
是要走的路。但是...我实际上该怎么做呢?- 我阅读了ZFS send/recv full snapshot的答案,但我的设置和他们的设置之间存在一些关键差异:
- 他们直接在新服务器上创建新池我想首先存储备份,然后在同一服务器上恢复它
- 我有来自三个不同池的三个数据集,我想存储在同一个池中
- 还有关于可用存储的问题:8TB (= 7.28TiB) 应该足以容纳 3.26+1.93+1.07=6.26TiB 的已用数据,但当然 8TB 池无法托管 4+3+价值 4TB 的数据集
- 我阅读了ZFS send/recv full snapshot的答案,但我的设置和他们的设置之间存在一些关键差异:
- 因此,我认为我应该将
zfs send
当前数据集分别放入 8TB 池上的一个大文件(或以某种方式将其拆分为块),然后在完成后销毁旧池并创建新池,然后zfs recv
从文件到池
这是执行此操作的最佳方法,还是有更好/推荐的方法?或者使用zfs send
/的任何最佳实践zfs receive
。如果我这样做的话,有什么需要注意的地方吗?