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を使用しています)。


編集2017-09-11:Krzysztof Stasiakの答えは正しいと思います。私は今、この質問を完全に忘れていました。先週金曜日にテスト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はで分割され:、2番目の部分は/dev/md/<name>?の一部になります。配列名をに変更するunassigned:asdfと、シンボリックリンクが呼び出され/dev/md/asdfますか?そして、実際のデバイスは常に呼び出されます/dev/mdN、ここでNは次の空き番号ですか?
マーティン・フォン・ウィッティヒ

1
そのように使用できますが、誰もそれを行いません。通常、mdはホスト名が設定されていないライブCDなどから作成されるため、実際には機能しません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/partitionssysfs。したがって、/dev

  2. /dev/md/...そして/dev/disk/by-id/...、udevdによってシンボリックリンクとして生成されます。私のシステムでは、対応するルールは次の場所に保持されてい/usr/lib/udev/rules.d/63-md-raid-arrays.rulesます。

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

mdadmのこのコミットopenSUSE 11.1-rc3よると、udevファイルが由来しているようです。でこのファイルをチェックしましたが、シンボリックリンクがありません...openSUSE 11.0md/%d


0

おそらく元のパスは、LinuxカーネルのバージョンまたはUnixシステムによって異なります。シンボリックリンク/dev/md/Nは互換性の理由で存在する場合があります。の代わりにこのパスを使用する可能性のあるプログラムまたはスクリプト/dev/mdN

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.