在较新的系统上/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
Run Code Online (Sandbox Code Playgroud)
这可能会给期望/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>
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
在另一个旧系统上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
Run Code Online (Sandbox Code Playgroud)
我想知道这些设备名称之间的区别,我在谷歌上找不到任何解释。是/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
Run Code Online (Sandbox Code Playgroud)
这确实有效:
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>
Run Code Online (Sandbox Code Playgroud)
(你也可以这样做mdadm --assemble foobar DEV...)。
在man mdadm, 部分有详细说明DEVICE NAMES。
小智 3
您可以将数组命名为自己的名称(不仅是 0-127),并且从 mdadm 3.0.3 开始您只能使用名称。如果将思考路径更改为使用子文件夹/dev/md/$name以提供更大的灵活性或某种干净或分组数组。如果 md 数组以格式创建,/dev/mdX则会添加符号链接以兼容新格式。
| 归档时间: |
|
| 查看次数: |
18099 次 |
| 最近记录: |