W nowszych systemach /usr/share/mdadm/mkconf
(skrypt wykorzystywany do generowania /etc/mdadm/mdadm.conf
) zwykle używa nazwy urządzenia /dev/md/0
zamiast /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/md0
tam spodziewają , ale najwyraźniej działa dobrze, ponieważ serwer uruchamia się bez problemów.
W /proc/mdstat
urzą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>
ls
pokazuje, że /dev/md/0
jest 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 mkconf
nadal używa /dev/md0
zamiast tego i /dev/md
jest 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/mdN
stara nazwa i md
planujesz przenieść się na /dev/md/N
nazwy 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 mdadm
rozdziale DEVICE NAMES
.
mdadm -E
tego, która jest obecnieunassigned:0
na nowym serwerze, jest podzielona na:
, a druga część staje się częścią/dev/md/<name>
? Więc jeśli zmienię nazwę tablicy naunassigned: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?unassigned:0
to po prostu braindead.Odpowiedzi:
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/$name
aby zwiększyć elastyczność lub jakieś tablice czyste lub grupowe. Jeśli tablica md jest tworzona w formacie,/dev/mdX
dodaje się dowiązanie symboliczne, aby zapewnić zgodność z nowym formatem.źródło
Jeśli chodzi o nazwy urządzeń, lepiej zapytaj udev . W moim rozumieniu
md%d
jądro używa nazewnictwa, jest ono generowane bezpośrednio przez sterownik md.c # L5284 i jest używane w/proc/partitions
isysfs
. Dlatego pojawia się w/dev
/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
:Wydaje się, że plik pochodzi z udev
openSUSE 11.1-rc3
według tego popełnić w mdadm. Sprawdziłem ten plikopenSUSE 11.0
, ale nie ma onmd/%d
dowiązań symbolicznych ...źródło
Prawdopodobnie oryginalna ścieżka różni się w zależności od wersji jądra Linuksa lub systemu Unix. Link symboliczny
/dev/md/N
może istnieć ze względu na kompatybilność. Programy lub skrypty, które mogą używać tej ścieżki zamiast/dev/mdN
.źródło