通过临时驱动器将raidz1转换为raidz2

几个月前我创build了一个新的NAS服务器,并将其设置为RaidZ。 我正在重新考虑这个决定,并希望获得额外的驱动,并转移到RaidZ2。 在大家回复说ZFS不可能的情况下,我想指出,我知道这不是直接可能的。 我已经search了几天的文档,但是似乎没有一套如何手动执行此操作的说明。 我相信我需要:

  1. 将整个池移到一个足够容纳已用空间的驱动器上
  2. 推倒现有的游泳池。
  3. 在raidz2中使用额外的驱动器build立一个新的池
  4. 将数据移回池中。

这似乎不是太棘手,但我不熟悉ZFS或FreeBSD相信我成功实现了第1步。我也不完全确定第4步,但是可以重试,而第一步搞砸了玩得开心。 我的阅读表明,rsync是有效克隆驱动器的方法,但我想确保我所复制的内容与源代码完全相同 ,包括系统/隐藏文件,符号链接,监狱等等。操作系统是运行镜像闪存驱动器不会改变,理想情况下,他们甚至不会注意到在下次启动时有任何改变(例如,所有的监狱都像以前一样启动)。 复制/克隆池/驱动器是否也会移动分区信息? 将FreeNAS重新创build这些或将我需要手动操纵它们。

我正在运行FreeNAS 9.3,并在一个raidz池中安装了3x3TB硬盘。 我想最终在raidz2 4x3TB。 目前的池使用1.3TB的空间,我有一个外部的2TB驱动器临时存储。 如果数据丢失,这不是关键任务。

更新

实际问题:如何将池复制到临时驱动器,同时确保它是一个足够完整的副本推回到重新创build的zpool。 另外,如果不是简单的原始副本的反面,我又该如何推回来。

下面是我将如何处理它,纯粹使用FreeNAS GUI:

  • 为来自根数据集(例如卷x)的recursion快照设置定期快照任务
  • 使用临时驱动器创build一个简单的1磁盘条纹卷,例如,音量y。
  • build立到该驱动器的复制,x到y。
  • 在复制完成之前等待。
  • 为y的recursion快照设置定期快照任务。
  • 销毁并重新创buildx。
  • 设置从y到x的复制。
  • 在复制完成之前等待。
  • 消灭你。

免责声明:我没有testing过,以确保所有的监狱仍然工作,所以你可能想从其他地方得到确认,或只是准备重新监狱(或第一次复制完成后仔细检查y)。 对于具有所有历史快照信息的常规数据集,这可以顺利进行

您可以使用zfs send …方式来轻松“保存”文件系统中的所有内容。 包括但不限于隐藏文件,文件属性,扩展属性,zvols,快照等

实际上,您可以在备用驱动器上创build“副本”文件系统,安装它,甚至启动它,查看它是完整的,可行的和可引导的,然后继续销毁旧池。

但我更喜欢在备用驱动器上创buildUFS,并将ZFS保存到文件中。 你无法安装,以确认,但恕我直言,这是一个小小一点安全。

只要交叉手指,您的备用驱动器不会在此过程中死亡。