我遇到了一个非常烦人的错误,我已经使用 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
名称。