root@test:~# zpool attach storage scsi-36002248097081fa717c55d6b0d8cf10f scsi-36002248027420d0aa88109aea4d03c5b
root@test:~# zpool status
pool: storage
state: ONLINE
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scan: resilver in progress since Mon Jul 29 14:49:20 2019
34.6M scanned out of 385M at 3.15M/s, 0h1m to go
30.5M resilvered, 8.98% done
config:
NAME STATE READ WRITE CKSUM
storage ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
scsi-36002248097081fa717c55d6b0d8cf10f ONLINE 0 0 0
scsi-36002248027420d0aa88109aea4d03c5b ONLINE 0 0 0 (resilvering)
errors: No known data errors
我喜欢 Shane Madden 的方法,但还有另一种解决方案。Darren Moffat 的评论指向一个死链接。
解决方案是通过
zfs attach
. 例如:创建测试池:
填写一些数据:
附加新驱动器,注意语法:您必须指定要附加到哪个驱动器:
如您所见,它会根据需要创建一个镜像(即 RAID1)。此过程也可用于向镜像添加更多驱动器。ZFS 重新同步后,您的所有数据都将是冗余的,而不仅仅是新写入的数据。
ZFS 不支持任何类型的“重塑”操作,因此您不能使用现有驱动器并将其转换成一
mirror
对(RAID1 的 ZFS 术语)。但是,您可以做的是将新磁盘正常添加到池中(不是在 RAID 类型对中),然后设置
copies=2
,强制文件存储在多个磁盘上以提供相同级别的数据保护。请注意,新副本策略仅适用于新写入的数据;您需要通过重写(可能通过
zfs send
thenzfs recv
)将额外的副本写入第二个磁盘。