热删除镜像 vdev 磁盘的过程/效果

Log*_*gan 4 zfs truenas

我这里有两个基于常见设置的问题。快速免责声明:我正在使用 freenas,并且还没有完全消化 ZFS 术语和 freenas 屠夫在其 UI 中的 ZFS 术语。我将接受使用终端或 Freenas UI 的答案(两者都有奖励点;))。

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

  1. 物理移除其中一个磁盘然后将其放回去的正确步骤是什么?

  2. 可能是不明智的,我没有执行任何命令就删除了其中一个磁盘。我立即收到警报,音量已降级(预期)。在我将驱动器放回原处后,这种状态仍然存在(它似乎没有将该驱动器识别为已删除的驱动器 - 或者如果是,我也不知道如何重新连接它)。我重新启动了服务器,它现在显示该卷正常,但在“卷管理器”->“卷统计”下,其中一个驱动器的校验和列中有 182,但另一个驱动器没有(尽管我不知道事先是否存在该值) )。

    • 我应该如何处理这种情况?
    • 这会导致数据丢失吗?ZFS 是否应该从这种情况中恢复正常?
    • 如果它可能导致数据丢失/损坏/什么,我该如何检查并从中恢复?

最后,额外的奖励点是指向简洁的 ZFS 引物的链接,这些引物不是教科书,也不会深入研究 ZF 中无用的晦涩部分。:P

use*_*391 5

免责声明:我个人没有使用过 FreeNAS,所以有些答案可能不是规范的方法 - 请事先查阅手册。也就是说,它们是 Oracle 推荐的方式,因此其背后应该有一些道理。


  1. 这取决于您的目标:
    • 如果您想用替换驱动器替换有故障的驱动器,您可以在 FreeNAS Web UI 中执行此操作,或者使用zpool replace poolname olddevice newdevice.
    • 如果您想要从镜像 vdev 中永久删除磁盘(并将镜像缩减为基本镜像,在此过程中丢失所有冗余),您可以在 GUI 中或通过控制台执行此操作zpool detach poolname olddevice(用于zpool attach poolname olddevice newdevice重新附加)。
    • 如果您想要暂时将设备从活动池中取出而不删除或分离它,请使用 GUI 或从控制台使用zpool offline poolname olddevice. 如果对较大的数组进行故障排除,这很有用,我在这里只是为了完整性而写它。
    • 重新启动会导出所有池,然后导入它们。导入时,ZFS 检查所有磁盘是否都存在。zpool export poolname因此,您也可以执行以下操作zpool import poolname来实现相同的目的,而不是重新启动。您可能必须在插入后配置磁盘(这是标准 illumos 系统上的情况),然后再导入池。如果您不想关闭池,也可以移除故障设备,然后进行更换。这样您就没有停机时间,而是重新同步。我个人总是选择第一个解决方案,除了大型阵列,因为它更安全。
    • 请参阅下一个问题。
    • 如果校验和仅在一个驱动器上,那就没问题。用于zpool clear poolname删除错误消息。如果两个驱动器上都有校验和错误,则取决于具体情况。通常,ZFS 会告诉您文件是否受到影响以及哪些文件受到影响。

答案加分: