비활성 RAID 장치를 다시 작동시키는 방법?


30

부팅 한 후 RAID1 장치 ( /dev/md_d0*)가 때때로 웃긴 상태가되어 마운트 할 수 없습니다.

* 원래 /dev/md0는 만들었지 만 어떻게 든 변경되었습니다 /dev/md_d0.

# mount /opt
mount: wrong fs type, bad option, bad superblock on /dev/md_d0,
       missing codepage or helper program, or other error
       (could this be the IDE device where you in fact use
       ide-scsi so that sr0 or sda or so is needed?)
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

RAID 장치가 어떻게 든 비활성화 된 것으로 보입니다 :

# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] 
                [raid4] [raid10] 
md_d0 : inactive sda4[0](S)
      241095104 blocks

# mdadm --detail /dev/md_d0
mdadm: md device /dev/md_d0 does not appear to be active.

질문은 장치를 다시 활성화하는 방법입니다 (을 사용하여 mdmadm추정합니다)?

(다른 경우에는 부팅 후 정상적으로 작동하며 문제없이 수동으로 마운트 할 수 있지만 다음과 같은 경우에도 자동으로 마운트되지는 않습니다 /etc/fstab.

/dev/md_d0        /opt           ext4    defaults        0       0

보너스 질문 : 부팅시 RAID 장치가 자동으로 마운트되도록하려면 어떻게해야 /opt합니까? )

이것은 Ubuntu 9.10 워크 스테이션입니다. 이 질문에서 내 RAID 설정에 대한 배경 정보 .

편집 : 내 /etc/mdadm/mdadm.conf모습은 이렇습니다. 나는이 파일을 최소한 손으로 건드리지 않았습니다.

# by default, scan all partitions (/proc/partitions) for MD superblocks.
# alternatively, specify devices to scan, using wildcards if desired.
DEVICE partitions

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR <my mail address>

# definitions of existing MD arrays

# This file was auto-generated on Wed, 27 Jan 2010 17:14:36 +0200

에서 /proc/partitions마지막 항목 인 md_d0장치가 다시 활성화 될 일 때, 재부팅 후, 지금은 적어도. (사용하지 않을 때 동일한 지 확실하지 않습니다.)

해결 : Jimmy Hedman이 제안한 대로 다음과 같은 결과를 얻었습니다 mdadm --examine --scan.

ARRAY /dev/md0 level=raid1 num-devices=2 UUID=de8fbd92[...]

에 추가 /etc/mdadm/mdadm.conf하여 주요 문제를 해결 한 것으로 보입니다. 대신에 다시 /etc/fstab사용하도록 변경 하면 RAID 장치도 자동으로 마운트됩니다!/dev/md0/dev/md_d0

답변:


25

보너스 질문 :

mdadm --examine --scan >> /etc/mdadm/mdadm.conf

2
좋아, mdadm --examine --scan생산 ARRAY /dev/md0 level=raid1 num-devices=2 UUID=...(대신 md_d0의 MD0주의!) 나는 mdadm.conf 파일에 그것을 넣어 (수동은 sudo를하고 몇 가지 문제가 있었기 때문에 >>() "권한 거부"와 Sudo이 되고 필요) 또한 사용에 fstab에 업데이트 다시 md0 (md_d0 아님). 이제 더 이상 "비활성"문제가 발생하지 않으며 부팅시 RAID 장치가 / opt에 자동으로 마운트됩니다. 감사합니다!
Jonik

3
문제가 발생한 이유 sudo ... >> mdadm.conf는 쉘이 sudo를 실행하기 전에 경로 재 지정된 파일을 열기 때문입니다. 명령 su -c '.... >> mdadm.conf'이 작동해야합니다.
Mei

10

/etc/mdadm/mdadm.conf리눅스를 재부팅 할 때 어레이를 마운트하려면 어레이를 수동으로 추가해야한다는 것을 알았 습니다. 그렇지 않으면 나는 당신이 여기있는 것을 정확하게 얻습니다- md_d1비활성 장치 등

conf 파일은 다음과 같이 보여야합니다. 즉 ARRAY, 각 md 장치마다 한 줄 입니다. 내 경우에는이 파일에서 새 배열이 누락되었지만 나열 된 경우 문제의 해결 방법이 아닐 수 있습니다.

# definitions of existing MD arrays
ARRAY /dev/md0 level=raid5 num-devices=3 UUID=f10f5f96:106599e0:a2f56e56:f5d3ad6d
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=aa591bbe:bbbec94d:a2f56e56:f5d3ad6d

md-device 당 하나의 배열을 추가하고 위에 포함 된 주석 뒤에 또는 해당 주석이없는 경우 파일 끝에 추가하십시오. 다음을 수행하여 UUID를 얻습니다 sudo mdadm -E --scan.

$ sudo mdadm -E --scan
ARRAY /dev/md0 level=raid5 num-devices=3 UUID=f10f5f96:106599e0:a2f56e56:f5d3ad6d
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=aa591bbe:bbbec94d:a2f56e56:f5d3ad6d

보시다시피 스캔 결과의 결과를 파일로 복사하면됩니다.

나는 우분투 데스크탑 10.04 LTS를 실행하고 있으며,이 동작이 우분투 서버 버전과 다르다는 것을 기억하는 한, 오래 전에 서버에서 md-devices를 만들었을 때 잘못되었을 수 있습니다. 내가 방금 옵션을 놓친 것일 수도 있습니다.

어쨌든 conf-file에 배열을 추가하면 트릭을 수행하는 것처럼 보입니다. 나는 몇 년 동안 아무런 문제없이 위의 습격 1과 5를 습격했습니다.


1
따라서 본질적으로 현재 받아 들여지는 대답과 같은 말을 더 장황하게 말하고 있습니까? :) 여전히 +1, 좋은 첫 게시물입니다.
Jonik

7

경고 : 우선 아래 ( "--force"사용으로 인해)가 위험 해 보인다고 말하고 복구 할 수없는 데이터가있는 경우 다음 중 하나를 시도하기 전에 관련된 파티션의 복사본을 만드는 것이 좋습니다. 아래 것들. 그러나 이것은 나를 위해 일했습니다.

어레이가 비활성으로 표시되는 것과 같은 문제가 있었으며 여기에서 다른 사람들이 제안한 "mdadm --examine --scan> /etc/mdadm.conf"를 포함하여 아무것도 수행하지 않았습니다.

필자의 경우 드라이브 교체 후 RAID-5 어레이를 시작하려고 할 때 (더러움을 통해 dmesg) 더러워 졌다고 말합니다 .

md/raid:md2: not clean -- starting background reconstruction
md/raid:md2: device sda4 operational as raid disk 0
md/raid:md2: device sdd4 operational as raid disk 3
md/raid:md2: device sdc4 operational as raid disk 2
md/raid:md2: device sde4 operational as raid disk 4
md/raid:md2: allocated 5334kB
md/raid:md2: cannot start dirty degraded array.

에서 비활성으로 표시되도록하기 /proc/mdstat:

md2 : inactive sda4[0] sdd4[3] sdc4[2] sde4[5]
      3888504544 blocks super 1.2

교체 한 드라이브를 제외하고 모든 장치에 동일한 이벤트가 있음을 발견했습니다 ( /dev/sdb4).

[root@nfs1 sr]# mdadm -E /dev/sd*4 | grep Event
mdadm: No md superblock detected on /dev/sdb4.
         Events : 8448
         Events : 8448
         Events : 8448
         Events : 8448

그러나 어레이 세부 정보는 5 개 장치 중 4 개를 사용할 수 있음을 보여줍니다.

[root@nfs1 sr]# mdadm --detail /dev/md2
/dev/md2:
[...]
   Raid Devices : 5
  Total Devices : 4
[...]
 Active Devices : 4
Working Devices : 4
[...]
    Number   Major   Minor   RaidDevice State
       0       8        4        0      inactive dirty  /dev/sda4
       2       8       36        2      inactive dirty  /dev/sdc4
       3       8       52        3      inactive dirty  /dev/sdd4
       5       8       68        4      inactive dirty  /dev/sde4

위의 내용은 "상태"열의 메모리에서 가져온 것이므로 스크롤 백 버퍼에서 찾을 수 없습니다.

배열을 중지 한 다음 다시 어셈블하여이 문제를 해결할 수있었습니다.

mdadm --stop /dev/md2
mdadm -A --force /dev/md2 /dev/sd[acde]4

이 시점에서 어레이는 5 개의 장치 중 4 개로 실행되어 교체 장치를 추가 할 수 있었고 다시 구축 할 수있었습니다. 아무 문제없이 파일 시스템에 액세스 할 수 있습니다.


4

FStab의 오류로 인해 서버가 부팅되지 않는 Ubuntu 10.04 관련 문제가 발생했습니다.

위의 솔루션에서 언급 한대로이 명령을 실행했습니다.

mdadm --examine --scan >> /etc/mdadm/mdadm.conf

"mdadm --examine --scan"의 결과가 "/etc/mdadm/mdadm.conf"에 추가됩니다.

제 경우에는 다음과 같습니다.

ARRAY /dev/md/0 metadata=1.2 UUID=2660925e:6d2c43a7:4b95519e:b6d110e7 name=localhost:0

이것은 fakeraid 0 입니다. 자동 마운트를위한 / etc / fstab의 명령 은 다음과 같습니다.

/dev/md0 /home/shared/BigDrive ext3 defaults,nobootwait,nofail 0 0

여기서 중요한 것은 "nobootwait"와 "nofail"이 있다는 것입니다. Nobootwait는 부팅을 방해하는 시스템 메시지를 건너 뜁니다. 제 경우에는 이것이 원격 서버에 있었기 때문에 필수적이었습니다.

이것이 일부 사람들에게 도움이되기를 바랍니다.


이것이 나를 위해 한 일입니다. RAID Express를 PCI Express SATA 카드를 통해 연결 했으므로 부팅시 시스템에서 해당 드라이브를 아직 볼 수 없었습니다.
Michael Robinson

2

당신은 당신의 MD 장치를 활성화 할 수 있습니다

mdadm -A /dev/md_d0

RAID 멤버 중 하나가 발견되거나 비슷한 문제가 발생하기 전에 일부 시작 스크립트가 너무 빨리 시작된다고 가정합니다. 빠르고 더러운 해결 방법으로이 행을 /etc/rc.local에 추가 할 수 있어야합니다.

mdadm -A /dev/md_d0 && mount /dev/md_d0

편집 : 분명히 /etc/mdadm/mdadm.conf에 여전히 이전 구성 이름이 포함되어 있습니다. 이 파일을 편집하고 md0의 발생을 md_d0으로 바꾸십시오.


좋아, 그 경우에 장치 할 때 입니다 만, 재부팅 후 활동 mount /dev/md_d0/etc/rc.local작품 잘. mdadm -A /dev/md_d0반면에 두 경우 모두 해당 오류 메시지와 함께 실패합니다 (따라서 해당 &&연산자 전에 사용할 수 없었습니다 ). 어쨌든 문제의 절반이 해결되어 +1입니다.
Jonik

실제로 mdadm.conf에는 최소한 직접적으로 구성 이름이 포함되어 있지 않습니다 ( /proc/partitions그렇지만 참조 ). 편집 된 질문을 참조하십시오. mdadm.conf를 건드리지 않았습니다. 자동 생성 도구는 무엇입니까?
Jonik

레코드의 경우 /etc/rc.local모든 것이 올바르게 작동하는 것처럼 해결 방법을 제거했습니다 . superuser.com/questions/117824/… :)
Jonik

2

비슷한 문제가 발생했습니다 ... 관련 장치 파티션을 키운 후에 서버가 md2를 마운트하지 않습니다. 이 스레드를 읽었을 때 md2 RAID 장치에 새로운 UUID가 있고 시스템이 이전 장치를 사용하려고한다는 것을 알았습니다.

제안한대로 ...에서 'md2'출력 사용

mdadm --examine --scan

/etc/mdadm/mdadm.conf이전 UUID 줄을 편집 하여 위 명령의 출력으로 바꾸면 문제가 해결되었습니다.


2

당신이 무언가를 /dev/md[012346789}하는 척 하면로 이동합니다 /dev/md{126,127...}. /dev/md0에 계속 장착 /dev/md126하거나 /dev/md127다음을 수행해야합니다.

언 마운트 /dev/md127 또는 언 마운트 /dev/md126.

시스템을 중지하지 않고 명령 및 일부 응용 프로그램을 실행할 수 있도록 일시적입니다.


1

md_d0 : inactive sda4[0](S)RAID1 어레이에 대해 잘못 보입니다. 어레이에 활성 장치가없고 예비 장치가 하나 ((S)로 표시됨, 장애가 발생한 장치의 경우 (F), 확인 / 활성 장치의 경우 없음) -RAID1 배열 인 경우 '저하 된 상태로 실행 중이 아니면 최소 2 개의 OK / Active 장치 (및 저하 된 어레이의 경우 하나 이상의 OK / Active 장치) 가 있어야하며 , 스페어되지 않은 예비 장치가없는 RAID1 어레이를 활성화 할 수 없습니다 다른 드라이브가 실패 할 때 활성화 될 때까지 데이터 사본을 포함하지 마십시오. 해당 /proc/mdstat출력을 올바르게 읽으면 현재 상태에서 어레이를 활성화 할 수 없습니다.

컴퓨터에 스핀 업하지 못한 실제 드라이브가 있습니까? ls /dev/sd*일반적으로 해당 시스템에서 볼 것으로 예상되는 모든 드라이브와 파티션을 나열 합니까 ?


지미의 답변에 나온 조언을 따른 후에 더 이상 비활성 상태를 재현 할 수없는 것 같습니다 (다시 재부팅 한 후에도 그렇게 보입니다) ... 어쨌든 좋습니다 :) 감사합니다!
Jonik

이 상태에 대한 질문을 Linux RAID 메일 링리스트로 가져 와서 다음과 같은 응답을 얻었습니다. spinics.net/lists/raid/msg61352.html
nh2

방금 여기 에 쓴 것처럼 echo active > /sys/block/md0/md/array_state저를 위해 일했습니다. 예비 전용 RAID0 대신 디스크가 누락 된 RAID를 RAID1로 다시 표시합니다.
nh2

1

하드웨어 문제가없고 어레이를 시작하기에 충분한 드라이브 / 파티션이 있다고 가정하고 어레이를 실행하는 간단한 방법은 다음과 같습니다.

md20 : inactive sdf1[2](S)
      732442488 blocks super 1.2

 sudo mdadm --manage /dev/md20  --run

어떤 이유로 든 배열은 괜찮지 만 무언가가 배열을 시작하거나 구축하지 못하게 할 수 있습니다. 제 경우에는 mdadm이 원래 배열 이름을 md127로 알지 못했고 해당 드라이브에 대해 모든 드라이브의 플러그가 뽑 혔기 때문입니다. 다시 꽂을 때 수동으로 어셈블해야했습니다 (아마도 mdadm이 오프라인의 이전 어레이 이름으로 인해 어레이가 이미 활성화되었다고 생각한 버그).

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