我对 FreeNas 和 RAID 系统还不熟悉。
我成功地用 FreeNAS 搭建了一个文件服务器,其中有 2 TB 的硬盘,用 ZFS 格式化。
现在我想通过添加另一个 1、2TB 的硬盘,将其设为 RAID 1。
我想问的是,这是否可行?在已安装和配置的 FreeNas 中添加另一个硬盘?
谢谢伊万
答案1
ZFS 不支持任何类型的“重塑”操作,因此您无法将现有驱动器转换为一mirror
对(ZFS 术语为 RAID1)。
然而,你能要做的就是正常地将新磁盘添加到池中(不是以 RAID 类型对的形式),但随后进行设置copies=2
,强制将文件存储在多个磁盘上以提供相同级别的数据保护。
zfs set copies=2 poolname
请注意,新的副本策略仅适用于新写入的数据;您需要通过重写(可能通过 then zfs send
)zfs recv
将额外的副本写入第二个磁盘。
答案2
我喜欢 Shane Madden 的方法,但还有另一种解决方案。Darren Moffat 的评论指向一个无效链接。
解决方案是通过zfs attach
。例如:
创建测试池:
root@test:~# zpool create storage scsi-36002248097081fa717c55d6b0d8cf10f
root@test:~# zpool status
pool: storage
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
storage ONLINE 0 0 0
scsi-36002248097081fa717c55d6b0d8cf10f ONLINE 0 0 0
errors: No known data errors
填写一些数据:
root@test:~# dd if=/dev/urandom of=/storage/data.txt bs=64M count=12
连接新的驱动器,请注意语法:您必须指定要连接到哪个驱动器:
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
如您所见,它根据您的需要创建了一个镜像(即 RAID1)。此过程还可用于向镜像添加更多驱动器。ZFS 重新同步后,您的所有数据都将冗余,而不仅仅是新写入的数据。