일반 로깅 시스템 외에도 BTRFS에는 stats 명령 이있어 드라이브 당 오류 (읽기, 쓰기 및 손상 / 체크섬 오류 포함)를 추적합니다.
# btrfs device stats /
[/dev/mapper/luks-123].write_io_errs 0
[/dev/mapper/luks-123].read_io_errs 0
[/dev/mapper/luks-123].flush_io_errs 0
[/dev/mapper/luks-123].corruption_errs 0
[/dev/mapper/luks-123].generation_errs 0
따라서 간단한 루트 크론 작업을 만들 수 있습니다.
MAILTO=admin@myserver.com
@hourly /sbin/btrfs device stats /data | grep -vE ' 0$'
이렇게하면 매시간 긍정적 인 오류 수를 확인하고 이메일을 보냅니다. 전자 메일 알림이 작동하는지 확인하기 위해 이러한 시나리오 (예 : 손상 또는 grep 제거)를 테스트해야합니다.
또한 BTRFS (체크섬 기능이있는)와 같은 고급 파일 시스템의 경우 불량 드라이브로 인한 자동 손상을 감지하기 위해 2 주마다 스크럽을 예약하는 것이 좋습니다.
@monthly /sbin/btrfs scrub start -Bq /data
이 -B
옵션은 스크럽을 포 그라운드로 유지하므로 전자 메일 cron이 보내는 결과를 볼 수 있습니다. 그렇지 않으면 백그라운드에서 실행되며 결과가 전자 메일에없는 것처럼 수동으로 확인해야합니다.
업데이트 : Michael Kjörling이 제안한 grep이 향상되었습니다.
업데이트 2 : 스크러빙 및 일반 읽기 작업에 대한 추가 참고 사항 (BTRFS에만 적용되는 것은 아님) :
Ioan이 지적한 것처럼, 스크럽은 어레이의 크기와 유형 (및 기타 요인)에 따라 경우에 따라 하루 이상이 소요될 수 있습니다. 그리고 그것은 능동 스캔이며 향후 오류를 감지하지 못합니다. 스크럽의 목표는 해당 시점에서 드라이브의 오류를 찾아 수정하는 것입니다. 그러나 다른 RAID 시스템과 마찬가지로 주기적 스크럽을 예약하는 것이 좋습니다. 파일 읽기와 같은 일반적인 I / O 작업이 읽은 데이터가 실제로 올바른지 확인하는 것은 사실입니다. 그러나 간단한 미러를 고려하십시오-파일의 첫 번째 사본이 손상 될 드라이브로 인해 손상되었지만 정확한 두 번째 사본이 실제로 BTRFS에서 읽 히면 BTRFS는 손상이 있음을 알 수 없습니다 드라이브 중 하나에. 요청 된 데이터가 수신 되었기 때문입니다.즉, 한 드라이브에서 손상된 것으로 알고있는 파일을 특별히 읽더라도이 읽기 작업으로 손상이 감지 될 것이라는 보장은 없습니다.
이제 BTRFS가 정상 드라이브에서만 읽은 것으로 간주하고 불량 드라이브의 손상을 감지하는 스크럽이 실행되지 않으며 양호한 드라이브도 불량으로 간주됩니다. 결과는 데이터 손실입니다 (적어도 BTRFS는 어떤 파일이 여전히 올바른지 여전히 읽을 수 있습니다). 물론 이것은 간단한 예입니다. 실제로 BTRFS는 항상 한 드라이브에서 읽고 다른 드라이브를 무시하지는 않습니다.
그러나 요점은 정기적 인 스크럽은 정기적 인 읽기 작업이 반드시 감지 할 수없는 오류를 찾아서 수정하기 때문에 중요하다는 것입니다.
고장난 드라이브 :이 질문은 매우 인기가 있기 때문에이 "모니터링 솔루션"은 불량 드라이브의 문제를 감지하기위한 것입니다 (예 : 드라이브를 죽이면 오류가 발생하지만 여전히 액세스 할 수 있음).
반면에 드라이브가 갑자기 사라지면 (죽어 가거나 오류가 발생하지 않고 연결이 끊어 지거나 완전히 죽었을 경우) 드라이브에 결함이있는 것입니다 (ZFS는 해당 드라이브를 FAULTED로 표시합니다). 불행히도 BTRFS는 파일 시스템이 마운트되는 동안 드라이브가 사라 졌다는 것을 인식하지 못할 수 있습니다.이 메일 링리스트 항목에서 09/2015에서 지적했듯이 (패치되었을 가능성이 있음) :
차이점은 마운트 할 때 존재하지 않는 장치를 감지하는 코드가 있고 마운트 된 파일 시스템에서 떨어지는 장치를 감지하는 코드 (아직)가 없다는 것입니다. 장치가 제대로 감지되지 않는 것이 우선 순위가 아닌 것처럼 보이는 이유는 모르겠지만 마운트 동작과는 별개의 문제입니다.
https://www.mail-archive.com/linux-btrfs@vger.kernel.org/msg46598.html
그때까지 dmesg에 많은 오류 메시지가 있었으므로 dmesg를 grepping하는 것이 신뢰할 수 없습니다.
BTRFS를 사용하는 서버의 경우 RAID 어레이의 드라이브 중 하나 이상이 사라 졌을 때, 즉 더 이상 액세스 할 수없는 경우 경고를 보내는 사용자 정의 검사 (크론 작업)가있는 것이 좋습니다.