/dev/md127은 중지를 거부합니다. 열린 파일 없음

/dev/md127은 중지를 거부합니다. 열린 파일 없음

그래서 Ubuntu 12.10 시스템에서 /dev/md127을 중지하려고 합니다. RAID1으로 설정되어 있지만 모든 것을 md0으로 이동하려고 합니다(이름을 바꾸세요). 이름 변경이 불가능하다는 내용을 읽었으므로 드라이브를 제거하고 md0으로 새 어레이에 넣어 보았습니다. --fail 및 --remove를 사용하여 드라이브(sdb)를 제거할 수 있었지만 sdc가 응답하지 않고 md127이 --stop --force에 응답하지 않습니다.

나는 fusionr와 lsof를 실행했지만 md127을 사용하여 아무것도 표시하지 않았습니다. md127에서 LVM을 실행하고 있지만 LV를 제거하고 "{lv,vg}change -an vg_Name"을 수행했습니다.

다음에 무엇을 시도해야할지 모르겠습니다. 제가 이름을 바꾸거나 이동하는 이유를 궁금해하시는 분들을 위해 말씀드리자면 저는 이런 종류의 일에 대해 약간 강박증을 갖고 있습니다.

관련이 있는 경우 명령을 중지/실패/삭제하려는 여러 번의 시도에도 불구하고 내가 사용한 정확한 명령은 다음과 같습니다.

mdadm --stop --force /dev/md127 # this failed with the error message "mdadm: Cannot get exclusive access to /dev/md127:Perhaps a running process, mounted filesystem or active volume group?"
fuser /dev/md127 # no output
lsof /dev/md127 # no output
mdadm --fail /dev/md127 /dev/sdb # succeeded
mdadm --remove /dev/md127 /dev/sdb # succeeded
mdadm --fail /dev/md127 /dev/sdc # this failed - "device or resource busy"
mdadm --remove /dev/md127 /dev/sdc # this failed - "device or resource busy"
lvchange -an vg_Name
vgchange -an vg_Name

답변1

mdadm 위에 LVM을 사용하는 경우 볼륨 그룹을 비활성화할 때 LVM이 장치 매퍼 장치를 제거하지 않는 경우가 있습니다. 수동으로 삭제할 수 있습니다.

  1. 출력에 아무 것도 없는지 확인하십시오 sudo vgdisplay.
  2. 를 보세요 /dev/mapper/. 이 파일 외에도 control볼륨 그룹 이름을 딴 장치 매퍼 장치가 있어야 합니다 VolGroupArray-name.
  3. 실행합니다 sudo dmsetup remove VolGroupArray-name( VolGroupArray-name장치 매퍼 장치의 이름으로 바꿉니다).
  4. 이제 실행할 수 있습니다 sudo mdadm --stop /dev/md0(또는 장치 이름이 무엇이든 mdadm).

답변2

장치 번호만 변경하려는 경우 다음 명령을 사용하여 선택한 장치 번호가 포함된 어레이를 구성 파일에 추가하십시오.

    echo "ARRAY /dev/md0 level=raid1 num-devices=2 UUID=$(blkid -s UUID -o value /dev/md127) devices=/dev/sdb,/dev/sdc" >> /etc/mdadm.conf

/etc/mdadm.conf에 RAID를 배치한 후 재부팅하기만 하면 지정한 장치 번호를 사용하여 RAID가 자동으로 재조립됩니다. 이렇게 하면 부팅할 때마다 동일한 장치 이름으로 RAID가 구축되도록 할 수 있다는 또 다른 이점이 있습니다.

답변3

다음 명령의 출력을 붙여넣을 수 있습니까?

mdadm -D /dev/md127

mdadm -E /dev/sdc

cat /proc/mdstat

공격대는 "이름 변경"이 가능합니다. 이 경우 이름 바꾸기는 팀이 사용하는 슈퍼블록 버전에 따라 다릅니다.

슈퍼블록 0.90 raid의 이름을 바꾸려면 다음 명령을 사용해야 합니다: mdadm -A /dev/md0 -U super-minor -u <uuid of the array>

슈퍼블록 1.X raid의 이름을 바꾸려면 다음 명령을 사용해야 합니다: mdadm -A /dev/md0 -U name -N <new name> -u <uuid of the array>

이해가 안 가는데 왜 이름을 바꾸려는지 설명해 주실 수 있나요? 노드 이름 md127은 initramfs 스크립트가 md127로 시작하므로 이 스크립트로 어셈블됩니다. 내가 아는 한, 선호하는 마이너 번호를 변경할 수 있지만 initramfs 스크립트는 마이너 번호에 관계없이 어셈블리 노드 127로 시작됩니다.

답변4

위에서 언급한 것 같지만 만일을 대비해 삭제하려는 mdX를 사용하는 활성 lvm 논리 볼륨을 정의하는 경우 mdadm은 해당 드라이브 볼륨을 사용하는 논리 볼륨을 삭제할 때까지 또는 삭제를 거부합니다. 최소한 lvm에서 md 드라이브를 비우십시오. mdadm은 논리 볼륨이 삭제되면 RAID를 중지합니다.

관련 정보