실행하는 동안 'mdadm'RAID를 확인하는 방법은 무엇입니까?


41

집에 컴퓨터 모음을 설치하고 지원하기 위해 RAID 배열을 실행하는 "서버"linux 상자가 있습니다.

그것의 현재 mdadm RAID-1에가는 RAID-5좀 더 드라이브가되면 (다음 RAID-6I가 바라고 있어요). 그러나 나는 하나의 드라이브에서 데이터가 손상되는 것에 대한 다양한 이야기를 들었으며 첫 번째 드라이브가 고장 나고 두 번째 드라이브가 망가 졌을 때까지 사용중인 다른 드라이브로 인해 눈치 채지 못했습니다. , 5 번째 드라이브).

분명히 백업이 중요하고 그 문제도 해결하고 있지만 이전에이 문제에 도움이되고 실행 중에 RAID를 확인할 수있는 스크립트를 보았습니다. 그러나이 스크립트를 다시 찾으려면 이전에 실행 한 것과 비슷한 것으로 보이는 것을 찾기가 어렵고 구식이며 변경된 내용을 이해하지 못한다고 생각합니다.

모든 디스크가 여전히 정상적으로 수행되고 있는지 확인하기 위해 실행중인 RAID를 어떻게 확인 하시겠습니까?

모든 드라이브에서 SMART를 모니터링하고 mdadm오류 발생시 이메일을 보내도록 설정했지만 내 드라이브가 때때로 "확인"되도록하고 싶습니다.


이미 올바른 경로에있는 것처럼 들리면 cron을 설정하여 드라이브의 smartctl 결과를 보내면됩니다.
laebshade

답변:


56

중복성을 갖춘 RAID의 요점은 가능한 한 오래 계속 될 것이지만, 고장난 디스크와 같이 성능이 저하 된 모드로 들어가는 오류를 감지한다는 것입니다. 다음을 사용하여 배열의 현재 상태를 표시 할 수 있습니다 mdadm -D.

# mdadm -D /dev/md0
<snip>
       0       8        5        0      active sync   /dev/sda5
       1       8       23        1      active sync   /dev/sdb7

또한 mdadm -D고장난 구성 요소와 같은 문제가있는 경우 반환 상태 는 0이 아닙니다 (1은 RAID 모드가 보상하는 오류를 나타내고 2는 완전한 실패를 나타냅니다).

을보고 모든 RAID 장치 상태를 빠르게 요약 할 수도 있습니다 /proc/mdstat. RAID 장치에 대한 정보도 얻을 수 있습니다 /sys/class/block/md*/md/*. Documentation/md.txt커널 설명서를 참조하십시오 . 일부 /sys항목은 쓰기 가능합니다. 예를 들어, 당신은 전체 검사 트리거 할 수 있습니다 md0와를 echo check >/sys/class/block/md0/md/sync_action.

이러한 지점 검사 외에도 mdadm은 문제가 발생하자마자 사용자에게 알릴 수 있습니다. 당신이이 있는지 확인 MAILADDR root/etc/mdadm.conf(일부 배포판 (예를 들어 데비안)이 자동으로 설정). 그러면 오류 (배열 저하)가 발생하자마자 이메일 알림수신됩니다 .

로컬 컴퓨터에서 루트로 메일 보내기를 받도록하십시오 (일부 최신 배포에서는 모든 전자 메일이 외부 공급자를 통과하지만 로컬 시스템을받는 것은 모든 시스템 관리자에게 필요함) 때문에이를 생략합니다. root에게 메일을 보내서 이것을 테스트하십시오 : echo hello | mail -s test root@localhost. 일반적으로 올바른 이메일 설정에는 두 가지가 필요합니다.

  • 로컬 컴퓨터 에서 MTA 를 실행하십시오 . 로컬 메일 배달을 허용하려면 MTA를 설정해야합니다. 모든 배포판에는 적합한 MTA가 포함되어 있습니다. 이메일을 로컬로 전달하려면 nullmailer가 아닙니다.
  • 시스템 계정으로가는 메일을 적어도 root정기적으로 읽는 주소로 리디렉션하십시오 . 로컬 컴퓨터의 계정이거나 외부 전자 메일 주소 일 수 있습니다. 대부분의 MTA에서는 주소를 /etc/aliases; 당신은 같은 줄이 있어야합니다

    root: djsmiley2k
    

    현지 배송 또는

    root: djsmiley2k@mail-provider.example.com
    

    원격 배송 용. 원격 배달을 선택하는 경우 MTA가 해당 구성으로 구성되어 있는지 확인하십시오. MTA에 따라 newaliases편집 후 명령 을 실행해야 할 수도 있습니다 /etc/aliases.


왜 nullmailer를 사용하지 않아야하는지 설명 할 수 있습니까? unix.stackexchange.com/questions/1449/…에 언급 된 이유 때문 입니까? 어떤 MTA를 추천 하시겠습니까?
카메론 마틴

@CameronMartin Nullmailer는 메일을 원격 컴퓨터에만 전달하며 로컬 배달은 수행하지 않습니다. 컴퓨터에서 메일을 수락 할 수있는 SMTP 서버가 있지만 메일을 로컬로 배달하는 경우에는 사용할 수 없습니다. 명확히하기 위해 답변을 편집했습니다.
Gilles 'SO- 악마 그만해'

19

온라인 상태 일 때 전체 어레이를 강제로 검사 할 수 있습니다. 예를 들어 on 배열을 확인하려면 /dev/md0root로 실행하십시오.

echo check > /sys/block/md0/md/sync_action

또한 한 달에 한 번 다음 명령을 실행하는 크론 작업이 있습니다.

tar c /dir/of/raid/filesystem > /dev/null

드라이브 자체를 철저히 검사하는 것은 아니지만 시스템이 모든 파일을 디스크에서 성공적으로 읽을 수 있는지 주기적으로 확인하도록합니다. 예, 일부 파일은 디스크 대신 메모리 캐시에서 읽 히게됩니다. 그러나 파일이 메모리 캐시에 있으면 최근에 디스크에서 성공적으로 읽히거나 디스크에 쓰려고 시도 중이며 이러한 작업 중 하나라도 드라이브 오류를 발견합니다. 어쨌든,이 작업을 실행하면 RAID 어레이의 가장 중요한 기준 (“데이터를 성공적으로 읽을 수 있습니까?”)을 테스트하며 3 년 동안 어레이를 실행 한 적이 있습니다. 그것을 발견 한이 명령.

작은 경고 하나는 파일 시스템이 크면이 명령에 시간이 오래 걸린다는 것입니다. 내 시스템은 약 6 시간 / TiB가 걸립니다. ionice드라이브 검사 중에 시스템의 나머지 부분이 멈추지 않도록 사용하여 실행합니다 .

ionice -c3 tar c /dir/of/raid/filesystem > /dev/null

ionice당신이 (기본값)을 사용하는 경우에만 작동합니다 CFQ I / O 스케줄러.
Totor

따라서 이것은 대부분 명백하지만 나에게는 그렇지 않습니다. 출력이 devnull로 리디렉션 된 스크립트를 실행하면 실제로 무언가를 알려주는 방법은 무엇입니까? "tar"에 오류가 발생하면 mdadm 데몬으로 전파되어 전자 메일을 보내 게 될 것입니까?
ljwobker

당신에게 내 질문은, cron 작업에서 실행되는 경우 tar 오류를 어떻게 포착합니까? 그 결과는 어디에 있습니까? 나는 정기적으로 모니터링 할 수있는 파일에 stderr에 대한 리디렉션을 추가하거나 터미널 창을 여는 콘솔에 꼬리를 인쇄한다고 생각했을 것입니다 :)
Madivad

1
@ljwobker 오래된 스레드를 되살려 서 죄송합니다. tar 명령의 의도는 볼륨의 전체 내용을 읽으려는 것입니다. 이렇게하면 전체 볼륨을 여전히 읽을 수 있는지 확인하고 md에 불량 디스크를 감지 할 수 있습니다.
mikepj

1
cronjob에서 오는 경우 cron은 일반적으로 출력되는 모든 것을 mailto = 위치 (설정된 경우)로, 그렇지 않으면 root로 직접 보냅니다. 그러나 ... dd가 tar보다 나은지 궁금합니다.
djsmiley2k-CoW

11

데비안 및 우분투 'mdadm'패키지는 파일을 포함합니다

/etc/cron.d/mdadm

차례로 매월 첫 번째 일요일이 명령을 실행합니다.

/usr/share/mdadm/checkarray --cron --all --idle --quiet

/ etc / default / mdadm 에서 AUTOCHECK를 false로 설정하지 않는 한 모든 배열의 일관성을 검사합니다 . 보고서는 '루트'사용자에게 전송됩니다 (이러한 이메일을 받도록하십시오).


8

이 간단한 기능을 사용하여 확인합니다 /proc/mdstat.

#Health of RAID array
raid() { awk '/^md/ {printf "%s: ", $1}; /blocks/ {print $NF}'  /proc/mdstat; }

산뜻한! 나는 스타일을 좋아한다 :)
jirislav
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.