MD 장치 이름을 변경하는 방법 (mdadm)


25

다음은 mdadm -Esv 의 출력입니다 .

ARRAY / dev / md127 level = raid0 num-devices = 2 UUID = d89d9d45 : 9a420812 : c44c77eb : 7ee19756 devices = / dev / sdb8, / dev / sda8

이것은 v0.90 배열입니다. 문제는 다음과 같습니다. mdadm은 해당 장치의 이름을 어떻게 할당합니까? 장치는 어디에 저장하며 어떻게 변경합니까?

내가 달성하고자하는 것은 md127의 이름을 좋아 하는 것과 다른 이름으로 바꾸는 것입니다.

답변:


31

경고 : 여기에 주어진 조언을 따르기 전에 백업하십시오 :-)

옵션 1:

편집 /etc/mdadm.conf:

ARRAY / dev / md1 level = raid0 num-devices = 2 UUID = d89d9d45 : 9a420812 : c44c77eb : 7ee19756 devices = / dev / sdb8, / dev / sda8

방금 자신의 출력을 입력하고 127을 1로 변경했습니다. 재부팅하면 md1이됩니다.

옵션 # 2 :

이없고 mdadm.confmd1을 자동으로 조립하려면 다음을 수행하십시오.

mdadm에는 "선호하는 미성년자"라는 개념이 있습니다. 예를 들어 특정 부 번호가 배열에 할당되고 수퍼 블록에 저장되면이 배열이 자동 어셈블 될 때마다 사용됩니다. 이것을 확인하십시오 :

mdadm --detail / dev / md127

"Preferred Minor : 127"이라고 표시되면 이것이 문제입니다. 선호하는 미성년자를 업데이트해야합니다. 이를 수행하는 방법 :

선호하는 미성년자를 변경할 수는 없습니다. 루트 장치 인 경우 복구 또는 단일 사용자 모드로 부팅 한 후 파일 시스템을 마운트 해제하십시오.

mdadm --stop / dev / md127
mdadm --assemble --update = super-minor / dev / md1 / dev / sdb8 / dev / sda8

그런 다음 md127을 md1로 조립하십시오. 그리고 앞으로도 이런 식으로 유지되어야합니다.

1.x 배열의 경우 :

최신 어레이는 'Preferred Minor'번호를 저장하지 않으며 "--update = super-minor"를 지원하지 않습니다. 대신 다음과 같이 변경할 수있는 이름을 저장합니다.

mdadm --stop / dev / md127
mdadm --assemble --update = name --name = 2 / dev / md1 / dev / sdb8 / dev / sda8

또는 'hostname : 2'를 지정하여 모든 것을 다른 배열과 일관성있게 유지할 수 있습니다 (--detail으로 현재 이름을 조회).


아주 좋아! 내가 찾던 것. 트릭은 또한 미성년자를 업데이트하는 것이 었습니다. 감사합니다!
XXL

당신은 생명의 은인입니다! 나는 이것을 사용하여 md를 사용하는 WD NAS 장치를 해제했습니다.
Vlad

이 솔루션은 이론적으로는 정확하지만 생활 시스템에서 구현하기가 어려웠습니다. 또한 옵션 # 1이 작동하지 않았습니다. 나는 갔다 superuser.com/questions/287462/...
고른

솔루션의 마지막 부분에 +1하여 레이드 어레이를 한 시스템에서 다른 시스템으로 이동할 때 매우 유용했습니다. 'hostname : 2'와 md127을 md1로 변경하는 것은 이름의 일관성을 유지하기 위해 필요한 것입니다
yahol

13

haimg의 훌륭한 답변에 추가하십시오. mdadm.conf를 사용해도 mdadm.conf를 읽기 전에 시스템 (적어도 Ubuntu의 경우)에서 어레이를 자동 어셈블 할 수 있습니다. 그래서 그것을 찾으면 어쨌든 방금 조립 된 배열을 무시합니다.

이를 설명하기 위해 sudo update-initramfs -u적절한 initrd를 재생성하십시오.

관련 링크 : http://ubuntuforums.org/showthread.php?t=1764861%29%3a


2
이로 인해 우분투 16.04에서 (다시 재부팅 한 후) 문제가 해결되었습니다. 제 경우에는 배열을 다시 만들고 새로운 UUID를 사용했기 때문입니다. 에서 업데이트 한 후 mdadm.conf재부팅만으로는 충분하지 않았습니다. initramfs를 업데이트하면 트릭을 수행했습니다.
nh2

3

다른 답변은 저에게 효과적이지 않았지만 Centos에서는 다음 가이드를 사용했습니다. 문제는 부팅시 /etc/mdadm.conf가 실제로 사용되지 않으며 새 커널이 설치되거나 initramfs가 수동으로 다시 생성 될 때만 업데이트된다는 것입니다. 따라서 본질적으로 다음이 필요합니다.

dracut --force

출처 : http://realtechtalk.com/mdadm_change_wrong_device_name_md127_fix_and_solution_in_Linux-1783-articles


2

버전 0.9 수퍼 블록에는 이름 /dev/md127이 없으며 버전 1에 도입되었습니다 . 배열의 이름이 아니며 배열의 장치 파일 이름입니다. 이는 RAID 블록 장치의 부 번호의 직접적인 결과입니다. 이 부 번호는 어레이가 조립 될 때 임의로 선택됩니다.

UUID는 필요한 경우 배열에 대한 고유 식별자를 제공합니다. 사람이 읽을 수 있거나 구조화 된 이름을 선호하는 경우 LVM 물리 볼륨을 어레이에 넣으십시오.


최신 버전 의 --homehost 가능성을 알고 있으므로 이것이 v0.90 메타 데이터 배열이라고 고의로 언급 한 이유입니다. 그러나 그것은 내 의도가 아니며 호환되지도 않습니다. 내 게시물을 살펴보면 / dev / md127어레이이름 이라고 언급 한 위치를 알 수 없습니다 . 나는 내가하고 싶은 것에 대한 정확한 세부 사항을 제공했다고 생각합니다. 따라서 질문은 여전히 ​​남아 있습니다. 어떻게 변경하고 어떻게 "소수"가 저장됩니까? 나는 그것이 슈퍼 블록의 일부라고 생각합니까? 16 진 편집시 수퍼 블록 체크섬을 망치게됩니까?
XXL

@XXL 해당 번호는 어디에도 저장되지 않으며 어레이를 조립할 때 임의로 선택됩니다.
Gilles 'SO- 악마 그만해

흠 .. 이해가되지 않습니다. 그러면 왜 mdadm -Esv 일 때 항상 / dev / md127을 습니까? 정적 이름 이외의 다른 것을 얻지 않아야합니까? 그것이 "임의"인 경우입니다 ..
XXL
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.