在较新的系统上/usr/share/mdadm/mkconf
(用于生成的脚本/etc/mdadm/mdadm.conf
)倾向于使用设备名称/dev/md/0
而不是/dev/md0
:
new-system ~ # /usr/share/mdadm/mkconf | grep ARRAY
ARRAY /dev/md/0 metadata=1.2 UUID=a0021927:0e4f10bf:2c47dc72:ca0b352e name=unassigned:0
这可能会对希望/dev/md0
在那里的用户产生刺激,但是显然可以正常工作,因为服务器可以正常启动。
在/proc/mdstat
设备中仍称为/dev/md0
:
new-system ~ # cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb2[2] sda2[0]
1953381184 blocks super 1.2 [2/2] [UU]
unused devices: <none>
ls
显示这/dev/md/0
是与以下内容的符号链接/dev/md0
:
new-system ~ # ls -l /dev/md/0
lrwxrwxrwx 1 root root 6 Nov 20 14:06 /dev/md/0 -> ../md0
在另一个较旧的系统上,mkconf
仍然使用/dev/md0
,并且/dev/md
为空:
old-system ~ # /usr/share/mdadm/mkconf | grep ARRAY
ARRAY /dev/md0 UUID=76472cf5:83fd8e5a:ad617046:69b2ebf1
old-system ~ # ls -l /dev/md
total 0
我想知道这些设备名称之间的区别,并且在Google上找不到任何解释。是/dev/mdN
旧名称,并且md
打算改用/dev/md/N
设备名称吗?此更改是否与1.2元数据有关(我注意到新服务器使用的是md 1.2,而旧服务器仍使用的是0.90)?
编辑2017-09-11:我认为Krzysztof Stasiak的答案是正确的。到目前为止,我已经完全忘记了这个问题。在上周五使用测试RAID进行游戏时,我想到了“为什么不命名我的阵列,而不是记住复杂设置中的md0,md1,md2等...”呢,所以我尝试了:
test-server ~ # mdadm --assemble /dev/mdfoobar /dev/loop[01]
mdadm: /dev/mdfoobar is an invalid name for an md device. Try /dev/md/mdfoobar
确实可行:
test-server ~ # mdadm --assemble /dev/md/foobar /dev/loop[01]
mdadm: /dev/md/foobar has been started with 2 drives.
test-server ~ # ll /dev/md/foobar
lrwxrwxrwx 1 root root 6 Sep 11 10:45 /dev/md/foobar -> ../md0
test-server ~ # cat /proc/mdstat
Personalities : [raid1]
md0 : active (auto-read-only) raid1 loop0[0] loop1[1]
102272 blocks super 1.2 [2/2] [UU]
unused devices: <none>
(您也可以这样做mdadm --assemble foobar DEV...
)。
在man mdadm
部分中有详细的解释DEVICE NAMES
。
mdadm -E
当前unassigned:0
在新服务器上的阵列名称在处拆分,:
第二部分成为/dev/md/<name>
?的一部分。因此,如果将数组名称更改为unassigned:asdf
,则将调用符号链接/dev/md/asdf
?实际的设备始终称为/dev/mdN
,其中N是下一个空闲号码?
unassigned:0
。