linux – 从一个新硬盘重新刷新SW RAID1和一个坏块的旧硬盘

我有一个SW RAID1,我刚用新硬盘取代了/ dev / sda,因为旧硬盘失败了.
现在,在尝试重新创建RAID阵列时,我发现“好”的HDD(/ dev / sdb)有坏块,阻止mdadm重新同步阵列.

虽然我可以进行备份,但也要替换/ dev / sdb并完全重新安装服务器我想知道是否有任何方法可以“欺骗”mdadm重新同步RAID阵列然后用新硬盘替换/ dev / sdb .
据我所知,坏块位于/ dev / sdb的未使用区域,仅在尝试重新创建RAID阵列时使用.

解决方法

您能否验证磁盘上受影响的块和底层坏扇区是否重新分配到“备用扇区”区域?写操作失败时,应重新分配坏扇区.使用smartctl验证它:
smartctl -a /dev/sdb | grep -i reallocated

最后一列应包含若干总重新分配的扇区.如果没有尝试读取坏扇区:

hdparm –-read-sector XXXXXXXX /dev/sdb

它应该返回一个I / O错误,否则我建议跳过下一节.

错误意味着该部门尚未重新分配.因此,您可以尝试通过编写来强制重新分配它.请记住,在此步骤之后存储在此扇区中的任何数据都将丢失!!!

hdparm –-write-sector XXXXXXXX --yes-i-kNow-what-i-am-doing /dev/sdb

顺便说一下,扇区号XXXXXXXX应该可以从内核消息(dmesg命令或/ var / log / messages)获得.由于在重新同步期间存在坏块,因此应该有一些类似于以下内容的相关消息:

... end_request: I/O error,dev sdb,sector 1261071601

然后,尝试再次使用smartctl验证它.柜台增加了吗?如果是这样,尝试用hdparm读取它.现在,它应该没有任何错误地读取它,因为它应该被重新分配.完成.

最后,您可以继续使用mdadm并将磁盘添加到降级镜像中.

相关文章

在Linux上编写运行C语言程序,经常会遇到程序崩溃、卡死等异...
git使用小结很多人可能和我一样,起初对git是一无所知的。我...
1. 操作系统环境、安装包准备 宿主机:Max OSX 10.10.5 虚拟...
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试...
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核...
一、Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个...