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


19

W nowszych systemach /usr/share/mdadm/mkconf(skrypt wykorzystywany do generowania /etc/mdadm/mdadm.conf) zwykle używa nazwy urządzenia /dev/md/0zamiast /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

Może to powodować irytację dla użytkowników, którzy się /dev/md0tam spodziewają , ale najwyraźniej działa dobrze, ponieważ serwer uruchamia się bez problemów.

W /proc/mdstaturządzeniu nadal nazywa się /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>

lspokazuje, że /dev/md/0jest dowiązaniem symbolicznym do /dev/md0:

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

W innym starszym systemie mkconfnadal używa /dev/md0zamiast tego i /dev/mdjest pusty:

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

Chciałbym poznać różnicę między tymi nazwami urządzeń i nie mogę znaleźć żadnego wyjaśnienia w Google. Czy /dev/mdNstara nazwa i mdplanujesz przenieść się na /dev/md/Nnazwy urządzeń? Czy ta zmiana dotyczy metadanych 1.2 (zauważyłem, że nowy serwer używa md 1.2, a stary nadal używa 0.90)?


EDYCJA 2017-09-11: Myślę, że odpowiedź Krzysztofa Stasiaka jest poprawna. Do tej pory całkowicie zapomniałem o tym pytaniu. Podczas gry z testowym RAID-em w ubiegły piątek pomyślałem „dlaczego nie nazwać mojej tablicy zamiast zapamiętywać, co robi md0, md1, md2, itp. W złożonych konfiguracjach?”, Więc spróbowałem:

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

I rzeczywiście to działa:

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>

(Możesz także zrobić mdadm --assemble foobar DEV...).

Szczegółowe wyjaśnienie znajduje się w man mdadmrozdziale DEVICE NAMES.



@frostschutz ah, więc nazwa tablicy z mdadm -Etego, która jest obecnie unassigned:0na nowym serwerze, jest podzielona na :, a druga część staje się częścią /dev/md/<name>? Więc jeśli zmienię nazwę tablicy na unassigned:asdf, to zostanie dowiązanie symboliczne /dev/md/asdf? A rzeczywiste urządzenie jest zawsze wywoływane /dev/mdN, gdzie N jest kolejnym wolnym numerem?
Martin von Wittich

1
Możesz użyć tego w ten sposób, ale nikt tego nie robi; tak naprawdę to nie działa, ponieważ zazwyczaj md jest tworzony z płyty CD na żywo, która nie ma ustawionej nazwy hosta itp. Nazwa taka unassigned:0to po prostu braindead.
frostschutz

Odpowiedzi:


1

możesz nazwać tablicę jako własną nazwę (nie tylko 0-127), a od mdadm 3.0.3 możesz używać tylko nazwy. Jeśli ścieżka myślenia została zmieniona, użyj podfolderu, /dev/md/$nameaby zwiększyć elastyczność lub jakieś tablice czyste lub grupowe. Jeśli tablica md jest tworzona w formacie, /dev/mdXdodaje się dowiązanie symboliczne, aby zapewnić zgodność z nowym formatem.


1

Jeśli chodzi o nazwy urządzeń, lepiej zapytaj udev . W moim rozumieniu

  1. md%djądro używa nazewnictwa, jest ono generowane bezpośrednio przez sterownik md.c # L5284 i jest używane w /proc/partitionsi sysfs. Dlatego pojawia się w/dev

  2. /dev/md/...i /dev/disk/by-id/...są generowane jako udlink przez udevd. W moim systemie odpowiednie reguły są przechowywane w /usr/lib/udev/rules.d/63-md-raid-arrays.rules:

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

Wydaje się, że plik pochodzi z udev openSUSE 11.1-rc3według tego popełnić w mdadm. Sprawdziłem ten plik openSUSE 11.0, ale nie ma on md/%ddowiązań symbolicznych ...


0

Prawdopodobnie oryginalna ścieżka różni się w zależności od wersji jądra Linuksa lub systemu Unix. Link symboliczny /dev/md/Nmoże istnieć ze względu na kompatybilność. Programy lub skrypty, które mogą używać tej ścieżki zamiast /dev/mdN.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.