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


19

Sui sistemi più recenti /usr/share/mdadm/mkconf(lo script utilizzato per generare /etc/mdadm/mdadm.conf) tende a utilizzare il nome del dispositivo /dev/md/0anziché /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

Ciò può causare qualche irritazione per gli utenti che si aspettano /dev/md0lì, ma a quanto pare funziona bene perché il server si avvia senza problemi.

Nel /proc/mdstatdispositivo è ancora chiamato /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>

lsmostra che /dev/md/0è un link simbolico a /dev/md0:

new-system ~ # ls -l /dev/md/0 
lrwxrwxrwx 1 root root 6 Nov 20 14:06 /dev/md/0 -> ../md0

Su un altro sistema precedente mkconfutilizza ancora /dev/md0invece ed /dev/mdè vuoto:

old-system ~ # /usr/share/mdadm/mkconf | grep ARRAY
ARRAY /dev/md0 UUID=76472cf5:83fd8e5a:ad617046:69b2ebf1
old-system ~ # ls -l /dev/md
total 0

Vorrei sapere la differenza tra questi nomi di dispositivi e non riesco a trovare alcuna spiegazione su Google. È /dev/mdNil vecchio nome e mdsta pianificando di passare ai /dev/md/Nnomi dei dispositivi? Questa modifica è correlata ai metadati 1.2 (ho notato che il nuovo server utilizza md 1.2, mentre quello vecchio utilizza ancora 0,90)?


EDIT 2017-09-11: Penso che la risposta di Krzysztof Stasiak sia corretta. Ormai mi ero completamente dimenticato di questa domanda. Venerdì scorso, mentre giocavo con un RAID di prova, ho pensato "perché non nominare il mio array invece di memorizzare ciò che md0, md1, md2, ... ecc. In configurazioni complesse?", E quindi ho provato:

test-server ~ # mdadm --assemble /dev/mdfoobar /dev/loop[01]
mdadm: /dev/mdfoobar is an invalid name for an md device.  Try /dev/md/mdfoobar

E infatti funziona:

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>

(Puoi anche fare mdadm --assemble foobar DEV...).

C'è una spiegazione dettagliata nella man mdadmsezione DEVICE NAMES.



@frostschutz ah, quindi il nome dell'array mdadm -Eche si trova attualmente unassigned:0sul nuovo server viene diviso in :, e la seconda parte diventa parte del /dev/md/<name>? Quindi, se cambiassi il nome dell'array in unassigned:asdf, verrebbe chiamato il collegamento simbolico /dev/md/asdf? E il dispositivo reale viene sempre chiamato /dev/mdN, dove N è il prossimo numero gratuito?
Martin von Wittich,

1
Potresti usarlo in questo modo, ma nessuno lo fa; non funziona davvero, poiché di solito il md è creato da un cd live che non ha il nome host impostato, ecc. Un nome simile unassigned:0è solo Braindead.
Frostschutz,

Risposte:


1

puoi nominare l'array come nome proprio (non solo 0-127) e poiché mdadm 3.0.3 puoi usare solo il nome. Se think path è stato modificato per utilizzare la sottocartella /dev/md/$nameper rendere più flessibile o una sorta di array pulito o di gruppo. Se l'array md viene creato nel formato /dev/mdX, viene aggiunto un link simbolico per rendere la compatibilità con il nuovo formato.


1

Quando si tratta di nomi di dispositivi, è meglio chiedere a udev . Per la mia comprensione,

  1. md%dla denominazione è usata dal kernel, è generata direttamente dal driver md.c # L5284 ed è usata in /proc/partitionse sysfs. Quindi, appare in/dev

  2. /dev/md/...e /dev/disk/by-id/...sono generati come collegamenti simbolici da udevd. Nel mio sistema le regole corrispondenti sono mantenute in /usr/lib/udev/rules.d/63-md-raid-arrays.rules:

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

Sembra che udev di file proviene da openSUSE 11.1-rc3secondo a questo impegnarsi in mdadm. Ho controllato questo file openSUSE 11.0, ma non ha md/%dlink simbolici ...


0

Probabilmente il percorso originale varia a seconda della versione del kernel Linux o del sistema Unix. Il collegamento simbolico /dev/md/Npuò esistere per motivi di compatibilità. Programmi o script che possono utilizzare questo percorso anziché /dev/mdN.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.