Linux

Debian 伺服器在每次啟動時都會降級 mdadm 陣列

  • September 15, 2015

我有一個帶有 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>

每當我啟動此伺服器時,陣列就會降級並開始同步備用磁碟。問題是,這似乎是因為它連接了一個 U 盤,目前是/dev/sdd. 當此磁碟不存在時,它可以正常啟動。/dev/sdd1,唯一的分區,上面沒有md superblock,分區類型是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

的細節/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

真的沒有什麼異常。

任何的想法?

編輯:

的相關內容/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

這種匹配的輸出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

也許是換行符?

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

我認為您的 initramfs 中可能有一個太舊的 mdadm.conf 和/或 mdadm 在陣列的發現和初始化過程中會感到困惑。

嘗試通過在 mdadm.conf 中添加以下行來告訴 mdadm 只考慮 PCI 匯流排上的磁碟:

DEVICE /dev/disk/by-path/pci*

更進一步,您可以直接指定磁碟本身。確保使用與順序無關的定址(例如,通過 UUID),並將備用地址放在最後一個條目:

DEVICE /dev/disk/by-uuid/<uuid1>
DEVICE /dev/disk/by-uuid/<uuid2>
DEVICE /dev/disk/by-uuid/<uuid3>

更進一步,在上一步之後,您還可以將 devices= 屬性添加到 ARRAY 標記,將您的 raid 的確切佈局提供給 mdadm。還要考慮這裡的設備順序。

在此之後不要忘記更新 initramfs,因為 mdadm.conf 也是引導初始化過程的一部分:

sudo update-initramfs -k all -u

引用自:https://serverfault.com/questions/722360