Linux md RAID : / dev / md0 대 / 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 ah이므로 mdadm -E현재 unassigned:0새 서버에 있는 어레이 이름은에서 분할되고 :두 번째 부분은 /dev/md/<name>? 따라서 배열 이름을로 변경 unassigned:asdf하면 심볼릭 링크가 /dev/md/asdf? 그리고 실제 장치는 항상이라고 부릅니다 /dev/mdN. 여기서 N은 다음 무료 번호입니까?
Martin von Wittich

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}"
    ...
    

udev 파일은 mdadm 의이 커밋openSUSE 11.1-rc3따라 나온 것 같습니다 . 이 파일을 체크인했습니다openSUSE 11.0 했지만 md/%d심볼릭 링크 가 없습니다 ...


0

아마도 원래 경로는 Linux 커널 버전 또는 Unix 시스템에 따라 다릅니다. /dev/md/N호환성을 위해 기호 링크 가 존재할 수 있습니다. 대신이 경로를 사용할 수있는 프로그램 또는 스크립트 /dev/mdN.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.