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

19

Pada sistem yang lebih baru /usr/share/mdadm/mkconf(skrip yang digunakan untuk menghasilkan /etc/mdadm/mdadm.conf) cenderung menggunakan nama perangkat /dev/md/0alih-alih /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

Ini dapat menyebabkan iritasi bagi pengguna yang mengharapkan di /dev/md0sana, tetapi tampaknya berfungsi dengan baik karena server melakukan boot tanpa masalah.

Di /proc/mdstatperangkat ini masih disebut /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>

lsmenunjukkan bahwa itu /dev/md/0adalah symlink ke /dev/md0:

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

Di sistem lain yang lebih lama mkconfmasih menggunakan /dev/md0sebagai gantinya, dan /dev/mdkosong:

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

Saya ingin tahu perbedaan antara nama perangkat ini, dan saya tidak dapat menemukan penjelasan di Google. Apakah /dev/mdNnama lama, dan mdberencana untuk pindah ke /dev/md/Nnama perangkat? Apakah perubahan ini terkait dengan metadata 1.2 (saya perhatikan bahwa server baru menggunakan md 1.2, sedangkan yang lama masih menggunakan 0.90)?


EDIT 2017-09-11: Saya pikir jawaban Krzysztof Stasiak adalah jawaban yang benar. Saya sudah benar-benar lupa tentang pertanyaan ini. Saat bermain dengan tes RAID Jumat lalu saya berpikir "mengapa tidak menamai array saya alih-alih mengingat apa yang md0, md1, md2, ... dll tidak dalam pengaturan yang rumit?", Dan jadi saya mencoba:

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

Dan memang itu berhasil:

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>

(Anda juga bisa melakukannya mdadm --assemble foobar DEV...).

Ada penjelasan rinci di man mdadm, bagian DEVICE NAMES.

Martin von Wittich
sumber
@frostschutz ah, jadi nama array dari mdadm -Eyang saat ini ada unassigned:0di server baru terpecah pada :, dan bagian kedua menjadi bagian dari /dev/md/<name>? Jadi jika saya mengubah nama array unassigned:asdf, symlink akan dipanggil /dev/md/asdf? Dan perangkat yang sebenarnya selalu disebut /dev/mdN, di mana N adalah nomor bebas berikutnya?
Martin von Wittich
1
Anda bisa menggunakannya seperti itu, tetapi tidak ada yang melakukannya; itu tidak benar-benar berfungsi, karena biasanya md dibuat dari live cd yang tidak memiliki set nama host Anda, dll. Nama seperti unassigned:0hanya braindead.
frostschutz

Jawaban:

1

Anda dapat memberi nama array sebagai nama sendiri (tidak hanya 0-127) dan karena mdadm 3.0.3 Anda hanya dapat menggunakan nama. Jika jalur think diubah untuk menggunakan subfolder /dev/md/$nameuntuk membuat lebih banyak fleksibilitas atau semacam array bersih atau grup. Jika array md dibuat dalam format /dev/mdXada ditambahkan symlink untuk membuat kompabilitas ke format baru.

Krzysztof Stasiak
sumber
1

Ketika datang ke nama perangkat, lebih baik tanyakan udev . Untuk pemahaman saya,

  1. md%dpenamaan digunakan oleh kernel, ini dihasilkan langsung oleh driver md.c # L5284 , dan digunakan dalam /proc/partitionsdan sysfs. Karenanya, muncul di/dev

  2. /dev/md/...dan /dev/disk/by-id/...dihasilkan sebagai symlink oleh udevd. Dalam sistem saya aturan yang sesuai disimpan di /usr/lib/udev/rules.d/63-md-raid-arrays.rules:

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

Tampaknya file udev berasal dari openSUSE 11.1-rc3menurut komit ini di mdadm. Saya telah memeriksa file ini openSUSE 11.0, tetapi tidak memiliki md/%dsymlink ...

myaut
sumber
0

Mungkin jalur asli bervariasi tergantung pada versi kernel Linux atau sistem Unix. Tautan simbolis /dev/md/Nmungkin ada karena alasan kompatibilitas. Program atau skrip yang mungkin menggunakan jalur ini sebagai ganti /dev/mdN.

hongo
sumber