![ZFS 作为带有可移动驱动器的 JBOD 吗?](https://linux22.com/image/1477291/ZFS%20%E4%BD%9C%E4%B8%BA%E5%B8%A6%E6%9C%89%E5%8F%AF%E7%A7%BB%E5%8A%A8%E9%A9%B1%E5%8A%A8%E5%99%A8%E7%9A%84%20JBOD%20%E5%90%97%EF%BC%9F.png)
是否可以设置一个 ZFS 池,使其看起来像 JBOD,但驱动器可以从该池中移除?
我读到过,使用通常的 ZFS 配置,这是不可能的。
在我看来,如果已使用的空间足够小,那么就可以对池中的某个驱动器进行重新排序,直到池中的某个驱动器基本未使用。一旦发生这种情况,就可以将该驱动器从池中移除而不会造成混乱。(似乎甚至可以在不使池不可用的情况下执行此操作。)
是否有允许这样做的配置?也许可以使用不止 ZFS 的配置?
答案1
至少Linux 上的 ZFS,根据问题的标签,这可能就是你指的不是目前支持您建议的用法。
正如我在其他地方讨论过的那样,ZFS 不支持从条带集中删除组成设备。
池本身是一个或多个 vdev 的条带集,其中 vdev 可以是单个设备、镜像集或 raidzN 冗余集。(在您描述 (JBOD) 的情况下,vdev 将由单个底层存储设备组成。)为简洁起见,zpool status
如果池中只有一个 vdev,则在和类似命令的输出中省略 vdev 级别,但它仍然存在,例如可以使用 ZFS 数据结构转储器/调试器进行查看zdb
。
这样做的效果是,一旦将 vdev 添加到池中,就无法将其删除,除非从头开始重新创建池并将数据从旧池传输到新池。
ZFS“块指针重写”的主题(在 ZFS 中,这是您想要执行的操作所必需的)时常出现,我思考它计划在“某个时候”实施,但还有许多问题需要优先解决和相当容易实现。
请记住,ZFS 的设计和实现是企业文件系统。因为在企业环境中,按照你的建议去做会被视为近乎疯狂的事情,我认为你想做的事情不太可能实现正式支持;但它可能会在未来某个时候成为可能的要做的,就像使用已删除的稀疏文件作为后备设备一样,是一种不太受支持但仍经常被建议的逐步增加 raidzN vdevs 有效冗余级别的方法。