ZFS在使用中如何更换损坏的磁盘
遇到的问题
我现在基于deepin系统下的10块硬盘创建了一个ZFS的raidz2的存储卷。理论上允许最多同时两块硬盘发生损坏而不影响数据。假设现在我们有一块硬盘已经发生损坏,我们此刻又安装了一块新硬盘。接下来我们该如何把损坏的这块硬盘替换成新硬盘呢?接下来是详细步骤
步骤一
查看当前ZFS存储卷状态
sudo zpool status mypool
会看到出现以下错误:
pool: mypool
state: DEGRADED
status: One or more devices are faulted in response to persistent errors.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Replace the faulted devices, and the pool will be restored to a
fully redundant state.
scan: scrub repaired 0B in 0 days 00:00:01 with 0 errors on Tue Jul 17 10:00:00 2024
config:
NAME STATE READ WRITE CKSUM
mypool DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
/dev/sda ONLINE 0 0 0
/dev/sdb ONLINE 0 0 0
/dev/sdc FAULTED 0 0 0 too many errors
/dev/sdd ONLINE 0 0 0
/dev/sde ONLINE 0 0 0
/dev/sdf ONLINE 0 0 0
/dev/sdg ONLINE 0 0 0
/dev/sdh ONLINE 0 0 0
/dev/sdi ONLINE 0 0 0
/dev/sdj ONLINE 0 0 0
步骤二
更换故障磁盘到新磁盘,由步骤一可以看出发生错误的硬盘是sdc。所以我们需要更换sdc硬盘
sudo zpool replace mypool /dev/sdc /dev/newdisk1
步骤三
等待硬盘数据替换完成,并监控更换进度
watch sudo zpool status mypool
# 等待所有的磁盘都是ONLINE,暨替换完成
步骤四
替换完成后,我们需要检查并修复整个存储卷的数据完整性
sudo zpool scrub mypool
#上述命令输入后,控制台不会返回任何输出
步骤五
监控步骤四的数据完整性校验和修复进度
watch sudo zpool status mypool
# 当修复完成后,硬盘替换就算完成了
总结
ZFS在数据盘raid方面的支持做的很棒。单个磁盘读写速度只有几百M,但当这些磁盘组成ZFS数据卷的时候,往数据卷中写入数据的速度能达到3G以上。这大大提高了存储的速度和空间。而且在数据安全性方面也拥有一定的保障。唯一的缺点就是只能在linux系列的系统中使用。