Debian 服务器在每次启动时都会降级 mdadm 阵列

Hal*_*aar 4 linux debian mdadm md

我有一台带有 MD raid 的 Debian 服务器(2 个活动,一个备用):

Personalities : [raid1] 
md1 : active raid1 sdc2[0] sdb2[1] sda2[2](S)
      1068224 blocks [2/2] [UU]

md0 : active raid1 sdc1[2](S) sdb1[1] sda1[0]
      487315584 blocks [2/2] [UU]
      bitmap: 5/233 pages [20KB], 1024KB chunk

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

每当我启动此服务器时,阵列都会降级并开始同步备用磁盘。问题是,这似乎是因为它连接了一个 U 盘,目前是/dev/sdd. 当此磁盘不存在时,它可以正常启动。/dev/sdd1,唯一的分区,上面没有md超级块,分区类型是Linux,不是raid autodetect。

这是镜像设备的详细信息md0

mdadm --detail /dev/md0
/dev/md0:
        Version : 0.90
  Creation Time : Sun Jun  8 04:10:39 2008
     Raid Level : raid1
     Array Size : 487315584 (464.74 GiB 499.01 GB)
  Used Dev Size : 487315584 (464.74 GiB 499.01 GB)
   Raid Devices : 2
  Total Devices : 3
Preferred Minor : 0
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Tue Sep 15 09:23:33 2015
          State : active 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

           UUID : 9e408fbb:563a5459:f999b789:24d3b44e
         Events : 0.83145

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8       17        1      active sync   /dev/sdb1

       2       8       33        -      spare   /dev/sdc1
Run Code Online (Sandbox Code Playgroud)

的细节/dev/sdc1确实表明它是备用的:

mdadm --examine /dev/sdc1
/dev/sdc1:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : 9e408fbb:563a5459:f999b789:24d3b44e
  Creation Time : Sun Jun  8 04:10:39 2008
     Raid Level : raid1
  Used Dev Size : 487315584 (464.74 GiB 499.01 GB)
     Array Size : 487315584 (464.74 GiB 499.01 GB)
   Raid Devices : 2
  Total Devices : 3
Preferred Minor : 0

    Update Time : Sat Sep 12 21:09:59 2015
          State : clean
Internal Bitmap : present
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1
       Checksum : 7761bb13 - correct
         Events : 83145


      Number   Major   Minor   RaidDevice State
this     2       8       33        2      spare   /dev/sdc1

   0     0       8        1        0      active sync   /dev/sda1
   1     1       8       17        1      active sync   /dev/sdb1
   2     2       8       33        2      spare   /dev/sdc1
Run Code Online (Sandbox Code Playgroud)

真的没有什么异常。

任何的想法?

编辑:

的相关内容/etc/mdadm/mdadm.conf

ARRAY /dev/md0 level=raid1 num-devices=2 UUID=9e408fbb:563a5459:f999b789:24d3b44e
   spares=1
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=e4578e57:9e0fd9e9:c7736f30:0e251564
   spares=1
Run Code Online (Sandbox Code Playgroud)

这种匹配的输出mdadm --detail --scan

ARRAY /dev/md0 metadata=0.90 spares=1 UUID=9e408fbb:563a5459:f999b789:24d3b44e
ARRAY /dev/md1 metadata=0.90 spares=1 UUID=e4578e57:9e0fd9e9:c7736f30:0e251564
Run Code Online (Sandbox Code Playgroud)

也许是换行符?

  • 内核 3.2.0-4-686-pae。
  • Debian 7.8
  • mdadm - v3.2.5 - 2012 年 5 月 18 日

asd*_*min 5

我认为您的 initramfs 中可能有一个太旧的 mdadm.conf 和/或 mdadm 在数组的发现和初始化过程中变得混乱。

通过在 mdadm.conf 中添加以下行,尝试告诉 mdadm 只考虑 PCI 总线上的磁盘:

DEVICE /dev/disk/by-path/pci*
Run Code Online (Sandbox Code Playgroud)

更进一步,您可以直接指定磁盘本身。确保您使用与订单无关的寻址(例如,通过 UUID),并将备用地址放在最后一个条目中:

DEVICE /dev/disk/by-uuid/<uuid1>
DEVICE /dev/disk/by-uuid/<uuid2>
DEVICE /dev/disk/by-uuid/<uuid3>
Run Code Online (Sandbox Code Playgroud)

更进一步,在上一步之后,您还可以将 devices= 属性添加到 ARRAY 标签,将您的raid 的确切布局提供给 mdadm。还要考虑这里的设备顺序。

在此之后不要忘记更新 initramfs,因为 mdadm.conf 也是启动初始化过程的一部分:

sudo update-initramfs -k all -u
Run Code Online (Sandbox Code Playgroud)