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系列的系统中使用。

以上就是所有替换ZFS数据盘的步骤,如果你觉得写的不错,请给我点个赞吧!