나는 집에 여러 대의 컴퓨터를 모으기 시작했고, 이를 지원하기 위해 RAID 어레이를 실행하는 "서버" Linux 상자를 가지고 있었습니다.
현재 mdadm
RAID-1
, RAID-5
드라이브가 더 많아지면 (그렇기 RAID-6
를 바랍니다). 그러나 한 드라이브에서 데이터가 손상되었다는 다양한 이야기를 들었는데 첫 번째 드라이브가 고장나고 두 번째 드라이브도 손상되었다는 사실을 발견할 때까지 다른 드라이브가 사용 중이었기 때문에 전혀 눈치채지 못했습니다. 및 다섯 번째 드라이브).
분명히 백업은 중요하며 이 문제도 다루고 있지만, 이 문제를 해결하는 데 도움이 되고 실행 중에 RAID를 확인할 수 있도록 하는 일부 스크립트를 본 적이 있다는 것을 알고 있습니다. 그러나 이제 이러한 스크립트를 다시 검색해 보면 이전에 실행했던 것과 유사한 것을 찾기가 어렵고 구식이 된 것 같은 느낌이 들고 무엇이 변경되었는지 이해하지 못합니다.
모든 디스크가 여전히 제대로 작동하는지 확인하기 위해 실행 중인 RAID를 어떻게 확인합니까?
모든 드라이브에서 SMART를 모니터링하고 오류가 발생하면 이메일을 보내도록 설정했지만 mdadm
드라이브가 가끔 자체적으로 "확인"하는지 알고 싶습니다.
답변1
중복성을 갖춘 RAID의 요점은 가능한 한 오랫동안 계속 실행되지만 디스크 장애와 같이 성능 저하 모드로 전환되는 오류를 감지한다는 것입니다. 다음 명령을 사용하여 어레이의 현재 상태 mdadm --detail
(약어로 표시)를 표시할 수 있습니다.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
. /sys/class/block/md*/md/*
RAID 장치에 대한 정보도 얻을 수 있습니다 .admin-guide/md.html
커널 문서에서. 일부 항목은 쓰기 가능합니다. 예를 들어 를 사용하여 전체 검사를 /sys
실행할 수 있습니다 .md0
echo check >/sys/class/block/md0/md/sync_action
이러한 즉석 검사 외에도 mdadm은 문제가 발생하면 즉시 알려줄 수 있습니다. 일부 배포판(예: Debian) MAILADDR root
에서는 이 설정이 자동으로 설정되어 있는지 확인하세요 . /etc/mdadm.conf
그러면 당신은 그럴 것이다오류가 발생하면(어레이 성능 저하) 이메일 알림을 받게 됩니다..
로컬 컴퓨터의 루트로 전송된 이메일을 실제로 받았는지 확인하세요.(일부 최신 배포판에서는 모든 이메일이 외부 공급자를 통해 전달된다고 생각하기 때문에 이를 무시합니다. 그러나 진지한 시스템 관리자에게는 로컬 메일 수신이 필수입니다.) 루트에 메일을 보내 이를 테스트합니다: echo hello | mail -s test root@localhost
. 일반적으로 적절한 이메일 설정에는 다음 두 가지가 필요합니다.
실행하다MTA로컬 컴퓨터에서. MTA는 최소한 로컬 메일 배달을 허용하도록 설정되어야 합니다. 모든 배포판에는 적합한 MTA가 함께 제공되므로 무엇이든 선택할 수 있습니다(이메일을 로컬로 보내려면 nullmailer를 선택하지 마십시오).
시스템 계정(최소
root
)으로 전송된 메일을 자주 읽는 주소로 리디렉션합니다. 이는 로컬 컴퓨터의 계정일 수도 있고 외부 이메일 주소일 수도 있습니다. 대부분의 MTA의 경우 주소는/etc/aliases
다음과 같이 구성할 수 있습니다.root: djsmiley2k
현지 배송 또는
root: [email protected]
원격 배송을 위해. 순간 이동을 선택하는 경우 MTA가 이에 맞게 구성되어 있는지 확인하세요.
newaliases
MTA 에 따라/etc/aliases
.
답변2
전체 어레이가 온라인 상태인 동안 전체 어레이를 강제로 검사할 수 있습니다. 예를 들어 의 배열을 검사하려면 /dev/md0
루트로 실행합니다.
echo check > /sys/block/md0/md/sync_action
또한 한 달에 한 번씩 다음 명령을 실행하는 cron 작업도 있습니다.
tar c /dir/of/raid/filesystem > /dev/null
드라이브 자체를 철저하게 검사하는 것은 아니지만 시스템이 디스크에서 (거의) 모든 파일을 성공적으로 읽을 수 있는지 주기적으로 확인하도록 강제합니다. 예, 일부 파일은 디스크 대신 메모리 캐시에서 읽혀집니다. 그러나 파일이 메모리 캐시에 있는 경우 최근에 디스크에서 성공적으로 읽혔거나 디스크에 쓰려고 하는 경우 이러한 작업 중 하나에서도 드라이브 오류가 발견될 것이라고 가정합니다. 그럼에도 불구하고 이 작업을 실행하면 RAID 어레이의 가장 중요한 기준("데이터를 성공적으로 읽을 수 있습니까?")이 테스트됩니다. 그리고 3년 동안 어레이를 실행하면서 한 번은 드라이브가 고장난 적이 있었습니다. 이 명령으로 찾았습니다.
작은 경고는 파일 시스템이 큰 경우 이 명령이 내 시스템에서는 TiB당 약 6시간이 걸린다는 것입니다. ionice
드라이브 검사 중에 나머지 시스템이 정지되지 않도록 다음 명령을 사용하여 실행합니다 .
ionice -c3 tar c /dir/of/raid/filesystem > /dev/null
답변3
Debian 및 Ubuntu 'mdadm' 패키지에 이 파일이 포함되어 있습니다.
/etc/cron.d/mdadm
이 명령은 매월 첫째 일요일에 순차적으로 실행됩니다.
/usr/share/mdadm/checkarray --cron --all --idle --quiet
AUTOCHECK를 false로 설정하지 않은 한 모든 배열의 일관성을 확인합니다. /etc/default/mdadm). 보고서는 "루트" 사용자에게 전송됩니다(해당 이메일을 받았는지 확인하세요).
답변4
/etc/profile.d/raid_status.sh를 생성하여 프롬프트에 추가했습니다.
raid_prompt() { awk '/^md/ {printf "%s: ", $1}; /blocks/ {print $NF}' /proc/mdstat | awk '/\[U+\]/ {print "\033[32m" $0 "\033[0m"}; /\[.*_.*\]/ {print "\033[31m" $0 "\033[0m"}'; }
그런 다음 PS1을 다음과 같이 설정하십시오.
PS1='$(raid_prompt)\n[\u@\h \W]\$ '
모든 구성원의 전원이 켜져 있으면 어레이 이름과 구성원 상태가 녹색으로 인쇄됩니다. 회원이 실패하면 빨간색으로 인쇄됩니다.