AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 531170
Accepted
Alex Flo
Alex Flo
Asked: 2013-08-16 01:24:21 +0800 CST2013-08-16 01:24:21 +0800 CST 2013-08-16 01:24:21 +0800 CST

从新 HDD 和带有坏块的旧 HDD 重新制作 SW RAID1

  • 772

我有一个 SW RAID1,我刚刚用新的硬盘替换了 /dev/sda,因为旧硬盘出现故障。
现在,在尝试重新创建 RAID 阵列时,我发现“好”硬盘 (/dev/sdb) 有坏块,阻止 mdadm 重新同步阵列。

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

linux
  • 2 2 个回答
  • 1438 Views

2 个回答

  • Voted
  1. user208990
    2014-02-12T11:22:36+08:002014-02-12T11:22:36+08:00

    更好的策略是使用 ddrescue 将坏驱动器复制到好驱动器。该工具会努力读取整个驱动器,重新读取并“修剪”不可读的块。它还会生成日志,用于保存进度,但最终会包含坏块列表。然后,您可以解析此列表并写入每个坏块,以查看驱动器是否能够在重新映射它们时存活下来。如果是这样,您可以 mdadm --zero-superblock 然后将其作为新驱动器添加到降级的 raid1 中。顺便说一句,对于今天的大容量驱动器,不时产生“软”坏块是很正常的。只需每周进行一次突袭检查,就可以了,除非同一个块在两个驱动器上无法读取,这是不太可能的。

    • 4
  2. Best Answer
    dsmsk80
    2013-08-16T05:19:55+08:002013-08-16T05:19:55+08:00

    您能否验证磁盘上受影响的块和底层坏扇区是否重新分配到“备用扇区”区域?当写操作失败时,应该重新分配坏扇区。使用 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
    

    顺便说一句,应该可以从内核消息(dmesg 命令或/var/log/messages)中获取扇区号XXXXXXXX 。由于您在重新同步期间遇到了坏块,因此应该有一些类似的相关消息:

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

    然后,尝试再次使用 smartctl 进行验证。计数器增加了吗?如果是这样,请尝试使用 hdparm 阅读它。现在,它应该没有任何错误地读取它,因为它应该被重新分配。完毕。

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

    • 3

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve