btrfs를 사용하는 파일의 체크섬이 실패하면 실제로 어떤 일이 발생합니까?

btrfs를 사용하는 파일의 체크섬이 실패하면 실제로 어떤 일이 발생합니까?

내 임베디드 Linux 시스템에서 테스트하기 위해 btrfs를 사용하고 있습니다. rfs에는 달러 카드를 사용합니다. 시스템은 원격으로 배포되므로 이를 관리할 인간 시스템 관리자가 없습니다. 내 질문은 파일 읽기 확인이 실패하면 어떻게 됩니까? 이를 자동으로 감지하고 메시지를 중앙 서버로 다시 보내는 방법이 있습니까?

답변1

Btrfs는 crc32c 체크섬을 사용하여 블록 무결성을 확인합니다. 읽을 때 체크섬이 블록과 일치하지 않으면 대체 블록을 읽습니다. 이는 대안(RAID1)이 있다고 가정합니다. 이 블록도 실패하거나 대안이 없으면 EIO(Error Input/Output)가 반환됩니다.

오류를 자동으로 감지하는 방법은 모르지만 모든 오류는 시스템 로그에 기록됩니다. 노력하다 dmesg | grep btrfs. 다음과 같은 것을 찾아야 합니다.

[ 2993.114213] btrfs: sda2 checksum verify failed on 272228352 wanted 1A0FCFD3 found 119281BE level 0
[ 2993.114527] btrfs: sda2 checksum verify failed on 272228352 wanted 1A0FCFD3 found 119281BE level 0
[ 2993.114795] btrfs: sda2 checksum verify failed on 272228352 wanted 1A0FCFD3 found 119281BE level 0
[ 2993.115097] btrfs: sda2 checksum verify failed on 272228352 wanted 1A0FCFD3 found 119281BE level 0

로그를 보고 주기적으로 오류를 알려주는 스크립트나 스크립트를 만들 수도 있습니다. 또는 이러한 로그 항목을 필터링하고 rsyslog 작업을 트리거할 수 있습니다.

관련 정보