编辑:(参见本问题的结尾)经过进一步挖掘,这似乎是系统 USB 问题,而不是导致驱动器被踢出的 ZFS。我将这个问题留给后人,因为我仍然好奇是否有答案,但与此同时,如果有人对 FreeBSD USB 设备被强制移除有任何建议,我洗耳恭听!
请带着幽默感来看待这个问题,不要仅仅因为这是一个坏主意就投反对票,有时候(非常稀有!)用户完全可以接受数据丢失并且只需要帮助装上他们的枪!毕竟,ZFS 除了数据完整性之外还提供了其他好处,而且我仍然宁愿将它用于我的坏驱动器而不是ext4
。如果您是那种带着狡黠的微笑阅读本文并记得他们正是因为这样做而丢失数据的系统管理员,那么这个问题适合您。
我在一台非关键服务器上运行一个包含一些 USB 驱动器的池,该池中存储着非关键数据,我不在乎它是否损坏。我试图设置它,以便 ZFS 在 USB 驱动器遇到校验和错误时不会强制删除它们(就像 ext4 或 FAT 处理这种情况的方式一样,不注意/关心数据丢失)。
免责声明:
对于通过 Google 登陆此处并试图修复其 ZFS 池的读者,请不要尝试此问题或其答案中描述的任何操作,否则您将丢失数据!
因为 ZFS 警察喜欢对使用 USB 驱动器或任何其他非标准设置的人大喊大叫:为了便于讨论,假设这是我在 128 个冗余 SSD 上的 32 个其他物理远程位置备份的猫视频。我完全承认我会输如果我尝试这样做,我的 100% 数据将无法恢复在这个池中(多次)。我把这个问题引向那些对以下问题感到好奇的人:多么糟糕ZFS 能够运行的环境(那些喜欢将系统推向极限甚至超越极限的人,只是为了好玩)。
因此设置如下:
- 运行 FreeNAS-11.2-U5 的 HP EliteDesk 服务器
- 2 个 WD Elements 8TB 硬盘通过 USB 3.0 连接
- 不可靠的电源环境,服务器和驱动器经常在没有任何警告的情况下强制重启/断开连接。(是的,我有一个 UPS,不,我不想使用它,我想破坏这个服务器,你没读过免责声明吗?
答案1
我自己使用 USB 外壳是自找麻烦,而且由于 FreeNAS(好吧,FreeBSD)对上述外壳没有正确实现 SCSI 协议(出于某种原因几乎没有一个能做到)感到愤怒,所以我改用 Linux(使用 ZoL)。尽管驱动器没有定期断开连接(就 dmesg 所显示而言),但第一个驱动器报告读取错误和校验和错误,而且成批报告,以至于它将一个(连接到同一接口的四个驱动器中)踢出池。
我最终将 zfs_checksum_events_per_second 从 20 调整为 0,以便清理可以完成而不会受到惊吓。
我无法确定 BSD 方面是否存在任何会启动驱动器的东西,但 OP 提到是实际的 USB 接口放弃了。