过程/影响热删除镜像的vdev磁盘

我在这里根据一个共同的设置有两个问题。 一个快速免责声明:我使用freenas,并没有完全消化ZFS术语和freenas屠夫ZFS术语在他们的UI无论如何。 我会接受使用terminal或Freenas用户界面(这两个奖金积分)的答案)。

我有一个卷(zpool?),带有一个由两个3TB磁盘组成的镜像vdev。

  1. 物理删除其中一个磁盘并将其放回的正确过程是什么?

  2. 可能不明智的是,我删除了其中一个磁盘,而没有执行任何命令。 我立即被告知,这个数量已经减less(预期)。 这个状态在我把驱动器放回去之后仍然存在(它似乎没有将驱动器识别为已卸下的驱动器,或者如果它确实不知道如何重新连接它)。 我重新启动了服务器,现在显示的卷是健康的,但在Volume Manager-> Volume Stats下,其中一个驱动器的校验和列中有182个,但是没有另一个(尽pipe我不知道是否在那里)。

    • 我应该怎样处理这个情况呢?
    • 这可能导致数据丢失或ZFS从这种情况恢复良好吗?
    • 如果它可能导致数据丢失/腐败/ whathaveyou,我该如何检查和恢复呢?

最后,额外的奖励点链接到简洁的ZFS引子,而不是教科书,并没有深入无用地模糊ZF的部分。 :P

免责声明:我没有亲自使用FreeNAS,所以有些答案可能不是规范的方式 – 请参考手册。 也就是说,这是Oracle推荐它的方式,所以应该有一些背后的真相。


  1. 这取决于你的目标:
    • 如果要用replacereplace出现故障的驱动器 ,可以在FreeNAS Web UI中执行,也可以从具有zpool replace poolname olddevice newdevice的控制台zpool replace poolname olddevice newdevice
    • 如果你想永久地从镜像vdev中删除一个磁盘 (并且将镜像减less到基本的,在进程中丢失所有的冗余),你可以在GUI中或者从控制台使用zpool detach poolname olddevice (使用zpool attach poolname olddevice newdevice重新附上)。
    • 如果要暂时将设备从活动池中移出而不移除或分离 ,请使用GUI或从控制台使用zpool offline poolname olddevice 。 如果对更大的数组进行故障诊断,这是非常有用的,我只是在这里写完整的。
    • 重新启动导出所有池,然后导入它们。 在导入时,ZFS检查是否存在所有磁盘。 因此,而不是重新启动,您也可以通过zpool import poolname来实现相同的zpool export poolname 。 在导入池之前,可能需要在插入后configuration磁盘(在标准光源系统上是这种情况)。 如果您不想取下水池,也可以取出故障设备,然后将其更换。 这样你就没有停机时间,但重新同步。 我个人总是select第一个解决scheme,除了大型arrays,因为它更安全。
    • 看下一个问题。
    • 如果校验和只在一个驱动器上,那么你没事。 使用zpool clear poolname删除错误消息。 如果两个驱动器上的校验和错误取决于具体的情况。 通常ZFS会告诉你是否和什么文件受到影响。

奖励积分回答:

  • Oracle帮助和文档页面,如上所链接
  • man zpool man zfsman /usr/bin/chmod用于zpool,文件系统和ACLconfiguration。 他们也可以从Oracle在线获得,他们非常好。 事实上,你几乎不需要别的东西,因为它们也有很多现实世界的例子(比GNU manpages好得多)。
  • Solaris最佳实践指南
  • FreeNAS最差的做法(避免陷阱)
  • Nex7的东西没有人告诉你关于ZFS
  • 康斯坦丁·冈萨雷斯的博客
  • ZFS备忘录与紧凑的forms最有用的命令