将 USB 外部驱动器添加到 Linux RAID10 阵列的智慧

将 USB 外部驱动器添加到 Linux RAID10 阵列的智慧

我有一个 SAN 系统,其中有 10 个驱动器插槽,并设置了软件 RAID10,所有 md0-5 都添加到单个卷组中。插槽 10 中的 SATA 端口最近出现故障,无法接受我们放入其中的任何驱动器。我非常担心驱动器 9 不进行镜像。我建议的解决方案是将一个 USB 外部驱动器(大小和制造商与驱动器 #9 匹配)添加到服务器,并将其指定为 #9 的 RAID1 伙伴。我意识到 USB 会比 SATA 慢得多,但我更关心数据保护而不是驱动器速度。

有人发现该计划存在任何问题吗(性能除外)?

cat /proc/mdstat 个性:[raid1] md4:活动 raid1 sdj1[1] 976759936 块[2/1] [U_]

md3 : 活动 raid1 sdc1[1] sda1[0] 976759936 个块 [2/2] [UU]

md2:活动 raid1 sdh1[1] sdg1[0] 976759936 个块[2/2] [UU]

md4: 活动 raid1 sdi1[0] sde1[1] 976759936 个块 [2/2] [UU]

md0: 活动 raid1 sdf1[0] sdb1[1] 976759936 块 [2/2] [UU]

答案1

RAID10 是 RAID1 阵列的 RAID0,最终只会得到一个卷,因此您将有一个物理卷提供给 LVM。如下所示:

            LV1        LV2              
             \__________\___________....
                            |
                           VG
                            |
                           PV
                            |
     ______________________MD5________________________
    /             /           |          \            \
  _MD0_        _MD1_        _MD2_       _MD3_        _MD4_        
 /     \      /     \      /     \     /     \      /     \
D01   D02    D03   D04    D05   D06   D07   D08    D09   D10

您描述的“将所有 md0-5 添加到单个卷组”听起来像是 5 个单独的 RAID1(或 RAID10 - RAID10 驱动程序本质上充当两个驱动器阵列的 RAID1)阵列,您已将其分别添加到 LVM,因此您有一个由 5 个物理卷组成的卷组。如下所示:

            LV1        LV2              
             \__________\___________....
                            |
     ______________________VG_________________________
    /             /           |          \            \
   PV1          PV2          PV3         PV4          PV5
    |            |            |           |            |
  _MD0_        _MD1_        _MD2_       _MD3_        _MD4_        
 /     \      /     \      /     \     /     \      /     \
D01   D02    D03   D04    D05   D06   D07   D08    D09   D10

(这实际上不是 RAID10(RAID-1-then-0)而是 RAID-1-then-JBOD)

是这样吗?

如果是这样,那么您可以从卷组中删除 PV5,假设系统中总共有足够的可用空间,并且文件系统支持在需要时调整大小(即使用 resize2fs 调整 et2/3/4):

  1. 减少文件系统及其包含的逻辑卷,直到卷组中至少有足够的可用空间来填充 PV5,除非卷组中已有足够的可用空间。
  2. 使用将pvmoveLVM 分配给该物理卷的所有块移动到其他卷
  3. (可选)用于vgreduce从卷组中删除该 PV5

现在损坏的阵列不再是 LVM 设置的一部分。修复问题后,您可以将其重新添加,这样 RAID1 对就不会再以降级状态运行。

实际上回答你的问题......

除了您已经发现的性能问题以及 USB 驱动器意外断开连接的可能性(如果托管 SAN 的机器安全地避开了人类和其他干扰,则不太可能出现这种情况)之外,我认为将您的磁盘 10 替换为通过 USB 连接的磁盘没有任何问题。

如果托管 SAN 的机器有备用的 PCI 或 PCI-E 插槽,我建议采用这种方式,添加一个额外的 SATA 控制器来挂接驱动器。如果您的控制器提供五个端口(或可以安装两张总共提供五个或更多端口的卡),我会倾向于将驱动器分开,以便每对驱动器都有一个驱动器连接到主板,另一个驱动器连接到附加控制器 - 这样,您的整个阵列就有更大的机会在主板控制器故障导致所有连接到它的驱动器损坏的情况下幸存下来(这种情况非常罕见,但确实会发生)。

无论哪种情况,如果您确实有五个单独的阵列,每个阵列都作为 LVM 的物理卷(而不是一个阵列,因此 LVM 中的一个 PV),我建议至少暂时从降级对中获取数据,除非您现在可以添加替换驱动器。

(为了确认您拥有的布局,值得重新措辞您的问题和/或添加命令cat /proc/mdstatpvs和的输出。vgslvs

答案2

这是 raid 10,如果一个磁盘坏了,我就不会那么担心阵列的健康状况,因为使用 USB 驱动器会更好。如果是 raid 5,情况可能会有所不同,但我认为,在修复控制器之前,没有第十个磁盘也没问题 - 只要您尽快解决这个问题 - 您是对的 :)

答案3

我认为性能一点也不好。更糟糕的是,当系统正在写入或准备 USB 驱动器时,可能会拔掉 USB 驱动器。

您能将驱动器 #9 上的数据复制到其他镜像驱动器吗?

相关内容