首先:我完全可以接受目前的情况,并且不是在寻找立即的解决方案,而是试图了解此约束的技术限制。
我主要在 Linux 上使用 ZFS,但我的理解是,所有 FOSS ZFS 开发现在都植根于 OpenZFS,因此任何/所有其变体的信息都值得赞赏。
仅当主池存储不包含顶级 raidz vdev、所有顶级 vdev 具有相同扇区大小并且加载所有加密数据集的密钥时,才能删除顶级 vdev。
我理解和/或可以猜测大多数这些限制的原因,但我并不真正理解为什么仅仅存在raidz vdev 就会阻止删除任何(甚至是镜像或非冗余)vdev。
我的理解/假设是,从池的角度来看,每个 vdev 充当“哑块设备”,实际的冗余/镜像发生在 vdev 级别(正如池级别没有冗余的重复警告所暗示的那样:所有vdev 级别必须存在冗余,单个 vdev 发生故障会导致整个池停机)。
在这种假设下,删除什么特定数据 vdev 并不重要,更不用说池中存在“坏”(raidz) vdev 。
显然,这种假设(或我想不到的其他假设)是错误的。有人可以启发我什么吗?
我唯一无法验证的猜测是,raidz vdevs 没有绝对原因阻止 vdev 删除,但是某些 raidz 特定操作和设备删除之间的某些交互根本没有实现/测试/至此已验证。