需要查找哪些驱动器在 RAID-10 阵列中被镜像

11 linux raid opensuse mdadm raid-10

我有一个在 openSUSE 12.2 上运行的家庭媒体服务器。我在 RAID-10 配置中使用了八个 2TB 驱动器。我特意买了两种不同类型的硬盘:四个希捷 Barracuda Green 和四个 Western Digital Red。我的目标是配置 RAID,使阵列中的每个镜像对都包含不同的驱动器(即,一个 Seagate 驱动器和一个 WD 驱动器)。不幸的是,YaST2 Partitioner 在阵列结构中没有给我这个级别的选择,所以现在我试图找出默认的 RAID10 结构是什么样的。

我知道以下几点:

  • sdc、sdd、sde、sdf都是WD驱动
  • sdg、sdh、sdi 和 sdj 都是希捷硬盘

我在创建 RAID 时选择了默认的“n2”布局。我根据这两个来源的信息猜测相邻驱动器是镜像的(即 sdc==sdd、sde==sdf 等),但我想确定地知道:

这是'mdadm --detail /dev/md0'的输出:

/dev/md0:
        Version : 1.0
  Creation Time : Sat Mar 16 12:55:11 2013
     Raid Level : raid10
     Array Size : 7814045696 (7452.05 GiB 8001.58 GB)
  Used Dev Size : 1953511424 (1863.01 GiB 2000.40 GB)
   Raid Devices : 8
  Total Devices : 8
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Sat Mar 16 13:09:37 2013
          State : active, resyncing
 Active Devices : 8
Working Devices : 8
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 2048K

  Resync Status : 1% complete

           Name : aldaris:0  (local to host aldaris)
           UUID : c6cc3943:97394500:b77d44cd:f02ed876
         Events : 149

    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       1       8       49        1      active sync   /dev/sdd1
       2       8       65        2      active sync   /dev/sde1
       3       8       81        3      active sync   /dev/sdf1
       4       8       97        4      active sync   /dev/sdg1
       5       8      113        5      active sync   /dev/sdh1
       6       8      129        6      active sync   /dev/sdi1
       7       8      145        7      active sync   /dev/sdj1
Run Code Online (Sandbox Code Playgroud)

以下是 /proc/mdstat 的内容:

Personalities : [raid10] md0 : active raid10 sdj1[7] sdi1[6] sdh1[5] sdg1[4] sdf1[3] sde1[2] sdd1[1] sdc1[0]
      7814045696 blocks super 1.0 2048K chunks 2 near-copies [8/8] [UUUUUUUU]
      [>....................]  resync =  4.8% (375163456/7814045696) finish=1206.5min speed=102751K/sec
      bitmap: 57/59 pages [228KB], 65536KB chunk

unused devices: <none>
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:

  1. 如何判断哪些驱动器是彼此的镜像?
  2. 有没有办法改变这一点,或者我应该只是交换电线(因为这会交换驱动器号)然后重建RAID?

提前致谢。


切线说明,对于任何想知道我这样做的理由的人来说,相同型号和批次的驱动器,在相似的使用负载、正常运行时间和温度下运行几乎没有系统变化,驱动器之间的故障时间差异将主要受到驱动通过制造过程中的随机变化。这会增加多个驱动器同时失效的风险。通过不仅从不同批次而且从完全不同的制造商购买驱动器,我在我的阵列中引入了系统变化,从而影响哪些驱动器会在相似的时间发生故障。

小智 7

最近的版本mdadm在数组的细节中正确显示了这一点。示例来自mdadm v3.3 - 3rd September 2013

 $ mdadm --detail /dev/md1

/dev/md1:
        Version : 1.1
  Creation Time : Tue Aug 23 11:45:41 2016
     Raid Level : raid10
     Array Size : 3864803328 (3685.76 GiB 3957.56 GB)
  Used Dev Size : 1932401664 (1842.88 GiB 1978.78 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Fri Aug 26 09:39:28 2016
          State : active
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

           Name : px4-300r-THXOAP:1  (local to host px4-300r-THXOAP)
           UUID : 5ee06437:83dfdb64:808feaa2:5d57b1e6
         Events : 620

    Number   Major   Minor   RaidDevice State
       4       8       50        0      active sync set-A   /dev/sdd2
       1       8       34        1      active sync set-B   /dev/sdc2
       2       8       18        2      active sync set-A   /dev/sdb2
       3       8        2        3      active sync set-B   /dev/sda2
Run Code Online (Sandbox Code Playgroud)

注意符号set-Aset-B。在上述情况下,sdd并且sdb可以一起失败而不会丢失数据。但是,在重建阵列时,此数据可能不可用。

  • 这个答案是正确的。另一个帖子是错误的。set-A 和 set-B 是彼此的镜像。尝试按照以下答案中的建议使用 dd 阅读它们。 (3认同)

max*_*xvw 0

我认为你正在谈论真正的raid 10阵列(1+0条带镜像)

sdc/sdg = md0 raid1 2TB |
sdd/sdh = md1 raid1 2TB |_  md4 raid0 8TB
sde/sdi = md2 raid1 2TB |
sdf/sdj = md3 raid1 2TB |
Run Code Online (Sandbox Code Playgroud)

1. 创建 4 个 raid1 阵列:

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/{sdc,sdg}
mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/{sdd,sdh}
mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/{sde,sdi}
mdadm --create /dev/md3 --level=1 --raid-devices=2 /dev/{sdf,sdj}
Run Code Online (Sandbox Code Playgroud)

此时您有 4 个 raid 1 阵列,每个阵列有 2TB 空间,

2. 让我们来组装它们吧!

mdadm --create /dev/md4 --run --level=0 --raid-devices=4 /dev/md{0,1,2,3}
Run Code Online (Sandbox Code Playgroud)

--run选项很有用,因为某些组件在另一个数组中处于活动状态

3. 调整您的 mdadm.conf 文件

您可能需要(取决于您的配置)调整此文件以反映有关新数组 (/dev/md4) 的更改。

4.享受.. 你的新DIY raid10阵列!