zfsonlinux,raidz1:两个磁盘损坏:如何使用 dd/dd_rescue 并欺骗 zpool?

zfsonlinux,raidz1:两个磁盘损坏:如何使用 dd/dd_rescue 并欺骗 zpool?

我有 zfsonlinux (Centos 7) 和 raidz1。但我遇到了麻烦:两个磁盘都坏了。

第一个磁盘在 SMART 中出现 Raw_Read_Error_Rate 故障,并且出现 Reallocated_Sector_Ct 错误(磁盘已经没有可用扇区来重新定位数据)

第二块磁盘有Reallocated_Sector_Ct错误,但是仍然有备份扇区。

我已将第一个磁盘换成新磁盘,zfs 已开始重新同步。一开始速度约为 2MB/s,但一段时间后降至 20KB/s 甚至更低,并且几天内都保持很小!

还有更多错误:

Jul  9 06:14:09 shaggycat-desktop smartd[966]: Device: /dev/sdf [SAT], FAILED SMART self-check. BACK UP DATA NOW!
Jul  9 06:14:11 shaggycat-desktop smartd[966]: Device: /dev/sdf [SAT], 488 Currently unreadable (pending) sectors
Jul  9 06:14:11 shaggycat-desktop smartd[966]: Device: /dev/sdf [SAT], 107 Offline uncorrectable sectors
Jul  9 06:44:08 shaggycat-desktop smartd[966]: Device: /dev/sdf [SAT], FAILED SMART self-check. BACK UP DATA NOW!
Jul  9 06:44:12 shaggycat-desktop smartd[966]: Device: /dev/sdf [SAT], 488 Currently unreadable (pending) sectors
Jul  9 06:44:12 shaggycat-desktop smartd[966]: Device: /dev/sdf [SAT], 107 Offline uncorrectable sectors

重新启动和导入池没有帮助。

我可以使用 dd_rescue 将第二个故障磁盘复制到新磁盘并欺骗 zpool 吗?我如何欺骗它并使用新磁盘导入池?我使用 /dev/disk/by-id/ 来识别 zpool 中的磁盘。

  pool: tank                                                                                                                                                                                                         
 state: DEGRADED                                                                                                                                                                                                     
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 Sun Jul  5 15:16:17 2015                                                                                                                                                          
    59.2G scanned out of 1.70T at 81.3K/s, (scan is slow, no estimated time)                                                                                                                                         
    14.8G resilvered, 3.40% done                                                                                                                                                                                     
config:                                                                                                                                                                                                              

        NAME                                                  STATE     READ WRITE CKSUM                                                                                                                             
        tank                                                  DEGRADED     0     0     0                                                                                                                             
          raidz1-0                                            DEGRADED     0     0     0                                                                                                                             
            ata-Hitachi_HDS721010CLA332_JP2940HQ2VTTDH-part1  ONLINE       0     0     0                                                                                                                             
            replacing-1                                       DEGRADED     0     0     1                                                                                                                             
              4455585976361728304                             UNAVAIL      0     0     0  was /dev/disk/by-id/ata-Hitachi_HDS721010CLA332_JP2940HQ2VTZUH-part1                                                       
              ata-ST1000DM003-1ER162_W4Y1HJTP-part1           ONLINE       0     0     0  (resilvering)                                                                                                              
            ata-WDC_WD10EALS-00Z8A0_WD-WCATR1714802-part1     ONLINE       0     0     0                                                                                                                             
            ata-WDC_WD10EALS-00Z8A0_WD-WCATR1737637-part1     ONLINE       0     0     0      


zpool list
NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
tank  3.56T  1.70T  1.86T         -      -    47%  1.54x  DEGRADED  -

我使用这些软件版本:zfs-release-1-2.el7.centos.noarch libzfs2-0.6.4.1-1.el7.centos.x86_64 zfs-0.6.4.1-1.el7.centos.x86_64 zfs-dkms-0.6.4.1-1.el7.centos.noarch

答案1

编辑:我首先以为它是镜像池,而不是 raidz。

首先,zpool replace 应该可以正常工作。如果它因为坏掉的磁盘运行缓慢而变慢,您可以先将其脱机/分离,以便从其他磁盘重建数据,并且不会尝试从坏磁盘读取数据。但是多个磁盘故障并不是一件好事。

导出池、使用 ddrescue 然后导入也应该有效,只要此时旧的死磁盘已从机器中移除。导入通常会查看所有磁盘以查看有哪些池可以找到并导入。

而且,如果您有多个故障驱动器,同时更换它们也没什么问题,通常这样速度更快,因为这样只需重新镀银一次即可完成所有磁盘。当您更换在线磁盘时,它仍被用作读/写目标,直到更换完成。

相关内容