Ubuntu Server 12.04,MDADM 设备编号突然改变?

Ubuntu Server 12.04,MDADM 设备编号突然改变?

我遇到了一个非常烦人的错误,我已经使用 mdadm 设置了软件 RAID1,并且设置顺利,结果如下

/dev/md/lucas.mgscreativa.com.ar:0

我也像这样配置了 mdadm.conf

DEVICE /dev/sda /dev/sdb

# auto-create devices with Debian standard permissions CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts MAILADDR root

# definitions of existing MD arrays ARRAY /dev/md/lucas.mgscreativa.com.ar:0 metadata=1.2
name=lucas.mgscreativa.com.ar:0
UUID=c913486a:e62c7ea1:cfb98b6b:253d1f62

fstab 配置如下

/dev/md/lucas.mgscreativa.com.ar:0 /media/data     ext4
defaults,noatime      0       0

但是,有一天,我的阵列名称突然从 /dev/md/lucas.mgscreativa.com.ar:0 更改为 /dev/md0,因此我对 fstab 和 mdadm.conf 做了一些更改(当然,经过数小时的反复试验)并且一切都正常,但是今天,MD 编号再次从 /dev/md0 更改为 /dev/md127 !!!

这是怎么回事?我猜这是一个错误。

有没有什么方法可以修复 MD 号码,以便我的服务器可以正常运行,不会出现任何缺陷?

谢谢!

答案1

首先:您的数组中可能有错误。 您需要立即检查其状态。

例子:

root@locutus:~# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Fri Jun  1 15:30:31 2012
     Raid Level : raid10
     Array Size : 1953119232 (1862.64 GiB 1999.99 GB)
  Used Dev Size : 976559616 (931.32 GiB 1000.00 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Sun Nov 25 21:39:44 2012
          State : clean 
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

           Name : locutus:0  (local to host locutus)
           UUID : b81ac63a:51a9b01c:c01812ec:86c534c4
         Events : 182

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8       49        1      active sync   /dev/sdd1
       2       8       17        2      active sync   /dev/sdb1
       3       8       33        3      active sync   /dev/sdc1

您很可能会发现自己有错误...需要解决这些错误。

接下来,您应该更改 fstab 的设置方式,使用 UUID 而不是使用设备名。使用blkid阵列(或阵列下的分区)上的命令获取其 UUID,然后使用该 UUID 将其挂载到 /etc/fstab 中。

例子:

root@locutus:~# blkid /dev/mapper/vg0-root
/dev/mapper/vg0-root: UUID="61998221-7b39-49cd-83f7-62fda973218c" TYPE="ext4" 

有了这些信息,我会将 root 的 /etc/fstab 条目设置为如下所示:

UUID=61998221-7b39-49cd-83f7-62fda973218c    /    ext4    defaults,errors=remount-ro    0    1

完成此操作后,无论分区的设备名称是否改变(例如,如果驱动器电缆被交换),系统都会找到您的分区。

您还应该设置/etc/mdadm/mdadm.conf自动查找内容,而不需要任何特定驱动器位于任何特定位置:

# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

# by default (built-in), scan all partitions (/proc/partitions) and all
# containers for MD superblocks. alternatively, specify devices to scan, using
# wildcards if desired.
#DEVICE partitions containers

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays
ARRAY /dev/md/0 metadata=1.2 UUID=c913486a:e62c7ea1:cfb98b6b:253d1f62 name=lucas.mgscreativa.com.ar:0

请注意,此配置文件中没有指定任何设备。 这是一项功能,而不是错误。通过这种方式设置 mdadm.conf,您的系统将自动扫描所有连接的驱动器,查找属于您的阵列的任何内容,并将它们全部组装为 /dev/md0。

答案2

对于这个答案,我假设阵列是完整的 - 没有故障磁盘,没有其他错误情况,只是改变了“设备编号”。

通常应该做的是停止阵列:

# mdadm --verbose --misc --stop /dev/md127

... 修复引用数组的行/etc/mdadm/mdadm.conf(即调整设备名称)。然后按如下方式组装:

# mdadm --verbose --assemble --update=super-minor --run /dev/md0 /dev/sdaX /dev/sdbX

(根据您的情况调整对物理设备的引用)。

你应该看到如下输出:

mdadm: looking for devices for /dev/md0
mdadm: updating superblock of /dev/sdaX with minor number 0
mdadm: /dev/sdaX is identified as a member of /dev/md0, slot 0.
mdadm: updating superblock of /dev/sdbX with minor number 0
mdadm: /dev/sdbX is identified as a member of /dev/md0, slot 1.
mdadm: added /dev/sdbX to /dev/md0 as 1
mdadm: added /dev/sdaX to /dev/md0 as 0
mdadm: /dev/md0 has been started with 2 drives.

如果您查询详细信息,您应该会看到更新的“首选辅修”字段。请检查:

# mdadm -Q -D /dev/md0|grep "Preferred"
Preferred Minor : 0

注意事项:另外,请确保您已安装该设备并对其进行写入。否则更改可能不会生效。此外,这super-minor似乎特定于旧的元数据格式。

注意:我不知道你是否能用这个来影响“名称”的原始意义。但我知道你可以影响X创建的/dev/mdX名称。

相关内容