当我在我的 raidz 池中添加一个新设备时我犯了一个错误,认为 ZFS 应该自动执行它。
:~# zpool status
pool: data
state: ONLINE
scan: resilvered 78,3G in 2h4m with 0 errors on Tue May 10 18:12:31 2016
config:
NAME STATE READ WRITE CKSUM
data ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
c2t2d0 ONLINE 0 0 0
c2t3d0 ONLINE 0 0 0
c2t4d0 ONLINE 0 0 0
c2t5d0 ONLINE 0 0 0
c2t6d0 ONLINE 0 0 0
c2t7d0 ONLINE 0 0 0
c2t8d0 ONLINE 0 0 0
c2t9d0 ONLINE 0 0 0
c2t10d0 ONLINE 0 0 0
c2t11d0 ONLINE 0 0 0
c2t13d0 ONLINE 0 0 0
spares
c2t12d0 AVAIL
c2t14d0 AVAIL
Run Code Online (Sandbox Code Playgroud)
我在想 c2t13d0 不在 raidz 池中,是吗?如何从数据池中删除它?
感谢您的帮助。
你不能。它现在作为单驱动器 vdev 位于池中。无法从池中删除 vdev。
这就是坏消息。
更糟糕的消息是,您现在已经有效地获得了带有raidz2-0
vdev 和c2t13d0
vdev的 RAID-0 。这是不好的。这是双加不好。
您的选择是:
这两种选择都不好。从长远来看,备份/重新创建/恢复是正确的选择,但需要大量停机时间(避免这种情况的唯一方法是创建一个相同大小或更大的第二个池zfs send
)。
顺便说一句,解决冗余不足的方法之一是将镜像附加到c2t13d0
vdev。如果它们的大小相同,也许可以使用其中一个备件。
使用类似的东西:
zpool attach data c2t13d0 anotherdisk
Run Code Online (Sandbox Code Playgroud)
这远非理想,但使用镜像 vdev 条带化的 RAIDZ2 vdev 具有冗余(仍然令人厌恶,但不会吃掉您的数据),而使用单驱动器条带化的 RAIDZ2 没有任何可靠的冗余(您的某些数据将仅在单驱动器 vdev 上。这将始终成为您最有价值和不可替代的数据)。
它确实使第一个选项(“接受它”)的吸引力减少了很多……至少现在是这样。从长远来看,您会想要重建您的游泳池。
我无权访问 Solaris 手册页,但这是手册页的 ZFS On Linux 版本的相关摘录zpool
(我添加了粗体以强调)。Solaris 版本应该相同或非常相似:
zpool attach [-f] [-o property=value] pool device new_device
将 new_device 附加到现有 zpool 设备。现有设备不能是 raidz 配置的一部分。如果 device 当前不是镜像配置的一部分,则 device 会自动转换为 device 和 new_device 的双向镜像。如果设备是双向镜像的一部分,则附加 new_device 会创建一个三向镜像,依此类推。无论哪种情况,new_device 都会立即开始重新同步。
归档时间: |
|
查看次数: |
1644 次 |
最近记录: |