O Btrfs usa somas de verificação crc32c para verificar a integridade dos blocos. Se a soma de verificação não corresponder ao bloco quando for lida, um bloco alternativo será lido. Isto está assumindo que existe uma alternativa (RAID1). Se esse bloco também falhar ou se não houver alternativa, uma EIO (entrada / saída de erro) será retornada.
Eu não sei de nenhuma maneira de detectar automaticamente erros, mas todos os erros são registrados no syslog. Tente dmesg | grep btrfs
. Você deveria estar procurando por algo assim:
[ 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
Você provavelmente poderia criar um script ou um que examinasse os logs e notificasse erros em intervalos regulares. Ou você pode filtrar essas entradas de log e acionar uma ação do rsyslog.