有一个包含 raidz1 的 ZFS 池。该池是在三个 2TB 驱动器上使用整个磁盘和 3TB 驱动器上的 2TB 分区创建的。
重新配置池以使用整个 3TB 磁盘而不是分区的推荐流程是什么?
我阅读了很多 zfs 手册(man zpool),但我不确定应该使用哪些命令:附加/分离或在线/离线,以及是否应该导出池。
因为数组几乎充满了数据,所以我不喜欢盲目地玩弄它。
另外,我多次运行了 zpool scrub,并且没有任何错误地完成。
答案1
我设法解决了这个问题。其实这并不难。步骤如下:
- 彻底清洁泳池
zpool scrub POOL
- 使用以下命令使磁盘分区脱机
zpool offline POOL PARTITIN
- 使用 检查状态
zpool status POOL
,它应该处于降级但正常工作的状态。 - 这是最棘手的部分。您必须让 zpool 忘记该分区曾经位于该池中。我只是使用 dd 在磁盘开头覆盖了几个 Mb,如下所示:
dd if=/dev/urandom of=DISK bs=1M count=10
- 最后一步是使用替换命令,如下所示:
zpool replace POOL OLD-PARTITION NEW-WHOLE-DISK
- 当然,上一步将启动重新镀银。完成之后,我又进行了一次清理,以确保万无一失 :)
答案2
只需运行 zpool replace POOL OLD-PARTITION NEW-WHOLE-DISK。无需通过移除(逻辑上或物理上)设备来危及阵列。
现在甚至连 Microsoft Storage Spaces 也放弃了故意危害数据的想法,使阵列陷入降级状态。