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
    • 最新
    • 标签
主页 / unix / 问题 / 779483
Accepted
quixotrykd
quixotrykd
Asked: 2024-07-04 13:40:57 +0800 CST2024-07-04 13:40:57 +0800 CST 2024-07-04 13:40:57 +0800 CST

Raid 0+1 失败案例 VS. Raid 1+0

  • 772

我听说 RAID 1+0 比 RAID 0+1 更易于发生故障,因为辅助驱动器故障比 RAID 1+0 更容易导致 RAID 0+1 中的数据丢失。

RAID 0+1 示例

在上图中,如果“磁盘 1”发生故障,其他哪些磁盘故障会导致数据丢失?我读到的内容似乎表明“组 2”中任何驱动器的丢失都会导致数据丢失,但我不清楚这背后的原因。如果我们丢失了“磁盘 5”,为什么会导致数据丢失?在我看来,有足够的信息来恢复完整的数据状态 - 例如,将“磁盘 4”+“磁盘 2”+“磁盘 3”组合起来,应该具有继续正常运行而不会丢失数据所需的所有信息。

那么为什么“磁盘1”和“磁盘5”丢失会导致数据丢失呢?

提前致谢!

hard-disk
  • 1 1 个回答
  • 437 Views

1 个回答

  • Voted
  1. Best Answer
    telcoM
    2024-07-04T17:16:29+08:002024-07-04T17:16:29+08:00

    这取决于 RAID 层的实施细节。

    例如,如果您使用硬件 RAID 进行条带化,然后使用软件 RAID 来镜像条带组,那么执行镜像的软件 RAID 将看不到单个磁盘,而只能看到代表每个条带组的硬件 RAID 生成的两个设备。

    在这样的配置中,当磁盘 1 发生故障时,硬件 RAID 控制器将在组 1 设备上返回错误。然后,顶层的软件 RAID 必须将整个组 1视为发生故障,因为它看不到单个磁盘。

    如果磁盘 5 随后发生故障,则第 2 组设备也将开始返回错误,对于执行镜像的软件 RAID 而言,这是双重故障 - 数据丢失。游戏结束。

    如果您尝试使用磁盘 4、2 和 3 进行恢复,则会出现这样的问题:磁盘 1 发生故障后,软件 RAID 将停止更新整个组 1。因此,除非两个磁盘同时发生故障,否则磁盘 4 的数据将比磁盘 2 和 3 的数据更新……这种情况不太可能发生。而且由于条带化,任何长度超过一个条带的连续数据都有可能同时合并“较旧”和“较新”条带集的部分数据,从而导致损坏混乱。

    如果条带化和镜像都由同一个RAID 实现完成,即,要么只是一个可以执行“RAID 10”或“RAID 0+1”的硬件 RAID 控制器,要么只是一个可以执行相同操作的软件 RAID 实现,那么该实现可能足够智能,可以在磁盘 1 发生故障后继续更新磁盘 2 和 3,即使第 1 组条带集不再完整。如果磁盘 5 也发生故障,控制器可能足够智能,能够看到磁盘 4 + 2 + 3 一起形成一个有效集,并继续运行。

    每当相同的 RAID 实现处理条带化和镜像时,现代实现通常会按照您想象的方式工作 - 它们跟踪每组条带的每个副本的健康状况,并且只要可以找到完整的条带集就会继续工作。

    但是,这并不是您应该盲目信任的事情:您应该提前仔细研究您的 RAID 实现,以便当(而不是“如果”!)磁盘开始出现故障时,您就会知道您的 RAID 实现能做什么和不能做什么。

    如果您将不同的 RAID 实现层叠在一起(例如,如果您使用操作系统的内置软件 RAID 在位于不同建筑物中的两个大型 SAN 存储系统之间镜像数据以实现容灾),那么您应该仔细考虑故障场景 -在设计阶段,甚至在开始实施设置之前。

    • 7

相关问题

  • 使用 hdparm (APM, Suspend) 的硬盘空闲设置

  • 在 MS-Windows 7 下对外部磁盘进行分区时,ntfs 的版本是什么

  • 我可以远程判断我是否有空闲的 SATA 端口

  • 将局域网硬盘挂载到 linux fedora

  • 以 100% 的利用率捕捉 /dev/loop -- 没有可用空间

Sidebar

Stats

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

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve