我有 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 然后导入也应该有效,只要此时旧的死磁盘已从机器中移除。导入通常会查看所有磁盘以查看有哪些池可以找到并导入。
而且,如果您有多个故障驱动器,同时更换它们也没什么问题,通常这样速度更快,因为这样只需重新镀银一次即可完成所有磁盘。当您更换在线磁盘时,它仍被用作读/写目标,直到更换完成。