Linux RAID10阵列添加USB外置驱动的智慧

Joh*_*n P 4 raid software-raid

我有一个带有 10 个驱动器插槽的 SAN 系统,使用软件 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]

Dav*_*ett 5

RAID10 是 RAID1 阵列的 RAID0,您最终只会有一个卷,因此您将有一个物理卷提供给 LVM。像这样:

            LV1        LV2              
             \__________\___________....
                            |
                           VG
                            |
                           PV
                            |
     ______________________MD5________________________
    /             /           |          \            \
  _MD0_        _MD1_        _MD2_       _MD3_        _MD4_        
 /     \      /     \      /     \     /     \      /     \
D01   D02    D03   D04    D05   D06   D07   D08    D09   D10
Run Code Online (Sandbox Code Playgroud)

您所描述的“将所有 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
Run Code Online (Sandbox Code Playgroud)

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

是这种情况吗?

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

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

现在损坏的阵列不是 LVM 设置的一部分。您可以在解决问题后重新添加它,以便 RAID1 对不再降级运行。

真正回答你的问题...

除了您已经确定的性能问题以及 USB 驱动器意外断开连接的可能性(如果托管您的 SAN 的机器安全地远离人类和其他干扰,这不太可能)我认为没有问题将您的磁盘 10 替换为通过 USB 连接的磁盘。

如果托管您的 SAN 的机器有一个备用的 PCI 或 PCI-E 插槽,我会建议采取这条路线,添加一个额外的 SATA 控制器来挂断驱动器。如果您得到一个提供五个端口的控制器(或者可以装入两张总共提供五个或更多端口的卡),我会很想将驱动器分开,这样每对驱动器都有一个连接到主板,一个连接到附加 -在控制器上 - 这样你的整个阵列就有更多的机会在主板控制器故障中幸存下来,从而杀死所有连接到它的驱动器(这种情况非常罕见,但可能会发生)。

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

(要确认你的布局,这将是值得重新措辞你的问题和/或添加命令的输出cat /proc/mdstatpvsvgslvs)。