Linux md RAID: / dev / md0 vs. / dev / md / 0


19

У нових системах /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)?


EDIT 2017-09-11: Я думаю , що відповідь Кшиштофа Стасяка є правильною. Я вже зовсім забув про це питання. Граючи з тестовим 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.



@frostschutz ах, тому ім'я масиву з того, mdadm -Eщо зараз знаходиться unassigned:0на новому сервері, розділено на :, а друга частина стає частиною /dev/md/<name>? Так якби я змінив ім'я масиву на unassigned:asdf, було б названо symlink /dev/md/asdf? А власне пристрій завжди називається /dev/mdN, де N - наступне вільне число?
Мартін фон Віттіч

1
Ви можете використовувати це таким чином, але ніхто цього не робить; це насправді не працює, оскільки зазвичай md створюється з живого компакт-диска, на якому немає встановленого імені хоста тощо unassigned:0.
frostschutz

Відповіді:


1

ви можете назвати масив як власне ім’я (не тільки 0-127), а з mdadm 3.0.3 ви можете використовувати лише ім'я. Якщо шлях думки було змінено, використовуйте підтеки, /dev/md/$nameщоб зробити більш гнучкими чи якісь чисті або групові масиви. Якщо масив md створений у форматі /dev/mdX, додається симпосилання для порівняння з новим форматом.


1

Що стосується імен пристроїв, краще запитайте udev . Наскільки я розумію,

  1. md%dіменування використовується ядром, воно генерується безпосередньо драйвером md.c # L5284 , і воно використовується в /proc/partitionsі sysfs. Отже, вона з'являється в/dev

  2. /dev/md/...і /dev/disk/by-id/...генеруються як символьні посилання удевдом. У моїй системі відповідні правила зберігаються у /usr/lib/udev/rules.d/63-md-raid-arrays.rules:

    ...
    ENV{DEVTYPE}=="disk", ENV{MD_DEVNAME}=="?*", SYMLINK+="md/$env{MD_DEVNAME}"
    ...
    

Здається , що Udev файл походить від openSUSE 11.1-rc3згідно цієї фіксації в mdadm. Я перевірив цей файл openSUSE 11.0, але він не має md/%dсимвольних посилань ...


0

Можливо, початковий шлях варіюється в залежності від версії ядра Linux або системи Unix. Символічне посилання /dev/md/Nможе існувати з міркувань сумісності. Програми або сценарії, які можуть використовувати цей шлях замість /dev/mdN.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.